<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>74100</bug_id>
          
          <creation_ts>2011-12-08 09:50:42 -0800</creation_ts>
          <short_desc>Web Inspector: provide per Document Node count statistics</short_desc>
          <delta_ts>2011-12-12 05:10:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>517487</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-08 09:50:42 -0800</bug_when>
    <thetext>Memory agent should provide per Document Node count statistics for all documents reachable from the main frame and also for those detached from the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517496</commentid>
    <comment_count>1</comment_count>
      <attachid>118410</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-08 09:59:46 -0800</bug_when>
    <thetext>Created attachment 118410
[PATCH] Accidentally I have a patch for that already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517497</commentid>
    <comment_count>2</comment_count>
      <attachid>118411</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-08 10:00:38 -0800</bug_when>
    <thetext>Created attachment 118411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517498</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-08 10:02:19 -0800</bug_when>
    <thetext>Attachment 118410 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InspectorMemoryAgent.cpp:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorMemoryAgent.h:60:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorMemoryAgent.h:65:  The parameter name &quot;domAgent&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517500</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-08 10:03:44 -0800</bug_when>
    <thetext>Attachment 118411 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Source/WebCore/inspector/InspectorMemoryAgent.h:58:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorMemoryAgent.cpp:72:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517501</commentid>
    <comment_count>5</comment_count>
      <attachid>118411</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-08 10:04:05 -0800</bug_when>
    <thetext>Comment on attachment 118411
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=118411&amp;action=review

&gt; Source/WebCore/inspector/Inspector.json:56
&gt; +                    { &quot;name&quot;: &quot;statistics&quot;, &quot;type&quot;: &quot;object&quot; }

You should define the object structure here.

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:91
&gt; +    static void willDetachDocument(Document*);

In addition to the detached documents, there are detached substrees that deserve to be reported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517533</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-08 10:38:12 -0800</bug_when>
    <thetext>I don&apos;t quite like the fact that we maintain detached documents list for providing memory statistics. I think we should make these stats based on the object groups / bindings info.

However, as you noticed offline, your way reports more dangling documents than my way, so for the WebKit owners it is important to know that something is retaining the document. Why don&apos;t we put your code to under the DETAILED_MEMORY_INFO? We would be able to compile with it locally and compare it with the bindings information. Should these to get different, we would know that there is likely a memory leak in the renderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517537</commentid>
    <comment_count>7</comment_count>
      <attachid>118410</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-08 10:39:18 -0800</bug_when>
    <thetext>Comment on attachment 118410
[PATCH] Accidentally I have a patch for that already.

View in context: https://bugs.webkit.org/attachment.cgi?id=118410&amp;action=review

&gt; Source/WebCore/bindings/v8/ScriptProfiler.cpp:220
&gt; +    CounterVisitor counterVisitor(domAgent, result.get());

This visitor will traverse all nodes no matter which page they belong too. I think we should collect only nodes relevant to a particular page which user is inspecting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517543</commentid>
    <comment_count>8</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-08 10:44:25 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I don&apos;t quite like the fact that we maintain detached documents list for providing memory statistics. I think we should make these stats based on the object groups / bindings info.
&gt; 
&gt; However, as you noticed offline, your way reports more dangling documents than my way, so for the WebKit owners it is important to know that something is retaining the document. Why don&apos;t we put your code to under the DETAILED_MEMORY_INFO? We would be able to compile with it locally and compare it with the bindings information. Should these to get different, we would know that there is likely a memory leak in the renderer.

I don&apos;t like the idea of hiding it behind the flag, I&apos;d rather remove it completely and look for a better way which would server our users as well. If we are worried about the performance hit here and think that all dangling documents should be reachable from the JS bindings but still want to check that assumption there is an easy way to reach that: we may use a counter of detached documents. It would cost nothing and we&apos;d be able to compare it with the documents reachable from the JS heap. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518228</commentid>
    <comment_count>9</comment_count>
      <attachid>118565</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-09 06:04:48 -0800</bug_when>
    <thetext>Created attachment 118565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518233</commentid>
    <comment_count>10</comment_count>
      <attachid>118565</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-09 06:22:37 -0800</bug_when>
    <thetext>Comment on attachment 118565
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=118565&amp;action=review

&gt; Source/WebCore/bindings/js/ScriptProfiler.h:54
&gt; +    class DOMWrapperVisitor {

Please move this interface to the WebCore/inspector

&gt; Source/WebCore/inspector/Inspector.json:57
&gt; +                    { &quot;name&quot;: &quot;nodeCount&quot;, &quot;type&quot;: &quot;object&quot; },

You should expand this into the type.

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:56
&gt; +    

blank line

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:88
&gt; +            String name = nodeName(currentNode);

You only want names of the elements, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518254</commentid>
    <comment_count>11</comment_count>
      <attachid>118565</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-09 07:25:28 -0800</bug_when>
    <thetext>Comment on attachment 118565
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=118565&amp;action=review

&gt;&gt; Source/WebCore/bindings/js/ScriptProfiler.h:54

&gt; 
&gt; Please move this interface to the WebCore/inspector

Done.

&gt;&gt; Source/WebCore/inspector/Inspector.json:57
&gt;&gt; +                    { &quot;name&quot;: &quot;nodeCount&quot;, &quot;type&quot;: &quot;object&quot; },
&gt; 
&gt; You should expand this into the type.

Done.

&gt;&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:56

&gt; 
&gt; blank line

Removed.

&gt;&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:88

&gt; 
&gt; You only want names of the elements, right?

No, I think we should show #text etc. as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518256</commentid>
    <comment_count>12</comment_count>
      <attachid>118574</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-09 07:26:05 -0800</bug_when>
    <thetext>Created attachment 118574
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518279</commentid>
    <comment_count>13</comment_count>
      <attachid>118574</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-09 08:20:00 -0800</bug_when>
    <thetext>Comment on attachment 118574
Patch for landing

View in context: https://bugs.webkit.org/attachment.cgi?id=118574&amp;action=review

&gt; Source/WebCore/inspector/Inspector.json:55
&gt; +                &quot;description&quot;: &quot;Node name to count map.&quot;

We should not use maps as the types since as you can see you can&apos;t define schema for it. It should be an array of objects with named properties instead.

&gt; Source/WebCore/inspector/Inspector.json:62
&gt; +                    { &quot;name&quot;: &quot;nodeCount&quot;, &quot;$ref&quot;: &quot;NodeCount&quot; },

i.e. type: &quot;array&quot; items: { $ref: &quot;NodeCounter&quot; } where node counter has properties such as tagName and a count</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519135</commentid>
    <comment_count>14</comment_count>
      <attachid>118776</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-12 05:03:49 -0800</bug_when>
    <thetext>Created attachment 118776
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519136</commentid>
    <comment_count>15</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-12 05:04:13 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 118574 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118574&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/Inspector.json:55
&gt; &gt; +                &quot;description&quot;: &quot;Node name to count map.&quot;
&gt; 
&gt; We should not use maps as the types since as you can see you can&apos;t define schema for it. It should be an array of objects with named properties instead.
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/Inspector.json:62
&gt; &gt; +                    { &quot;name&quot;: &quot;nodeCount&quot;, &quot;$ref&quot;: &quot;NodeCount&quot; },
&gt; 
&gt; i.e. type: &quot;array&quot; items: { $ref: &quot;NodeCounter&quot; } where node counter has properties such as tagName and a count
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519140</commentid>
    <comment_count>16</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-12 05:10:47 -0800</bug_when>
    <thetext>Committed r102569: &lt;http://trac.webkit.org/changeset/102569&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118410</attachid>
            <date>2011-12-08 09:59:46 -0800</date>
            <delta_ts>2011-12-08 10:39:18 -0800</delta_ts>
            <desc>[PATCH] Accidentally I have a patch for that already.</desc>
            <filename>node_count.patch</filename>
            <type>text/plain</type>
            <size>10350</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZjA2ZmQ4Li5mNjk0NzA1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMTItMDggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgcGVyIERvY3VtZW50IE5vZGUgY291bnQgc3Rh
dGlzdGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQxMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0UHJvZmlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OmRvbU5v
ZGVDb3VudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50Ojpn
ZXRET01Ob2RlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6
Okluc3BlY3Rvck1lbW9yeUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVh
dGUpOgorCiAyMDExLTEyLTA3ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZW5kZXJPYmplY3Q6OnN0eWxlKCk6IElubGluZSBlYXJseS1yZXR1cm4gY29uZGl0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmls
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKaW5kZXgg
YjI4ZmFhOS4uYmVjMjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlci5oCkBAIC0zMSwxMSArMzEsMTMgQEAKICNpbmNsdWRlICJTY3JpcHRIZWFwU25hcHNo
b3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKKyNpbmNsdWRlIDw+d3RmL1Bhc3NSZWZQdHIuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50
OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiAKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKQEAgLTU5
LDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU2FtcGxpbmcoKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGhhc0hlYXBQcm9maWxlcigpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIGNvdW50ZXIgZm9yIEpTQy4gU2Vl
IGJ1ZyA3MzkzNiBmb3IgbW9yZSBkZXRhaWxzLgotICAgIHN0YXRpYyB1bnNpZ25lZCBkb21Ob2Rl
Q291bnQoKSB7IHJldHVybiAwOyB9CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gZG9t
Tm9kZUNvdW50KEluc3BlY3RvckRPTUFnZW50Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKaW5k
ZXggZmYzNDIzNC4uMjFlOTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdFByb2ZpbGVyLmNwcApAQCAtMzEsMTIgKzMxLDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKIAorI2luY2x1ZGUgIkRPTU5vZGVIaWdobGln
aHRlci5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
RE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZXRh
aW5lZERPTUluZm8uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTU1h
cC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogI2luY2x1ZGUgPHY4LXByb2ZpbGVyLmg+CiAKQEAgLTE1MCw3ICsxNTMsNyBAQCBu
YW1lc3BhY2UgewogCiBjbGFzcyBDb3VudGVyVmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyTWFw
PE5vZGU+OjpWaXNpdG9yIHsKIHB1YmxpYzoKLSAgICBDb3VudGVyVmlzaXRvcigpIDogbV9jb3Vu
dCgwKSB7IH0KKyAgICBDb3VudGVyVmlzaXRvcihJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQs
IEluc3BlY3RvckFycmF5KiBjb3VudGVycykgOiBtX2RvbUFnZW50KGRvbUFnZW50KSwgbV9jb3Vu
dGVycyhjb3VudGVycykgeyB9CiAKICAgICB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3Rv
cmUqIHN0b3JlLCBOb2RlKiBub2RlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
KQogICAgIHsKQEAgLTE2MiwyNyArMTY1LDYxIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgbV9yb290cy5hZGQocm9vdE5vZGUpOwogCisgICAgICAgIHVuc2lnbmVkIGNv
dW50ID0gMDsKICAgICAgICAgTm9kZSogY3VycmVudE5vZGUgPSByb290Tm9kZTsKICAgICAgICAg
d2hpbGUgKChjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3RO
b2RlKSkpCi0gICAgICAgICAgICArK21fY291bnQ7CisgICAgICAgICAgICArK2NvdW50OworCisg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGVudHJ5ID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKKyAgICAgICAgZW50cnktPnNldE51bWJlcigic2l6ZSIsIGNvdW50KTsKKyAgICAg
ICAgU3RyaW5nIHRpdGxlID0gcm9vdE5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxFTUVOVF9O
T0RFID8gZWxlbWVudFRpdGxlKHN0YXRpY19jYXN0PEVsZW1lbnQqPihyb290Tm9kZSkpIDogU3Ry
aW5nOjpudW1iZXIocm9vdE5vZGUtPm5vZGVUeXBlKCkpOworICAgICAgICBlbnRyeS0+c2V0U3Ry
aW5nKCJ0aXRsZSIsIHRpdGxlKTsKKyAgICAgICAgbV9jb3VudGVycy0+cHVzaE9iamVjdChlbnRy
eSk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbm9kZUNvdW50KCkKK3ByaXZhdGU6CisgICAgU3Ry
aW5nIGVsZW1lbnRUaXRsZShFbGVtZW50KiBlbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fY291bnQ7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICBib29sIGlz
WEhUTUwgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5pc1hIVE1MRG9jdW1lbnQoKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChpc1hIVE1MID8gZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVsZW1lbnQtPm5v
ZGVOYW1lKCkubG93ZXIoKSk7CisKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVl
ID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgU3RyaW5nIGlkU3RyaW5nOwor
ICAgICAgICBpZiAoIWlkVmFsdWUuaXNOdWxsKCkgJiYgIWlkVmFsdWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIjIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGlkVmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVz
ZWRDbGFzc05hbWVzOworICAgICAgICBpZiAoZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBlbGVtZW50
LT5pc1N0eWxlZEVsZW1lbnQoKSkgeworICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmlu
ZyYgY2xhc3NOYW1lc1N0cmluZyA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50
KS0+Y2xhc3NOYW1lcygpOworICAgICAgICAgICAgc2l6ZV90IGNsYXNzTmFtZUNvdW50ID0gY2xh
c3NOYW1lc1N0cmluZy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNsYXNzTmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNTdHJpbmdbaV07CisgICAgICAgICAgICAgICAgaWYg
KHVzZWRDbGFzc05hbWVzLmNvbnRhaW5zKGNsYXNzTmFtZSkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHVzZWRDbGFzc05hbWVzLmFkZChjbGFzc05hbWUp
OworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIi4iKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGNsYXNzTmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogICAgIH0KLXByaXZhdGU6CisKICAgICBIYXNo
U2V0PE5vZGUqPiBtX3Jvb3RzOwotICAgIHVuc2lnbmVkIG1fY291bnQ7CisgICAgSW5zcGVjdG9y
RE9NQWdlbnQqIG1fZG9tQWdlbnQ7CisgICAgSW5zcGVjdG9yQXJyYXkqIG1fY291bnRlcnM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZQogCi11bnNpZ25lZCBTY3JpcHRQcm9maWxlcjo6ZG9tTm9kZUNv
dW50KCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IFNjcmlwdFByb2ZpbGVyOjpkb21Ob2Rl
Q291bnQoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KQogewotICAgIENvdW50ZXJWaXNpdG9y
IGNvdW50ZXJWaXNpdG9yOworICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gcmVzdWx0ID0gSW5z
cGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIENvdW50ZXJWaXNpdG9yIGNvdW50ZXJWaXNpdG9y
KGRvbUFnZW50LCByZXN1bHQuZ2V0KCkpOwogICAgIHZpc2l0RE9NTm9kZXMoJmNvdW50ZXJWaXNp
dG9yKTsKLSAgICByZXR1cm4gY291bnRlclZpc2l0b3Iubm9kZUNvdW50KCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmls
ZXIuaAppbmRleCA1YjNiNjE3Li44Njk0ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdFByb2ZpbGVyLmgKQEAgLTM2LDEwICszNiwxMyBAQAogI2luY2x1ZGUgIlNjcmlw
dFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlw
dE1hbmFnZXI7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50
OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiAKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKQEAgLTYz
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU2FtcGxpbmcoKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgc3RhdGljIGJvb2wgaGFzSGVhcFByb2ZpbGVyKCkgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKLSAgICBzdGF0aWMgdW5zaWduZWQg
ZG9tTm9kZUNvdW50KCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGRv
bU5vZGVDb3VudChJbnNwZWN0b3JET01BZ2VudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDU5MWIyYTUu
LjI5ZGFkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTQ4
LDExICs0OCwyMSBAQAogICAgIHsKICAgICAgICAgImRvbWFpbiI6ICJNZW1vcnkiLAogICAgICAg
ICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAgICAgInR5cGVzIjogWworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJpZCI6ICJET01Hcm91cCIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzaXplIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ0aXRsZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjog
WwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImdldERPTU5vZGVDb3Vu
dCIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiY291bnQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9CisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY291bnQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
RE9NR3JvdXAiIH19CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggMmY4ZGZlMC4uZjBkOGZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIEluc3BlY3RvckNv
bnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50
KiBpbnNwZWN0b3JDCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvcldvcmtlckFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSk7CiAjZW5k
aWYKIAotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9wYWdlKSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX3BhZ2UsIG1fZG9tQWdlbnQpKTsKIAog
ICAgIEFTU0VSVF9BUkcoaW5zcGVjdG9yQ2xpZW50LCBpbnNwZWN0b3JDbGllbnQpOwogICAgIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+aW5pdChtX2luc3Bl
Y3RvckFnZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmNwcAppbmRleCAwMTdhNjM1Li5iNTZjN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQ3LDE0ICs0NywxNSBA
QCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFnZW50KCkKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwg
aW50KiByZXN1bHQpCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Ob2RlQ291bnQo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpCiB7Ci0gICAgKnJl
c3VsdCA9IFNjcmlwdFByb2ZpbGVyOjpkb21Ob2RlQ291bnQoKTsKKyAgICAqcmVzdWx0ID0gU2Ny
aXB0UHJvZmlsZXI6OmRvbU5vZGVDb3VudChtX2RvbUFnZW50KTsKIH0KIAotSW5zcGVjdG9yTWVt
b3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKK0luc3Bl
Y3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2UqIHBhZ2Us
IEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKICAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJ
bnNwZWN0b3JNZW1vcnlBZ2VudD4oIk1lbW9yeSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRl
KQogICAgICwgbV9wYWdlKHBhZ2UpCisgICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmlu
ZGV4IGQ3NDUxZjYuLmNkNzdjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsK
IGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJ
bnNwZWN0b3JBcnJheTsKQEAgLTUxLDE4ICs1MiwxOSBAQCBjbGFzcyBJbnNwZWN0b3JNZW1vcnlB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50SW50
ZXJmYWNlPiA+IEluc3BlY3RvckFnZW50czsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3Bl
Y3Rvck1lbW9yeUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluc3BlY3Rvck1lbW9yeUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdl
LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEluc3BlY3Rvck1lbW9yeUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRl
LCBwYWdlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yTWVtb3J5QWdl
bnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIHBhZ2UsIGRvbUFnZW50KSk7CiAgICAgfQog
Ci0gICAgdm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBpbnQqIHJlc3VsdCk7Cisg
ICAgdm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiByZXN1bHQpOwogCiAgICAgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAKIHByaXZhdGU6
Ci0gICAgSW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
clN0YXRlKiwgUGFnZSopOworICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdl
bnQpOwogICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2Vu
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118411</attachid>
            <date>2011-12-08 10:00:38 -0800</date>
            <delta_ts>2011-12-09 06:04:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74100-20111208220036.patch</filename>
            <type>text/plain</type>
            <size>16045</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkYTQzZWNlYWUyNmUx
NjExZDQwZmVmNTEwNWUwYmU5ZmEyNWIyMC4uMzU4YjkwOWRlOTY0MTZhMTg5MThiOThhN2VjZDll
Y2NjOTc5MjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTEyLTA4ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgcGVyIERvY3VtZW50IE5vZGUgY291bnQgc3RhdGlzdGljcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMDAKKworICAgICAgICBN
ZW1vcnkgYWdlbnQgbm93IGFsbG93cyB0byBlbnVtZXJhdGUgYWxsIGFsaXZlIERvY3VtZW50cyBm
b3IgYSBwYWdlIGFuZCBnZXQKKyAgICAgICAgdGhlIG51bWJlciBvZiBub2RlcyBiZWxvbmdpbmcg
dG8gZWFjaCBkb2N1bWVudC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZG9tLXN0YXRpc3RpY3MuaHRtbAorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDogRG9jdW1lbnQgb2JqZWN0IG5vdGlmaWVzIGluc3BlY3RvciB3
aGVuIGl0IGlzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lIGFuZAorICAgICAgICB3aGVuIGl0IGlz
IGRlc3Ryb3llZC4gSW5zcGVjdG9yIGtlZXBzIGEgbWFwIG9mIGRvY3VtZW50cyB0aGF0IGhhdmUg
YmVlbiBkZXRhY2hlZCBidXQgbm90IHlldAorICAgICAgICBkZWxldGVkLiBJdCBtYXkgYmUgdXNl
ZnVsIGZvciB0aGUgdXNlciB0byBmaW5kIHN1Y2ggb2JqZWN0cyBzaW5jZSB0aGV5IGFyZSBsaWtl
bHkgdG8gYmUgbWVtb3J5CisgICAgICAgIGxlYWtzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpndWFy
ZFJlZkNvdW50KTogR3VhcmQgcmVmZXJlbmNlIGNvdW50IGlzIHVzZWQgYnkgaW5zcGVjdG9yIGNv
ZGUgdG8gZXN0aW1hdGUKKyAgICAgICAgbnVtYmVyIG9mIERPTSBub2RlcyB0aGF0IGJlbG9uZyB0
byB0aGUgRG9jdW1lbnQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGV0YWNoRG9jdW1lbnRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRE
ZXN0cm95ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERldGFj
aERvY3VtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1v
cnlBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZERvY3VtZW50SW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0RE9NU3RhdGlzdGljcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6d2lsbERldGFjaERvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50Ojpkb2N1bWVudERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVt
b3J5QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6Omluc3BlY3Rvck1lbW9yeUFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6OnNldEluc3BlY3Rvck1lbW9yeUFn
ZW50KToKKwogMjAxMS0xMi0wOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMjMyMS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGYyM2MyZTYzMmI3NWFjMWZjZTBkMTQzYTM5NWRlNTVhOTE1
NDljMTIuLjI4MDQzNDBlZGM5ZjBlYTAyMjc1NDU1YmIyNDVhMjFjNjQzZWYwZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNTc0LDYgKzU3NCw4IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQo
KQogCiAgICAgaWYgKG1fbWVkaWFRdWVyeU1hdGNoZXIpCiAgICAgICAgIG1fbWVkaWFRdWVyeU1h
dGNoZXItPmRvY3VtZW50RGVzdHJveWVkKCk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRvY3VtZW50RGVzdHJveWVkKHRoaXMpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZW1vdmVk
TGFzdFJlZigpCkBAIC0xODYxLDYgKzE4NjMsOCBAQCB2b2lkIERvY3VtZW50OjpkZXRhY2goKQog
CiAgICAgaWYgKHJlbmRlcikKICAgICAgICAgcmVuZGVyLT5kZXN0cm95KCk7CisKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXRhY2hEb2N1bWVudCh0aGlzKTsKICAgICAKICAg
ICAvLyBUaGlzIGlzIHJlcXVpcmVkLCBhcyBvdXIgRnJhbWUgbWlnaHQgZGVsZXRlIGl0c2VsZiBh
cyBzb29uIGFzIGl0IGRldGFjaGVzCiAgICAgLy8gdXMuIEhvd2V2ZXIsIHRoaXMgdmlvbGF0ZXMg
Tm9kZTo6ZGV0YWNoKCkgc2VtYW50aWNzLCBhcyBpdCdzIG5ldmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDUxY2E4YjlkNTM4ODg4YTY3NGQzY2ZjNzIzNTFlMDk2MzI5MjE4MDMuLjA2ODVlMDc0
NGViNDkxNWZmYzRmOGViMTIyNjBhZGEzZDU0NGExMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0yNTQsNiArMjU0LDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgaW50IGd1
YXJkUmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2d1YXJkUmVmQ291bnQ7IH0KKwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KaW5kZXggNTkxYjJhNWYyYTllNWJjNzJlNDI2MmEwYjFhNDFhZTllMjNi
MmU5Zi4uYTBhMGQyZWM2MDBiOTEzNGY0NGNlNmM5OWNiYzMxNjA1YTU1OGU1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtNTAsOSArNTAsMTAgQEAKICAgICAg
ICAgImhpZGRlbiI6IHRydWUsCiAgICAgICAgICJjb21tYW5kcyI6IFsKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRET01Ob2RlQ291bnQiLAorICAgICAgICAgICAg
ICAgICJuYW1lIjogImdldERPTVN0YXRpc3RpY3MiLAorICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJSZXR1cm5zIHBlciBkb2N1bWVudCBOb2RlIGNvdW50LiBSZXBvcnRzIGJvdGggZG9j
dW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBtYWluIEZyYW1lIGFuZCBkZXRhY2hlZCBvbmVzLiIs
CiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiY291bnQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9CisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic3RhdGlzdGljcyIsICJ0eXBlIjogIm9iamVjdCIgfQogICAgICAgICAgICAgICAg
IF0KICAgICAgICAgICAgIH0KICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBkNzg5NDIyYWEyMGNh
OTNiZDY4ODVhOWEzNDY4YTA0ZTQ1YWZhZWM4Li40NzM1NmY1NjY4Y2I1MWE5NzIwOWZjZmFjNzZi
NzJiMmFjMGI3M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgiCkBAIC0xODIsNiArMTgzLDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+ZnJhbWVXaW5kb3dEaXNjYXJkZWQod2luZG93KTsK
IH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXRhY2hEb2N1bWVudElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRv
Y3VtZW50KQoreworICAgIGlmIChJbnNwZWN0b3JNZW1vcnlBZ2VudCogbWVtb3J5QWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JNZW1vcnlBZ2VudCgpKQorICAgICAgICBtZW1v
cnlBZ2VudC0+d2lsbERldGFjaERvY3VtZW50KGRvY3VtZW50KTsKK30KKwordm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50RGVzdHJveWVkKERvY3VtZW50KiBkb2N1bWVudCkK
K3sKKyAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZG9jdW1lbnREZXN0cm95ZWQoZG9jdW1lbnQp
OworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKICAgICBp
ZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yRE9NQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBhMWU4OTkyNDZiNGU1ZWQ1ZjIxYjMyNDUxZTg2
NjEyYmFhMDJlMWU5Li4wZDk2Zjg2MzgyNWQwNzgyZWMyZmQ0ZWUyNDRjNzE5ZTEyMjRlZTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCkBAIC04OCw2ICs4OCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRJbnZh
bGlkYXRlU3R5bGVBdHRyKERvY3VtZW50KiwgTm9kZSopOwogICAgIHN0YXRpYyB2b2lkIGZyYW1l
V2luZG93RGlzY2FyZGVkKEZyYW1lKiwgRE9NV2luZG93Kik7CiAKKyAgICBzdGF0aWMgdm9pZCB3
aWxsRGV0YWNoRG9jdW1lbnQoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkb2N1bWVudERl
c3Ryb3llZChEb2N1bWVudCopOworCiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoUGFnZSosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdz
KTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzKFBhZ2UqKTsKICAgICBzdGF0aWMg
Ym9vbCBmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSk7
CkBAIC0yMjgsNiArMjMxLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRJbnZhbGlk
YXRlU3R5bGVBdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgTm9kZSopOwogICAgIHN0YXRp
YyB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRE9N
V2luZG93Kik7CiAKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGV0YWNoRG9jdW1lbnRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCopOworCiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBIaXRUZXN0UmVz
dWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91
c2VQcmVzc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRpYyBib29sIGZvcmNl
UHNldWRvU3RhdGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiwgQ1NTU2VsZWN0
b3I6OlBzZXVkb1R5cGUpOwpAQCAtNDM1LDYgKzQ0MCwxNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkKEZyYW1lKiBmcmFtZSwgRE9N
V2luZAogI2VuZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERldGFjaERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgd2ls
bERldGFjaERvY3VtZW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCk7CisjZW5k
aWYKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1v
dmVPdmVyRWxlbWVudChQYWdlKiBwYWdlLCBjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVu
c2lnbmVkIG1vZGlmaWVyRmxhZ3MpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDAx
N2E2MzVlZDczZTY0YzUwYzY3YThkNjEzMTdkM2RjMTQ3NDM2YWYuLjNkMDhlYTFkMzBjNGNjZDMz
YjkxOThhMGZkZDU1NGI5MDkzZTAyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMzMsMjkgKzMzLDc4IEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKLSNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKwordHlwZWRlZiBIYXNoTWFwPERvY3VtZW50Kiwg
SW5zcGVjdG9yTWVtb3J5QWdlbnQqPiBEZXRhY2hlZERvY3VtZW50c01hcDsKK0RldGFjaGVkRG9j
dW1lbnRzTWFwJiBkZXRhY2hlZERvY3VtZW50c01hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChEZXRhY2hlZERvY3VtZW50c01hcCwgZGV0YWNoZWREb2N1bWVudHMsICgpKTsKKyAgICBy
ZXR1cm4gZGV0YWNoZWREb2N1bWVudHM7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKIEluc3BlY3Rv
ck1lbW9yeUFnZW50Ojp+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKQogeworICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTWVtb3J5QWdlbnQoMCk7Cit9CisKK3N0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGREb2N1bWVudEluZm8oRG9jdW1lbnQqIGRvY3Vt
ZW50KQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CisgICAgcmVzdWx0LT5zZXRTdHJpbmcoInVybCIsIGRvY3VtZW50LT5k
b2N1bWVudFVSSSgpKTsKKyAgICByZXN1bHQtPnNldE51bWJlcigibm9kZUNvdW50IiwgZG9jdW1l
bnQtPmd1YXJkUmVmQ291bnQoKSk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTVN0YXRpc3RpY3MoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQoreworICAgIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYXR0YWNoZWREb2N1bWVudHMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Cisg
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoRG9jdW1lbnQq
IGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgYXR0YWNoZWREb2N1bWVudHMt
PnB1c2hPYmplY3QoYnVpbGREb2N1bWVudEluZm8oZG9jKSk7CisgICAgfQorCisgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBkZXRhY2hlZERvY3VtZW50cyA9IEluc3BlY3RvckFycmF5OjpjcmVh
dGUoKTsKKyAgICBmb3IgKERldGFjaGVkRG9jdW1lbnRzTWFwOjppdGVyYXRvciBpdCA9IGRldGFj
aGVkRG9jdW1lbnRzTWFwKCkuYmVnaW4oKTsgaXQgIT0gZGV0YWNoZWREb2N1bWVudHNNYXAoKS5l
bmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZCA9PSB0aGlzKQorICAgICAgICAg
ICAgZGV0YWNoZWREb2N1bWVudHMtPnB1c2hPYmplY3QoYnVpbGREb2N1bWVudEluZm8oaXQtPmZp
cnN0KSk7CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICByZXN1bHRPYmotPnNldEFycmF5KCJhdHRh
Y2hlZERvY3VtZW50cyIsIGF0dGFjaGVkRG9jdW1lbnRzKTsKKyAgICByZXN1bHRPYmotPnNldEFy
cmF5KCJkZXRhY2hlZERvY3VtZW50cyIsIGRldGFjaGVkRG9jdW1lbnRzKTsKKyAgICByZXN1bHRP
YmotPnNldE51bWJlcigianNOb2RlV3JhcHBlckNvdW50IiwgU2NyaXB0UHJvZmlsZXI6OmRvbU5v
ZGVDb3VudCgpKTsKKyAgICAqcmVzdWx0ID0gcmVzdWx0T2JqOworfQorCit2b2lkIEluc3BlY3Rv
ck1lbW9yeUFnZW50Ojp3aWxsRGV0YWNoRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorewor
ICAgIGRldGFjaGVkRG9jdW1lbnRzTWFwKCkuc2V0KGRvY3VtZW50LCB0aGlzKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgaW50
KiByZXN1bHQpCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50Ojpkb2N1bWVudERlc3Ryb3llZChE
b2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgKnJlc3VsdCA9IFNjcmlwdFByb2ZpbGVyOjpkb21O
b2RlQ291bnQoKTsKKyAgICBkZXRhY2hlZERvY3VtZW50c01hcCgpLnJlbW92ZShkb2N1bWVudCk7
CiB9CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUs
IFBhZ2UqIHBhZ2UpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdl
bnQ+KCJNZW1vcnkiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKICAgICAsIG1fcGFnZShw
YWdlKQogeworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTWVtb3J5QWdl
bnQodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggZDc0NTFmNjVmYjA2ZTlj
NzY2NjUwOTFkZTQwYzgxNDdkZTdhYTFiNy4uNWE3YTFkYTAxZGVlMTY3MGNiZjYwMGZhNjlmYTc2
NGRiMjc1NWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmgKQEAgLTM0LDE0ICszNCwxMiBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
ICNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKLWNsYXNzIElu
c3BlY3RvclN0YXRlOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOworCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwpAQCAtNTYsNyArNTQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEluc3BlY3Rvck1lbW9yeUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0
YXRlLCBwYWdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJp
bmcqLCBpbnQqIHJlc3VsdCk7CisgICAgLy8gUHJvdG9jb2wgbWV0aG9kcy4KKyAgICB2b2lkIGdl
dERPTVN0YXRpc3RpY3MoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiopOwor
CisgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLgorICAgIHZvaWQg
d2lsbERldGFjaERvY3VtZW50KERvY3VtZW50Kik7CisgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRE
ZXN0cm95ZWQoRG9jdW1lbnQqKTsKIAogICAgIH5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaAppbmRleCBm
NzdlOGNmNjAzM2VhMzEyYjIxZjEwOTE2ZmQxNzFhMDY2YzU3ZmNhLi41NTE4ZmJlM2UzMGZjOTQz
NDFhMWY1Mzg4NGY4MTZkOWZkMTJkZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgSW5zcGVjdG9y
Q1NTQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
T01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKK2NsYXNzIEluc3BlY3Rv
ck1lbW9yeUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ7CkBAIC02
OSw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2luc3BlY3RvclJ1bnRpbWVBZ2VudCgw
KQogICAgICAgICAsIG1faW5zcGVjdG9yVGltZWxpbmVBZ2VudCgwKQogICAgICAgICAsIG1faW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KDApCisgICAgICAgICwgbV9pbnNwZWN0b3JNZW1vcnlBZ2Vu
dCgwKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAgICwgbV9pbnNwZWN0b3JEYXRh
YmFzZUFnZW50KDApCiAjZW5kaWYKQEAgLTExNCw2ICsxMTYsOSBAQCBwdWJsaWM6CiAgICAgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KiBpbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKSBjb25zdCB7
IHJldHVybiBtX2luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsgfQogICAgIHZvaWQgc2V0SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogYWdlbnQpIHsgbV9p
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQgPSBhZ2VudDsgfQogCisgICAgSW5zcGVjdG9yTWVtb3J5
QWdlbnQqIGluc3BlY3Rvck1lbW9yeUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JN
ZW1vcnlBZ2VudDsgfQorICAgIHZvaWQgc2V0SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zcGVjdG9y
TWVtb3J5QWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yTWVtb3J5QWdlbnQgPSBhZ2VudDsgfQor
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBp
bnNwZWN0b3JEYXRhYmFzZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OyB9CiAgICAgdm9pZCBzZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3BlY3RvckRh
dGFiYXNlQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA9IGFnZW50OyB9
CkBAIC0xNTIsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQq
IG1faW5zcGVjdG9yUnVudGltZUFnZW50OwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1f
aW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIG1f
aW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OworICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KiBtX2lu
c3BlY3Rvck1lbW9yeUFnZW50OwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudCogbV9pbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNjgxNjc5NDdmNGM1ZTQ0MWM4MDVkZDU1MWU0NWNkOGI4ZjM2OGM4MC4uMGYzMTdlZTg5MzM1
ZWEzZjRlOTUzZGU0NTE4MGQxYTIwZGJmNjgwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTEyLTA4ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgcGVyIERvY3VtZW50IE5vZGUgY291bnQgc3RhdGlzdGlj
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9kb20tc3RhdGlzdGljcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9kb20tc3RhdGlzdGljcy5odG1sOiBBZGRlZC4KKwogMjAxMS0xMi0wOCAgVGFrYXNoaSBU
b3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGZhaWxlZCBs
YXlvdXQgdGVzdCwgYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLXN0YXRpc3RpY3MtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1zdGF0aXN0aWNzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42N2ZhZGQwNDM3MjE2MWJhMDUzYmE5ZmIyOGYzNjVlODYzYjdjZTRiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1zdGF0aXN0aWNzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKKworVGVzdHMgdGhhdCBwZXIgZG9jdW1lbnQgTm9kZSBjb3Vu
dCBpcyBjb3JyZWN0bHkgY2FsY3VsYXRlZCBieSB0aGUgTWVtb3J5IGFnZW50LiBCdWcgNzQxMDAK
KworVVJMIC0+IG5vZGUgY291bnQ6Citkb20tc3RhdGlzdGljcy5odG1sIC0+IDE5CithYm91dDpi
bGFuayAtPiAzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tc3RhdGlz
dGljcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1zdGF0aXN0aWNzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjNkZTAwMzI5YmE1ZmRjMjUxMDk5ZDA3Nzk5ZGQ4NWI4MzgwOTIyOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tc3RhdGlzdGljcy5odG1sCkBA
IC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVUkwgLT4gbm9kZSBjb3VudDoi
KTsKKyAgICAgICAgdmFyIGF0dGFjaGVkRG9jdW1lbnRzID0gcmVzdWx0LmF0dGFjaGVkRG9jdW1l
bnRzOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dGFjaGVkRG9jdW1lbnRzLmxlbmd0
aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgZG9jID0gYXR0YWNoZWREb2N1bWVudHNbaV07Cisg
ICAgICAgICAgICB2YXIgdXJsID0gZG9jLnVybDsKKyAgICAgICAgICAgIHZhciBpbmRleCA9IHVy
bC5sYXN0SW5kZXhPZigiLyIpOworICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKQorICAgICAg
ICAgICAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoaW5kZXggKyAxKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KHVybCArICIgLT4gIiArIGRvYy5ub2RlQ291bnQpOworICAg
ICAgICB9CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorICAg
IE1lbW9yeUFnZW50LmdldERPTVN0YXRpc3RpY3MoY2FsbGJhY2spOworfQorCis8L3NjcmlwdD4K
KzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPGlmcmFtZSBzcmM9ImFib3V0
OmJsYW5rIj48L2lmcmFtZT4KKzxwPgorVGVzdHMgdGhhdCBwZXIgZG9jdW1lbnQgTm9kZSBjb3Vu
dCBpcyBjb3JyZWN0bHkgY2FsY3VsYXRlZCBieSB0aGUgTWVtb3J5IGFnZW50LgorPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTAwIj5CdWcgNzQxMDA8
L2E+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118565</attachid>
            <date>2011-12-09 06:04:48 -0800</date>
            <delta_ts>2011-12-09 08:20:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74100-20111209180446.patch</filename>
            <type>text/plain</type>
            <size>20060</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhlY2EzOTU2ZjBjNmJj
ZGUzNTVkY2VhMzFiNmJlODE0NWIxOWY2Mi4uMDU5ZmM1ZWFiNzFkNDBkMzE2YjIyMTE3ZDMyNjVi
YTIyMjFmMjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDExLTEyLTA5ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgcGVyIERvY3VtZW50IE5vZGUgY291bnQgc3RhdGlzdGljcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMDAKKworICAgICAgICBN
ZW1vcnkgYWdlbnQgbm93IHJldHVybnMgY291bnRlcnMgZm9yIG5vZGVzIHdpdGggZ2l2ZW4gbmFt
ZXMuIEZvciBlYWNoCisgICAgICAgIG9iamVjdCBncm91cCByb290IHVzZXIgd2lsbCBzZWUgdG90
YWwgbnVtYmVyIG9mIGl0cyBkZXNjZW5kdGFudHMgYW5kIHBlcgorICAgICAgICB0YWcgbmFtZSBj
b3VudHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1vdmVzIGdlbmVyaWMgQ291bnRlclZp
c2l0b3IgY29kZSBvdXQgb2YgVjggYmluZGluZ3MuIEl0CisgICAgICAgIG1heSB3ZWxsIGJlIHVz
ZWQgd2l0aCBib3RoIEpTIGVuZ2luZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OkRPTVdyYXBwZXJWaXNpdG9yOjp+RE9NV3JhcHBl
clZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNET01X
cmFwcGVycyk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNET01XcmFwcGVycyk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFByb2ZpbGVyOjpET01XcmFwcGVyVmlzaXRvcjo6fkRPTVdyYXBwZXJWaXNpdG9yKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9y
eUFnZW50OjpnZXRET01Ob2RlQ291bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5oOgorCiAyMDExLTEyLTA5ICBQZXRlciBSeWJpbiAgPHBldGVyLnJ5YmluQGdt
YWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbcHJvdG9jb2xdIGdlbmVyYXRlIEMr
KyBjbGFzc2VzIGZvciBwcm90b2NvbCBKU09OIG5hbWVkIHR5cGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaAppbmRleCBjNTNlNDAyYWQ1NTRiNzE2YWNiNDk0
YzY3YzRiYzIyMjRhYjdiZmI4Li5hMGViMmRhZjRlZTdhMzBmM2FkZmY5YTZhMWMyZTQyYmY4MDA3
YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKQEAg
LTM4LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwotY2xhc3MgUGFnZTsKIAogY2xhc3MgU2NyaXB0UHJvZmlsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdFByb2ZpbGVyKTsKQEAgLTUyLDYgKzUxLDEzIEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2FuY2VsZWQoKSA9IDA7CiAgICAgfTsKIAor
ICAgIGNsYXNzIERPTVdyYXBwZXJWaXNpdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdE5vZGUoTm9kZSopID0gMDsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZp
cnR1YWwgfkRPTVdyYXBwZXJWaXNpdG9yKCkgeyB9CisgICAgfTsKKwogICAgIHN0YXRpYyB2b2lk
IGNvbGxlY3RHYXJiYWdlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IG9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkIGlkLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
KTsKICAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOwpAQCAtNjEsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNT
YW1wbGluZygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgaGFzSGVhcFByb2Zp
bGVyKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgY291
bnRlciBmb3IgSlNDLiBTZWUgYnVnIDczOTM2IGZvciBtb3JlIGRldGFpbHMuCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGRvbU5vZGVDb3VudChQYWdlKikgeyByZXR1cm4g
MDsgfTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdEpTRE9NV3JhcHBlcnMoRE9NV3JhcHBlclZpc2l0
b3IqKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCBiNzc4M2RjY2NlNTM1NTM1M2Ex
NWZjOWU1YjVjYmI1MzUxNjc4Y2I3Li40ZGQ0ODA1YjQ0ZmQyNzk5MDQ0ZGQ4OGVlM2IzYTcyNWM5
NTcwZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9m
aWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIu
Y3BwCkBAIC0zMSwxNCArMzEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
Y3JpcHRQcm9maWxlci5oIgogCi0jaW5jbHVkZSAiRE9NTm9kZUhpZ2hsaWdodGVyLmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlICJSZXRhaW5lZERPTUluZm8uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNs
dWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogI2luY2x1ZGUgPHY4LXByb2ZpbGVyLmg+CiAKQEAgLTE0OCw4
MyArMTQ2LDIwIEBAIHZvaWQgU2NyaXB0UHJvZmlsZXI6OmluaXRpYWxpemUoKQogI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1IpCiB9CiAKLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIENvdW50ZXJWaXNp
dG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IgewotcHVibGljOgotICAg
IENvdW50ZXJWaXNpdG9yKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckFycmF5KiBjb3VudGVycykgOiBt
X3BhZ2UocGFnZSksIG1fY291bnRlcnMoY291bnRlcnMpIHsgfQotCi0gICAgdm9pZCB2aXNpdERP
TVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgTm9kZSogbm9kZSwgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlcikKLSAgICB7Ci0gICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpICYmIG1fcGFnZSAhPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgTm9kZSogcm9vdE5vZGUgPSBub2RlOwot
ICAgICAgICB3aGlsZSAocm9vdE5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgIHJvb3RO
b2RlID0gcm9vdE5vZGUtPnBhcmVudE5vZGUoKTsKLQotICAgICAgICBpZiAobV9yb290cy5jb250
YWlucyhyb290Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcm9vdHMuYWRk
KHJvb3ROb2RlKTsKLQotICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgICAgIE5vZGUq
IGN1cnJlbnROb2RlID0gcm9vdE5vZGU7Ci0gICAgICAgIHdoaWxlICgoY3VycmVudE5vZGUgPSBj
dXJyZW50Tm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZSkpKQotICAgICAgICAgICAgKytj
b3VudDsKLQotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBlbnRyeSA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGVudHJ5LT5zZXROdW1iZXIoInNpemUiLCBjb3Vu
dCk7Ci0KLSAgICAgICAgZW50cnktPnNldFN0cmluZygidGl0bGUiLCByb290Tm9kZS0+bm9kZVR5
cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUgPyBlbGVtZW50VGl0bGUoc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KHJvb3ROb2RlKSkgOiByb290Tm9kZS0+bm9kZU5hbWUoKSk7Ci0gICAgICAgIGlmIChy
b290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9OT0RFKQotICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygiZG9jdW1lbnRVUkkiLCBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHJv
b3ROb2RlKS0+ZG9jdW1lbnRVUkkoKSk7Ci0gICAgICAgIG1fY291bnRlcnMtPnB1c2hPYmplY3Qo
ZW50cnkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgZWxlbWVudFRpdGxlKEVsZW1l
bnQqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICAg
ICAgYm9vbCBpc1hIVE1MID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+aXNYSFRNTERvY3VtZW50KCk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoaXNYSFRNTCA/IGVsZW1lbnQtPm5vZGVOYW1lKCkgOiBl
bGVtZW50LT5ub2RlTmFtZSgpLmxvd2VyKCkpOwotCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWRWYWx1ZSA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgIFN0cmluZyBp
ZFN0cmluZzsKLSAgICAgICAgaWYgKCFpZFZhbHVlLmlzTnVsbCgpICYmICFpZFZhbHVlLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiIyIpOwotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChpZFZhbHVlKTsKLSAgICAgICAgfQordm9pZCBTY3JpcHRQcm9maWxlcjo6dmlz
aXRKU0RPTVdyYXBwZXJzKERPTVdyYXBwZXJWaXNpdG9yKiB2aXNpdG9yKQoreworICAgIGNsYXNz
IFZpc2l0b3JBZGFwdGVyIDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3Igewor
ICAgIHB1YmxpYzoKKyAgICAgICAgVmlzaXRvckFkYXB0ZXIoRE9NV3JhcHBlclZpc2l0b3IqIHZp
c2l0b3IpIDogbV92aXNpdG9yKHZpc2l0b3IpIHsgfQogCi0gICAgICAgIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0NsYXNzKCkg
JiYgZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFNwYWNl
U3BsaXRTdHJpbmcmIGNsYXNzTmFtZXNTdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50
Kj4oZWxlbWVudCktPmNsYXNzTmFtZXMoKTsKLSAgICAgICAgICAgIHNpemVfdCBjbGFzc05hbWVD
b3VudCA9IGNsYXNzTmFtZXNTdHJpbmcuc2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjbGFzc05hbWVDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBjbGFzc05hbWVzU3RyaW5nW2ldOwotICAgICAgICAg
ICAgICAgIGlmICh1c2VkQ2xhc3NOYW1lcy5jb250YWlucyhjbGFzc05hbWUpKQotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB1c2VkQ2xhc3NOYW1lcy5hZGQo
Y2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIuIik7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChjbGFzc05hbWUpOwotICAgICAgICAgICAgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIE5vZGUqIG5vZGUs
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KQorICAgICAgICB7CisgICAgICAgICAgICBtX3Zp
c2l0b3ItPnZpc2l0Tm9kZShub2RlKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxOb2RlKj4gbV9yb290czsKLSAgICBQ
YWdlKiBtX3BhZ2U7Ci0gICAgSW5zcGVjdG9yQXJyYXkqIG1fY291bnRlcnM7Ci19OwotCi19IC8v
IG5hbWVzcGFjZQotCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBTY3JpcHRQcm9maWxlcjo6
ZG9tTm9kZUNvdW50KFBhZ2UqIHBhZ2UpCi17Ci0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBy
ZXN1bHQgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgQ291bnRlclZpc2l0b3IgY291
bnRlclZpc2l0b3IocGFnZSwgcmVzdWx0LmdldCgpKTsKLSAgICB2aXNpdERPTU5vZGVzKCZjb3Vu
dGVyVmlzaXRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBwcml2YXRlOgorICAgICAgICBE
T01XcmFwcGVyVmlzaXRvciogbV92aXNpdG9yOworICAgIH0gYWRhcHRlcih2aXNpdG9yKTsKKyAg
ICB2aXNpdERPTU5vZGVzKCZhZGFwdGVyKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaAppbmRleCBkNzUy
NzA3NDlkOGQzNGJlYmUyNGUzZGVjNGQxZDQzMjVmYjAxNTU4Li4zMDBkZTE4YjFiMjlkNWUwZTli
Y2EyNDY5YzhlNThlMGNkZTIyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdFByb2ZpbGVyLmgKQEAgLTQyLDcgKzQyLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgUGFnZTsKIAogY2xhc3MgU2NyaXB0
UHJvZmlsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdFByb2ZpbGVyKTsKQEAg
LTU2LDYgKzU1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2FuY2VsZWQo
KSA9IDA7CiAgICAgfTsKIAorICAgIGNsYXNzIERPTVdyYXBwZXJWaXNpdG9yIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5vZGUoTm9kZSopID0gMDsKKyAgICBwcm90
ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgfkRPTVdyYXBwZXJWaXNpdG9yKCkgeyB9CisgICAgfTsK
KwogICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IG9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkIGlkLCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSog
c3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtNjUsNyArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgaXNTYW1wbGluZygpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMg
Ym9vbCBoYXNIZWFwUHJvZmlsZXIoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZSgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBkb21O
b2RlQ291bnQoUGFnZSopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0SlNET01XcmFwcGVycyhET01X
cmFwcGVyVmlzaXRvciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDI5ZGFkMzVjZGY4NjA0ZjYyY2ZkYTY1
ZDE5ZGRjMDQyNjk3YWE2NmEuLjBjYmQyNGQ1MzVmYTgzZWFkNDA3ZWNiZGE4MzNlMGYyNDJjZGUy
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTU0LDYgKzU0
LDcgQEAKICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNpemUiLCAi
dHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVD
b3VudCIsICJ0eXBlIjogIm9iamVjdCIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ0aXRsZSIsICJ0eXBlIjogInN0cmluZyIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwCmluZGV4IGIyNTY0ZjRmZjUzMjVlMmNmZWE3MjU4Y2I1MmExMmJjYzIxZTg5YzEuLjhm
YWQ2Mzk1Y2ZhZDRiY2JmNzEyZmI5YWU5NWU0N2Y0NGU0Yzg4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMSw1NSArMSwx
NjAgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotKiBtZXQ6Ci0qCi0qICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0qIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0qIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSogZGlz
dHJpYnV0aW9uLgotKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0qIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0qIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0qIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0qIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0qIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yTWVtb3J5QWdlbnQuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
U3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVt
ZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitjbGFzcyBDb3VudGVy
VmlzaXRvciA6IHB1YmxpYyBTY3JpcHRQcm9maWxlcjo6RE9NV3JhcHBlclZpc2l0b3IgeworcHVi
bGljOgorICAgIENvdW50ZXJWaXNpdG9yKFBhZ2UqIHBhZ2UpIDogbV9wYWdlKHBhZ2UpLCBtX2Nv
dW50ZXJzKEluc3BlY3RvckFycmF5OjpjcmVhdGUoKSkgeyB9CisKKyAgICAKKyAgICBJbnNwZWN0
b3JBcnJheSogY291bnRlcnMoKSB7IHJldHVybiBtX2NvdW50ZXJzLmdldCgpOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgdmlzaXROb2RlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9k
ZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBtX3BhZ2UgIT0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+cGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIE5vZGUqIHJvb3RO
b2RlID0gbm9kZTsKKyAgICAgICAgd2hpbGUgKHJvb3ROb2RlLT5wYXJlbnROb2RlKCkpCisgICAg
ICAgICAgICByb290Tm9kZSA9IHJvb3ROb2RlLT5wYXJlbnROb2RlKCk7CisKKyAgICAgICAgaWYg
KG1fcm9vdHMuY29udGFpbnMocm9vdE5vZGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBtX3Jvb3RzLmFkZChyb290Tm9kZSk7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gZW50cnkgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICBlbnRyeS0+c2V0
U3RyaW5nKCJ0aXRsZSIsIHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9E
RSA/IGVsZW1lbnRUaXRsZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocm9vdE5vZGUpKSA6IHJvb3RO
b2RlLT5ub2RlTmFtZSgpKTsKKyAgICAgICAgaWYgKHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5v
ZGU6OkRPQ1VNRU5UX05PREUpCisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJkb2N1bWVu
dFVSSSIsIHN0YXRpY19jYXN0PERvY3VtZW50Kj4ocm9vdE5vZGUpLT5kb2N1bWVudFVSSSgpKTsK
KyAgICAgICAgbV9jb3VudGVycy0+cHVzaE9iamVjdChlbnRyeSk7CisgICAgICAgIGNvbGxlY3RU
cmVlU3RhdGlzdGljcyhyb290Tm9kZSwgZW50cnkuZ2V0KCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBzdGF0aWMgdm9pZCBjb2xsZWN0VHJlZVN0YXRpc3RpY3MoTm9kZSogcm9vdE5vZGUsIElu
c3BlY3Rvck9iamVjdCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY291bnQgPSAw
OworICAgICAgICBIYXNoTWFwPFN0cmluZywgaW50PiBuYW1lVG9Db3VudDsKKyAgICAgICAgTm9k
ZSogY3VycmVudE5vZGUgPSByb290Tm9kZTsKKyAgICAgICAgd2hpbGUgKChjdXJyZW50Tm9kZSA9
IGN1cnJlbnROb2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3ROb2RlKSkpIHsKKyAgICAgICAgICAg
ICsrY291bnQ7CisgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IG5vZGVOYW1lKGN1cnJlbnROb2Rl
KTsKKyAgICAgICAgICAgIGludCBjdXJyZW50Q291bnQgPSBuYW1lVG9Db3VudC5nZXQobmFtZSk7
CisgICAgICAgICAgICBuYW1lVG9Db3VudC5zZXQobmFtZSwgY3VycmVudENvdW50ICsgMSk7Cisg
ICAgICAgIH0KKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2hpbGRyZW5TdGF0cyA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgIGZvciAoSGFzaE1hcDxTdHJpbmcs
IGludD46Oml0ZXJhdG9yIGl0ID0gbmFtZVRvQ291bnQuYmVnaW4oKTsgaXQgIT0gbmFtZVRvQ291
bnQuZW5kKCk7ICsraXQpCisgICAgICAgICAgICBjaGlsZHJlblN0YXRzLT5zZXROdW1iZXIoaXQt
PmZpcnN0LCBpdC0+c2Vjb25kKTsKKworICAgICAgICByZXN1bHQtPnNldE51bWJlcigic2l6ZSIs
IGNvdW50KTsKKyAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoIm5vZGVDb3VudCIsIGNoaWxkcmVu
U3RhdHMpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcgbm9kZU5hbWUoTm9kZSogbm9kZSkK
KyAgICB7CisgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpLT5pc1hIVE1MRG9jdW1lbnQoKSkK
KyAgICAgICAgICAgICByZXR1cm4gbm9kZS0+bm9kZU5hbWUoKTsKKyAgICAgICAgcmV0dXJuIG5v
ZGUtPm5vZGVOYW1lKCkubG93ZXIoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZWxlbWVudFRpdGxl
KEVsZW1lbnQqIGVsZW1lbnQpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlTmFtZShlbGVtZW50KSk7CisKKyAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAg
ICAgICAgU3RyaW5nIGlkU3RyaW5nOworICAgICAgICBpZiAoIWlkVmFsdWUuaXNOdWxsKCkgJiYg
IWlkVmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIjIik7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlkVmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAg
SGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOworICAgICAgICBpZiAoZWxlbWVu
dC0+aGFzQ2xhc3MoKSAmJiBlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkgeworICAgICAgICAg
ICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lc1N0cmluZyA9IHN0YXRpY19jYXN0
PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+Y2xhc3NOYW1lcygpOworICAgICAgICAgICAgc2l6
ZV90IGNsYXNzTmFtZUNvdW50ID0gY2xhc3NOYW1lc1N0cmluZy5zaXplKCk7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNsYXNzTmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNTdHJpbmdb
aV07CisgICAgICAgICAgICAgICAgaWYgKHVzZWRDbGFzc05hbWVzLmNvbnRhaW5zKGNsYXNzTmFt
ZSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHVzZWRD
bGFzc05hbWVzLmFkZChjbGFzc05hbWUpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Ii4iKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNsYXNzTmFtZSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAg
IH0KKworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fcm9vdHM7CisgICAgUGFnZSogbV9wYWdlOworICAg
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gbV9jb3VudGVyczsKK307CisKK30gLy8gbmFtZXNwYWNl
CisKIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKQogewogfQog
CiB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpCiB7Ci0gICAgKnJlc3VsdCA9IFNjcmlw
dFByb2ZpbGVyOjpkb21Ob2RlQ291bnQobV9wYWdlKTsKKyAgICBDb3VudGVyVmlzaXRvciBjb3Vu
dGVyVmlzaXRvcihtX3BhZ2UpOworICAgIFNjcmlwdFByb2ZpbGVyOjp2aXNpdEpTRE9NV3JhcHBl
cnMoJmNvdW50ZXJWaXNpdG9yKTsKKworICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJl
YWNoYWJsZSBmcm9tIHRoZSBtYWluIGZyYW1lIGFyZSBhY2NvdW50ZWQuCisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IGZyYW1l
LT5kb2N1bWVudCgpKQorICAgICAgICAgICAgY291bnRlclZpc2l0b3IudmlzaXROb2RlKGRvYyk7
CisgICAgfQorCisgICAgKnJlc3VsdCA9IGNvdW50ZXJWaXNpdG9yLmNvdW50ZXJzKCk7CiB9CiAK
IEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2Uq
IHBhZ2UsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggY2Q3N2NhZGQwMGI5NzE3NDM0
ZTY5YTM2NDE0MjNhMjY1NzViZWRmYS4uZDhkYWZhODk4ODY5MjYyOGRjM2ZjNzcyNDk2NGNkYzRk
MmZiZjI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmgKQEAgLTEsMzIgKzEsMzIgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotKiBtZXQ6Ci0qCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0qIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSogZGlzdHJpYnV0aW9uLgotKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0qIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0qIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0q
Ci0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0qIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0qIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwogCiAjaWZuZGVmIElu
c3BlY3Rvck1lbW9yeUFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yTWVtb3J5QWdlbnRfaAo=
</data>
<flag name="review"
          id="118352"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118574</attachid>
            <date>2011-12-09 07:26:05 -0800</date>
            <delta_ts>2011-12-12 05:03:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>typed-node-counters.patch</filename>
            <type>text/plain</type>
            <size>26926</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2OGVjYTM5Li5mM2FlYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTEtMTItMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBwZXIgRG9jdW1lbnQgTm9kZSBjb3VudCBz
dGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDEwMAorCisgICAgICAgIE1lbW9yeSBhZ2VudCBub3cgcmV0dXJucyBjb3VudGVycyBmb3Ig
bm9kZXMgd2l0aCBnaXZlbiBuYW1lcy4gRm9yIGVhY2gKKyAgICAgICAgb2JqZWN0IGdyb3VwIHJv
b3QgdXNlciB3aWxsIHNlZSB0b3RhbCBudW1iZXIgb2YgaXRzIGRlc2NlbmR0YW50cyBhbmQgcGVy
CisgICAgICAgIHRhZyBuYW1lIGNvdW50cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbW92
ZXMgZ2VuZXJpYyBDb3VudGVyVmlzaXRvciBjb2RlIG91dCBvZiBWOCBiaW5kaW5ncy4gSXQKKyAg
ICAgICAgbWF5IHdlbGwgYmUgdXNlZCB3aXRoIGJvdGggSlMgZW5naW5lcy4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdy
YXBwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9E
T01XcmFwcGVyVmlzaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJW
aXNpdG9yOjp+RE9NV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTU5vZGVDb3VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmg6CisKIDIwMTEtMTIt
MDkgIFBldGVyIFJ5YmluICA8cGV0ZXIucnliaW5AZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFtwcm90b2NvbF0gZ2VuZXJhdGUgQysrIGNsYXNzZXMgZm9yIHByb3RvY29sIEpT
T04gbmFtZWQgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGE0NGM5MDcu
LmM2NWVkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjAyMiw2ICsyMDIy
LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGln
aGxpZ2h0ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdo
dGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGZmZmNi
YTk2Li44NDQ4YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE4OTIsNiArMTg5Miw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIFwKICAgICBpbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmggXAogICAgIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCBc
CisgICAgaW5zcGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmggXAogICAgIGluc3BlY3Rvci9JZGVu
dGlmaWVyc0ZhY3RvcnkuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggXAogICAg
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDE5
OTBhOS4uNDA5ZDk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjcxOCw2ICsyNzE4LDcgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmgnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01XcmFw
cGVyVmlzaXRvci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5
LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZGY4Mzg4NS4uYzMxN2E0NyAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY4
NDUwLDYgKzY4NDUwLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxET01XcmFwcGVyVmlzaXRvci5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSWRlbnRpZmll
cnNGYWN0b3J5LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDczMWE4NS4uNjFkYTRmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNjAyMCw2ICs2MDIwLDcgQEAKIAkJRjM0NzQyRTgxMzQzNjM1MDAwNTMxQkMyIC8qIFdv
cmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzNDc0MkU2MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgKi87IH07CiAJCUYzNDc0MkU5MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjM0NzQyRTcxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVn
U2VydmVyLmggKi87IH07CiAJCUYzNTBCNzM1MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50
aW5nQWdlbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzNTBCNzM0MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCAq
LzsgfTsKKwkJRjM1QUU1QUMxNDkyNUY1QjAwNEQ1Nzc2IC8qIERPTVdyYXBwZXJWaXNpdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzVBRTVBQjE0
OTI1RjVCMDA0RDU3NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCAqLzsgfTsKIAkJRjM2NDRBRkYx
MTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJ
bmplY3RlZFNjcmlwdC5jcHAgKi87IH07CiAJCUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUzNyAvKiBJ
bmplY3RlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi87IH07
CiAJCUYzNkUwN0E0MTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNkUw
N0EyMTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLzsg
fTsKQEAgLTEzMzk2LDYgKzEzMzk3LDcgQEAKIAkJRjM0NzQyRTYxMzQzNjM1MDAwNTMxQkMyIC8q
IFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjM0NzQyRTcxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVn
U2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdERl
YnVnU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNTBCNzM0MTNGMTM3
N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3RydW1lbnRpbmdBZ2VudHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGMzVBRTVBQjE0OTI1RjVCMDA0RDU3NzYgLyogRE9NV3JhcHBlclZp
c2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV3JhcHBlclZpc2l0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM2NDRBRkQxMTE5ODA1OTAwRTBE
NTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluamVjdGVkU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUYzNkUwN0EyMTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQ1MTUsNiArMTQ1MTcsNyBAQAogCQkJCTU5MTAyRkJBMTQzMjdEM0IwMDNDOUQwNCAvKiBDb250
ZW50U2VhcmNoVXRpbHMuaCAqLywKIAkJCQk0RjE0NDIyNjEzMzlGRDYyMDBFMEQ2RjggLyogRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcCAqLywKIAkJCQk0RjE0NDIyNzEzMzlGRDYyMDBFMEQ2RjggLyog
RE9NTm9kZUhpZ2hsaWdodGVyLmggKi8sCisJCQkJRjM1QUU1QUIxNDkyNUY1QjAwNEQ1Nzc2IC8q
IERPTVdyYXBwZXJWaXNpdG9yLmggKi8sCiAJCQkJNTkxM0EyM0YxM0Q0OUVCQTAwRjVCMDVDIC8q
IElkZW50aWZpZXJzRmFjdG9yeS5jcHAgKi8sCiAJCQkJNTkxM0EyNDAxM0Q0OUVCQTAwRjVCMDVD
IC8qIElkZW50aWZpZXJzRmFjdG9yeS5oICovLAogCQkJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUz
NyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi8sCkBAIC0yNDc4MSw2ICsyNDc4NCw3IEBACiAJCQkJ
MjY1NTQxMzkxNDg5ODExQzAwMERGQzVEIC8qIEtleUV2ZW50Q29kZXNJT1MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCThBMTk1OTMyMTQ3RUExNkUwMEQxRUE2MSAvKiBET01XZWJLaXROYW1lZEZsb3cu
aCBpbiBIZWFkZXJzICovLAogCQkJCThBMTk1OTM0MTQ3RUExNkUwMEQxRUE2MSAvKiBET01XZWJL
aXROYW1lZEZsb3dJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjM1QUU1QUMxNDkyNUY1
QjAwNEQ1Nzc2IC8qIERPTVdyYXBwZXJWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCmluZGV4IGM1M2U0MDIuLjEzM2Iw
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaApAQCAt
MzcsOCArMzcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERPTVdyYXBwZXJW
aXNpdG9yOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgUGFnZTsKIAogY2xh
c3MgU2NyaXB0UHJvZmlsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdFByb2Zp
bGVyKTsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU2FtcGxp
bmcoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGhhc0hlYXBQcm9maWxlcigp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIGNvdW50ZXIg
Zm9yIEpTQy4gU2VlIGJ1ZyA3MzkzNiBmb3IgbW9yZSBkZXRhaWxzLgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBkb21Ob2RlQ291bnQoUGFnZSopIHsgcmV0dXJuIDA7IH07
CisgICAgc3RhdGljIHZvaWQgdmlzaXRKU0RPTVdyYXBwZXJzKERPTVdyYXBwZXJWaXNpdG9yKikg
eyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKaW5kZXggYjc3ODNkYy4uY2JlZGJhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtMzEsMTQg
KzMxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIu
aCIKIAotI2luY2x1ZGUgIkRPTU5vZGVIaWdobGlnaHRlci5oIgorI2luY2x1ZGUgIkRPTVdyYXBw
ZXJWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZXRhaW5lZERPTUluZm8uaCIKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2luY2x1ZGUgPHY4LXByb2Zp
bGVyLmg+CiAKQEAgLTE0OCw4MyArMTQ3LDIwIEBAIHZvaWQgU2NyaXB0UHJvZmlsZXI6OmluaXRp
YWxpemUoKQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiB9CiAKLW5hbWVzcGFjZSB7Ci0K
LWNsYXNzIENvdW50ZXJWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0
b3IgewotcHVibGljOgotICAgIENvdW50ZXJWaXNpdG9yKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckFy
cmF5KiBjb3VudGVycykgOiBtX3BhZ2UocGFnZSksIG1fY291bnRlcnMoY291bnRlcnMpIHsgfQot
Ci0gICAgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgTm9kZSogbm9k
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKLSAgICB7Ci0gICAgICAgIGlm
IChub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIG1fcGFnZSAhPSBub2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgTm9kZSog
cm9vdE5vZGUgPSBub2RlOwotICAgICAgICB3aGlsZSAocm9vdE5vZGUtPnBhcmVudE5vZGUoKSkK
LSAgICAgICAgICAgIHJvb3ROb2RlID0gcm9vdE5vZGUtPnBhcmVudE5vZGUoKTsKLQotICAgICAg
ICBpZiAobV9yb290cy5jb250YWlucyhyb290Tm9kZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIG1fcm9vdHMuYWRkKHJvb3ROb2RlKTsKLQotICAgICAgICB1bnNpZ25lZCBjb3VudCA9
IDA7Ci0gICAgICAgIE5vZGUqIGN1cnJlbnROb2RlID0gcm9vdE5vZGU7Ci0gICAgICAgIHdoaWxl
ICgoY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZSkp
KQotICAgICAgICAgICAgKytjb3VudDsKLQotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBlbnRyeSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGVudHJ5LT5zZXRO
dW1iZXIoInNpemUiLCBjb3VudCk7Ci0KLSAgICAgICAgZW50cnktPnNldFN0cmluZygidGl0bGUi
LCByb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUgPyBlbGVtZW50VGl0
bGUoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJvb3ROb2RlKSkgOiByb290Tm9kZS0+bm9kZU5hbWUo
KSk7Ci0gICAgICAgIGlmIChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9O
T0RFKQotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygiZG9jdW1lbnRVUkkiLCBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KHJvb3ROb2RlKS0+ZG9jdW1lbnRVUkkoKSk7Ci0gICAgICAgIG1fY291
bnRlcnMtPnB1c2hPYmplY3QoZW50cnkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcg
ZWxlbWVudFRpdGxlKEVsZW1lbnQqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKLSAgICAgICAgYm9vbCBpc1hIVE1MID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+
aXNYSFRNTERvY3VtZW50KCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoaXNYSFRNTCA/IGVsZW1l
bnQtPm5vZGVOYW1lKCkgOiBlbGVtZW50LT5ub2RlTmFtZSgpLmxvd2VyKCkpOwotCi0gICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgaWRWYWx1ZSA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7
Ci0gICAgICAgIFN0cmluZyBpZFN0cmluZzsKLSAgICAgICAgaWYgKCFpZFZhbHVlLmlzTnVsbCgp
ICYmICFpZFZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiIyIp
OwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpZFZhbHVlKTsKLSAgICAgICAgfQordm9pZCBT
Y3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKERPTVdyYXBwZXJWaXNpdG9yKiB2aXNp
dG9yKQoreworICAgIGNsYXNzIFZpc2l0b3JBZGFwdGVyIDogcHVibGljIERPTVdyYXBwZXJNYXA8
Tm9kZT46OlZpc2l0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgVmlzaXRvckFkYXB0ZXIoRE9N
V3JhcHBlclZpc2l0b3IqIHZpc2l0b3IpIDogbV92aXNpdG9yKHZpc2l0b3IpIHsgfQogCi0gICAg
ICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsKLSAgICAgICAgaWYgKGVs
ZW1lbnQtPmhhc0NsYXNzKCkgJiYgZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpIHsKLSAgICAg
ICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNsYXNzTmFtZXNTdHJpbmcgPSBzdGF0aWNf
Y2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmNsYXNzTmFtZXMoKTsKLSAgICAgICAgICAg
IHNpemVfdCBjbGFzc05hbWVDb3VudCA9IGNsYXNzTmFtZXNTdHJpbmcuc2l6ZSgpOwotICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05hbWVDb3VudDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBjbGFzc05hbWVzU3Ry
aW5nW2ldOwotICAgICAgICAgICAgICAgIGlmICh1c2VkQ2xhc3NOYW1lcy5jb250YWlucyhjbGFz
c05hbWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB1
c2VkQ2xhc3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCIuIik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjbGFzc05hbWUpOwotICAg
ICAgICAgICAgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFT
dG9yZSosIE5vZGUqIG5vZGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KQorICAgICAgICB7
CisgICAgICAgICAgICBtX3Zpc2l0b3ItPnZpc2l0Tm9kZShub2RlKTsKICAgICAgICAgfQotICAg
ICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgSGFzaFNldDxOb2Rl
Kj4gbV9yb290czsKLSAgICBQYWdlKiBtX3BhZ2U7Ci0gICAgSW5zcGVjdG9yQXJyYXkqIG1fY291
bnRlcnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBTY3JpcHRQcm9maWxlcjo6ZG9tTm9kZUNvdW50KFBhZ2UqIHBhZ2UpCi17Ci0gICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiByZXN1bHQgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAg
Q291bnRlclZpc2l0b3IgY291bnRlclZpc2l0b3IocGFnZSwgcmVzdWx0LmdldCgpKTsKLSAgICB2
aXNpdERPTU5vZGVzKCZjb3VudGVyVmlzaXRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBw
cml2YXRlOgorICAgICAgICBET01XcmFwcGVyVmlzaXRvciogbV92aXNpdG9yOworICAgIH0gYWRh
cHRlcih2aXNpdG9yKTsKKyAgICB2aXNpdERPTU5vZGVzKCZhZGFwdGVyKTsKIH0KIAotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJv
ZmlsZXIuaAppbmRleCBkNzUyNzA3Li5lOTg3ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKQEAgLTQxLDggKzQxLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBET01XcmFwcGVyVmlzaXRvcjsKIGNsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKLWNsYXNzIFBhZ2U7CiAKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY3JpcHRQcm9maWxlcik7CkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBpc1NhbXBsaW5nKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0
YXRpYyBib29sIGhhc0hlYXBQcm9maWxlcigpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGRvbU5vZGVDb3VudChQYWdlKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRKU0RPTVdyYXBwZXJz
KERPTVdyYXBwZXJWaXNpdG9yKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NV3JhcHBlclZpc2l0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MjI5MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NV3JhcHBlclZpc2l0b3IuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBET01XcmFwcGVyVmlzaXRvcl9oCisjZGVmaW5lIERPTVdyYXBwZXJWaXNpdG9yX2gK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb2RlOworCitjbGFzcyBET01XcmFwcGVy
VmlzaXRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Tm9kZShOb2RlKikgPSAw
OworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkRPTVdyYXBwZXJWaXNpdG9yKCkgeyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBET01XcmFwcGVyVmlzaXRvcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggMjlkYWQzNS4uNTJj
MGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtNTAsMTAg
KzUwLDE2IEBACiAgICAgICAgICJoaWRkZW4iOiB0cnVlLAogICAgICAgICAidHlwZXMiOiBbCiAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIk5vZGVDb3VudCIsCisgICAgICAg
ICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiTm9kZSBuYW1lIHRvIGNvdW50IG1hcC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICJpZCI6ICJET01Hcm91cCIsCiAgICAgICAgICAgICAgICAgInR5
cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzaXplIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlQ291bnQiLCAiJHJlZiI6ICJOb2RlQ291bnQi
IH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGl0bGUiLCAidHlwZSI6ICJzdHJp
bmciIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCBiMjU2NGY0Li5k
OTcyNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHAKQEAgLTEsNTUgKzEsMTYwIEBACiAvKgotKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSogbWV0OgotKgotKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0qIGRpc3RyaWJ1dGlvbi4KLSogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotKgotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0qICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0qIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUFnZW50LmgiCiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiRE9NV3JhcHBlclZpc2l0b3IuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
U3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVt
ZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitjbGFzcyBDb3VudGVy
VmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyVmlzaXRvciB7CitwdWJsaWM6CisgICAgQ291bnRl
clZpc2l0b3IoUGFnZSogcGFnZSkgOiBtX3BhZ2UocGFnZSksIG1fY291bnRlcnMoSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpKSB7IH0KKworICAgIEluc3BlY3RvckFycmF5KiBjb3VudGVycygpIHsg
cmV0dXJuIG1fY291bnRlcnMuZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5vZGUo
Tm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgp
ICYmIG1fcGFnZSAhPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgTm9kZSogcm9vdE5vZGUgPSBub2RlOworICAgICAgICB3
aGlsZSAocm9vdE5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgIHJvb3ROb2RlID0gcm9v
dE5vZGUtPnBhcmVudE5vZGUoKTsKKworICAgICAgICBpZiAobV9yb290cy5jb250YWlucyhyb290
Tm9kZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcm9vdHMuYWRkKHJvb3ROb2Rl
KTsKKworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBlbnRyeSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CisgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInRpdGxlIiwgcm9vdE5v
ZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxFTUVOVF9OT0RFID8gZWxlbWVudFRpdGxlKHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihyb290Tm9kZSkpIDogcm9vdE5vZGUtPm5vZGVOYW1lKCkpOworICAg
ICAgICBpZiAocm9vdE5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfTk9ERSkKKyAg
ICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImRvY3VtZW50VVJJIiwgc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihyb290Tm9kZSktPmRvY3VtZW50VVJJKCkpOworICAgICAgICBtX2NvdW50ZXJzLT5w
dXNoT2JqZWN0KGVudHJ5KTsKKyAgICAgICAgY29sbGVjdFRyZWVTdGF0aXN0aWNzKHJvb3ROb2Rl
LCBlbnRyeS5nZXQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGNvbGxl
Y3RUcmVlU3RhdGlzdGljcyhOb2RlKiByb290Tm9kZSwgSW5zcGVjdG9yT2JqZWN0KiByZXN1bHQp
CisgICAgeworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgICAgIEhhc2hNYXA8U3Ry
aW5nLCBpbnQ+IG5hbWVUb0NvdW50OworICAgICAgICBOb2RlKiBjdXJyZW50Tm9kZSA9IHJvb3RO
b2RlOworICAgICAgICB3aGlsZSAoKGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNl
TmV4dE5vZGUocm9vdE5vZGUpKSkgeworICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAg
IFN0cmluZyBuYW1lID0gbm9kZU5hbWUoY3VycmVudE5vZGUpOworICAgICAgICAgICAgaW50IGN1
cnJlbnRDb3VudCA9IG5hbWVUb0NvdW50LmdldChuYW1lKTsKKyAgICAgICAgICAgIG5hbWVUb0Nv
dW50LnNldChuYW1lLCBjdXJyZW50Q291bnQgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBjaGlsZHJlblN0YXRzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKKyAgICAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgaW50Pjo6aXRlcmF0b3IgaXQgPSBu
YW1lVG9Db3VudC5iZWdpbigpOyBpdCAhPSBuYW1lVG9Db3VudC5lbmQoKTsgKytpdCkKKyAgICAg
ICAgICAgIGNoaWxkcmVuU3RhdHMtPnNldE51bWJlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwor
CisgICAgICAgIHJlc3VsdC0+c2V0TnVtYmVyKCJzaXplIiwgY291bnQpOworICAgICAgICByZXN1
bHQtPnNldE9iamVjdCgibm9kZUNvdW50IiwgY2hpbGRyZW5TdGF0cyk7CisgICAgfQorCisgICAg
c3RhdGljIFN0cmluZyBub2RlTmFtZShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5v
ZGUtPmRvY3VtZW50KCktPmlzWEhUTUxEb2N1bWVudCgpKQorICAgICAgICAgICAgIHJldHVybiBu
b2RlLT5ub2RlTmFtZSgpOworICAgICAgICByZXR1cm4gbm9kZS0+bm9kZU5hbWUoKS5sb3dlcigp
OworICAgIH0KKworICAgIFN0cmluZyBlbGVtZW50VGl0bGUoRWxlbWVudCogZWxlbWVudCkKKyAg
ICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5k
KG5vZGVOYW1lKGVsZW1lbnQpKTsKKworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkVmFs
dWUgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOworICAgICAgICBTdHJpbmcgaWRTdHJpbmc7
CisgICAgICAgIGlmICghaWRWYWx1ZS5pc051bGwoKSAmJiAhaWRWYWx1ZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiMiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoaWRWYWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4g
dXNlZENsYXNzTmFtZXM7CisgICAgICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygpICYmIGVsZW1l
bnQtPmlzU3R5bGVkRWxlbWVudCgpKSB7CisgICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3Ry
aW5nJiBjbGFzc05hbWVzU3RyaW5nID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1l
bnQpLT5jbGFzc05hbWVzKCk7CisgICAgICAgICAgICBzaXplX3QgY2xhc3NOYW1lQ291bnQgPSBj
bGFzc05hbWVzU3RyaW5nLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY2xhc3NOYW1lQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgY2xhc3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKKyAgICAgICAgICAgICAgICBp
ZiAodXNlZENsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFt
ZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLiIpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgSGFzaFNldDxOb2Rl
Kj4gbV9yb290czsKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5
PiBtX2NvdW50ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UKKwogSW5zcGVjdG9yTWVtb3J5QWdl
bnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpCiB7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTWVtb3J5
QWdlbnQ6OmdldERPTU5vZGVDb3VudChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4qIHJlc3VsdCkKIHsKLSAgICAqcmVzdWx0ID0gU2NyaXB0UHJvZmlsZXI6OmRvbU5vZGVDb3Vu
dChtX3BhZ2UpOworICAgIENvdW50ZXJWaXNpdG9yIGNvdW50ZXJWaXNpdG9yKG1fcGFnZSk7Cisg
ICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNET01XcmFwcGVycygmY291bnRlclZpc2l0b3IpOwor
CisgICAgLy8gTWFrZSBzdXJlIGFsbCBkb2N1bWVudHMgcmVhY2hhYmxlIGZyb20gdGhlIG1haW4g
ZnJhbWUgYXJlIGFjY291bnRlZC4KKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7
CisgICAgICAgIGlmIChEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAg
ICAgICBjb3VudGVyVmlzaXRvci52aXNpdE5vZGUoZG9jKTsKKyAgICB9CisKKyAgICAqcmVzdWx0
ID0gY291bnRlclZpc2l0b3IuY291bnRlcnMoKTsKIH0KIAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6
Okluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSwgSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaAppbmRleCBjZDc3Y2FkLi5kOGRhZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApAQCAtMSwzMiArMSwzMiBAQAogLyoK
LSogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0q
Ci0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0qIG1ldDoKLSoKLSogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0qIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKiBkaXN0cmlidXRpb24u
Ci0qICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0qIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0qIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0qIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotKi8KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCiAKICNpZm5kZWYgSW5zcGVjdG9yTWVtb3J5QWdlbnRfaAogI2RlZmluZSBJ
bnNwZWN0b3JNZW1vcnlBZ2VudF9oCg==
</data>
<flag name="review"
          id="118377"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118776</attachid>
            <date>2011-12-12 05:03:49 -0800</date>
            <delta_ts>2011-12-12 05:03:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>typed-node-counters.patch</filename>
            <type>text/plain</type>
            <size>27533</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZjY5ZmFiLi5lMzYyZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTEtMTItMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBwZXIgRG9jdW1lbnQgTm9kZSBjb3VudCBz
dGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDEwMAorCisgICAgICAgIE1lbW9yeSBhZ2VudCBub3cgcmV0dXJucyBjb3VudGVycyBmb3Ig
bm9kZXMgd2l0aCBnaXZlbiBuYW1lcy4gRm9yIGVhY2gKKyAgICAgICAgb2JqZWN0IGdyb3VwIHJv
b3QgdXNlciB3aWxsIHNlZSB0b3RhbCBudW1iZXIgb2YgaXRzIGRlc2NlbmR0YW50cyBhbmQgcGVy
CisgICAgICAgIHRhZyBuYW1lIGNvdW50cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbW92
ZXMgZ2VuZXJpYyBDb3VudGVyVmlzaXRvciBjb2RlIG91dCBvZiBWOCBiaW5kaW5ncy4gSXQKKyAg
ICAgICAgbWF5IHdlbGwgYmUgdXNlZCB3aXRoIGJvdGggSlMgZW5naW5lcy4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdy
YXBwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9E
T01XcmFwcGVyVmlzaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJW
aXNpdG9yOjp+RE9NV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTU5vZGVDb3VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmg6CisKIDIwMTEtMTIt
MTIgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIFdlYlBJ
bWFnZURlY29kZXI6IEluY3JlYXNlIGltYWdlL3dlYnAgZGVjb2RpbmcgcGVyZm9ybWFuY2UgMTAt
MjAlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5MDI5NmM5Li45YTNkYjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIwMjcsNiArMjAyNyw3IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NV3JhcHBlclZpc2l0b3IuaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA0MmZhYjBlLi5lZDA1NGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTE4OTQsNiArMTg5NCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGlu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIFwKICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxzLmggXAogICAgIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCBcCisgICAgaW5zcGVj
dG9yL0RPTVdyYXBwZXJWaXNpdG9yLmggXAogICAgIGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3Rv
cnkuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggXAogICAgIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTZiOGI0Mi4uY2RkZGY2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjcyNCw2ICsyNzI0LDcgQEAKICAgICAgICAgICAgICdp
bnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9E
T01Ob2RlSGlnaGxpZ2h0ZXIuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmNwcCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYjA1OGQ5MC4uNTU0Nzg5NyAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY4NDU4LDYgKzY4NDU4
LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3RvclxET01XcmFwcGVyVmlzaXRvci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSWRlbnRpZmllcnNGYWN0b3J5LmNw
cCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmY4MTJjMC4uMGJlNDU5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjAyNyw2
ICs2MDI3LDcgQEAKIAkJRjM0NzQyRTgxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERl
YnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzNDc0MkU2MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5j
cHAgKi87IH07CiAJCUYzNDc0MkU5MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjM0NzQyRTcxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggKi87
IH07CiAJCUYzNTBCNzM1MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNTBCNzM0
MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCAqLzsgfTsKKwkJRjM1
QUU1QUMxNDkyNUY1QjAwNEQ1Nzc2IC8qIERPTVdyYXBwZXJWaXNpdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzVBRTVBQjE0OTI1RjVCMDA0RDU3
NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCAqLzsgfTsKIAkJRjM2NDRBRkYxMTE5ODA1OTAwRTBE
NTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlw
dC5jcHAgKi87IH07CiAJCUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlw
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRB
RkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi87IH07CiAJCUYzNkUwN0E0
MTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNkUwN0EyMTM1OEE4QkUw
MEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLzsgfTsKQEAgLTEzNDEx
LDYgKzEzNDEyLDcgQEAKIAkJRjM0NzQyRTYxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlw
dERlYnVnU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdv
cmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjM0NzQyRTcxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNTBCNzM0MTNGMTM3N0QwMDg4MEM0MyAv
KiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3RydW1lbnRpbmdBZ2VudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGMzVBRTVBQjE0OTI1RjVCMDA0RDU3NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV3JhcHBlclZpc2l0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM2NDRBRkQxMTE5ODA1OTAwRTBENTM3IC8qIEluamVj
dGVkU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVj
dGVkU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM2NDRBRkUxMTE5
ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluamVjdGVkU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUYzNkUwN0EyMTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MzAsNiArMTQ1
MzIsNyBAQAogCQkJCTU5MTAyRkJBMTQzMjdEM0IwMDNDOUQwNCAvKiBDb250ZW50U2VhcmNoVXRp
bHMuaCAqLywKIAkJCQk0RjE0NDIyNjEzMzlGRDYyMDBFMEQ2RjggLyogRE9NTm9kZUhpZ2hsaWdo
dGVyLmNwcCAqLywKIAkJCQk0RjE0NDIyNzEzMzlGRDYyMDBFMEQ2RjggLyogRE9NTm9kZUhpZ2hs
aWdodGVyLmggKi8sCisJCQkJRjM1QUU1QUIxNDkyNUY1QjAwNEQ1Nzc2IC8qIERPTVdyYXBwZXJW
aXNpdG9yLmggKi8sCiAJCQkJNTkxM0EyM0YxM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZpZXJz
RmFjdG9yeS5jcHAgKi8sCiAJCQkJNTkxM0EyNDAxM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZp
ZXJzRmFjdG9yeS5oICovLAogCQkJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3Rl
ZFNjcmlwdC5jcHAgKi8sCkBAIC0yNDgwNSw2ICsyNDgwOCw3IEBACiAJCQkJMjY1NTQxMzkxNDg5
ODExQzAwMERGQzVEIC8qIEtleUV2ZW50Q29kZXNJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCThB
MTk1OTMyMTQ3RUExNkUwMEQxRUE2MSAvKiBET01XZWJLaXROYW1lZEZsb3cuaCBpbiBIZWFkZXJz
ICovLAogCQkJCThBMTk1OTM0MTQ3RUExNkUwMEQxRUE2MSAvKiBET01XZWJLaXROYW1lZEZsb3dJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjM1QUU1QUMxNDkyNUY1QjAwNEQ1Nzc2IC8q
IERPTVdyYXBwZXJWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkMxN0EzRTE0OTFEMkQ0
MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaAppbmRleCBjNTNlNDAyLi4xMzNiMGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKQEAgLTM3LDggKzM3LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBET01XcmFwcGVyVmlzaXRvcjsKIGNs
YXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFBhZ2U7CiAKIGNsYXNzIFNjcmlwdFBy
b2ZpbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHRQcm9maWxlcik7CkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1NhbXBsaW5nKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNIZWFwUHJvZmlsZXIoKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBjb3VudGVyIGZvciBKU0MuIFNl
ZSBidWcgNzM5MzYgZm9yIG1vcmUgZGV0YWlscy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gZG9tTm9kZUNvdW50KFBhZ2UqKSB7IHJldHVybiAwOyB9OworICAgIHN0YXRp
YyB2b2lkIHZpc2l0SlNET01XcmFwcGVycyhET01XcmFwcGVyVmlzaXRvciopIHsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0UHJvZmlsZXIuY3BwCmluZGV4IGI3NzgzZGMuLmNiZWRiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKQEAgLTMxLDE0ICszMSwxMyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAKLSNpbmNs
dWRlICJET01Ob2RlSGlnaGxpZ2h0ZXIuaCIKKyNpbmNsdWRlICJET01XcmFwcGVyVmlzaXRvci5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVz
LmgiCiAjaW5jbHVkZSAiUmV0YWluZWRET01JbmZvLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpbmNsdWRlIDx2OC1wcm9maWxlci5oPgogCkBA
IC0xNDgsODMgKzE0NywyMCBAQCB2b2lkIFNjcmlwdFByb2ZpbGVyOjppbml0aWFsaXplKCkKICNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogfQogCi1uYW1lc3BhY2UgewotCi1jbGFzcyBDb3Vu
dGVyVmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyTWFwPE5vZGU+OjpWaXNpdG9yIHsKLXB1Ymxp
YzoKLSAgICBDb3VudGVyVmlzaXRvcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JBcnJheSogY291bnRl
cnMpIDogbV9wYWdlKHBhZ2UpLCBtX2NvdW50ZXJzKGNvdW50ZXJzKSB7IH0KLQotICAgIHZvaWQg
dmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSogc3RvcmUsIE5vZGUqIG5vZGUsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCi0gICAgewotICAgICAgICBpZiAobm9kZS0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSAmJiBtX3BhZ2UgIT0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
cGFnZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIE5vZGUqIHJvb3ROb2RlID0g
bm9kZTsKLSAgICAgICAgd2hpbGUgKHJvb3ROb2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAg
ICByb290Tm9kZSA9IHJvb3ROb2RlLT5wYXJlbnROb2RlKCk7Ci0KLSAgICAgICAgaWYgKG1fcm9v
dHMuY29udGFpbnMocm9vdE5vZGUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3Jv
b3RzLmFkZChyb290Tm9kZSk7Ci0KLSAgICAgICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgICAg
ICBOb2RlKiBjdXJyZW50Tm9kZSA9IHJvb3ROb2RlOwotICAgICAgICB3aGlsZSAoKGN1cnJlbnRO
b2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdE5vZGUpKSkKLSAgICAgICAg
ICAgICsrY291bnQ7Ci0KLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZW50cnkgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBlbnRyeS0+c2V0TnVtYmVyKCJzaXpl
IiwgY291bnQpOwotCi0gICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInRpdGxlIiwgcm9vdE5vZGUt
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxFTUVOVF9OT0RFID8gZWxlbWVudFRpdGxlKHN0YXRpY19j
YXN0PEVsZW1lbnQqPihyb290Tm9kZSkpIDogcm9vdE5vZGUtPm5vZGVOYW1lKCkpOwotICAgICAg
ICBpZiAocm9vdE5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfTk9ERSkKLSAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImRvY3VtZW50VVJJIiwgc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihyb290Tm9kZSktPmRvY3VtZW50VVJJKCkpOwotICAgICAgICBtX2NvdW50ZXJzLT5wdXNo
T2JqZWN0KGVudHJ5KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIGVsZW1lbnRUaXRs
ZShFbGVtZW50KiBlbGVtZW50KQotICAgIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
Ci0gICAgICAgIGJvb2wgaXNYSFRNTCA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmlzWEhUTUxEb2N1
bWVudCgpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGlzWEhUTUwgPyBlbGVtZW50LT5ub2RlTmFt
ZSgpIDogZWxlbWVudC0+bm9kZU5hbWUoKS5sb3dlcigpKTsKLQotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGlkVmFsdWUgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOwotICAgICAgICBT
dHJpbmcgaWRTdHJpbmc7Ci0gICAgICAgIGlmICghaWRWYWx1ZS5pc051bGwoKSAmJiAhaWRWYWx1
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiMiKTsKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoaWRWYWx1ZSk7Ci0gICAgICAgIH0KK3ZvaWQgU2NyaXB0UHJvZmls
ZXI6OnZpc2l0SlNET01XcmFwcGVycyhET01XcmFwcGVyVmlzaXRvciogdmlzaXRvcikKK3sKKyAg
ICBjbGFzcyBWaXNpdG9yQWRhcHRlciA6IHB1YmxpYyBET01XcmFwcGVyTWFwPE5vZGU+OjpWaXNp
dG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFZpc2l0b3JBZGFwdGVyKERPTVdyYXBwZXJWaXNp
dG9yKiB2aXNpdG9yKSA6IG1fdmlzaXRvcih2aXNpdG9yKSB7IH0KIAotICAgICAgICBIYXNoU2V0
PEF0b21pY1N0cmluZz4gdXNlZENsYXNzTmFtZXM7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXND
bGFzcygpICYmIGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBjb25z
dCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzU3RyaW5nID0gc3RhdGljX2Nhc3Q8U3R5bGVk
RWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCk7Ci0gICAgICAgICAgICBzaXplX3QgY2xh
c3NOYW1lQ291bnQgPSBjbGFzc05hbWVzU3RyaW5nLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1lQ291bnQ7ICsraSkgewotICAgICAgICAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKLSAg
ICAgICAgICAgICAgICBpZiAodXNlZENsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdXNlZENsYXNzTmFt
ZXMuYWRkKGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLiIpOwot
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2xhc3NOYW1lKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3RvcmUqLCBOb2Rl
KiBub2RlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PikKKyAgICAgICAgeworICAgICAgICAg
ICAgbV92aXNpdG9yLT52aXNpdE5vZGUobm9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOwotICAgIH0KLQotICAgIEhhc2hTZXQ8Tm9kZSo+IG1fcm9vdHM7
Ci0gICAgUGFnZSogbV9wYWdlOwotICAgIEluc3BlY3RvckFycmF5KiBtX2NvdW50ZXJzOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UKLQotUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gU2NyaXB0UHJv
ZmlsZXI6OmRvbU5vZGVDb3VudChQYWdlKiBwYWdlKQotewotICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gcmVzdWx0ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgIENvdW50ZXJWaXNp
dG9yIGNvdW50ZXJWaXNpdG9yKHBhZ2UsIHJlc3VsdC5nZXQoKSk7Ci0gICAgdmlzaXRET01Ob2Rl
cygmY291bnRlclZpc2l0b3IpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcHJpdmF0ZToKKyAg
ICAgICAgRE9NV3JhcHBlclZpc2l0b3IqIG1fdmlzaXRvcjsKKyAgICB9IGFkYXB0ZXIodmlzaXRv
cik7CisgICAgdmlzaXRET01Ob2RlcygmYWRhcHRlcik7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJv
ZmlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKaW5k
ZXggZDc1MjcwNy4uZTk4N2Y2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRQcm9maWxlci5oCkBAIC00MSw4ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRE9NV3JhcHBlclZpc2l0b3I7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1j
bGFzcyBQYWdlOwogCiBjbGFzcyBTY3JpcHRQcm9maWxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2NyaXB0UHJvZmlsZXIpOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgaXNTYW1wbGluZygpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBo
YXNIZWFwUHJvZmlsZXIoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZSgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBkb21Ob2RlQ291
bnQoUGFnZSopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0SlNET01XcmFwcGVycyhET01XcmFwcGVy
VmlzaXRvciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NV3JhcHBlclZpc2l0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iODIyOTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9N
V3JhcHBlclZpc2l0b3JfaAorI2RlZmluZSBET01XcmFwcGVyVmlzaXRvcl9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTm9kZTsKKworY2xhc3MgRE9NV3JhcHBlclZpc2l0b3Igewor
cHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5vZGUoTm9kZSopID0gMDsKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIH5ET01XcmFwcGVyVmlzaXRvcigpIHsgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NV3JhcHBlclZpc2l0b3JfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDI5ZGFkMzUuLjEyYmEzYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTUwLDExICs1MCwyMiBAQAog
ICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKICAgICAgICAgInR5cGVzIjogWwogICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICJpZCI6ICJOb2RlQ291bnQiLAorICAgICAgICAgICAgICAgICJ0
eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZU5hbWUiLCAidHlwZSI6ICJzdHJpbmciIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY291bnQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9
CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTnVt
YmVyIG9mIG5vZGVzIHdpdGggZ2l2ZW4gbmFtZS4iCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICJpZCI6ICJET01Hcm91cCIsCiAgICAgICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaXplIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0aXRsZSIsICJ0eXBlIjogInN0cmluZyIgfQor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRpdGxlIiwgInR5cGUiOiAic3RyaW5nIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50VVJJIiwgInR5cGUiOiAi
c3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm5vZGVDb3VudCIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJOb2Rl
Q291bnQiIH19CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
aW5kZXggYjI1NjRmNC4uNWU2NDE4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMSw1NSArMSwxNjUgQEAKIC8qCi0qIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotKiBtZXQ6Ci0qCi0qICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0qIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSogZGlzdHJpYnV0aW9uLgotKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0qIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0qIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0qIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0qIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSovCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5
QWdlbnQuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKKyNpbmNsdWRlICJET01XcmFwcGVy
VmlzaXRvci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCisjaW5jbHVkZSAiU3R5
bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFjZSB7
CisKK2NsYXNzIENvdW50ZXJWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJWaXNpdG9yIHsKK3B1
YmxpYzoKKyAgICBDb3VudGVyVmlzaXRvcihQYWdlKiBwYWdlKSA6IG1fcGFnZShwYWdlKSwgbV9j
b3VudGVycyhJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkpIHsgfQorCisgICAgSW5zcGVjdG9yQXJy
YXkqIGNvdW50ZXJzKCkgeyByZXR1cm4gbV9jb3VudGVycy5nZXQoKTsgfQorCisgICAgdmlydHVh
bCB2b2lkIHZpc2l0Tm9kZShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUtPmRv
Y3VtZW50KCktPmZyYW1lKCkgJiYgbV9wYWdlICE9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkt
PnBhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBOb2RlKiByb290Tm9kZSA9
IG5vZGU7CisgICAgICAgIHdoaWxlIChyb290Tm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICAg
ICAgcm9vdE5vZGUgPSByb290Tm9kZS0+cGFyZW50Tm9kZSgpOworCisgICAgICAgIGlmIChtX3Jv
b3RzLmNvbnRhaW5zKHJvb3ROb2RlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9y
b290cy5hZGQocm9vdE5vZGUpOworCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGVu
dHJ5ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgZW50cnktPnNldFN0cmlu
ZygidGl0bGUiLCByb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUgPyBl
bGVtZW50VGl0bGUoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJvb3ROb2RlKSkgOiByb290Tm9kZS0+
bm9kZU5hbWUoKSk7CisgICAgICAgIGlmIChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpE
T0NVTUVOVF9OT0RFKQorICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygiZG9jdW1lbnRVUkki
LCBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHJvb3ROb2RlKS0+ZG9jdW1lbnRVUkkoKSk7CisgICAg
ICAgIGNvbGxlY3RUcmVlU3RhdGlzdGljcyhyb290Tm9kZSwgZW50cnkuZ2V0KCkpOworICAgICAg
ICBtX2NvdW50ZXJzLT5wdXNoT2JqZWN0KGVudHJ5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
c3RhdGljIHZvaWQgY29sbGVjdFRyZWVTdGF0aXN0aWNzKE5vZGUqIHJvb3ROb2RlLCBJbnNwZWN0
b3JPYmplY3QqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAg
ICAgICAgSGFzaE1hcDxTdHJpbmcsIGludD4gbmFtZVRvQ291bnQ7CisgICAgICAgIE5vZGUqIGN1
cnJlbnROb2RlID0gcm9vdE5vZGU7CisgICAgICAgIHdoaWxlICgoY3VycmVudE5vZGUgPSBjdXJy
ZW50Tm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZSkpKSB7CisgICAgICAgICAgICArK2Nv
dW50OworICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBub2RlTmFtZShjdXJyZW50Tm9kZSk7Cisg
ICAgICAgICAgICBpbnQgY3VycmVudENvdW50ID0gbmFtZVRvQ291bnQuZ2V0KG5hbWUpOworICAg
ICAgICAgICAgbmFtZVRvQ291bnQuc2V0KG5hbWUsIGN1cnJlbnRDb3VudCArIDEpOworICAgICAg
ICB9CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlblN0YXRzID0gSW5z
cGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBpbnQ+
OjppdGVyYXRvciBpdCA9IG5hbWVUb0NvdW50LmJlZ2luKCk7IGl0ICE9IG5hbWVUb0NvdW50LmVu
ZCgpOyArK2l0KSB7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBub2RlQ291
bnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgbm9kZUNvdW50LT5z
ZXRTdHJpbmcoIm5vZGVOYW1lIiwgaXQtPmZpcnN0KTsKKyAgICAgICAgICAgIG5vZGVDb3VudC0+
c2V0TnVtYmVyKCJjb3VudCIsIGl0LT5zZWNvbmQpOworICAgICAgICAgICAgY2hpbGRyZW5TdGF0
cy0+cHVzaE9iamVjdChub2RlQ291bnQpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LT5z
ZXROdW1iZXIoInNpemUiLCBjb3VudCk7CisgICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoIm5vZGVD
b3VudCIsIGNoaWxkcmVuU3RhdHMpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcgbm9kZU5h
bWUoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpLT5pc1hI
VE1MRG9jdW1lbnQoKSkKKyAgICAgICAgICAgICByZXR1cm4gbm9kZS0+bm9kZU5hbWUoKTsKKyAg
ICAgICAgcmV0dXJuIG5vZGUtPm5vZGVOYW1lKCkubG93ZXIoKTsKKyAgICB9CisKKyAgICBTdHJp
bmcgZWxlbWVudFRpdGxlKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgeworICAgICAgICBTdHJpbmdC
dWlsZGVyIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlTmFtZShlbGVtZW50KSk7
CisKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZWxlbWVudC0+Z2V0SWRB
dHRyaWJ1dGUoKTsKKyAgICAgICAgU3RyaW5nIGlkU3RyaW5nOworICAgICAgICBpZiAoIWlkVmFs
dWUuaXNOdWxsKCkgJiYgIWlkVmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCIjIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlkVmFsdWUpOworICAgICAg
ICB9CisKKyAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOworICAg
ICAgICBpZiAoZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQo
KSkgeworICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lc1N0cmlu
ZyA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+Y2xhc3NOYW1lcygpOwor
ICAgICAgICAgICAgc2l6ZV90IGNsYXNzTmFtZUNvdW50ID0gY2xhc3NOYW1lc1N0cmluZy5zaXpl
KCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNsYXNzTmFtZUNvdW50OyAr
K2kpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSA9IGNs
YXNzTmFtZXNTdHJpbmdbaV07CisgICAgICAgICAgICAgICAgaWYgKHVzZWRDbGFzc05hbWVzLmNv
bnRhaW5zKGNsYXNzTmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIHVzZWRDbGFzc05hbWVzLmFkZChjbGFzc05hbWUpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIi4iKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNsYXNz
TmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOworICAgIH0KKworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fcm9vdHM7CisgICAgUGFn
ZSogbV9wYWdlOworICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gbV9jb3VudGVyczsKK307CisK
K30gLy8gbmFtZXNwYWNlCisKIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp+SW5zcGVjdG9yTWVtb3J5
QWdlbnQoKQogewogfQogCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Ob2RlQ291
bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpCiB7Ci0gICAg
KnJlc3VsdCA9IFNjcmlwdFByb2ZpbGVyOjpkb21Ob2RlQ291bnQobV9wYWdlKTsKKyAgICBDb3Vu
dGVyVmlzaXRvciBjb3VudGVyVmlzaXRvcihtX3BhZ2UpOworICAgIFNjcmlwdFByb2ZpbGVyOjp2
aXNpdEpTRE9NV3JhcHBlcnMoJmNvdW50ZXJWaXNpdG9yKTsKKworICAgIC8vIE1ha2Ugc3VyZSBh
bGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBtYWluIGZyYW1lIGFyZSBhY2NvdW50ZWQu
CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoRG9jdW1l
bnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgY291bnRlclZpc2l0b3Iu
dmlzaXROb2RlKGRvYyk7CisgICAgfQorCisgICAgKnJlc3VsdCA9IGNvdW50ZXJWaXNpdG9yLmNv
dW50ZXJzKCk7CiB9CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0
ZSogc3RhdGUsIFBhZ2UqIHBhZ2UsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggY2Q3
N2NhZC4uZDhkYWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmgKQEAgLTEsMzIgKzEsMzIgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotKiBtZXQ6Ci0qCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0qIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSogZGlzdHJpYnV0aW9uLgotKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0qIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0qIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0qIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0qIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSov
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwogCiAjaWZu
ZGVmIEluc3BlY3Rvck1lbW9yeUFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yTWVtb3J5QWdlbnRf
aAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>