<?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>18661</bug_id>
          
          <creation_ts>2008-04-21 10:31:47 -0700</creation_ts>
          <short_desc>Proxy server issue in Sunday&apos;s Nightly</short_desc>
          <delta_ts>2008-04-28 23:59:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenny Sabarese">kenny</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>justinwebkit</cc>
    
    <cc>ruben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>78421</commentid>
    <comment_count>0</comment_count>
    <who name="Kenny Sabarese">kenny</who>
    <bug_when>2008-04-21 10:31:47 -0700</bug_when>
    <thetext>After downloading Sunday&apos;s Nightly build i had no issues at home. but when coming to work where we have a proxy server, i get a &quot;you are not connected to the internet&quot; message when browsing. 

Safari 3.1.1 and older nightly builds as well as other browsers and apps all function as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78485</commentid>
    <comment_count>1</comment_count>
    <who name="Justin">justinwebkit</who>
    <bug_when>2008-04-21 16:33:24 -0700</bug_when>
    <thetext>I can confirm on Mac OS X 10.4.12.  Regression testing puts the change between r32284 and r32341.

Error message on Mac OS X 10.4.12 is the following, regardless of whether the server is being accessed through the proxy:

Safari can’t connect to the server.
Safari can’t open the page “http://nightly.webkit.org/start/trunk/32341” because it could not connect to the server “nightly.webkit.org”.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78555</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-22 12:44:44 -0700</bug_when>
    <thetext>Are you using a PAC file to configure proxy support?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78560</commentid>
    <comment_count>3</comment_count>
    <who name="Kenny Sabarese">kenny</who>
    <bug_when>2008-04-22 13:04:19 -0700</bug_when>
    <thetext>we have both PAC file and a traditional HTTP proxy and  it looks like it is only happening when i use a pac file.

i personally have the pac file saved on my local machine, but most users have a URL pointing to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78561</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-22 13:08:08 -0700</bug_when>
    <thetext>Would you be able to upload the PAC file here for testing (if it doesn&apos;t contain any sensitive information)?

There were some recent changes that could easily affect PAC file handling, but those were all before r32284. Could you please double-check if that revision works for you? Also, could you try manually configuring proxy settings to make sure that it is PAC file handling that is broken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78640</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-23 04:30:41 -0700</bug_when>
    <thetext>I do see some weirdness with nightly builds and PAC files, and will try to fix what I see - but it would still help to get answers to the above questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78848</commentid>
    <comment_count>6</comment_count>
    <who name="Kenny Sabarese">kenny</who>
    <bug_when>2008-04-24 18:15:31 -0700</bug_when>
    <thetext>i&apos;ll be able to look into this more next week from the office. sorry for the delay</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78879</commentid>
    <comment_count>7</comment_count>
    <who name="Ruben Bakker">ruben</who>
    <bug_when>2008-04-24 23:22:03 -0700</bug_when>
    <thetext>After some testing I found WebKit 31916 the last working version, 31981 contains the bug. I scanned all ChangeSets between 31917 and 31981, but found nothing obvious. 

I don&apos;t get the same error message as Kenny, however. In my case Gmail doesn&apos;t load: The &quot;Loading...&quot; doesn&apos;t go away and progress stops. This doesn&apos;t happen all the time. When it works WebKit is much slower than normal, though.

@Alexey: I will send my PAC file by direct email, I don&apos;t want it to be publicly available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78888</commentid>
    <comment_count>8</comment_count>
      <attachid>20814</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-25 00:03:07 -0700</bug_when>
    <thetext>Created attachment 20814
Fix - work in progress

This should fix the problem, but causes a performance regression on SunSpider, so it needs more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79120</commentid>
    <comment_count>9</comment_count>
      <attachid>20866</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-28 08:32:10 -0700</bug_when>
    <thetext>Created attachment 20866
proposed fix

** TOTAL **:           3419.0ms +/- 0.1%   3419.7ms +/- 0.2% 


  3d:                  *1.005x as slow*
    cube:              -               
    morph:             *1.003x as slow*
    raytrace:          *1.013x as slow*

  access:              1.006x as fast  
    binary-trees:      ??              
    fannkuch:          1.009x as fast  
    nbody:             1.006x as fast  
    nsieve:            ??              

  bitops:              *1.005x as slow*
    3bit-bits-in-byte: *1.026x as slow*
    bits-in-byte:      -               
    bitwise-and:       *1.004x as slow*
    nsieve-bits:       -               

  controlflow:         -               
    recursive:         -               

  crypto:              ??              
    aes:               *1.008x as slow*
    md5:               -               
    sha1:              -               

  date:                ??              
    format-tofte:      ??              
    format-xparb:      -               

  math:                -               
    cordic:            -               
    partial-sums:      -               
    spectral-norm:     1.004x as fast  

  regexp:              1.004x as fast  
    dna:               1.004x as fast  

  string:              ??              
    base64:            ??              
    fasta:             -               
    tagcloud:          -               
    unpack-code:       *1.009x as slow*
    validate-input:    -</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79121</commentid>
    <comment_count>10</comment_count>
      <attachid>20866</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-04-28 09:15:23 -0700</bug_when>
    <thetext>Comment on attachment 20866
proposed fix

 192         ExecState(JSGlobalObject*, JSObject* thisObject, JSObject* globalThisValue, FunctionBodyNode*, ExecState* callingExecState, FunctionImp*, const List&amp; args) __attribute__ ((__always_inline__));

This needs to use the ALWAYS_INLINE macro so it will compile in non-GCC compilers.

 66 extern HashTable arrayTable;
 67 extern HashTable dateTable;
 68 extern HashTable mathTable;
 69 extern HashTable numberTable;
 70 extern HashTable RegExpImpTable;
 71 extern HashTable RegExpObjectImpTable;
 72 extern HashTable stringTable;

Since these are global identifiers with external linkage, I would prefer that they had more-specific suffixes on the names -- &quot;Table&quot; doesn&apos;t say it all to me. But I guess these names aren&apos;t new.

6465     class SyntaxErrorPrototype;
 66     struct ThreadClassInfoHashTables;
6567     class TypeError;

We normally put the struct declarations in a separate paragraph below the class ones.

 72         if (classPropHashTableGetterFunction)
 73             return classPropHashTableGetterFunction(exec);
 74         else
 75             return staticPropHashTable;

We normally omit else before return.

 134         usleep(1000);

Is this portable to all platforms where we use pthreads?

r=me otherwise

review- because of the ALWAYS_INLINE issue above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79134</commentid>
    <comment_count>11</comment_count>
      <attachid>20869</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-28 10:00:21 -0700</bug_when>
    <thetext>Created attachment 20869
updated fix

(In reply to comment #10)
&gt; This needs to use the ALWAYS_INLINE macro so it will compile in non-GCC
&gt; compilers.

Oops - this wasn&apos;t even supposed to be in the patch, was just an experiment.

&gt; We normally put the struct declarations in a separate paragraph below the class
&gt; ones.

Fixed.

&gt; We normally omit else before return.

Fixed.

&gt;  134         usleep(1000);

This file is currently only used on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79136</commentid>
    <comment_count>12</comment_count>
      <attachid>20869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-04-28 10:12:43 -0700</bug_when>
    <thetext>Comment on attachment 20869
updated fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79157</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-28 11:25:58 -0700</bug_when>
    <thetext>Committed revision 32652.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79197</commentid>
    <comment_count>14</comment_count>
    <who name="Ruben Bakker">ruben</who>
    <bug_when>2008-04-28 23:59:57 -0700</bug_when>
    <thetext>I tested nightly build #32652 with the proxy PAC file that let previous WebKit fail: It now works. 
Thanks for your work, Alexey!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20814</attachid>
            <date>2008-04-25 00:03:07 -0700</date>
            <delta_ts>2008-04-28 08:32:10 -0700</delta_ts>
            <desc>Fix - work in progress</desc>
            <filename>HashTables.txt</filename>
            <type>text/plain</type>
            <size>81599</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMyNTA5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMwIEBACisyMDA4LTA0LTI0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXggcnVuLXdlYmtpdC10ZXN0cyAtLXRocmVhZGluZwor
ICAgICAgICBhbmQgcHJvdmlzaW9uYWxseSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODY2MT4KKyAgICAgICAgUHJveHkgc2VydmVyIGlzc3VlIGluIFN1bmRh
eSdzIE5pZ2h0bHkKKworICAgICAgICBDaGFuZ2VkIENsYXNzSW5mbyBvYmplY3RzIGZvciBidWls
dC1pbiBvYmplY3RzIHRvIGhvbGQgYSBnZXR0ZXIgZnVuY3Rpb24gcmV0dXJuaW5nCisgICAgICAg
IGEgcGVyLXRocmVhZCBpbnN0YW5jZS4gVGhpcyBtYWtlcyBpdCBzYWZlIHRvIHNoYXJlIHRoZXNl
IENsYXNzSW5mbyBvYmplY3RzIGJldHdlZW4gdGhyZWFkcyAtCisgICAgICAgIGFuZCB0aGVzZSBh
cmUgdGhlIG9ubHkgb25lcyB0aGF0IG5lZWQgdG8gYmUgc2hhcmVkLgorCisgICAgICAgICoga2pz
L2xleGVyLmNwcDoKKyAgICAgICAgKEtKUzo6TGV4ZXI6OkxleGVyKToKKyAgICAgICAgKEtKUzo6
TGV4ZXI6On5MZXhlcik6CisgICAgICAgICoga2pzL2xleGVyLmg6CisgICAgICAgIE1hZGUgbWFp
blRhYmxlIGEgbWVtYmVyIG9mIExleGVyLCBzbyB0aGF0IGl0IG5vIGxvbmdlciBuZWVkcyB0byBi
ZSBzaGFyZWQgYmV0d2VlbiB0aHJlYWRzLgorCisgICAgICAgICoga2pzL2xvb2t1cC5oOgorICAg
ICAgICAoS0pTOjpIYXNoVGFibGU6OmVudHJ5KTogUmVtb3ZlZCBsYXp5IGluaXRpYWxpemF0aW9u
IG9mIHRhYmxlLiBGb3IgYnVpbHQtaW4gb2JqZWN0cywgaXQgaXMKKyAgICAgICAgbm93IGNyZWF0
ZWQgcmlnaHQgYWZ0ZXIgY29uc3RydWN0aW9uLCBhbmQgZm9yIGFsbCBvdGhlcnMsIGl0IGlzIGxh
emlseSBjcmVhdGVkIGluCisgICAgICAgIENsYXNzSW5mbzo6cHJvcEhhc2hUYWJsZSgpLgorCisg
ICAgICAgICoga2pzL29iamVjdC5jcHA6CisgICAgICAgIChLSlM6OkNsYXNzSW5mbzo6cHJvcEhh
c2hUYWJsZSk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChLSlM6OkpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkpOgorICAgICAgICAoS0pT
OjpKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAoS0pTOjpKU09iamVj
dDo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmdldFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIGtqcy9vYmplY3QuaDoKKyAgICAgICAgQWRkZWQgYSBu
ZXcgY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVyRnVuY3Rpb24gZmllbGQgdG8gQ2xhc3NJbmZvLiBJ
ZiBpdCBpcyBub24temVybywgdGhlCisgICAgICAgIHN0YXRpYyB0YWJsZSBpcyBub3QgdXNlZC4K
KworICAgICAgICAqIGtqcy9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoS0pTOjpKU0dsb2Jh
bE9iamVjdDo6YXJyYXlUYWJsZSk6IEFuIGFjY2Vzc29yIGZvciBwZXItdGhyZWFkIHRhYmxlIGNh
Y2hlZCBvbiBKU0dsb2JhbE9iamVjdC4KKyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6OmRh
dGVUYWJsZSk6IERpdHRvLgorICAgICAgICAoS0pTOjpKU0dsb2JhbE9iamVjdDo6bWF0aFRhYmxl
KTogRGl0dG8uCisgICAgICAgIChLSlM6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUYWJsZSk6IERp
dHRvLgorICAgICAgICAoS0pTOjpKU0dsb2JhbE9iamVjdDo6UmVnRXhwSW1wVGFibGUpOiBEaXR0
by4KKyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6OlJlZ0V4cE9iamVjdEltcFRhYmxlKTog
RGl0dG8uCisgICAgICAgIChLSlM6OkpTR2xvYmFsT2JqZWN0OjpzdHJpbmdUYWJsZSk6IERpdHRv
LgorICAgICAgICAoS0pTOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRhOjpKU0ds
b2JhbE9iamVjdERhdGEpOiBBZGRlZCBhZm9yZW1lbnRpb25lZCB0YWJsZQorICAgICAgICByZWZl
cmVuY2VzLiBNYWRlIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdERhdGE6Omdsb2JhbEV4
ZWMgYW4gT3duUHRyLCBzbyB0aGF0IGl0IGNhbgorICAgICAgICBiZSBpbml0aWFsaXplZCBmcm9t
IEpTR2xvYmFsT2JqZWN0Ojppbml0KCkgYWZ0ZXIgdGhlbS4gT3RoZXJ3aXNlLCBFeGVjU3RhdGUg
Y29uc3RydWN0b3Igd2FzCisgICAgICAgIHRyeWluZyB0byBhY2Nlc3MgaGFsZi1pbml0aWFsaXpl
ZCBKU0dsb2JhbE9iamVjdCB0byBtYWtlIGl0cyBvd24gY29weSBvZiB0aGVzZSB0YWJsZQorICAg
ICAgICByZWZlcmVuY2VzLCBhbmQgZmFpbGVkLgorICAgICAgICAoS0pTOjpKU0dsb2JhbE9iamVj
dDo6SlNHbG9iYWxPYmplY3QpOiBQYXNzICJ0aGlzIiB2YWx1ZSB0byBpbml0KCkgdG8gY3JlYXRl
IGdsb2JhbEV4ZWMuCisKKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoS0pTOjpUaHJlYWRIYXNoVGFibGVzOjpUaHJlYWRIYXNoVGFibGVzKTogQSBzaW5nbGUgdGhy
ZWFkLXNwZWNpZmljIG9iamVjdCB0byBob2xkIGhhc2gKKyAgICAgICAgdGFibGVzIGZvciBhbGwg
YnVpbHQtaW4gb2JqZWN0cywgYW5kIGluaXRpYWxpemUgdGhlbS4gVGhlIG9sZCBzdGF0aWMgc3Ry
dWN0cyBhcmUgY29waWVkCisgICAgICAgIHRvIGNyZWF0ZSBwZXItdGhyZWFkIGluc3RhbmNlcy4K
KyAgICAgICAgKEtKUzo6VGhyZWFkSGFzaFRhYmxlczo6flRocmVhZEhhc2hUYWJsZXMpOiAKKyAg
ICAgICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6OnRocmVhZEhhc2hUYWJsZXMpOgorICAgICAgICAo
S0pTOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6IEJlc2lkZXMgdGFibGUgaW5pdGlhbGl6YXRpb24s
IGdsb2JhbEV4ZWMgaXMgbm93IGNvbnN0cnVjdGVkIGhlcmUuCisgICAgICAgIChLSlM6OkpTR2xv
YmFsT2JqZWN0OjpyZXNldCk6IFN5bnRheCBjaGFuZ2VzIGR1ZSB0byBnbG9iYWxFeGVjIGJlaW5n
IGFuIE93blB0ciBub3cuCisgICAgICAgIChLSlM6OkpTR2xvYmFsT2JqZWN0OjptYXJrKTogRGl0
dG8uCisgICAgICAgIChLSlM6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKTogRGl0dG8uCisK
KyAgICAgICAgKiBranMvRXhlY1N0YXRlLmg6CisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6YXJy
YXlUYWJsZSk6CisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6ZGF0ZVRhYmxlKToKKyAgICAgICAg
KEtKUzo6RXhlY1N0YXRlOjptYXRoVGFibGUpOgorICAgICAgICAoS0pTOjpFeGVjU3RhdGU6Om51
bWJlclRhYmxlKToKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpSZWdFeHBJbXBUYWJsZSk6Cisg
ICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6UmVnRXhwT2JqZWN0SW1wVGFibGUpOgorICAgICAgICAo
S0pTOjpFeGVjU3RhdGU6OnN0cmluZ1RhYmxlKToKKyAgICAgICAgKiBranMvRXhlY1N0YXRlSW5s
aW5lcy5oOgorICAgICAgICAoS0pTOjpFeGVjU3RhdGU6OkV4ZWNTdGF0ZSk6CisgICAgICAgICog
a2pzL0V4ZWNTdGF0ZS5jcHA6CisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6RXhlY1N0YXRlKToK
KyAgICAgICAgRWFjaCBFeGVjU3RhdGUgaG9sZHMgaXRzIG93biBjb3B5IG9mIGhhc2ggdGFibGVz
LCBmb3IgZXZlbiBmYXN0ZXIgYWNjZXNzLgorCisgICAgICAgICoga2pzL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwOiAoS0pTOjppbml0aWFsaXplVGhyZWFkaW5nKTogSW5pdGlhbGl6ZSB0aHJlYWQt
c3RhdGljIGRhdGEKKyAgICAgICAgYWRkZWQgdG8gSlNHbG9iYWxPYmplY3QuCisKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5jcHA6CisgICAgICAgIChLSlM6Oik6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIGtqcy9KU1ZhcmlhYmxlT2JqZWN0LmNw
cDoKKyAgICAgICAgKEtKUzo6SlNWYXJpYWJsZU9iamVjdDo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVz
KToKKyAgICAgICAgKiBranMvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAqIGtqcy9hcnJh
eV9pbnN0YW5jZS5jcHA6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgICoga2pzL2FycmF5X29i
amVjdC5jcHA6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OkFycmF5UHJvdG90eXBl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9ib29sX29iamVjdC5jcHA6Cisg
ICAgICAgIChLSlM6Oik6CisgICAgICAgICoga2pzL2NyZWF0ZV9oYXNoX3RhYmxlOgorICAgICAg
ICAqIGtqcy9kYXRlX29iamVjdC5jcHA6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6
OkRhdGVQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OkRhdGVP
YmplY3RJbXA6OkRhdGVPYmplY3RJbXApOgorICAgICAgICAqIGtqcy9lcnJvcl9vYmplY3QuY3Bw
OgorICAgICAgICAoS0pTOjopOgorICAgICAgICAqIGtqcy9mdW5jdGlvbi5jcHA6CisgICAgICAg
IChLSlM6Oik6CisgICAgICAgICoga2pzL2Z1bmN0aW9uX29iamVjdC5jcHA6CisgICAgICAgIChL
SlM6OkZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgICoga2pz
L2ludGVybmFsLmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKiBranMvbWF0aF9vYmpl
Y3QuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAoS0pTOjpNYXRoT2JqZWN0SW1wOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9udW1iZXJfb2JqZWN0LmNwcDoKKyAg
ICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6TnVtYmVyT2JqZWN0SW1wOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9vYmplY3Rfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtK
Uzo6T2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUpOgorICAgICAgICAqIGtqcy9yZWdl
eHBfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6UmVnRXhwUHJv
dG90eXBlOjpSZWdFeHBQcm90b3R5cGUpOgorICAgICAgICAoS0pTOjpSZWdFeHBJbXA6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OlJlZ0V4cEltcDo6cHV0KToKKyAgICAgICAg
KEtKUzo6UmVnRXhwT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoS0pT
OjpSZWdFeHBPYmplY3RJbXA6OnB1dCk6CisgICAgICAgICoga2pzL3N0cmluZ19vYmplY3QuY3Bw
OgorICAgICAgICAoS0pTOjopOgorICAgICAgICAoS0pTOjpTdHJpbmdQcm90b3R5cGU6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIEFkanVzdCBmb3IgdGhlIGFib3ZlIGNoYW5nZXMuCisK
IDIwMDgtMDQtMjQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJ
KHJldmlzaW9uIDMyNDI2KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgX19aTjNLSlMxNEpTR2xvYmFsT2JqZWN0
MTdwdXRXaXRoQXR0cmlidQogX19aTjNLSlMxNEpTR2xvYmFsT2JqZWN0MTdzdGFydFRpbWVvdXRD
aGVja0V2CiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0tK
UzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBO
U183SlNWYWx1ZUUKLV9fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDRpbml0RXYKK19fWk4zS0pTMTRK
U0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCiBfX1pOM0tKUzE0SlNHbG9iYWxPYmpl
Y3Q0bWFya0V2CiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3Q1cmVzZXRFUE5TXzdKU1ZhbHVlRQog
X19aTjNLSlMxNEpTR2xvYmFsT2JqZWN0RDJFdgpAQCAtMTIyLDYgKzEyMiw3IEBAIF9fWk4zS0pT
MTRTdHJpbmdJbnN0YW5jZTRpbmZvRQogX19aTjNLSlMxNFN0cmluZ0luc3RhbmNlQzFFUE5TXzhK
U09iamVjdEVSS05TXzdVU3RyaW5nRQogX19aTjNLSlMxNFN0cmluZ0luc3RhbmNlQzJFUE5TXzhK
U09iamVjdEVSS05TXzdVU3RyaW5nRQogX19aTjNLSlMxNUdsb2JhbEV4ZWNTdGF0ZUMxRVBOU18x
NEpTR2xvYmFsT2JqZWN0RVBOU184SlNPYmplY3RFCitfX1pOM0tKUzE1R2xvYmFsRXhlY1N0YXRl
RDFFdgogX19aTjNLSlMxNUpTV3JhcHBlck9iamVjdDRtYXJrRXYKIF9fWk4zS0pTMTVTYXZlZFBy
b3BlcnRpZXNDMUV2CiBfX1pOM0tKUzE1U2F2ZWRQcm9wZXJ0aWVzRDFFdgpAQCAtMjQ1LDcgKzI0
Niw3IEBAIF9fWk5LM0tKUzE0SlNHbG9iYWxPYmplY3QxNGlzRHluYW1pY1Njb3AKIF9fWk5LM0tK
UzE0SlNHbG9iYWxPYmplY3QxNHRvR2xvYmFsT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTksz
S0pTMTZKU1ZhcmlhYmxlT2JqZWN0MTZpc1ZhcmlhYmxlT2JqZWN0RXYKIF9fWk5LM0tKUzE2SlNW
YXJpYWJsZU9iamVjdDE2c2F2ZUxvY2FsU3RvcmFnZUVSTlNfMTVTYXZlZFByb3BlcnRpZXNFCi1f
X1pOSzNLSlMxNkpTVmFyaWFibGVPYmplY3QyMWdldFByb3BlcnR5QXR0cmlidXRlc0VSS05TXzEw
SWRlbnRpZmllckVSagorX19aTkszS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MjFnZXRQcm9wZXJ0eUF0
dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUmoKIF9fWk5LM0tKUzE5
SW50ZXJuYWxGdW5jdGlvbkltcDE0aW1wbGVtZW50c0NhbGxFdgogX19aTkszS0pTMTlJbnRlcm5h
bEZ1bmN0aW9uSW1wMjFpbXBsZW1lbnRzSGFzSW5zdGFuY2VFdgogX19aTkszS0pTNExpc3Q4Z2V0
U2xpY2VFaVJTMF8KQEAgLTI3NCw3ICsyNzUsNyBAQCBfX1pOSzNLSlM4SlNPYmplY3QxMnRvVGhp
c09iamVjdEVQTlNfOUV4CiBfX1pOSzNLSlM4SlNPYmplY3QxNGltcGxlbWVudHNDYWxsRXYKIF9f
Wk5LM0tKUzhKU09iamVjdDE0dG9HbG9iYWxPYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNL
SlM4SlNPYmplY3QxOWltcGxlbWVudHNDb25zdHJ1Y3RFdgotX19aTkszS0pTOEpTT2JqZWN0MjFn
ZXRQcm9wZXJ0eUF0dHJpYnV0ZXNFUktOU18xMElkZW50aWZpZXJFUmoKK19fWk5LM0tKUzhKU09i
amVjdDIxZ2V0UHJvcGVydHlBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVJqCiBfX1pOSzNLSlM4SlNPYmplY3QyMWltcGxlbWVudHNIYXNJbnN0YW5jZUV2CiBfX1pO
SzNLSlM4SlNPYmplY3QzZ2V0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19a
TkszS0pTOEpTT2JqZWN0M2dldEVQTlNfOUV4ZWNTdGF0ZUVqCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBK
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAotY29uc3QgQ2xhc3NJbmZv
IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIkNhbGxiYWNrQ29uc3RydWN0b3IiLCAw
LCAwfTsKK2NvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmluZm8gPSB7ICJD
YWxsYmFja0NvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OwogCiBKU0NhbGxiYWNrQ29uc3RydWN0b3I6
OkpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2xhc3NSZWYganNDbGFz
cywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxiYWNrKQogICAgIDogSlNP
YmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAz
MjQyNikKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBLSlMgewogCi1jb25zdCBD
bGFzc0luZm8gSlNDYWxsYmFja0Z1bmN0aW9uOjppbmZvID0geyAiQ2FsbGJhY2tGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwfTsKK2NvbnN0IENsYXNzSW5mbyBKU0NhbGxi
YWNrRnVuY3Rpb246OmluZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b25JbXA6OmluZm8sIDAsIDAgfTsKIAogSlNDYWxsYmFja0Z1bmN0aW9uOjpKU0NhbGxiYWNrRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1w
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b3R5cGUoKSwgbmFtZSkK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHJldmlzaW9uIDMy
NDI2KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiBuYW1lc3BhY2UgS0pTIHsKIAogLy8gRGVmaW5lIHRo
ZSB0d28gdHlwZXMgb2YgSlNDYWxsYmFja09iamVjdHMgd2Ugc3VwcG9ydC4KLXRlbXBsYXRlIDw+
IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0Pjo6aW5mbyA9IHsgIkNh
bGxiYWNrT2JqZWN0IiwgMCwgMCB9OwotdGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjppbmZvID0geyAiQ2FsbGJhY2tHbG9iYWxPYmpl
Y3QiLCAwLCAwIH07Cit0ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVj
dDxKU09iamVjdD46OmluZm8gPSB7ICJDYWxsYmFja09iamVjdCIsIDAsIDAsIDAgfTsKK3RlbXBs
YXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6
aW5mbyA9IHsgIkNhbGxiYWNrR2xvYmFsT2JqZWN0IiwgMCwgMCwgMCB9OwogCiBDT01QSUxFX0FT
U0VSVChzaXplb2YoSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pIDw9IENFTExfU0la
RSwgZ2xvYmFsX2NhbGxiYWNrX29iamVjdF9maXRzX2luX2NlbGwpOwogCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvRXhlY1N0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvRXhlY1N0YXRlLmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
RXhlY1N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsMTMgQEAgaW5saW5lIEV4
ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2JqZQogICAgICwgbV9pdGVyYXRpb25EZXB0aCgw
KQogICAgICwgbV9zd2l0Y2hEZXB0aCgwKSAKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkK
KyAgICAsIG1fYXJyYXlUYWJsZShnbG9iYWxPYmplY3QtPmFycmF5VGFibGUoKSkKKyAgICAsIG1f
ZGF0ZVRhYmxlKGdsb2JhbE9iamVjdC0+ZGF0ZVRhYmxlKCkpCisgICAgLCBtX21hdGhUYWJsZShn
bG9iYWxPYmplY3QtPm1hdGhUYWJsZSgpKQorICAgICwgbV9udW1iZXJUYWJsZShnbG9iYWxPYmpl
Y3QtPm51bWJlclRhYmxlKCkpCisgICAgLCBtX1JlZ0V4cEltcFRhYmxlKGdsb2JhbE9iamVjdC0+
UmVnRXhwSW1wVGFibGUoKSkKKyAgICAsIG1fUmVnRXhwT2JqZWN0SW1wVGFibGUoZ2xvYmFsT2Jq
ZWN0LT5SZWdFeHBPYmplY3RJbXBUYWJsZSgpKQorICAgICwgbV9zdHJpbmdUYWJsZShnbG9iYWxP
YmplY3QtPnN0cmluZ1RhYmxlKCkpCiB7CiAgICAgbV9zY29wZUNoYWluLnB1c2goZ2xvYmFsT2Jq
ZWN0KTsKIH0KQEAgLTgyLDYgKzg5LDEzIEBAIGlubGluZSBFeGVjU3RhdGU6OkV4ZWNTdGF0ZShK
U0dsb2JhbE9iamUKICAgICAsIG1faXRlcmF0aW9uRGVwdGgoMCkKICAgICAsIG1fc3dpdGNoRGVw
dGgoMCkgCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCisgICAgLCBtX2FycmF5VGFibGUo
Z2xvYmFsT2JqZWN0LT5hcnJheVRhYmxlKCkpCisgICAgLCBtX2RhdGVUYWJsZShnbG9iYWxPYmpl
Y3QtPmRhdGVUYWJsZSgpKQorICAgICwgbV9tYXRoVGFibGUoZ2xvYmFsT2JqZWN0LT5tYXRoVGFi
bGUoKSkKKyAgICAsIG1fbnVtYmVyVGFibGUoZ2xvYmFsT2JqZWN0LT5udW1iZXJUYWJsZSgpKQor
ICAgICwgbV9SZWdFeHBJbXBUYWJsZShnbG9iYWxPYmplY3QtPlJlZ0V4cEltcFRhYmxlKCkpCisg
ICAgLCBtX1JlZ0V4cE9iamVjdEltcFRhYmxlKGdsb2JhbE9iamVjdC0+UmVnRXhwT2JqZWN0SW1w
VGFibGUoKSkKKyAgICAsIG1fc3RyaW5nVGFibGUoZ2xvYmFsT2JqZWN0LT5zdHJpbmdUYWJsZSgp
KQogewogICAgIEFTU0VSVChtX3Njb3BlTm9kZSk7CiAgICAgbV9zY29wZUNoYWluLnB1c2goZ2xv
YmFsT2JqZWN0KTsKQEAgLTEwNiw2ICsxMjAsMTMgQEAgaW5saW5lIEV4ZWNTdGF0ZTo6RXhlY1N0
YXRlKEpTR2xvYmFsT2JqZQogICAgICwgbV9pdGVyYXRpb25EZXB0aCgwKQogICAgICwgbV9zd2l0
Y2hEZXB0aCgwKSAKICAgICAsIG1fY29kZVR5cGUoRXZhbENvZGUpCisgICAgLCBtX2FycmF5VGFi
bGUoZ2xvYmFsT2JqZWN0LT5hcnJheVRhYmxlKCkpCisgICAgLCBtX2RhdGVUYWJsZShnbG9iYWxP
YmplY3QtPmRhdGVUYWJsZSgpKQorICAgICwgbV9tYXRoVGFibGUoZ2xvYmFsT2JqZWN0LT5tYXRo
VGFibGUoKSkKKyAgICAsIG1fbnVtYmVyVGFibGUoZ2xvYmFsT2JqZWN0LT5udW1iZXJUYWJsZSgp
KQorICAgICwgbV9SZWdFeHBJbXBUYWJsZShnbG9iYWxPYmplY3QtPlJlZ0V4cEltcFRhYmxlKCkp
CisgICAgLCBtX1JlZ0V4cE9iamVjdEltcFRhYmxlKGdsb2JhbE9iamVjdC0+UmVnRXhwT2JqZWN0
SW1wVGFibGUoKSkKKyAgICAsIG1fc3RyaW5nVGFibGUoZ2xvYmFsT2JqZWN0LT5zdHJpbmdUYWJs
ZSgpKQogeyAgICAKICAgICBBU1NFUlQobV9zY29wZU5vZGUpOwogfQpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL0V4ZWNTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9F
eGVjU3RhdGUuaAkocmV2aXNpb24gMzI0MjYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEtKUyAgewog
ICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiAgICAgY2xhc3MgRnVuY3Rpb25JbXA7CiAgICAg
Y2xhc3MgR2xvYmFsRnVuY0ltcDsKKyAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogICAgIGNsYXNzIElu
dGVycHJldGVyOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTVmFyaWFi
bGVPYmplY3Q7CkBAIC05OCw2ICs5OSwxMyBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAgICAgIC8v
IHRvIGF2b2lkIHRha2luZyBQSUMgYnJhbmNoZXMgaW4gTWFjaC1PIGJpbmFyaWVzLgogICAgICAg
ICBjb25zdCBDb21tb25JZGVudGlmaWVycyYgcHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJu
ICptX3Byb3BlcnR5TmFtZXM7IH0KICAgICAgICAgY29uc3QgTGlzdCYgZW1wdHlMaXN0KCkgY29u
c3QgeyByZXR1cm4gKm1fZW1wdHlMaXN0OyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGUqIGFycmF5VGFibGUoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBleGVjLT5tX2FycmF5VGFi
bGU7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZGF0ZVRhYmxlKEV4ZWNTdGF0
ZSogZXhlYykgeyByZXR1cm4gZXhlYy0+bV9kYXRlVGFibGU7IH0KKyAgICAgICAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSogbWF0aFRhYmxlKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gZXhlYy0+
bV9tYXRoVGFibGU7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogbnVtYmVyVGFi
bGUoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBleGVjLT5tX251bWJlclRhYmxlOyB9CisgICAg
ICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIFJlZ0V4cEltcFRhYmxlKEV4ZWNTdGF0ZSogZXhl
YykgeyByZXR1cm4gZXhlYy0+bV9SZWdFeHBJbXBUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlKiBSZWdFeHBPYmplY3RJbXBUYWJsZShFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0
dXJuIGV4ZWMtPm1fUmVnRXhwT2JqZWN0SW1wVGFibGU7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSogc3RyaW5nVGFibGUoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBleGVjLT5t
X3N0cmluZ1RhYmxlOyB9CiAKICAgICAgICAgTG9jYWxTdG9yYWdlJiBsb2NhbFN0b3JhZ2UoKSB7
IHJldHVybiAqbV9sb2NhbFN0b3JhZ2U7IH0KICAgICAgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2Uo
TG9jYWxTdG9yYWdlKiBzKSB7IG1fbG9jYWxTdG9yYWdlID0gczsgfQpAQCAtMjAyLDYgKzIxMCwx
NSBAQCBuYW1lc3BhY2UgS0pTICB7CiAKICAgICAgICAgQ29tcGxUeXBlIG1fY29tcGxldGlvblR5
cGU7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fYnJlYWtPckNvbnRpbnVlVGFyZ2V0Owor
CisgICAgICAgIC8vIFBlci10aHJlYWQgaW5zdGFuY2VzIG9mIGJ1aWx0LWluIG9iamVjdCBoYXNo
IHRhYmxlcyBhcmUgcmVmZXJlbmNlZCBmcm9tIGhlcmUgZm9yIGZhc3RlciBhY2Nlc3MuCisgICAg
ICAgIGNvbnN0IEhhc2hUYWJsZSogbV9hcnJheVRhYmxlOworICAgICAgICBjb25zdCBIYXNoVGFi
bGUqIG1fZGF0ZVRhYmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUqIG1fbWF0aFRhYmxlOwor
ICAgICAgICBjb25zdCBIYXNoVGFibGUqIG1fbnVtYmVyVGFibGU7CisgICAgICAgIGNvbnN0IEhh
c2hUYWJsZSogbV9SZWdFeHBJbXBUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBtX1Jl
Z0V4cE9iamVjdEltcFRhYmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUqIG1fc3RyaW5nVGFi
bGU7CiAgICAgfTsKIAogICAgIGNsYXNzIEdsb2JhbEV4ZWNTdGF0ZSA6IHB1YmxpYyBFeGVjU3Rh
dGUgewpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlSW5saW5lcy5oCShyZXZpc2lvbiAz
MjQyNikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGVJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDEzIEBAIG5hbWVzcGFjZSBLSlMgIHsKICAgICAgICAgLCBtX2l0
ZXJhdGlvbkRlcHRoKDApCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aCgwKSAKICAgICAgICAgLCBt
X2NvZGVUeXBlKEZ1bmN0aW9uQ29kZSkKKyAgICAgICAgLCBtX2FycmF5VGFibGUoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVRhYmxlKCkpCisgICAgICAgICwgbV9kYXRlVGFibGUoZ2xvYmFsT2JqZWN0LT5k
YXRlVGFibGUoKSkKKyAgICAgICAgLCBtX21hdGhUYWJsZShnbG9iYWxPYmplY3QtPm1hdGhUYWJs
ZSgpKQorICAgICAgICAsIG1fbnVtYmVyVGFibGUoZ2xvYmFsT2JqZWN0LT5udW1iZXJUYWJsZSgp
KQorICAgICAgICAsIG1fUmVnRXhwSW1wVGFibGUoZ2xvYmFsT2JqZWN0LT5SZWdFeHBJbXBUYWJs
ZSgpKQorICAgICAgICAsIG1fUmVnRXhwT2JqZWN0SW1wVGFibGUoZ2xvYmFsT2JqZWN0LT5SZWdF
eHBPYmplY3RJbXBUYWJsZSgpKQorICAgICAgICAsIG1fc3RyaW5nVGFibGUoZ2xvYmFsT2JqZWN0
LT5zdHJpbmdUYWJsZSgpKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc2NvcGVOb2RlKTsKICAg
ICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0luaXRpYWxpemVUaHJlYWRpbmcuY3Bw
CShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRhdGVN
YXRoLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgImlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgImxleGVyLmgiCiAjaW5jbHVkZSAiUGFy
c2VyLmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgpAQCAtNTQsNiArNTUsNyBAQCB2b2lkIGluaXRp
YWxpemVUaHJlYWRpbmcoKQogICAgICAgICBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCk7CiAg
ICAgICAgIGxleGVyKCk7CiAgICAgICAgIGluaXREYXRlTWF0aCgpOworICAgICAgICBKU0dsb2Jh
bE9iamVjdDo6dGhyZWFkSGFzaFRhYmxlcygpOwogICAgIH0KICNlbmRpZgogfQpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDExIEBACiAjaW5jbHVkZSAic2NvcGVfY2hhaW5fbWFyay5oIgogI2luY2x1ZGUgInN0cmlu
Z19vYmplY3QuaCIKIAorI2lmIFVTRShNVUxUSVBMRV9USFJFQURTKQorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTcGVjaWZpYy5oPgordXNpbmcgbmFtZXNwYWNlIFdURjsKKyNlbmRpZgorCiAjaWYgSEFW
RShTWVNfVElNRV9IKQogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKQEAgLTU5LDYgKzY0
LDE0IEBACiAKIG5hbWVzcGFjZSBLSlMgewogCitleHRlcm4gSGFzaFRhYmxlIGFycmF5VGFibGU7
CitleHRlcm4gSGFzaFRhYmxlIGRhdGVUYWJsZTsKK2V4dGVybiBIYXNoVGFibGUgbWF0aFRhYmxl
OworZXh0ZXJuIEhhc2hUYWJsZSBudW1iZXJUYWJsZTsKK2V4dGVybiBIYXNoVGFibGUgUmVnRXhw
SW1wVGFibGU7CitleHRlcm4gSGFzaFRhYmxlIFJlZ0V4cE9iamVjdEltcFRhYmxlOworZXh0ZXJu
IEhhc2hUYWJsZSBzdHJpbmdUYWJsZTsKKwogLy8gRGVmYXVsdCBudW1iZXIgb2YgdGlja3MgYmVm
b3JlIGEgdGltZW91dCBjaGVjayBzaG91bGQgYmUgZG9uZS4KIHN0YXRpYyBjb25zdCBpbnQgaW5p
dGlhbFRpY2tDb3VudFRocmVzaG9sZCA9IDI1NTsKIApAQCAtMTE5LDcgKzEzMiw2NyBAQCBKU0ds
b2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KCkKICAgICBkZWxldGUgZCgpOwogfQogCi12b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KCkKK3N0cnVjdCBUaHJlYWRIYXNoVGFibGVzIHsKKyAgICBU
aHJlYWRIYXNoVGFibGVzKCkKKyAgICAgICAgOiBhcnJheVRhYmxlKEtKUzo6YXJyYXlUYWJsZSkK
KyAgICAgICAgLCBkYXRlVGFibGUoS0pTOjpkYXRlVGFibGUpCisgICAgICAgICwgbWF0aFRhYmxl
KEtKUzo6bWF0aFRhYmxlKQorICAgICAgICAsIG51bWJlclRhYmxlKEtKUzo6bnVtYmVyVGFibGUp
CisgICAgICAgICwgUmVnRXhwSW1wVGFibGUoS0pTOjpSZWdFeHBJbXBUYWJsZSkKKyAgICAgICAg
LCBSZWdFeHBPYmplY3RJbXBUYWJsZShLSlM6OlJlZ0V4cE9iamVjdEltcFRhYmxlKQorICAgICAg
ICAsIHN0cmluZ1RhYmxlKEtKUzo6c3RyaW5nVGFibGUpCisgICAgeworICAgICAgICBhcnJheVRh
YmxlLmNyZWF0ZVRhYmxlKCk7CisgICAgICAgIGRhdGVUYWJsZS5jcmVhdGVUYWJsZSgpOworICAg
ICAgICBtYXRoVGFibGUuY3JlYXRlVGFibGUoKTsKKyAgICAgICAgbnVtYmVyVGFibGUuY3JlYXRl
VGFibGUoKTsKKyAgICAgICAgUmVnRXhwSW1wVGFibGUuY3JlYXRlVGFibGUoKTsKKyAgICAgICAg
UmVnRXhwT2JqZWN0SW1wVGFibGUuY3JlYXRlVGFibGUoKTsKKyAgICAgICAgc3RyaW5nVGFibGUu
Y3JlYXRlVGFibGUoKTsKKyAgICB9CisKKyAgICB+VGhyZWFkSGFzaFRhYmxlcygpCisgICAgewor
ICAgICAgICBkZWxldGVbXSBhcnJheVRhYmxlLnRhYmxlOworICAgICAgICBkZWxldGVbXSBkYXRl
VGFibGUudGFibGU7CisgICAgICAgIGRlbGV0ZVtdIG1hdGhUYWJsZS50YWJsZTsKKyAgICAgICAg
ZGVsZXRlW10gbnVtYmVyVGFibGUudGFibGU7CisgICAgICAgIGRlbGV0ZVtdIFJlZ0V4cEltcFRh
YmxlLnRhYmxlOworICAgICAgICBkZWxldGVbXSBSZWdFeHBPYmplY3RJbXBUYWJsZS50YWJsZTsK
KyAgICAgICAgZGVsZXRlW10gc3RyaW5nVGFibGUudGFibGU7CisgICAgfQorCisjaWYgVVNFKE1V
TFRJUExFX1RIUkVBRFMpCisgICAgSGFzaFRhYmxlIGFycmF5VGFibGU7CisgICAgSGFzaFRhYmxl
IGRhdGVUYWJsZTsKKyAgICBIYXNoVGFibGUgbWF0aFRhYmxlOworICAgIEhhc2hUYWJsZSBudW1i
ZXJUYWJsZTsKKyAgICBIYXNoVGFibGUgUmVnRXhwSW1wVGFibGU7CisgICAgSGFzaFRhYmxlIFJl
Z0V4cE9iamVjdEltcFRhYmxlOworICAgIEhhc2hUYWJsZSBzdHJpbmdUYWJsZTsKKyNlbHNlCisg
ICAgSGFzaFRhYmxlJiBhcnJheVRhYmxlOworICAgIEhhc2hUYWJsZSYgZGF0ZVRhYmxlOworICAg
IEhhc2hUYWJsZSYgbWF0aFRhYmxlOworICAgIEhhc2hUYWJsZSYgbnVtYmVyVGFibGU7CisgICAg
SGFzaFRhYmxlJiBSZWdFeHBJbXBUYWJsZTsKKyAgICBIYXNoVGFibGUmIFJlZ0V4cE9iamVjdElt
cFRhYmxlOworICAgIEhhc2hUYWJsZSYgc3RyaW5nVGFibGU7CisjZW5kaWYKK307CisKK1RocmVh
ZEhhc2hUYWJsZXMqIEpTR2xvYmFsT2JqZWN0Ojp0aHJlYWRIYXNoVGFibGVzKCkKK3sKKyNpZiBV
U0UoTVVMVElQTEVfVEhSRUFEUykKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8VGhyZWFkSGFz
aFRhYmxlcz4gc2hhcmVkSW5zdGFuY2U7CisgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOworI2Vs
c2UKKyAgICBzdGF0aWMgVGhyZWFkSGFzaFRhYmxlcyBzaGFyZWRJbnN0YW5jZTsKKyAgICByZXR1
cm4gJnNoYXJlZEluc3RhbmNlOworI2VuZGlmCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoSlNPYmplY3QqIHRoaXNWYWx1ZSkKIHsKICAgICBBU1NFUlQoSlNMb2NrOjpjdXJyZW50VGhy
ZWFkSXNIb2xkaW5nTG9jaygpKTsKIApAQCAtMTQzLDYgKzIxNiwxNiBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KCkKICAgICBkKCktPmFjdGl2YXRpb25zID0gbmV3U3RhY2tOb2RlOwogICAg
IGQoKS0+YWN0aXZhdGlvbkNvdW50ID0gMDsKIAorICAgIGQoKS0+YXJyYXlUYWJsZSA9ICZ0aHJl
YWRIYXNoVGFibGVzKCktPmFycmF5VGFibGU7CisgICAgZCgpLT5kYXRlVGFibGUgPSAmdGhyZWFk
SGFzaFRhYmxlcygpLT5kYXRlVGFibGU7CisgICAgZCgpLT5tYXRoVGFibGUgPSAmdGhyZWFkSGFz
aFRhYmxlcygpLT5tYXRoVGFibGU7CisgICAgZCgpLT5udW1iZXJUYWJsZSA9ICZ0aHJlYWRIYXNo
VGFibGVzKCktPm51bWJlclRhYmxlOworICAgIGQoKS0+UmVnRXhwSW1wVGFibGUgPSAmdGhyZWFk
SGFzaFRhYmxlcygpLT5SZWdFeHBJbXBUYWJsZTsKKyAgICBkKCktPlJlZ0V4cE9iamVjdEltcFRh
YmxlID0gJnRocmVhZEhhc2hUYWJsZXMoKS0+UmVnRXhwT2JqZWN0SW1wVGFibGU7CisgICAgZCgp
LT5zdHJpbmdUYWJsZSA9ICZ0aHJlYWRIYXNoVGFibGVzKCktPnN0cmluZ1RhYmxlOworCisgICAg
ZCgpLT5nbG9iYWxFeGVjLnNldChuZXcgR2xvYmFsRXhlY1N0YXRlKHRoaXMsIHRoaXNWYWx1ZSkp
OworCiAgICAgcmVzZXQocHJvdG90eXBlKCkpOwogfQogCkBAIC0yMzAsNyArMzEzLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSogcHJvdAogCiAgICAgZCgpLT5ldmFsRnVu
Y3Rpb24gPSAwOwogCi0gICAgRXhlY1N0YXRlKiBleGVjID0gJmQoKS0+Z2xvYmFsRXhlYzsKKyAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBkKCktPmdsb2JhbEV4ZWMuZ2V0KCk7CiAKICAgICAvLyBQcm90
b3R5cGVzCiAgICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZSA9IG5ldyBGdW5jdGlvblByb3RvdHlw
ZShleGVjKTsKQEAgLTQ5Nyw3ICs1ODAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrKCkK
ICAgICBmb3IgKEV4ZWNTdGF0ZVN0YWNrOjpjb25zdF9pdGVyYXRvciBpdCA9IGQoKS0+YWN0aXZl
RXhlY1N0YXRlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5tX3Nj
b3BlQ2hhaW4ubWFyaygpOwogCi0gICAgbWFya0lmTmVlZGVkKGQoKS0+Z2xvYmFsRXhlYy5leGNl
cHRpb24oKSk7CisgICAgbWFya0lmTmVlZGVkKGQoKS0+Z2xvYmFsRXhlYy0+ZXhjZXB0aW9uKCkp
OwogCiAgICAgbWFya0lmTmVlZGVkKGQoKS0+b2JqZWN0Q29uc3RydWN0b3IpOwogICAgIG1hcmtJ
Zk5lZWRlZChkKCktPmZ1bmN0aW9uQ29uc3RydWN0b3IpOwpAQCAtNTQxLDcgKzYyNCw3IEBAIEpT
R2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6dG9HbG9iYWwKIAogRXhlY1N0YXRlKiBKU0ds
b2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpCiB7Ci0gICAgcmV0dXJuICZkKCktPmdsb2JhbEV4ZWM7
CisgICAgcmV0dXJuIGQoKS0+Z2xvYmFsRXhlYy5nZXQoKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9i
amVjdDo6dGVhck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjLCBib29sIGxlYXZlUmVsaWMp
CkBAIC01NzEsNCArNjU0LDUgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6aXNEeW5hbWljU2NvcGUo
KSBjbwogICAgIHJldHVybiB0cnVlOwogfQogCisKIH0gLy8gbmFtZXNwYWNlIEtKUwpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDMyNDI2KQorKysgSmF2YVNj
cmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgY2xhc3MgRXZhbEVycm9yUHJvdG90eXBlOwogICAg
IGNsYXNzIEZ1bmN0aW9uT2JqZWN0SW1wOwogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwor
ICAgIHN0cnVjdCBIYXNoVGFibGU7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xh
c3MgTmF0aXZlRXJyb3JJbXA7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90b3R5cGU7CkBAIC02
Myw2ICs2NCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGNsYXNzIFN0cmluZ09iamVjdEltcDsK
ICAgICBjbGFzcyBTdHJpbmdQcm90b3R5cGU7CiAgICAgY2xhc3MgU3ludGF4RXJyb3JQcm90b3R5
cGU7CisgICAgc3RydWN0IFRocmVhZEhhc2hUYWJsZXM7CiAgICAgY2xhc3MgVHlwZUVycm9yOwog
ICAgIGNsYXNzIFR5cGVFcnJvclByb3RvdHlwZTsKICAgICBjbGFzcyBVcmlFcnJvcjsKQEAgLTc2
LDkgKzc4LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHVzaW5nIEpTVmFyaWFibGVPYmpl
Y3Q6OkpTVmFyaWFibGVPYmplY3REYXRhOwogCiAgICAgICAgIHN0cnVjdCBKU0dsb2JhbE9iamVj
dERhdGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdERhdGEgewotICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3REYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlz
VmFsdWUpCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdERhdGEoKQogICAgICAgICAgICAgICAg
IDogSlNWYXJpYWJsZU9iamVjdERhdGEoJmlubGluZVN5bWJvbFRhYmxlKQotICAgICAgICAgICAg
ICAgICwgZ2xvYmFsRXhlYyhnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgIH0KIApAQCAtODcsNyArODgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAg
ICAgICAgICAgRGVidWdnZXIqIGRlYnVnZ2VyOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBH
bG9iYWxFeGVjU3RhdGUgZ2xvYmFsRXhlYzsKKyAgICAgICAgICAgIE93blB0cjxHbG9iYWxFeGVj
U3RhdGU+IGdsb2JhbEV4ZWM7CiAgICAgICAgICAgICBpbnQgcmVjdXJzaW9uOwogCiAgICAgICAg
ICAgICB1bnNpZ25lZCB0aW1lb3V0VGltZTsKQEAgLTEzOSwyMCArMTQwLDI5IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgICAgICAgICAgc2l6ZV90IGFjdGl2YXRpb25Db3VudDsKIAogICAgICAgICAg
ICAgT3duUHRyPEhhc2hTZXQ8SlNPYmplY3QqPiA+IGFycmF5VmlzaXRlZEVsZW1lbnRzOyAvLyBH
bG9iYWwgZGF0YSBzaGFyZWQgYnkgYXJyYXkgcHJvdG90eXBlIGZ1bmN0aW9ucy4KKworICAgICAg
ICAgICAgLy8gUGVyLXRocmVhZCBpbnN0YW5jZXMgb2YgYnVpbHQtaW4gb2JqZWN0IGhhc2ggdGFi
bGVzIGFyZSByZWZlcmVuY2VkIGZyb20gaGVyZSBmb3IgZmFzdGVyIGFjY2Vzcy4KKyAgICAgICAg
ICAgIGNvbnN0IEhhc2hUYWJsZSogYXJyYXlUYWJsZTsKKyAgICAgICAgICAgIGNvbnN0IEhhc2hU
YWJsZSogZGF0ZVRhYmxlOworICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBtYXRoVGFibGU7
CisgICAgICAgICAgICBjb25zdCBIYXNoVGFibGUqIG51bWJlclRhYmxlOworICAgICAgICAgICAg
Y29uc3QgSGFzaFRhYmxlKiBSZWdFeHBJbXBUYWJsZTsKKyAgICAgICAgICAgIGNvbnN0IEhhc2hU
YWJsZSogUmVnRXhwT2JqZWN0SW1wVGFibGU7CisgICAgICAgICAgICBjb25zdCBIYXNoVGFibGUq
IHN0cmluZ1RhYmxlOwogICAgICAgICB9OwogCiAgICAgcHVibGljOgogICAgICAgICBKU0dsb2Jh
bE9iamVjdCgpCi0gICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QobmV3IEpTR2xvYmFsT2Jq
ZWN0RGF0YSh0aGlzLCB0aGlzKSkKKyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChuZXcg
SlNHbG9iYWxPYmplY3REYXRhKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbml0KCk7CisgICAg
ICAgICAgICBpbml0KHRoaXMpOwogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KEpTVmFsdWUqIHByb3RvLCBKU09iamVjdCogZ2xvYmFsVGhpc1ZhbHVl
KQotICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KHByb3RvLCBuZXcgSlNHbG9iYWxPYmpl
Y3REYXRhKHRoaXMsIGdsb2JhbFRoaXNWYWx1ZSkpCisgICAgICAgICAgICA6IEpTVmFyaWFibGVP
YmplY3QocHJvdG8sIG5ldyBKU0dsb2JhbE9iamVjdERhdGEpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGluaXQoKTsKKyAgICAgICAgICAgIGluaXQoZ2xvYmFsVGhpc1ZhbHVlKTsKICAgICAgICAg
fQogCiAgICAgcHVibGljOgpAQCAtMjQ1LDggKzI1NSwyMCBAQCBuYW1lc3BhY2UgS0pTIHsKIAog
ICAgICAgICBIYXNoU2V0PEpTT2JqZWN0Kj4mIGFycmF5VmlzaXRlZEVsZW1lbnRzKCkgeyBpZiAo
IWQoKS0+YXJyYXlWaXNpdGVkRWxlbWVudHMpIGQoKS0+YXJyYXlWaXNpdGVkRWxlbWVudHMuc2V0
KG5ldyBIYXNoU2V0PEpTT2JqZWN0Kj4pOyByZXR1cm4gKmQoKS0+YXJyYXlWaXNpdGVkRWxlbWVu
dHM7IH0KIAorICAgICAgICAvLyBQZXItdGhyZWFkIGhhc2ggdGFibGVzLCBjYWNoZWQgb24gdGhl
IGdsb2JhbCBvYmplY3QgZm9yIGZhc3RlciBhY2Nlc3MuCisgICAgICAgIGNvbnN0IEhhc2hUYWJs
ZSogYXJyYXlUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+YXJyYXlUYWJsZTsgfQorICAgICAg
ICBjb25zdCBIYXNoVGFibGUqIGRhdGVUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZGF0ZVRh
YmxlOyB9CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogbWF0aFRhYmxlKCkgY29uc3QgeyByZXR1
cm4gZCgpLT5tYXRoVGFibGU7IH0KKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJUYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+bnVtYmVyVGFibGU7IH0KKyAgICAgICAgY29uc3QgSGFz
aFRhYmxlKiBSZWdFeHBJbXBUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+UmVnRXhwSW1wVGFi
bGU7IH0KKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBSZWdFeHBPYmplY3RJbXBUYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIGQoKS0+UmVnRXhwT2JqZWN0SW1wVGFibGU7IH0KKyAgICAgICAgY29uc3Qg
SGFzaFRhYmxlKiBzdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3RyaW5nVGFibGU7
IH0KKworICAgICAgICAvLyBQZXItdGhyZWFkIGhhc2ggdGFibGVzIC0gdXNlIHRoZSBhYm92ZSBh
Y2Nlc3NvcnMgaW5zdGVhZC4KKyAgICAgICAgc3RhdGljIFRocmVhZEhhc2hUYWJsZXMqIHRocmVh
ZEhhc2hUYWJsZXMoKTsKKwogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgaW5pdCgpOworICAg
ICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIAogICAgICAgICBK
U0dsb2JhbE9iamVjdERhdGEqIGQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0dsb2Jh
bE9iamVjdERhdGEqPihKU1ZhcmlhYmxlT2JqZWN0OjpkKTsgfQogCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvSlNWYXJpYWJsZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL0pTVmFyaWFibGVPYmplY3QuY3BwCShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9KU1ZhcmlhYmxlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTQg
KzkyLDE0IEBAIHZvaWQgSlNWYXJpYWJsZU9iamVjdDo6Z2V0UHJvcGVydHlOYW1lcygKICAgICBK
U09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0eU5hbWVzKTsKIH0KIAotYm9v
bCBKU1ZhcmlhYmxlT2JqZWN0OjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3QKK2Jvb2wgSlNWYXJp
YWJsZU9iamVjdDo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3QKIHsK
ICAgICBzaXplX3QgaW5kZXggPSBzeW1ib2xUYWJsZSgpLmdldChwcm9wZXJ0eU5hbWUudXN0cmlu
ZygpLnJlcCgpKTsKICAgICBpZiAoaW5kZXggIT0gbWlzc2luZ1N5bWJvbE1hcmtlcigpKSB7CiAg
ICAgICAgIGF0dHJpYnV0ZXMgPSBsb2NhbFN0b3JhZ2UoKVtpbmRleF0uYXR0cmlidXRlczsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBKU09iamVjdDo6Z2V0UHJvcGVy
dHlBdHRyaWJ1dGVzKHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoZXhlYywgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
KTsKIH0KIAogdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjptYXJrKCkKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMzI0MjYpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoKSBjb25zdCA9IDA7
CiAKLSAgICAgICAgdmlydHVhbCBib29sIGdldFByb3BlcnR5QXR0cmlidXRlcyhjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBib29sIGdldFByb3BlcnR5QXR0cmlidXRlcyhFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdDsKIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgLy8gU3ViY2xhc3NlcyBvZiBKU1ZhcmlhYmxlT2JqZWN0
IGNhbiBzdWJjbGFzcyB0aGlzIHN0cnVjdCB0byBhZGQgZGF0YQpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL2FycmF5X2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvYXJyYXlfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9hcnJheV9pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbkRlbnNpdHlNdWx0aXBsaQogCiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY29weWluZ1NvcnRDdXRvZmYgPSA1MDAwMDsKIAotY29uc3QgQ2xhc3NJbmZvIEFy
cmF5SW5zdGFuY2U6OmluZm8gPSB7IkFycmF5IiwgMCwgMH07Citjb25zdCBDbGFzc0luZm8gQXJy
YXlJbnN0YW5jZTo6aW5mbyA9IHsiQXJyYXkiLCAwLCAwLCAwfTsKIAogc3RhdGljIGlubGluZSBz
aXplX3Qgc3RvcmFnZVNpemUodW5zaWduZWQgdmVjdG9yTGVuZ3RoKQogewpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL2FycmF5X29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL2FycmF5X29iamVjdC5jcHAJKHJldmlzaW9uIDMyNDI2KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL2FycmF5X29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJh
eVByb3RvdHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5m
byBBcnJheVByb3RvdHlwZTo6aW5mbyA9IHsiQXJyYXkiLCAmQXJyYXlJbnN0YW5jZTo6aW5mbywg
JmFycmF5VGFibGV9OworY29uc3QgQ2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjppbmZvID0geyJB
cnJheSIsICZBcnJheUluc3RhbmNlOjppbmZvLCAwLCBFeGVjU3RhdGU6OmFycmF5VGFibGV9Owog
CiAvKiBTb3VyY2UgZm9yIGFycmF5X29iamVjdC5sdXQuaAogQGJlZ2luIGFycmF5VGFibGUgMTYK
QEAgLTcyLDcgKzcyLDcgQEAgQXJyYXlQcm90b3R5cGU6OkFycmF5UHJvdG90eXBlKEV4ZWNTdGF0
ZQogCiBib29sIEFycmF5UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKLSAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEFycmF5SW5zdGFuY2U+KGV4ZWMs
ICZhcnJheVRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8QXJyYXlJbnN0YW5jZT4oZXhlYywgRXhlY1N0YXRlOjphcnJheVRh
YmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiAKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9ib29sX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL2Jvb2xfb2JqZWN0LmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvYm9vbF9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIG5h
bWVzcGFjZSBLSlMgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQm9vbGVh
bkluc3RhbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8g
Qm9vbGVhbkluc3RhbmNlOjppbmZvID0geyAiQm9vbGVhbiIsIDAsIDAgfTsKK2NvbnN0IENsYXNz
SW5mbyBCb29sZWFuSW5zdGFuY2U6OmluZm8gPSB7ICJCb29sZWFuIiwgMCwgMCwgMCB9OwogCiBC
b29sZWFuSW5zdGFuY2U6OkJvb2xlYW5JbnN0YW5jZShKU09iamVjdCogcHJvdG8pCiAgICAgOiBK
U1dyYXBwZXJPYmplY3QocHJvdG8pCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY3JlYXRlX2hh
c2hfdGFibGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NyZWF0ZV9oYXNoX3Rh
YmxlCShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jcmVhdGVfaGFzaF90
YWJsZQkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIHN1YiBvdXRwdXQoKSB7CiAg
ICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIDAsIDAgfVxuIjsKICAgICBwcmludCAifTtcblxu
IjsKLSAgICBwcmludCAiY29uc3Qgc3RydWN0IEhhc2hUYWJsZSAkbmFtZSA9ICI7CisgICAgcHJp
bnQgImV4dGVybiBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlICRuYW1lID0gIjsKICAgICBwcmludCAi
XHsgIiwgJHNpemUgLSAxLCAiLCAkbmFtZUVudHJpZXMsIDAgXH07XG5cbiI7CiAgICAgcHJpbnQg
In0gLy8gbmFtZXNwYWNlXG4iOwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2RhdGVfb2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZGF0ZV9vYmplY3QuY3Bw
CShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9kYXRlX29iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgYm9vbCBmaWxsU3RydWN0
dXJlc1VzaW5nRGF0ZUFyZ3MoCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBE
YXRlSW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNz
SW5mbyBEYXRlSW5zdGFuY2U6OmluZm8gPSB7IkRhdGUiLCAwLCAwfTsKK2NvbnN0IENsYXNzSW5m
byBEYXRlSW5zdGFuY2U6OmluZm8gPSB7IkRhdGUiLCAwLCAwLCAwfTsKIAogRGF0ZUluc3RhbmNl
OjpEYXRlSW5zdGFuY2UoSlNPYmplY3QgKnByb3RvKQogICA6IEpTV3JhcHBlck9iamVjdChwcm90
bykKQEAgLTQxNiw3ICs0MTYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNUaW1lX3RTaWduZWQo
KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGF0ZVByb3RvdHlwZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8gRGF0ZVByb3RvdHlw
ZTo6aW5mbyA9IHsiRGF0ZSIsICZEYXRlSW5zdGFuY2U6OmluZm8sICZkYXRlVGFibGV9OworY29u
c3QgQ2xhc3NJbmZvIERhdGVQcm90b3R5cGU6OmluZm8gPSB7IkRhdGUiLCAmRGF0ZUluc3RhbmNl
OjppbmZvLCAwLCBFeGVjU3RhdGU6OmRhdGVUYWJsZX07CiAKIC8qIFNvdXJjZSBmb3IgZGF0ZV9v
YmplY3QubHV0LmgKICAgIEZJWE1FTCBXZSBjb3VsZCB1c2UgdGVtcGxhdGVzIHRvIHNpbXBsaWZ5
IHRoZSBVVEMgdmFyaWFudHMuCkBAIC00NzgsNyArNDc4LDcgQEAgRGF0ZVByb3RvdHlwZTo6RGF0
ZVByb3RvdHlwZShFeGVjU3RhdGUgKgogCiBib29sIERhdGVQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8
SlNPYmplY3Q+KGV4ZWMsICZkYXRlVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRl
OjpkYXRlVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEYXRlT2JqZWN0SW1wIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00ODksOCArNDg5LDggQEAgRGF0ZU9iamVjdEltcDo6RGF0
ZU9iamVjdEltcChFeGVjU3RhdGUqIAogICA6IEludGVybmFsRnVuY3Rpb25JbXAoZnVuY1Byb3Rv
LCBkYXRlUHJvdG8tPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpCiB7CiAgIHB1dERpcmVjdChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG8sIERvbnRFbnVtfERvbnREZWxl
dGV8UmVhZE9ubHkpOwotICBwdXREaXJlY3RGdW5jdGlvbihuZXcgRGF0ZU9iamVjdEZ1bmNJbXAo
ZXhlYywgZnVuY1Byb3RvLCBEYXRlT2JqZWN0RnVuY0ltcDo6UGFyc2UsIDEsIENvbW1vbklkZW50
aWZpZXJzOjpzaGFyZWQoKS0+cGFyc2UpLCBEb250RW51bSk7Ci0gIHB1dERpcmVjdEZ1bmN0aW9u
KG5ldyBEYXRlT2JqZWN0RnVuY0ltcChleGVjLCBmdW5jUHJvdG8sIERhdGVPYmplY3RGdW5jSW1w
OjpVVEMsIDcsIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+VVRDKSwgRG9udEVudW0pOwor
ICBwdXREaXJlY3RGdW5jdGlvbihuZXcgRGF0ZU9iamVjdEZ1bmNJbXAoZXhlYywgZnVuY1Byb3Rv
LCBEYXRlT2JqZWN0RnVuY0ltcDo6UGFyc2UsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJz
ZSksIERvbnRFbnVtKTsKKyAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IERhdGVPYmplY3RGdW5jSW1w
KGV4ZWMsIGZ1bmNQcm90bywgRGF0ZU9iamVjdEZ1bmNJbXA6OlVUQywgNywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLlVUQyksIERvbnRFbnVtKTsKICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgsIDcsIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwogfQogCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvZXJyb3Jfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvZXJyb3Jfb2JqZWN0LmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvZXJyb3Jfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEVycm9ySW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBD
bGFzc0luZm8gRXJyb3JJbnN0YW5jZTo6aW5mbyA9IHsgIkVycm9yIiwgMCwgMCB9OworY29uc3Qg
Q2xhc3NJbmZvIEVycm9ySW5zdGFuY2U6OmluZm8gPSB7ICJFcnJvciIsIDAsIDAsIDAgfTsKIAog
RXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU09iamVjdCogcHJvdG90eXBlKQogICAgIDog
SlNPYmplY3QocHJvdG90eXBlKQpAQCAtMTE0LDcgKzExNCw3IEBAIE5hdGl2ZUVycm9yUHJvdG90
eXBlOjpOYXRpdmVFcnJvclByb3RvdHkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIE5hdGl2ZUVycm9ySW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29u
c3QgQ2xhc3NJbmZvIE5hdGl2ZUVycm9ySW1wOjppbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJu
YWxGdW5jdGlvbkltcDo6aW5mbywgMCB9OworY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUVycm9ySW1w
OjppbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywgMCwgMCB9
OwogCiBOYXRpdmVFcnJvckltcDo6TmF0aXZlRXJyb3JJbXAoRXhlY1N0YXRlKiBleGVjLCBGdW5j
dGlvblByb3RvdHlwZSogZnVuY1Byb3RvLCBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdCkKICAg
ICA6IEludGVybmFsRnVuY3Rpb25JbXAoZnVuY1Byb3RvLCBJZGVudGlmaWVyKHByb3QtPmdldERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSktPmdldFN0cmluZygpKSkKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL2Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvZnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFj
ZSBLSlMgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkltcCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBGdW5j
dGlvbkltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb25JbXA6OmluZm8s
IDAgfTsKK2NvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkludGVybmFsRnVuY3Rpb25JbXA6OmluZm8sIDAsIDAgfTsKIAogRnVuY3Rpb25JbXA6OkZ1bmN0
aW9uSW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRnVuY3Rpb25C
b2R5Tm9kZSogYiwgY29uc3QgU2NvcGVDaGFpbiYgc2MpCiAgIDogSW50ZXJuYWxGdW5jdGlvbklt
cChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uUHJvdG90eXBlKCksIG5hbWUp
CkBAIC0yNzksNyArMjc5LDcgQEAgSWRlbnRpZmllciYgSW5kZXhUb05hbWVNYXA6Om9wZXJhdG9y
W10oYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJndW1lbnRzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8gQXJndW1lbnRz
OjppbmZvID0geyAiQXJndW1lbnRzIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEFyZ3VtZW50
czo6aW5mbyA9IHsgIkFyZ3VtZW50cyIsIDAsIDAsIDAgfTsKIAogLy8gRUNNQSAxMC4xLjgKIEFy
Z3VtZW50czo6QXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25JbXAqIGZ1bmMsIGNv
bnN0IExpc3QmIGFyZ3MsIEFjdGl2YXRpb25JbXAqIGFjdCkKQEAgLTM0Miw3ICszNDIsNyBAQCBi
b29sIEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBBY3RpdmF0aW9uSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBBY3RpdmF0aW9uSW1wOjppbmZvID0geyAiQWN0
aXZhdGlvbiIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBBY3RpdmF0aW9uSW1wOjppbmZvID0g
eyAiQWN0aXZhdGlvbiIsIDAsIDAsIDAgfTsKIAogQWN0aXZhdGlvbkltcDo6QWN0aXZhdGlvbklt
cChjb25zdCBBY3RpdmF0aW9uRGF0YSYgb2xkRGF0YSwgYm9vbCBsZWF2ZVJlbGljKQogewpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAJKHJldmlzaW9uIDMyNDI2KQor
KysgSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDggKzQ3LDggQEAgRnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEV4
ZQogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigw
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogCiAgICAgcHV0RGlyZWN0RnVu
Y3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIDAsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS50b1N0cmluZywgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgdGhpcywg
MiwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5hcHBseSwgZnVuY3Rpb25Qcm90b0Z1bmNB
cHBseSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVu
Y3Rpb24oZXhlYywgdGhpcywgMSwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5jYWxsLCBm
dW5jdGlvblByb3RvRnVuY0NhbGwpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24o
bmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5hcHBseSwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgdGhpcywgMSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNhbGwsIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCksIERvbnRFbnVtKTsKIH0K
IAogLy8gRUNNQSAxNS4zLjQKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVybmFsLmNwcAkocmV2aXNpb24g
MzI0MjYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBMYWJlbFN0YWNrOjpjb250YWlucyhjb25zdCBJZGVu
dGlmaQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSW50ZXJuYWxGdW5jdGlv
bkltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8gSW50ZXJu
YWxGdW5jdGlvbkltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJ
bmZvIEludGVybmFsRnVuY3Rpb25JbXA6OmluZm8gPSB7ICJGdW5jdGlvbiIsIDAsIDAsIDAgfTsK
IAogSW50ZXJuYWxGdW5jdGlvbkltcDo6SW50ZXJuYWxGdW5jdGlvbkltcCgpCiB7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9sZXhlci5jcHAJKHJldmlzaW9uIDMyNDI2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xl
eGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsMTEgKzg4LDE4IEBAIExleGVyOjpMZXhlcigp
CiAgICAgLCBuZXh0MSgwKQogICAgICwgbmV4dDIoMCkKICAgICAsIG5leHQzKDApCisgICAgLCBt
YWluVGFibGUoS0pTOjptYWluVGFibGUpCiB7CiAgICAgbV9idWZmZXI4LnJlc2VydmVDYXBhY2l0
eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKICAgICBtX2J1ZmZlcjE2LnJlc2VydmVDYXBh
Y2l0eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKICAgICBtX3N0cmluZ3MucmVzZXJ2ZUNh
cGFjaXR5KGluaXRpYWxTdHJpbmdUYWJsZUNhcGFjaXR5KTsKICAgICBtX2lkZW50aWZpZXJzLnJl
c2VydmVDYXBhY2l0eShpbml0aWFsU3RyaW5nVGFibGVDYXBhY2l0eSk7CisgICAgbWFpblRhYmxl
LmNyZWF0ZVRhYmxlKCk7Cit9CisKK0xleGVyOjp+TGV4ZXIoKQoreworICAgIGRlbGV0ZVtdIG1h
aW5UYWJsZS50YWJsZTsKIH0KIAogdm9pZCBMZXhlcjo6c2V0Q29kZShpbnQgc3RhcnRpbmdMaW5l
TnVtYmVyLCBjb25zdCBVQ2hhciogYywgdW5zaWduZWQgaW50IGxlbikKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9sZXhlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9sZXhl
ci5oCShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWZuZGVmIExleGVyX2gKICNkZWZpbmUgTGV4
ZXJfaAogCisjaW5jbHVkZSAibG9va3VwLmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtOTQsNiArOTUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBmcmllbmQgTGV4ZXImIGxleGVyKCk7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6VGhyZWFkU3Bl
Y2lmaWM8TGV4ZXI+OwogICAgIExleGVyKCk7CisgICAgfkxleGVyKCk7CiAKICAgICBpbnQgeXls
aW5lbm87CiAgICAgYm9vbCBkb25lOwpAQCAtMTQ1LDYgKzE0Nyw4IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIAogICAgIFVTdHJpbmcgbV9wYXR0ZXJuOwogICAgIFVTdHJpbmcgbV9mbGFnczsKKwor
ICAgIGNvbnN0IEhhc2hUYWJsZSBtYWluVGFibGU7CiAgIH07CiAgIAogICBMZXhlciYgbGV4ZXIo
KTsgLy8gUmV0dXJucyB0aGUgc2luZ2xldG9uZSBKYXZhU2NyaXB0IGxleGVyLgpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL2xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9sb29rdXAuaAkocmV2aXNpb24gMzI0MjYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbG9va3Vw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
ICAgIC8vIEZpbmQgYW4gZW50cnkgaW4gdGhlIHRhYmxlLCBhbmQgcmV0dXJuIHRoZSBlbnRyeS4K
ICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGFi
bGUpCi0gICAgICAgICAgICAgICAgY3JlYXRlVGFibGUoKTsKICAgICAgICAgICAgIEFTU0VSVCh0
YWJsZSk7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gJnRhYmxlW2lkZW50
aWZpZXIudXN0cmluZygpLnJlcCgpLT5jb21wdXRlZEhhc2goKSAmIGhhc2hTaXplTWFza107CiAg
ICAgICAgICAgICBpZiAoZW50cnktPmtleSAhPSBpZGVudGlmaWVyLnVzdHJpbmcoKS5yZXAoKSkK
QEAgLTI4MSw3ICsyNzksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB9OwogCiAjZGVmaW5lIEtK
U19JTVBMRU1FTlRfUFJPVE9UWVBFKENsYXNzTmFtZSwgQ2xhc3NQcm90b3R5cGUpIFwKLSAgICBj
b25zdCBDbGFzc0luZm8gQ2xhc3NQcm90b3R5cGU6OmluZm8gPSB7IENsYXNzTmFtZSJQcm90b3R5
cGUiLCAwLCAmQ2xhc3NQcm90b3R5cGUjI1RhYmxlICB9OyBcCisgICAgY29uc3QgQ2xhc3NJbmZv
IENsYXNzUHJvdG90eXBlOjppbmZvID0geyBDbGFzc05hbWUiUHJvdG90eXBlIiwgMCwgJkNsYXNz
UHJvdG90eXBlIyNUYWJsZSwgMCAgfTsgXAogICAgIEpTT2JqZWN0KiBDbGFzc1Byb3RvdHlwZTo6
c2VsZihFeGVjU3RhdGUqIGV4ZWMpIFwKICAgICB7IFwKICAgICAgICAgcmV0dXJuIEtKUzo6Y2Fj
aGVHbG9iYWxPYmplY3Q8Q2xhc3NQcm90b3R5cGU+KGV4ZWMsIElkZW50aWZpZXIoIltbIiBDbGFz
c05hbWUgIi5wcm90b3R5cGVdXSIpKTsgXApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL21hdGhf
b2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbWF0aF9vYmplY3Qu
Y3BwCShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9tYXRoX29iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNYXRoT2JqZWN0SW1wIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBNYXRoT2JqZWN0SW1wOjpp
bmZvID0geyAiTWF0aCIsIDAsICZtYXRoVGFibGUgfTsKK2NvbnN0IENsYXNzSW5mbyBNYXRoT2Jq
ZWN0SW1wOjppbmZvID0geyAiTWF0aCIsIDAsIDAsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlIH07CiAK
IC8qIFNvdXJjZSBmb3IgbWF0aF9vYmplY3QubHV0LmgKIEBiZWdpbiBtYXRoVGFibGUgMjEKQEAg
LTczLDcgKzczLDcgQEAgTWF0aE9iamVjdEltcDo6TWF0aE9iamVjdEltcChFeGVjU3RhdGUqLAog
CiBib29sIE1hdGhPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewot
ICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8TWF0aE9iamVjdEltcCwgSlNPYmplY3Q+
KGV4ZWMsICZtYXRoVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJu
IGdldFN0YXRpY1Byb3BlcnR5U2xvdDxNYXRoT2JqZWN0SW1wLCBKU09iamVjdD4oZXhlYywgRXhl
Y1N0YXRlOjptYXRoVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
IEpTVmFsdWUqIE1hdGhPYmplY3RJbXA6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiwgaW50
IHRva2VuKSBjb25zdApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL251bWJlcl9vYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9udW1iZXJfb2JqZWN0LmNwcAkocmV2
aXNpb24gMzI0MjYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbnVtYmVyX29iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJJbnN0YW5jZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBOdW1iZXJJbnN0YW5jZTo6aW5mbyA9IHsg
Ik51bWJlciIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBOdW1iZXJJbnN0YW5jZTo6aW5mbyA9
IHsgIk51bWJlciIsIDAsIDAsIDAgfTsKIAogTnVtYmVySW5zdGFuY2U6Ok51bWJlckluc3RhbmNl
KEpTT2JqZWN0KiBwcm90bykKICAgICA6IEpTV3JhcHBlck9iamVjdChwcm90bykKQEAgLTQ1MCw3
ICs0NTAsNyBAQCBKU1ZhbHVlKiBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJPYmplY3RJbXAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBOdW1iZXJPYmplY3RJbXA6
OmluZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAmbnVtYmVy
VGFibGUgfTsKK2NvbnN0IENsYXNzSW5mbyBOdW1iZXJPYmplY3RJbXA6OmluZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwLCBFeGVjU3RhdGU6Om51bWJlclRh
YmxlIH07CiAKIC8qIFNvdXJjZSBmb3IgbnVtYmVyX29iamVjdC5sdXQuaAogQGJlZ2luIG51bWJl
clRhYmxlIDUKQEAgLTQ3Myw3ICs0NzMsNyBAQCBOdW1iZXJPYmplY3RJbXA6Ok51bWJlck9iamVj
dEltcChFeGVjU3RhCiAKIGJvb2wgTnVtYmVyT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PE51bWJlck9iamVj
dEltcCwgSW50ZXJuYWxGdW5jdGlvbkltcD4oZXhlYywgJm51bWJlclRhYmxlLCB0aGlzLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8TnVtYmVyT2Jq
ZWN0SW1wLCBJbnRlcm5hbEZ1bmN0aW9uSW1wPihleGVjLCBFeGVjU3RhdGU6Om51bWJlclRhYmxl
KGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBKU1ZhbHVlKiBOdW1iZXJP
YmplY3RJbXA6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdApJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL29iamVjdC5jcHAJKHJldmlzaW9uIDMyNDI2KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lu
Y2x1ZGUgImRhdGVfb2JqZWN0LmgiCiAjaW5jbHVkZSAiZXJyb3Jfb2JqZWN0LmgiCi0jaW5jbHVk
ZSAibG9va3VwLmgiCiAjaW5jbHVkZSAibm9kZXMuaCIKICNpbmNsdWRlICJvcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKQEAgLTYzLDYgKzYyLDIwIEBAIGV4dGVy
biAiQyIgewogCiBuYW1lc3BhY2UgS0pTIHsKIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIENsYXNzSW5mbyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworY29uc3QgSGFzaFRhYmxlKiBDbGFzc0luZm86OnByb3BIYXNoVGFibGUoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAoreworICAgIGlmIChjbGFzc1Byb3BIYXNoVGFibGVHZXR0ZXJGdW5jdGlvbikK
KyAgICAgICAgcmV0dXJuIGNsYXNzUHJvcEhhc2hUYWJsZUdldHRlckZ1bmN0aW9uKGV4ZWMpOwor
ICAgIGVsc2UgeworICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJldCA9IHN0YXRpY1Byb3BIYXNo
VGFibGU7CisgICAgICAgIGlmIChyZXQgJiYgIXJldC0+dGFibGUpCisgICAgICAgICAgICByZXQt
PmNyZWF0ZVRhYmxlKCk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorfQorCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2JqZWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBKU1ZhbHVlICpKU09iamVjdDo6Y2FsbChFeGVjU3RhdGUgKmV4
ZWMsIEpTT2JqZWN0ICp0aGlzT2JqLCBjb25zdCBMaXN0ICZhcmdzKQpAQCAtMzE5LDcgKzMzMiw3
IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSAqZXgKIH0KIAogLy8gRUNN
QSA4LjYuMi41Ci1ib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIC8qZXhl
YyovLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFt
ZSkKIHsKICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgSlNWYWx1ZSAqdiA9IF9wcm9wLmdldChw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwpAQCAtMzMzLDcgKzM0Niw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSoKICAgfQogCiAgIC8vIExvb2sgaW4gdGhlIHN0
YXRpYyBoYXNodGFibGUgb2YgcHJvcGVydGllcwotICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0g
ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSk7CisgIGNvbnN0IEhhc2hFbnRyeSog
ZW50cnkgPSBmaW5kUHJvcGVydHlIYXNoRW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgaWYg
KGVudHJ5ICYmIGVudHJ5LT5hdHRyaWJ1dGVzICYgRG9udERlbGV0ZSkKICAgICByZXR1cm4gZmFs
c2U7IC8vIHRoaXMgYnVpbHRpbiBwcm9wZXJ0eSBjYW4ndCBiZSBkZWxldGVkCiAgIC8vIEZJWE1F
OiBTaG91bGQgdGhlIGNvZGUgaGVyZSBhY3R1YWxseSBkbyBzb21lIGRlbGV0aW9uPwpAQCAtMzk2
LDEwICs0MDksMTAgQEAgSlNWYWx1ZSogSlNPYmplY3Q6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdAog
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJObyBkZWZhdWx0IHZhbHVlIik7
CiB9CiAKLWNvbnN0IEhhc2hFbnRyeSogSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Citjb25zdCBIYXNoRW50cnkqIEpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBDbGFzc0luZm8q
IGluZm8gPSBjbGFzc0luZm8oKTsgaW5mbzsgaW5mbyA9IGluZm8tPnBhcmVudENsYXNzKSB7Ci0g
ICAgICAgIGlmIChjb25zdCBIYXNoVGFibGUqIHByb3BIYXNoVGFibGUgPSBpbmZvLT5wcm9wSGFz
aFRhYmxlKSB7CisgICAgICAgIGlmIChjb25zdCBIYXNoVGFibGUqIHByb3BIYXNoVGFibGUgPSBp
bmZvLT5wcm9wSGFzaFRhYmxlKGV4ZWMpKSB7CiAgICAgICAgICAgICBpZiAoY29uc3QgSGFzaEVu
dHJ5KiBlID0gcHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZTsKICAgICAgICAgfQpAQCAtNTMwLDIzICs1NDMsMjMgQEAgYm9vbCBKU09i
amVjdDo6aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0Vu
dW1lcmFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0CiB7CiAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgCi0gIGlmICghZ2V0UHJvcGVydHlB
dHRyaWJ1dGVzKHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpCisgIGlmICghZ2V0UHJvcGVydHlB
dHRyaWJ1dGVzKGV4ZWMsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpCiAgICAgcmV0dXJuIGZh
bHNlOwogICBlbHNlCiAgICAgcmV0dXJuICEoYXR0cmlidXRlcyAmIERvbnRFbnVtKTsKIH0KIAot
Ym9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0Citib29sIEpTT2JqZWN0Ojpn
ZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdAogewogICBpZiAoX3Byb3Au
Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpCiAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAg
IC8vIExvb2sgaW4gdGhlIHN0YXRpYyBoYXNodGFibGUgb2YgcHJvcGVydGllcwotICBjb25zdCBI
YXNoRW50cnkqIGUgPSBmaW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKTsKKyAgY29u
c3QgSGFzaEVudHJ5KiBlID0gZmluZFByb3BlcnR5SGFzaEVudHJ5KGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CiAgIGlmIChlKSB7CiAgICAgYXR0cmlidXRlcyA9IGUtPmF0dHJpYnV0ZXM7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC01NjEsMTEgKzU3NCw5IEBAIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5
TmFtZXMoRXhlY1N0YXQKIAogICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGZyb20gdGhlIHN0YXRpYyBo
YXNodGFibGVzIG9mIHByb3BlcnRpZXMKICAgICBmb3IgKGNvbnN0IENsYXNzSW5mbyogaW5mbyA9
IGNsYXNzSW5mbygpOyBpbmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKLSAgICAgICAg
Y29uc3QgSGFzaFRhYmxlKiB0YWJsZSA9IGluZm8tPnByb3BIYXNoVGFibGU7CisgICAgICAgIGNv
bnN0IEhhc2hUYWJsZSogdGFibGUgPSBpbmZvLT5wcm9wSGFzaFRhYmxlKGV4ZWMpOwogICAgICAg
ICBpZiAoIXRhYmxlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghdGFibGUt
PnRhYmxlKQotICAgICAgICAgICAgdGFibGUtPmNyZWF0ZVRhYmxlKCk7CiAgICAgICAgIEFTU0VS
VCh0YWJsZS0+dGFibGUpOwogICAgICAgICBpbnQgaGFzaFNpemVNYXNrID0gdGFibGUtPmhhc2hT
aXplTWFzazsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlID0gdGFibGUtPnRhYmxlOwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9vYmplY3QuaAkocmV2aXNpb24gMzI0MjYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
b2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDEzIEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIGNvbnN0IENsYXNzSW5mbyogcGFyZW50Q2xhc3M7CiAgICAgLyoqCiAgICAgICogU3Rh
dGljIGhhc2gtdGFibGUgb2YgcHJvcGVydGllcy4KKyAgICAgKiBGb3IgY2xhc3NlcyB0aGF0IGNh
biBiZSB1c2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcywgaXQgaXMgYWNjZXNzZWQgdmlhIGEgZ2V0
dGVyIGZ1bmN0aW9uIHRoYXQgd291bGQgdHlwaWNhbGx5IHJldHVybiBhIHBvaW50ZXIgdG8gdGhy
ZWFkLXNwZWNpZmljIHZhbHVlLgogICAgICAqLwotICAgIGNvbnN0IEhhc2hUYWJsZSogcHJvcEhh
c2hUYWJsZTsKKyAgICBjb25zdCBIYXNoVGFibGUqIHByb3BIYXNoVGFibGUoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdDsKKworICAgIGNvbnN0IEhhc2hUYWJsZSogc3RhdGljUHJvcEhhc2hUYWJsZTsK
KyAgICB0eXBlZGVmIGNvbnN0IEhhc2hUYWJsZSogKCpDbGFzc1Byb3BIYXNoVGFibGVHZXR0ZXJG
dW5jdGlvbikoRXhlY1N0YXRlKik7CisgICAgY29uc3QgQ2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVy
RnVuY3Rpb24gY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVyRnVuY3Rpb247CiAgIH07CiAgIAogICAv
LyBUaGlzIGlzIGFuIGludGVybmFsIHZhbHVlIG9iamVjdCB3aGljaCBzdG9yZXMgZ2V0dGVyIGFu
ZCBzZXR0ZXIgZnVuY3Rpb25zCkBAIC0xNDUsOCArMTUwLDggQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgICogQW5kIGluIHlvdXIgc291cmNlIGZpbGU6CiAgICAgICoKICAgICAgKiBcY29kZQotICAg
ICAqICAgY29uc3QgQ2xhc3NJbmZvIEJhckltcDo6aW5mbyA9IHsgIkJhciIsIDAsIDAgfTsgLy8g
bm8gcGFyZW50IGNsYXNzCi0gICAgICogICBjb25zdCBDbGFzc0luZm8gRm9vSW1wOjppbmZvID0g
eyAiRm9vIiwgJkJhckltcDo6aW5mbywgMCB9OworICAgICAqICAgY29uc3QgQ2xhc3NJbmZvIEJh
ckltcDo6aW5mbyA9IHsgIkJhciIsIDAsIDAsIDAgfTsgLy8gbm8gcGFyZW50IGNsYXNzCisgICAg
ICogICBjb25zdCBDbGFzc0luZm8gRm9vSW1wOjppbmZvID0geyAiRm9vIiwgJkJhckltcDo6aW5m
bywgMCwgMCB9OwogICAgICAqIFxlbmRjb2RlCiAgICAgICoKICAgICAgKiBAc2VlIGluaGVyaXRz
KCkKQEAgLTQwOSw3ICs0MTQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCBKU0dsb2Jh
bE9iamVjdCogdG9HbG9iYWxPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgZ2V0UHJvcGVydHlBdHRyaWJ1dGVzKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9w
ZXJ0eUF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3Q7CiAgICAgCiAgICAgLy8gV2ViQ29yZSB1c2Vz
IHRoaXMgdG8gbWFrZSBkb2N1bWVudC5hbGwgYW5kIHN0eWxlLmZpbHRlciB1bmRldGVjdGFibGUK
ICAgICB2aXJ0dWFsIGJvb2wgbWFzcXVlcmFkZUFzVW5kZWZpbmVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTQ0Niw3ICs0NTEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQcm9wZXJ0
eU1hcCBfcHJvcDsKIAogICBwcml2YXRlOgotICAgIGNvbnN0IEhhc2hFbnRyeSogZmluZFByb3Bl
cnR5SGFzaEVudHJ5KCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUgKSBjb25zdDsKKyAg
ICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIEpTVmFsdWUgKl9wcm90bzsK
ICAgfTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdF9vYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3Rfb2JqZWN0LmNwcAkocmV2aXNpb24g
MzI0MjYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0X29iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBPYmplY3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlw
ZShFeGVjU3RhCiAgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4
ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcs
IG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1bmN0
aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnRvTG9jYWxlU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBl
RnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS52YWx1ZU9mLCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0pOwotICAgIHB1dERp
cmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlw
ZSwgMSwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5oYXNPd25Qcm9wZXJ0eSwgb2JqZWN0
UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBDb21t
b25JZGVudGlmaWVyczo6c2hhcmVkKCktPnByb3BlcnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90
b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIENv
bW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+aXNQcm90b3R5cGVPZiwgb2JqZWN0UHJvdG9GdW5j
SXNQcm90b3R5cGVPZiksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJv
dG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5oYXNPd25Qcm9wZXJ0eSwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpLCBE
b250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4
ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvcGVydHlJ
c0VudW1lcmFibGUsIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKSwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBm
dW5jdGlvblByb3RvdHlwZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJvdG90eXBlT2Ys
IG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpLCBEb250RW51bSk7CiAKICAgICAvLyBNb3pp
bGxhIGV4dGVuc2lvbnMKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rp
b24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDIsIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQo
KS0+X19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKSwgRG9udEVu
dW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBm
dW5jdGlvblByb3RvdHlwZSwgMiwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5fX2RlZmlu
ZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpLCBEb250RW51bSk7Ci0gICAg
cHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJv
dG90eXBlLCAxLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPl9fbG9va3VwR2V0dGVyX18s
IG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RG
dW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEs
IENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+X19sb29rdXBTZXR0ZXJfXywgb2JqZWN0UHJv
dG9GdW5jTG9va3VwU2V0dGVyKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5l
dyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMiwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLl9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRl
ciksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rp
b24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2Rl
ZmluZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpLCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9u
UHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19sb29rdXBHZXR0ZXJfXywgb2Jq
ZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0
aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLl9fbG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1
cFNldHRlciksIERvbnRFbnVtKTsKIH0KIAogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvcmVn
ZXhwX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3JlZ2V4cF9v
YmplY3QuY3BwCShyZXZpc2lvbiAzMjQyNikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9yZWdleHBf
b2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTQgKzQ2LDE0IEBAIHN0YXRpYyBKU1Zh
bHVlKiByZWdFeHBQcm90b0Z1bmNUb1N0cmluZygKIAogLy8gRUNNQSAxNS4xMC41CiAKLWNvbnN0
IENsYXNzSW5mbyBSZWdFeHBQcm90b3R5cGU6OmluZm8gPSB7ICJSZWdFeHBQcm90b3R5cGUiLCAw
LCAwIH07Citjb25zdCBDbGFzc0luZm8gUmVnRXhwUHJvdG90eXBlOjppbmZvID0geyAiUmVnRXhw
UHJvdG90eXBlIiwgMCwgMCwgMCB9OwogCiBSZWdFeHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlLCBGdW5j
dGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCiAgICAgOiBKU09iamVjdChvYmplY3RQ
cm90b3R5cGUpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9u
KGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCkt
PmNvbXBpbGUsIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBl
LCAwLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPmV4ZWMsIHJlZ0V4cFByb3RvRnVuY0V4
ZWMpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0
aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVk
KCktPnRlc3QsIHJlZ0V4cFByb3RvRnVuY1Rlc3QpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAw
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsZSwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZSks
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24o
ZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5leGVjLCBy
ZWdFeHBQcm90b0Z1bmNFeGVjKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5l
dyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnRlc3QsIHJlZ0V4cFByb3RvRnVuY1Rlc3QpLCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJv
dG90eXBlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIHJlZ0V4cFByb3RvRnVu
Y1RvU3RyaW5nKSwgRG9udEVudW0pOwogfQogCkBAIC0xMjIsNyArMTIyLDcgQEAgSlNWYWx1ZSog
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gUmVnRXhwSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1jb25zdCBDbGFzc0luZm8gUmVnRXhwSW1wOjppbmZvID0geyAiUmVnRXhwIiwgMCwgJlJl
Z0V4cEltcFRhYmxlIH07Citjb25zdCBDbGFzc0luZm8gUmVnRXhwSW1wOjppbmZvID0geyAiUmVn
RXhwIiwgMCwgMCwgRXhlY1N0YXRlOjpSZWdFeHBJbXBUYWJsZSB9OwogCiAvKiBTb3VyY2UgZm9y
IHJlZ2V4cF9vYmplY3QubHV0LmgKIEBiZWdpbiBSZWdFeHBJbXBUYWJsZSA1CkBAIC0xNDcsNyAr
MTQ3LDcgQEAgUmVnRXhwSW1wOjp+UmVnRXhwSW1wKCkKIAogYm9vbCBSZWdFeHBJbXA6OmdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PFJlZ0V4cEltcCwgSlNPYmplY3Q+KGV4ZWMsICZSZWdFeHBJbXBUYWJsZSwgdGhpcywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxSZWdFeHBJbXAsIEpT
T2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OlJlZ0V4cEltcFRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBKU1ZhbHVlKiBSZWdFeHBJbXA6OmdldFZhbHVlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdApAQCAtMTcxLDcgKzE3MSw3IEBAIEpTVmFs
dWUqIFJlZ0V4cEltcDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGUKIAogdm9pZCBSZWdFeHBJbXA6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSogdmFsdWUpCiB7Ci0gICAgbG9va3VwUHV0PFJlZ0V4cEltcCwgSlNPYmplY3Q+KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsICZSZWdFeHBJbXBUYWJsZSwgdGhpcyk7CisgICAgbG9va3VwUHV0
PFJlZ0V4cEltcCwgSlNPYmplY3Q+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIEV4ZWNTdGF0
ZTo6UmVnRXhwSW1wVGFibGUoZXhlYyksIHRoaXMpOwogfQogCiB2b2lkIFJlZ0V4cEltcDo6cHV0
VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSogdmFsdWUp
CkBAIC0yNDIsNyArMjQyLDcgQEAgSlNWYWx1ZSogUmVnRXhwSW1wOjpjYWxsQXNGdW5jdGlvbihF
eGVjUwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVnRXhwT2JqZWN0SW1w
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8gUmVnRXhw
T2JqZWN0SW1wOjppbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5m
bywgJlJlZ0V4cE9iamVjdEltcFRhYmxlIH07Citjb25zdCBDbGFzc0luZm8gUmVnRXhwT2JqZWN0
SW1wOjppbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywgMCwg
RXhlY1N0YXRlOjpSZWdFeHBPYmplY3RJbXBUYWJsZSB9OwogCiAvKiBTb3VyY2UgZm9yIHJlZ2V4
cF9vYmplY3QubHV0LmgKIEBiZWdpbiBSZWdFeHBPYmplY3RJbXBUYWJsZSAyMQpAQCAtMzYzLDcg
KzM2Myw3IEBAIEpTVmFsdWUgKlJlZ0V4cE9iamVjdEltcDo6Z2V0UmlnaHRDb250ZXgKIAogYm9v
bCBSZWdFeHBPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICBy
ZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cE9iamVjdEltcCwgSW50ZXJuYWxGdW5jdGlv
bkltcD4oZXhlYywgJlJlZ0V4cE9iamVjdEltcFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cE9iamVjdEltcCwgSW50ZXJu
YWxGdW5jdGlvbkltcD4oZXhlYywgRXhlY1N0YXRlOjpSZWdFeHBPYmplY3RJbXBUYWJsZShleGVj
KSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogSlNWYWx1ZSAqUmVnRXhwT2JqZWN0
SW1wOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3QKQEAgLTQw
OCw3ICs0MDgsNyBAQCBKU1ZhbHVlICpSZWdFeHBPYmplY3RJbXA6OmdldFZhbHVlUHJvcGVyCiAK
IHZvaWQgUmVnRXhwT2JqZWN0SW1wOjpwdXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlm
aWVyICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgKnZhbHVlKQogewotICAgIGxvb2t1cFB1dDxSZWdF
eHBPYmplY3RJbXAsIEludGVybmFsRnVuY3Rpb25JbXA+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsICZSZWdFeHBPYmplY3RJbXBUYWJsZSwgdGhpcyk7CisgICAgbG9va3VwUHV0PFJlZ0V4cE9i
amVjdEltcCwgSW50ZXJuYWxGdW5jdGlvbkltcD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
RXhlY1N0YXRlOjpSZWdFeHBPYmplY3RJbXBUYWJsZShleGVjKSwgdGhpcyk7CiB9CiAKIHZvaWQg
UmVnRXhwT2JqZWN0SW1wOjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRv
a2VuLCBKU1ZhbHVlICp2YWx1ZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVjdC5j
cHAJKHJldmlzaW9uIDMyNDI2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RyaW5nSW5zdGFuY2UgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8gU3RyaW5nSW5zdGFuY2U6Omlu
Zm8gPSB7ICJTdHJpbmciLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gU3RyaW5nSW5zdGFuY2U6
OmluZm8gPSB7ICJTdHJpbmciLCAwLCAwLCAwIH07CiAKIFN0cmluZ0luc3RhbmNlOjpTdHJpbmdJ
bnN0YW5jZShKU09iamVjdCAqcHJvdG8pCiAgIDogSlNXcmFwcGVyT2JqZWN0KHByb3RvKQpAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgU3RyaW5nSW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXgK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmluZ1Byb3RvdHlwZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5
cGU6OmluZm8gPSB7ICJTdHJpbmciLCAmU3RyaW5nSW5zdGFuY2U6OmluZm8sICZzdHJpbmdUYWJs
ZSB9OworY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6aW5mbyA9IHsgIlN0cmluZyIs
ICZTdHJpbmdJbnN0YW5jZTo6aW5mbywgMCwgRXhlY1N0YXRlOjpzdHJpbmdUYWJsZSB9OwogLyog
U291cmNlIGZvciBzdHJpbmdfb2JqZWN0Lmx1dC5oCiBAYmVnaW4gc3RyaW5nVGFibGUgMjYKICAg
dG9TdHJpbmcgICAgICAgICAgICAgICZzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAgICAgICAwCkBAIC0xNzMsNyArMTczLDcgQEAgU3RyaW5nUHJvdG90
eXBlOjpTdHJpbmdQcm90b3R5cGUoRXhlY1N0YQogCiBib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7Ci0gIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8U3RyaW5nSW5zdGFuY2U+KGV4ZWMsICZzdHJpbmdUYWJsZSwgdGhpcywgcHJvcGVydHlO
YW1lLCBzbG90KTsKKyAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxTdHJpbmdJbnN0YW5j
ZT4oZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24gMzI0
OTApCisrKyBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAwOC0wNC0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHJ1
bi13ZWJraXQtdGVzdHMgLS10aHJlYWRpbmcKKyAgICAgICAgYW5kIHByb3Zpc2lvbmFsbHkgZml4
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NjE+CisgICAgICAg
IFByb3h5IHNlcnZlciBpc3N1ZSBpbiBTdW5kYXkncyBOaWdodGx5CisKKyAgICAgICAgKiBVc2Vy
T2JqZWN0SW1wLmNwcDogQWRqdXN0ZWQgZm9yIHRoZSBuZXcgbWVtYmVyIGFkZGVkIHRvIENsYXNz
SW5mby4KKwogMjAwOC0wNC0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5j
cHAJKHJldmlzaW9uIDMyNDI2KQorKysgSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJVc2VyT2JqZWN0SW1w
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KIAotY29u
c3QgQ2xhc3NJbmZvIFVzZXJPYmplY3RJbXA6OmluZm8gPSB7ICJVc2VyT2JqZWN0IiwgMCwgMCB9
OworY29uc3QgQ2xhc3NJbmZvIFVzZXJPYmplY3RJbXA6OmluZm8gPSB7ICJVc2VyT2JqZWN0Iiwg
MCwgMCwgMCB9OwogCiBVc2VyT2JqZWN0SW1wOjpVc2VyT2JqZWN0SW1wKEpTVXNlck9iamVjdCog
dXNlck9iamVjdCkKICAgICA6IGZKU1VzZXJPYmplY3QoKEpTVXNlck9iamVjdCopdXNlck9iamVj
dC0+UmV0YWluKCkpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzI0OTApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDA4LTA0LTI0ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXggcnVuLXdlYmtpdC10ZXN0cyAtLXRocmVhZGluZworICAgICAgICBh
bmQgcHJvdmlzaW9uYWxseSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODY2MT4KKyAgICAgICAgUHJveHkgc2VydmVyIGlzc3VlIGluIFN1bmRheSdzIE5pZ2h0
bHkKKworICAgICAgICBBZGp1c3RlZCBmb3IgSmF2YVNjcmlwdENvcmUgY2hhbmdlczogYWRkZWQg
YSBuZXcgbWVtYmVyIHRvIENsYXNzSW5mbyBvYmplY3RzLCB0dXJuZWQKKyAgICAgICAgQ2xhc3NJ
bmZvOjpwcm9wSGFzaFRhYmxlIGludG8gYSBmdW5jdGlvbiwgbWFkZSBnZXRQcm9wZXJ0eUF0dHJp
YnV0ZXMoKSB0YWtlIGFuIEV4ZWNTdGF0ZSBwb2ludGVyLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1dyYXBwZXI6OmdldFByb3BlcnR5QXR0
cmlidXRlcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRXZlbnRUYXJnZXRQcm90b3R5cGU6OmNsYXNzSW5mbyk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmN1c3RvbUdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTG9jYXRpb246OmN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0xvY2F0aW9uOjpjdXN0b21QdXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUkdCQ29sb3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpjdXN0b21QdXQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcDoKKwogMjAwOC0wNC0yNCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IExhcnMKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDMyNDI2KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY29uc3QgQ2xhc3NJbmZvIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
QXVkaW9Db25zdHJ1Y3RvciIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0F1ZGlvQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAKIEpTQXVk
aW9Db25zdHJ1Y3Rvcjo6SlNBdWRpb0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogRE9NT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+b2JqZWN0UHJvdG90eXBlKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCShyZXZpc2lvbiAzMjQyNikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6
CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gSlNET01XaW5kb3dCYXNlIE9iamVjdCAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KIAotY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19p
bmZvID0geyAiV2luZG93IiwgMCwgJkpTRE9NV2luZG93QmFzZVRhYmxlIH07Citjb25zdCBDbGFz
c0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAwLCAmSlNET01XaW5k
b3dCYXNlVGFibGUsIDAgfTsKIAogLyoKIEBiZWdpbiBKU0RPTVdpbmRvd0Jhc2VUYWJsZSAxMTgK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lv
biAzMjQyNikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxMiArODIsMTIgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Y3VzdG9t
R2V0T3duUHJvcGVydHlTbAogICAgIGlmICghaW1wbCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIC8v
IFRoZSBmb2xsb3dpbmcgY29kZSBpcyBzYWZlIGZvciBjcm9zcy1kb21haW4gYW5kIHNhbWUgZG9t
YWluIHVzZS4KICAgICAgICAgLy8gSXQgaWdub3JlcyBhbnkgY3VzdG9tIHByb3BlcnRpZXMgdGhh
dCBtaWdodCBiZSBzZXQgb24gdGhlIERPTVdpbmRvdyAoaW5jbHVkaW5nIGEgY3VzdG9tIHByb3Rv
dHlwZSkuCi0gICAgICAgIGVudHJ5ID0gc19pbmZvLnByb3BIYXNoVGFibGUtPmVudHJ5KHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIGVudHJ5ID0gc19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVu
dHJ5KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGlmIChlbnRyeSAmJiAhKGVudHJ5LT5hdHRyaWJ1
dGVzICYgRnVuY3Rpb24pICYmIGVudHJ5LT5pbnRlZ2VyVmFsdWUgPT0gQ2xvc2VkQXR0ck51bSkg
ewogICAgICAgICAgICAgc2xvdC5zZXRTdGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgc3RhdGljVmFs
dWVHZXR0ZXI8SlNET01XaW5kb3c+KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9Ci0gICAgICAgIGVudHJ5ID0gSlNET01XaW5kb3dQcm90b3R5cGU6OnNfaW5mby5wcm9wSGFz
aFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgICAgICBlbnRyeSA9IEpTRE9NV2luZG93
UHJvdG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZShleGVjKS0+ZW50cnkocHJvcGVydHlOYW1l
KTsKICAgICAgICAgaWYgKGVudHJ5ICYmIChlbnRyeS0+YXR0cmlidXRlcyAmIEZ1bmN0aW9uKSAm
JiBlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uQ2xv
c2UpIHsKICAgICAgICAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhpcywgZW50cnksIG5vbkNh
Y2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTExNSw3ICsxMTUsNyBAQCBib29sIEpTRE9NV2luZG93OjpjdXN0b21HZXRPd25Qcm9wZXJ0eVNs
CiAgICAgLy8gcHJvdG90eXBlIGR1ZSB0byB0aGUgYmxhbmtldCBzYW1lIG9yaWdpbiAoYWxsb3dz
QWNjZXNzRnJvbSkgY2hlY2sgYXQgdGhlIGVuZCBvZiBnZXRPd25Qcm9wZXJ0eVNsb3QuCiAgICAg
Ly8gQWxzbywgaXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBpbXBsZW1lbnRhdGlvbiBzdHJhaWdo
dCBvdXQgb2YgdGhlIERPTVdpbmRvdyBwcm90b3R5cGUgcmVnYXJkbGVzcyBvZgogICAgIC8vIHdo
YXQgcHJvdG90eXBlIGlzIGFjdHVhbGx5IHNldCBvbiB0aGlzIG9iamVjdC4KLSAgICBlbnRyeSA9
IEpTRE9NV2luZG93UHJvdG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVy
dHlOYW1lKTsKKyAgICBlbnRyeSA9IEpTRE9NV2luZG93UHJvdG90eXBlOjpzX2luZm8ucHJvcEhh
c2hUYWJsZShleGVjKS0+ZW50cnkocHJvcGVydHlOYW1lKTsKICAgICBpZiAoZW50cnkpIHsKICAg
ICAgICAgaWYgKChlbnRyeS0+YXR0cmlidXRlcyAmIEZ1bmN0aW9uKQogICAgICAgICAgICAgICAg
ICYmIChlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9u
Qmx1cgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1dyYXBwZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmNwcAko
cmV2aXNpb24gMzI0MjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93V3JhcHBl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEtK
UzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dX
cmFwcGVyOjpzX2luZm8gPSB7ICJKU0RPTVdpbmRvd1dyYXBwZXIiLCAwLCAwIH07Citjb25zdCBD
bGFzc0luZm8gSlNET01XaW5kb3dXcmFwcGVyOjpzX2luZm8gPSB7ICJKU0RPTVdpbmRvd1dyYXBw
ZXIiLCAwLCAwLCAwIH07CiAKIEpTRE9NV2luZG93V3JhcHBlcjo6SlNET01XaW5kb3dXcmFwcGVy
KERPTVdpbmRvdyogZG9tV2luZG93KQogICAgIDogQmFzZShqc051bGwoKSkKQEAgLTk0LDkgKzk0
LDkgQEAgdm9pZCBKU0RPTVdpbmRvd1dyYXBwZXI6OmdldFByb3BlcnR5TmFtZQogICAgIG1fd2lu
ZG93LT5nZXRQcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMpOwogfQogCi1ib29sIEpT
RE9NV2luZG93V3JhcHBlcjo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0Citib29sIEpTRE9NV2lu
ZG93V3JhcHBlcjo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKEtKUzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25z
dAogewotICAgIHJldHVybiBtX3dpbmRvdy0+Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcyk7CisgICAgcmV0dXJuIG1fd2luZG93LT5nZXRQcm9wZXJ0eUF0dHJp
YnV0ZXMoZXhlYywgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKIH0KIAogdm9pZCBKU0RPTVdp
bmRvd1dyYXBwZXI6OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uKQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1dyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93V3JhcHBlci5oCShyZXZpc2lvbiAzMjQyNikKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
cHV0V2l0aEF0dHJpYnV0ZXMoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgS0pTOjpKU1ZhbHVlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtK
Uzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGdldFBy
b3BlcnR5TmFtZXMoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OlByb3BlcnR5TmFtZUFycmF5Jik7Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoY29uc3QgS0pTOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBib29sIGdldFByb3BlcnR5QXR0cmlidXRlcyhLSlM6OkV4ZWNTdGF0ZSosIGNv
bnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoS0pTOjpFeGVjU3RhdGUq
LCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgS0pTOjpKU09iamVjdCogZ2V0
dGVyRnVuY3Rpb24pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lU2V0dGVyKEtKUzo6RXhl
Y1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEtKUzo6SlNPYmpl
Y3QqIHNldHRlckZ1bmN0aW9uKTsKICAgICAgICAgdmlydHVhbCBLSlM6OkpTVmFsdWUqIGxvb2t1
cEdldHRlcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmgJKHJldmlz
aW9uIDMyNDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0QmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZpcnR1YWwgY29uc3QgS0pTOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBLSlM6OkNsYXNzSW5mbyBzX2NsYXNz
SW5mbyA9IHsgSlNFdmVudFRhcmdldFByb3RvdHlwZUluZm9ybWF0aW9uOjpwcm90b3R5cGVDbGFz
c05hbWUoKSwgMCwgJktKUzo6SlNFdmVudFRhcmdldFByb3RvdHlwZVRhYmxlIH07CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gc19jbGFzc0luZm8gPSB7IEpTRXZlbnRU
YXJnZXRQcm90b3R5cGVJbmZvcm1hdGlvbjo6cHJvdG90eXBlQ2xhc3NOYW1lKCksIDAsICZLSlM6
OkpTRXZlbnRUYXJnZXRQcm90b3R5cGVUYWJsZSwgMCB9OwogICAgICAgICAgICAgcmV0dXJuICZz
X2NsYXNzSW5mbzsKICAgICAgICAgfQogICAgIH07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDMyNDI2KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksNyBAQCBKU1ZhbHVlKiBqc0hUTUxJbnB1dEVsZW1lbnRCYXNlRnVuY3Rp
b25TCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU0hU
TUxJbnB1dEVsZW1lbnRCYXNlOjpzX2luZm8gPSB7ICJIVE1MSW5wdXRFbGVtZW50QmFzZSIsICZK
U0hUTUxFbGVtZW50OjpzX2luZm8sICZKU0hUTUxJbnB1dEVsZW1lbnRCYXNlVGFibGUgfTsKK2Nv
bnN0IENsYXNzSW5mbyBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlOjpzX2luZm8gPSB7ICJIVE1MSW5w
dXRFbGVtZW50QmFzZSIsICZKU0hUTUxFbGVtZW50OjpzX2luZm8sICZKU0hUTUxJbnB1dEVsZW1l
bnRCYXNlVGFibGUsIDAgfTsKIAogSlNIVE1MSW5wdXRFbGVtZW50QmFzZTo6SlNIVE1MSW5wdXRF
bGVtZW50QmFzZShLSlM6OkpTT2JqZWN0KiBwcm90b3R5cGUsIFBhc3NSZWZQdHI8SFRNTElucHV0
RWxlbWVudD4gZSkKICAgICA6IEpTSFRNTEVsZW1lbnQocHJvdG90eXBlLCBlLmdldCgpKQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uRWxlbWVudENv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
b25zdCBDbGFzc0luZm8gSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJPcHRpb25Db25zdHJ1Y3RvciIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0hUTUxPcHRp
b25FbGVtZW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIk9wdGlvbkNvbnN0cnVjdG9yIiwgMCwg
MCwgMCB9OwogCiBKU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3I6OkpTSFRNTE9wdGlvbkVs
ZW1lbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IERPTU9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlw
ZSgpKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNp
b24gMzI0MjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OmN1c3RvbUdldE93
blByb3BlcnR5U2xvdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDaGVjayBmb3Ig
dGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3ZSBhbGxvdywgZXZlbiB3aGVuIGNhbGxlZCBjcm9zcy1k
b21haW4uCi0gICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IEpTSGlzdG9yeVByb3RvdHlwZTo6
c19pbmZvLnByb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeSA9IEpTSGlzdG9yeVByb3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUo
ZXhlYyktPmVudHJ5KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIC8v
IEFsbG93IGFjY2VzcyB0byBiYWNrKCksIGZvcndhcmQoKSBhbmQgZ28oKSBmcm9tIGFueSBmcmFt
ZS4KICAgICAgICAgaWYgKChlbnRyeS0+YXR0cmlidXRlcyAmIEZ1bmN0aW9uKQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzI0MjYp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jb25zdCBDbGFzc0luZm8gSlNJbWFnZUNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiSW1hZ2VDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIAog
SlNJbWFnZUNvbnN0cnVjdG9yOjpKU0ltYWdlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBET01PYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAJKHJldmlzaW9uIDMyNDI2KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBXcmFwcGVyTWFwJiB3cmFwcGVycygpCiAgICAg
cmV0dXJuIG1hcDsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBl
cjo6c19pbmZvID0geyAiSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyIiwgJkpTUXVhcmFudGluZWRP
YmplY3RXcmFwcGVyOjpzX2luZm8sIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0luc3BlY3RlZE9i
amVjdFdyYXBwZXI6OnNfaW5mbyA9IHsgIkpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlciIsICZKU1F1
YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6c19pbmZvLCAwLCAwIH07CiAKIEpTVmFsdWUqIEpTSW5z
cGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpTVmFs
dWUqIHVud3JhcHBlZFZhbHVlKQogewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3Bl
Y3RvckNhbGxiYWNrV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAJKHJldmlzaW9uIDMyNDI2KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIFdyYXBwZXJNYXAmIHdyYXBwZXJzKCkKICAg
ICByZXR1cm4gbWFwOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNJbnNwZWN0b3JDYWxsYmFja1dy
YXBwZXI6OnNfaW5mbyA9IHsgIkpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyIiwgJkpTUXVhcmFu
dGluZWRPYmplY3RXcmFwcGVyOjpzX2luZm8sIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0luc3Bl
Y3RvckNhbGxiYWNrV3JhcHBlcjo6c19pbmZvID0geyAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBw
ZXIiLCAmSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbywgMCwgMCB9OwogCiBKU1Zh
bHVlKiBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6d3JhcChFeGVjU3RhdGUqIHVud3JhcHBl
ZEV4ZWMsIEpTVmFsdWUqIHVud3JhcHBlZFZhbHVlKQogewpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAzMjQyNikKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0
LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpjdXN0b21HZXRPd25Qcm9wZXJ0eVNsbwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDaGVjayBmb3IgdGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3
ZSBhbGxvdywgZXZlbiB3aGVuIGNhbGxlZCBjcm9zcy1kb21haW4uCi0gICAgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSA9IEpTTG9jYXRpb25Qcm90b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRhYmxlLT5l
bnRyeShwcm9wZXJ0eU5hbWUpOworICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBKU0xvY2F0
aW9uUHJvdG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZShleGVjKS0+ZW50cnkocHJvcGVydHlO
YW1lKTsKICAgICBpZiAoZW50cnkgJiYgKGVudHJ5LT5hdHRyaWJ1dGVzICYgRnVuY3Rpb24pCiAg
ICAgICAgICAgICAmJiAoZW50cnktPmZ1bmN0aW9uVmFsdWUgPT0ganNMb2NhdGlvblByb3RvdHlw
ZUZ1bmN0aW9uUmVwbGFjZQogICAgICAgICAgICAgICAgIHx8IGVudHJ5LT5mdW5jdGlvblZhbHVl
ID09IGpzTG9jYXRpb25Qcm90b3R5cGVGdW5jdGlvblJlbG9hZApAQCAtODAsNyArODAsNyBAQCBi
b29sIEpTTG9jYXRpb246OmN1c3RvbVB1dChFeGVjU3RhdGUqIGV4CiAKICAgICBib29sIHNhbWVE
b21haW5BY2Nlc3MgPSBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgZnJhbWUpOwogCi0gICAg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IEpTTG9jYXRpb246OnNfaW5mby5wcm9wSGFzaFRhYmxl
LT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBKU0xv
Y2F0aW9uOjpzX2luZm8ucHJvcEhhc2hUYWJsZShleGVjKS0+ZW50cnkocHJvcGVydHlOYW1lKTsK
ICAgICBpZiAoIWVudHJ5KSB7CiAgICAgICAgIGlmIChzYW1lRG9tYWluQWNjZXNzKQogICAgICAg
ICAgICAgSlNPYmplY3Q6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcAkocmV2aXNp
b24gMzI0MjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAotY29uc3QgQ2xhc3NJbmZvIEpTTmFtZWROb2Rlc0Nv
bGxlY3Rpb246OnNfaW5mbyA9IHsgIkNvbGxlY3Rpb24iLCAwLCAwIH07Citjb25zdCBDbGFzc0lu
Zm8gSlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6c19pbmZvID0geyAiQ29sbGVjdGlvbiIsIDAsIDAs
IDAgfTsKIAogLy8gU3VjaCBhIGNvbGxlY3Rpb24gaXMgdXN1YWxseSB2ZXJ5IHNob3J0LWxpdmVk
LCBpdCBvbmx5IGV4aXN0cwogLy8gZm9yIGNvbnN0cnVjdHMgbGlrZSBkb2N1bWVudC5mb3Jtcy48
bmFtZT5bMV0sCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RX
cmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUXVhcmFudGlu
ZWRPYmplY3RXcmFwcGVyLmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNvbnN0IENsYXNzSW5mbyBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6c19pbmZvID0geyAi
SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIiLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNR
dWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbyA9IHsgIkpTUXVhcmFudGluZWRPYmplY3RX
cmFwcGVyIiwgMCwgMCwgMCB9OwogCiBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlciogSlNRdWFy
YW50aW5lZE9iamVjdFdyYXBwZXI6OmFzV3JhcHBlcihKU1ZhbHVlKiB2YWx1ZSkKIHsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JHQkNvbG9yLmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3Qg
Q2xhc3NJbmZvIEpTUkdCQ29sb3I6OnNfaW5mbyA9IHsgIlJHQkNvbG9yIiwgMCwgJkpTUkdCQ29s
b3JUYWJsZSB9OworY29uc3QgQ2xhc3NJbmZvIEpTUkdCQ29sb3I6OnNfaW5mbyA9IHsgIlJHQkNv
bG9yIiwgMCwgJkpTUkdCQ29sb3JUYWJsZSwgMCB9OwogCiAvKgogQGJlZ2luIEpTUkdCQ29sb3JU
YWJsZSAzCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCShyZXZp
c2lvbiAzMjQyNikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBib29sIEpTU3RvcmFnZTo6Y3VzdG9tUHV0
KEV4ZWNTdGF0ZSogZXhlCiAgICAgLy8gU2luY2UgaGFzUHJvcGVydHkoKSB3b3VsZCBlbmQgdXAg
Y2FsbGluZyBjYW5HZXRJdGVtc0Zvck5hbWUoKSBhbmQgYmUgZm9vbGVkLCB3ZSBuZWVkIHRvIGNo
ZWNrCiAgICAgLy8gdGhlIG5hdGl2ZSBwcm9wZXJ0eSBzbG90cyBtYW51YWxseS4KICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdDsKLSAgICBpZiAoZ2V0U3RhdGljVmFsdWVTbG90PEpTU3RvcmFnZSwgQmFz
ZT4oZXhlYywgc19pbmZvLnByb3BIYXNoVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCkp
CisgICAgaWYgKGdldFN0YXRpY1ZhbHVlU2xvdDxKU1N0b3JhZ2UsIEJhc2U+KGV4ZWMsIHNfaW5m
by5wcm9wSGFzaFRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIEpTVmFsdWUqIHByb3RvdHlwZSA9IHRoaXMt
PnByb3RvdHlwZSgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jb25zdCBDbGFzc0luZm8gSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJ
bmZvIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiWE1MSHR0cFJlcXVl
c3RDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
OjpKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBET01PYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5v
YmplY3RQcm90b3R5cGUoKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vz
c29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nv
ci5jcHAJKHJldmlzaW9uIDMyNDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9j
ZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU1hT
TFRQcm9jZXNzb3I6OnNfaW5mbyA9IHsgIlhTTFRQcm9jZXNzb3IiLCAwLCAwIH07Citjb25zdCBD
bGFzc0luZm8gSlNYU0xUUHJvY2Vzc29yOjpzX2luZm8gPSB7ICJYU0xUUHJvY2Vzc29yIiwgMCwg
MCwgMCB9OwogCiAvKgogQGJlZ2luIEpTWFNMVFByb2Nlc3NvclByb3RvdHlwZVRhYmxlIDcKQEAg
LTE4Niw3ICsxODYsNyBAQCBKU1ZhbHVlKiBqc1hTTFRQcm9jZXNzb3JQcm90b3R5cGVGdW5jdGlv
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1hTTFRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiWFNMVFByb2Nlc3NvckNvbnNydWN0b3Ii
LCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlhTTFRQcm9jZXNzb3JDb25zcnVjdG9yIiwgMCwgMCwgMCB9OwogCiBKU1hTTFRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcjo6SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjKQogICAgIDogRE9NT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2Jq
ZWN0UHJvdG90eXBlKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0JKHJldmlzaW9uIDMyNDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzMwLDcgKzczMCw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XEBoYXNoS2V5cywgXEBoYXNoVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxAaGFzaFNwZWNpYWxzLCBcQGhhc2hQYXJhbWV0ZXJzKTsKIAotICAgIHB1c2goQGltcGxDb250
ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBc
IiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgMCwgJiR7Y2xhc3NOYW1lfVByb3RvdHlw
ZVRhYmxlIH07XG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZv
ICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Q
cm90b3R5cGVcIiwgMCwgJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwIH07XG5cbiIpOwog
ICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENhY2hlIn0pIHsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9UHJvdG90
eXBlOjpzZWxmKClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAt
NzcyLDggKzc3Miw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKCRudW1B
dHRyaWJ1dGVzID4gMCkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiYke2NsYXNzTmFt
ZX1UYWJsZSAiKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIjAg
IikKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIwICIpOwogICAgIH0KKyAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiwgMCAiKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwog
CiAgICAgIyBHZXQgY29ycmVjdCBwYXNzL3N0b3JlIHR5cGVzIHJlc3BlY3RpbmcgUE9EVHlwZSBm
bGFnCkBAIC0xNzc4LDcgKzE3NzksNyBAQCBFT0YKICRpbXBsQ29udGVudCAuPSA8PCAiRU9GIjsK
IH07CiAKLWNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiJHt2aXNpYmxlQ2xhc3NOYW1lfUNvbnN0cnVjdG9yIiwgMCwgJiR7Y2xhc3NOYW1lfUNvbnN0
cnVjdG9yVGFibGUgfTsKK2NvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiJHt2aXNpYmxlQ2xhc3NOYW1lfUNvbnN0cnVjdG9yIiwgMCwgJiR7Y2xhc3NO
YW1lfUNvbnN0cnVjdG9yVGFibGUsIDAgfTsKIAogYm9vbCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CkluZGV4OiBXZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9ydW50aW1l
X2FycmF5LmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgS0pTOwogCi1jb25zdCBDbGFzc0luZm8gUnVudGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50
aW1lQXJyYXkiLCAmQXJyYXlJbnN0YW5jZTo6aW5mbywgMCB9OworY29uc3QgQ2xhc3NJbmZvIFJ1
bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkFycmF5SW5zdGFuY2U6Omlu
Zm8sIDAsIDAgfTsKIAogUnVudGltZUFycmF5OjpSdW50aW1lQXJyYXkoRXhlY1N0YXRlICpleGVj
LCBCaW5kaW5nczo6QXJyYXkgKmEpCiAgICAgOiBKU09iamVjdChleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmFycmF5UHJvdG90eXBlKCkpCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
Y3BwCShyZXZpc2lvbiAzMjQyNikKKysrIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEtKUzsK
IHVzaW5nIG5hbWVzcGFjZSBCaW5kaW5nczsKIAotY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmpl
Y3RJbXA6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3QiLCAwLCAwIH07Citjb25zdCBDbGFzc0lu
Zm8gUnVudGltZU9iamVjdEltcDo6c19pbmZvID0geyAiUnVudGltZU9iamVjdCIsIDAsIDAsIDAg
fTsKIAogUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChQYXNzUmVmUHRyPEJpbmRp
bmdzOjpJbnN0YW5jZT4gaSkKICAgICA6IGluc3RhbmNlKGkpCkluZGV4OiBXZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMzI0MjYpCisrKyBXZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHVuc2ln
bmVkIGludCBPYmpjQXJyYXk6OmdldExlbmd0aCgpIGNvbnMKICAgICByZXR1cm4gW19hcnJheS5n
ZXQoKSBjb3VudF07CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmluZm8gPSB7ICJPYmpjRmFsbGJhY2tPYmplY3QiLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8g
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjppbmZvID0geyAiT2JqY0ZhbGxiYWNrT2JqZWN0IiwgMCwg
MCwgMCB9OwogCiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChP
YmpjSW5zdGFuY2UqIGksIGNvbnN0IEtKUzo6SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiA6IF9p
bnN0YW5jZShpKQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMyNDkwKQorKysgV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0wNC0yNCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRml4IHJ1bi13ZWJraXQtdGVzdHMgLS10aHJlYWRpbmcKKyAg
ICAgICAgYW5kIHByb3Zpc2lvbmFsbHkgZml4IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2NjE+CisgICAgICAgIFByb3h5IHNlcnZlciBpc3N1ZSBpbiBTdW5kYXkn
cyBOaWdodGx5CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06ICgtW1dlYlZpZXdQcml2
YXRlIGluaXRdKTogSW5pdGlhbGl6ZSB0aHJlYWRpbmcuIFByZXZpb3VzbHksIHRoaXMgd2FzCisg
ICAgICAgIG9ubHkgZG9uZSBmcm9tIGljb24gZGF0YWJhc2UgY29kZSwgd2hpY2ggaXMgbm90IHJv
YnVzdCBlbm91Z2guCisKIDIwMDgtMDQtMjQgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVzcwpJbmRleDogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDMyNDI2KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsNyBAQAogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXNoYm9hcmRSZWdpb24uaD4KICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8a2pzL0luaXRpYWxpemVUaHJlYWRpbmcu
aD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtYXV0by5oPgog
I2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KQEAgLTQ1Nyw2ICs0NTgsNyBAQCBzdGF0aWMg
Qk9PTCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkOwogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAg
ICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOworICAgIEtKUzo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpOwogICAgIGFsbG93c1VuZG8gPSBZRVM7CiAgICAgem9vbU11bHRpcGxpZXIgPSAx
OwogICAgIHpvb21NdWx0aXBsaWVySXNUZXh0T25seSA9IFlFUzsKSW5kZXg6IFdlYktpdC93aW4v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAz
MjQ5MCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMDgtMDQtMjQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBydW4t
d2Via2l0LXRlc3RzIC0tdGhyZWFkaW5nCisgICAgICAgIGFuZCBwcm92aXNpb25hbGx5IGZpeCA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjYxPgorICAgICAgICBQ
cm94eSBzZXJ2ZXIgaXNzdWUgaW4gU3VuZGF5J3MgTmlnaHRseQorCisgICAgICAgICogV2ViVmll
dy5jcHA6IChXZWJWaWV3OjpXZWJWaWV3KTogSW5pdGlhbGl6ZSB0aHJlYWRpbmcuIFByZXZpb3Vz
bHksIHRoaXMgd2FzIG9ubHkgZG9uZSBmcm9tCisgICAgICAgIGljb24gZGF0YWJhc2UgY29kZSwg
d2hpY2ggaXMgbm90IHJvYnVzdCBlbm91Z2guCisKIDIwMDgtMDQtMjMgIEpvbiBIb25leWN1dHQg
IDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeS4KSW5k
ZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkocmV2aXNpb24gMzI0MjYpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UeXBpbmdDb21t
YW5kLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNw
cmFnbWEgd2FybmluZyhwb3ApCisjaW5jbHVkZSA8a2pzL0luaXRpYWxpemVUaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS92YWx1ZS5oPgogI2luY2x1ZGUgPENGTmV0d29yay9D
RlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5o
PgpAQCAtMjczLDYgKzI3NCw4IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogLCBtX3RvcExldmVsUGFy
ZW50KDApCiAsIG1fZGVsZXRlQmFja2luZ1N0b3JlVGltZXJBY3RpdmUoZmFsc2UpCiB7CisgICAg
S0pTOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisKICAgICBtX2JhY2tpbmdTdG9yZVNpemUuY3gg
PSBtX2JhY2tpbmdTdG9yZVNpemUuY3kgPSAwOwogCiAgICAgQ29DcmVhdGVJbnN0YW5jZShDTFNJ
RF9EcmFnRHJvcEhlbHBlciwgMCwgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIsIElJRF9JRHJvcFRhcmdl
dEhlbHBlciwodm9pZCoqKSZtX2Ryb3BUYXJnZXRIZWxwZXIpOwpJbmRleDogV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MzI0OTApCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOSBAQAorMjAwOC0wNC0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHJ1
bi13ZWJraXQtdGVzdHMgLS10aHJlYWRpbmcKKyAgICAgICAgYW5kIHByb3Zpc2lvbmFsbHkgZml4
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NjE+CisgICAgICAg
IFByb3h5IHNlcnZlciBpc3N1ZSBpbiBTdW5kYXkncyBOaWdodGx5CisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAg
ICAgICAocnVuSmF2YVNjcmlwdFRocmVhZCk6CisgICAgICAgIChzdGFydEphdmFTY3JpcHRUaHJl
YWRzKToKKyAgICAgICAgKHN0b3BKYXZhU2NyaXB0VGhyZWFkcyk6CisgICAgICAgIFNwYXduZWQg
dGhyZWFkcyB3ZXJlIGltbWVkaWF0ZWx5IGRldGFjaGVkLCB1bmxpa2UgdGhlIG9yaWdpbmFsIG9u
ZXMsIHNvIGpvaW5pbmcgdGhlbQorICAgICAgICBtYWRlIG5vIHNlbnNlLiBOb3csIGFsbCB0aHJl
YWRzIGFyZSBjcmVhdGVkIGRldGFjaGVkLCBhbmQgc3RvcEphdmFTY3JpcHRUaHJlYWRzKCkganVz
dAorICAgICAgICB3YWl0cyBmb3IgdGhlbSBhbGwgdG8gZXhpdC4KKwogMjAwOC0wNC0yMyAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBjcmFzaGVzIGJlIHJl
cG9ydGVkIGFzIGNyYXNoZXMsIG5vdCBoYW5ncwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFk
aW5nUHRocmVhZHMuY3BwCShyZXZpc2lvbiAzMjQyNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDYgKzc3LDcgQEAgdm9pZCogcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKiBh
cmcpCiAKICAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbmNlbGxhdGlvbi4KICAgICAgICAgaWYgKGph
dmFTY3JpcHRUaHJlYWRzU2hvdWxkVGVybWluYXRlKSB7CisgICAgICAgICAgICBqYXZhU2NyaXB0
VGhyZWFkcygpLT5yZW1vdmUocHRocmVhZF9zZWxmKCkpOwogICAgICAgICAgICAgcHRocmVhZF9t
dXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIH0KQEAgLTEwNSw2ICsxMDYsNyBAQCB2b2lkIHN0YXJ0SmF2YVNjcmlwdFRo
cmVhZHMoKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVhZHNDb3VudDsg
aSsrKSB7CiAgICAgICAgIHB0aHJlYWRfdCBwdGhyZWFkOwogICAgICAgICBwdGhyZWFkX2NyZWF0
ZSgmcHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDApOworICAgICAgICBwdGhyZWFk
X2RldGFjaChwdGhyZWFkKTsKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS0+YWRkKHB0aHJl
YWQpOwogICAgIH0KIApAQCAtMTIxLDkgKzEyMywxNCBAQCB2b2lkIHN0b3BKYXZhU2NyaXB0VGhy
ZWFkcygpCiAKICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRl
eCk7CiAKLSAgICBUaHJlYWRTZXQ6Oml0ZXJhdG9yIGVuZCA9IGphdmFTY3JpcHRUaHJlYWRzKCkt
PmVuZCgpOwotICAgIGZvciAoVGhyZWFkU2V0OjppdGVyYXRvciBpdCA9IGphdmFTY3JpcHRUaHJl
YWRzKCktPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBwdGhyZWFkX3QgcHRo
cmVhZCA9ICppdDsKLSAgICAgICAgcHRocmVhZF9qb2luKHB0aHJlYWQsIDApOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNN
dXRleCk7CisgICAgICAgIGludCB0aHJlYWRDb3VudCA9IGphdmFTY3JpcHRUaHJlYWRzKCktPnNp
emUoKTsKKyAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgpOworCisgICAgICAgIGlmICghdGhyZWFkQ291bnQpCisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICB1c2xlZXAoMTAwMCk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20866</attachid>
            <date>2008-04-28 08:32:10 -0700</date>
            <delta_ts>2008-04-28 10:00:21 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>HashTables.txt</filename>
            <type>text/plain</type>
            <size>81001</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIyIEBACisyMDA4LTA0LTI4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXggcnVuLXdlYmtpdC10ZXN0cyAtLXRocmVhZGluZwor
ICAgICAgICBhbmQgcHJvdmlzaW9uYWxseSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODY2MT4KKyAgICAgICAgUHJveHkgc2VydmVyIGlzc3VlIGluIFN1bmRh
eSdzIE5pZ2h0bHkKKworICAgICAgICBDaGFuZ2VkIENsYXNzSW5mbyBvYmplY3RzIGZvciBidWls
dC1pbiBvYmplY3RzIHRvIGhvbGQgYSBnZXR0ZXIgZnVuY3Rpb24gcmV0dXJuaW5nCisgICAgICAg
IGEgcGVyLXRocmVhZCBpbnN0YW5jZS4gVGhpcyBtYWtlcyBpdCBzYWZlIHRvIHNoYXJlIHRoZXNl
IENsYXNzSW5mbyBvYmplY3RzIGJldHdlZW4gdGhyZWFkcyAtCisgICAgICAgIGFuZCB0aGVzZSBh
cmUgdGhlIG9ubHkgb25lcyB0aGF0IG5lZWQgdG8gYmUgc2hhcmVkLgorCisgICAgICAgICoga2pz
L2xleGVyLmNwcDoKKyAgICAgICAgKEtKUzo6TGV4ZXI6OkxleGVyKToKKyAgICAgICAgKEtKUzo6
TGV4ZXI6On5MZXhlcik6CisgICAgICAgICoga2pzL2xleGVyLmg6CisgICAgICAgIE1hZGUgbWFp
blRhYmxlIGEgbWVtYmVyIG9mIExleGVyLCBzbyB0aGF0IGl0IG5vIGxvbmdlciBuZWVkcyB0byBi
ZSBzaGFyZWQgYmV0d2VlbiB0aHJlYWRzLgorCisgICAgICAgICoga2pzL29iamVjdC5jcHA6Cisg
ICAgICAgIChLSlM6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OkpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkpOgorICAgICAgICAoS0pTOjpKU09iamVjdDo6
cHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAoS0pTOjpKU09iamVjdDo6Z2V0UHJvcGVy
dHlBdHRyaWJ1dGVzKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIGtqcy9vYmplY3QuaDoKKyAgICAgICAgKEtKUzo6Q2xhc3NJbmZvOjpwcm9w
SGFzaFRhYmxlKToKKyAgICAgICAgQWRkZWQgYSBuZXcgY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVy
RnVuY3Rpb24gZmllbGQgdG8gQ2xhc3NJbmZvLiBJZiBpdCBpcyBub24temVybywgdGhlCisgICAg
ICAgIHN0YXRpYyB0YWJsZSBpcyBub3QgdXNlZC4KKworICAgICAgICAqIGtqcy9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChLSlM6OlRocmVhZENsYXNzSW5mb0hhc2hUYWJsZXM6OlRocmVh
ZENsYXNzSW5mb0hhc2hUYWJsZXMpOiBUaGlzIG5ldyBjbGFzcyBob2xkcyBwZXItdGhyZWFkCisg
ICAgICAgIEhhc2hUYWJsZXMgZm9yIGJ1aWx0LWluIGNsYXNzZXMuIFRoZSBvbGQgc3RhdGljIHN0
cnVjdHMgYXJlIGNvcGllZCB0byBjcmVhdGUgcGVyLXRocmVhZAorICAgICAgICBpbnN0YW5jZXMu
CisgICAgICAgIChLSlM6OkpTR2xvYmFsT2JqZWN0Ojp0aHJlYWRDbGFzc0luZm9IYXNoVGFibGVz
KTogQW4gYWNjZXNzb3IvaW5pdGlhbGl6ZXIgZm9yIHRoZSBhYm92ZS4KKyAgICAgICAgKEtKUzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOiBDb3B5IHBlci10aHJlYWQgZGF0YSBpbnRvIGEgc2luZ2xl
IHN0cnVjdHVyZSBmb3IgZmFzdGVyIGFjY2Vzcy4KKyAgICAgICAgQWxzbywgY29uc3RydWN0IGds
b2JhbEV4ZWMuCisgICAgICAgIChLSlM6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6IEFkYXB0ZWQg
Zm9yIGdsb2JhbEV4ZWMgbm93IGJlaW5nIGFuIE93blB0ci4KKyAgICAgICAgKEtKUzo6SlNHbG9i
YWxPYmplY3Q6Om1hcmspOiBEaXR0by4KKyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6Omds
b2JhbEV4ZWMpOiBEaXR0by4KKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0RGF0YTo6SlNHbG9iYWxPYmpl
Y3REYXRhKTogTWFkZSBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRhOjpnbG9iYWxF
eGVjIGFuIE93blB0ciwgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgYmUgaW5pdGlhbGl6ZWQgZnJv
bSBKU0dsb2JhbE9iamVjdDo6aW5pdCgpIGFmdGVyIHRoZW0uIE90aGVyd2lzZSwgRXhlY1N0YXRl
IGNvbnN0cnVjdG9yIHdhcworICAgICAgICB0cnlpbmcgdG8gYWNjZXNzIGhhbGYtaW5pdGlhbGl6
ZWQgSlNHbG9iYWxPYmplY3QgdG8gbWFrZSBpdHMgb3duIGNvcHkgb2YgdGhlc2UgdGFibGUKKyAg
ICAgICAgcmVmZXJlbmNlcywgYW5kIGZhaWxlZC4KKyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmpl
Y3Q6OkpTR2xvYmFsT2JqZWN0KTogUGFzcyAidGhpcyIgdmFsdWUgdG8gaW5pdCgpIHRvIGNyZWF0
ZSBnbG9iYWxFeGVjLgorICAgICAgICAoS0pTOjpKU0dsb2JhbE9iamVjdDo6cGVyVGhyZWFkRGF0
YSk6IEFuIGFjY2Vzc29yIGZvciBwZXItdGhyZWFkIGRhdGEuCisKKyAgICAgICAgKiBranMvRXhl
Y1N0YXRlLmNwcDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpFeGVjU3RhdGUpOgorICAgICAg
ICAqIGtqcy9FeGVjU3RhdGUuaDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpwcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjplbXB0eUxpc3QpOgorICAgICAgICAoS0pT
OjpFeGVjU3RhdGU6OmFycmF5VGFibGUpOgorICAgICAgICAoS0pTOjpFeGVjU3RhdGU6OmRhdGVU
YWJsZSk6CisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6bWF0aFRhYmxlKToKKyAgICAgICAgKEtK
Uzo6RXhlY1N0YXRlOjpudW1iZXJUYWJsZSk6CisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6UmVn
RXhwSW1wVGFibGUpOgorICAgICAgICAoS0pTOjpFeGVjU3RhdGU6OlJlZ0V4cE9iamVjdEltcFRh
YmxlKToKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpzdHJpbmdUYWJsZSk6CisgICAgICAgICog
a2pzL0V4ZWNTdGF0ZUlubGluZXMuaDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpFeGVjU3Rh
dGUpOgorICAgICAgICBFYWNoIEV4ZWNTdGF0ZSBob2xkcyBpdHMgb3duIHJlZmVyZW5jZSB0byBw
ZXItdGhyZWFkIGRhdGEsIGZvciBldmVuIGZhc3RlciBhY2Nlc3MuIE1vdmVkCisgICAgICAgIG1f
ZW1wdHlMaXN0IGFuZCBtX3Byb3BlcnR5TmFtZXMgdG8gdGhlIHNhbWUgc3RydWN0dXJlLCBtYWtp
bmcgRXhlY1N0YXRlIGZhc3RlciB0byBjb25zdHJ1Y3QKKyAgICAgICAgYW5kIHRha2UgbGVzcyBz
cGFjZSBvbiB0aGUgc3RhY2suCisKKyAgICAgICAgKiBranMvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHA6IChLSlM6OmluaXRpYWxpemVUaHJlYWRpbmcpOiBJbml0aWFsaXplIHRocmVhZC1zdGF0aWMg
ZGF0YQorICAgICAgICBhZGRlZCB0byBKU0dsb2JhbE9iamVjdC4KKworICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAqIEFQ
SS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAqIEFQ
SS9KU0NhbGxiYWNrT2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisgICAgICAgICoga2pzL0pTVmFyaWFibGVPYmplY3QuY3BwOgorICAg
ICAgICAoS0pTOjpKU1ZhcmlhYmxlT2JqZWN0OjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMpOgorICAg
ICAgICAqIGtqcy9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICoga2pzL2FycmF5X2luc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKiBranMvYXJyYXlfb2JqZWN0LmNw
cDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6QXJyYXlQcm90b3R5cGU6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICoga2pzL2Jvb2xfb2JqZWN0LmNwcDoKKyAgICAgICAg
KEtKUzo6KToKKyAgICAgICAgKiBranMvY3JlYXRlX2hhc2hfdGFibGU6CisgICAgICAgICoga2pz
L2RhdGVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6RGF0ZVBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEtKUzo6RGF0ZU9iamVjdElt
cDo6RGF0ZU9iamVjdEltcCk6CisgICAgICAgICoga2pzL2Vycm9yX29iamVjdC5jcHA6CisgICAg
ICAgIChLSlM6Oik6CisgICAgICAgICoga2pzL2Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEtKUzo6
KToKKyAgICAgICAgKiBranMvZnVuY3Rpb25fb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6RnVu
Y3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBranMvaW50ZXJu
YWwuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAqIGtqcy9sb29rdXAuaDoKKyAgICAg
ICAgKiBranMvbWF0aF9vYmplY3QuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAoS0pT
OjpNYXRoT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9udW1i
ZXJfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6TnVtYmVyT2Jq
ZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9vYmplY3Rfb2JqZWN0
LmNwcDoKKyAgICAgICAgKEtKUzo6T2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUpOgor
ICAgICAgICAqIGtqcy9yZWdleHBfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAg
ICAgKEtKUzo6UmVnRXhwUHJvdG90eXBlOjpSZWdFeHBQcm90b3R5cGUpOgorICAgICAgICAoS0pT
OjpSZWdFeHBJbXA6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OlJlZ0V4cElt
cDo6cHV0KToKKyAgICAgICAgKEtKUzo6UmVnRXhwT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoS0pTOjpSZWdFeHBPYmplY3RJbXA6OnB1dCk6CisgICAgICAgICoga2pz
L3N0cmluZ19vYmplY3QuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAoS0pTOjpTdHJp
bmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIEFkanVzdCBmb3IgdGhl
IGFib3ZlIGNoYW5nZXMuCisKIDIwMDgtMDQtMjcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgX19a
TjNLSlMxNEpTR2xvYmFsT2JqZWN0MTdwdXRXaXRoQXR0cmlidQogX19aTjNLSlMxNEpTR2xvYmFs
T2JqZWN0MTdzdGFydFRpbWVvdXRDaGVja0V2CiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3QxOGdl
dE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQ
cm9wZXJ0eVNsb3RFCiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRVBOU183SlNWYWx1ZUUKLV9fWk4zS0pTMTRKU0dsb2JhbE9iamVj
dDRpbml0RXYKK19fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCiBf
X1pOM0tKUzE0SlNHbG9iYWxPYmplY3Q0bWFya0V2CiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3Q1
cmVzZXRFUE5TXzdKU1ZhbHVlRQogX19aTjNLSlMxNEpTR2xvYmFsT2JqZWN0RDJFdgpAQCAtMTIw
LDYgKzEyMCw3IEBAIF9fWk4zS0pTMTRTdHJpbmdJbnN0YW5jZTRpbmZvRQogX19aTjNLSlMxNFN0
cmluZ0luc3RhbmNlQzFFUE5TXzhKU09iamVjdEVSS05TXzdVU3RyaW5nRQogX19aTjNLSlMxNFN0
cmluZ0luc3RhbmNlQzJFUE5TXzhKU09iamVjdEVSS05TXzdVU3RyaW5nRQogX19aTjNLSlMxNUds
b2JhbEV4ZWNTdGF0ZUMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU184SlNPYmplY3RFCitfX1pO
M0tKUzE1R2xvYmFsRXhlY1N0YXRlRDFFdgogX19aTjNLSlMxNUpTV3JhcHBlck9iamVjdDRtYXJr
RXYKIF9fWk4zS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MTZnZXRQ
cm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RQpAQCAt
MjM3LDcgKzIzOCw3IEBAIF9fWk5LM0tKUzEzQXJyYXlJbnN0YW5jZTdnZXRJdGVtRWoKIF9fWk5L
M0tKUzE0SlNHbG9iYWxPYmplY3QxNGlzRHluYW1pY1Njb3BlRXYKIF9fWk5LM0tKUzE0SlNHbG9i
YWxPYmplY3QxNHRvR2xvYmFsT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTkszS0pTMTZKU1Zh
cmlhYmxlT2JqZWN0MTZpc1ZhcmlhYmxlT2JqZWN0RXYKLV9fWk5LM0tKUzE2SlNWYXJpYWJsZU9i
amVjdDIxZ2V0UHJvcGVydHlBdHRyaWJ1dGVzRVJLTlNfMTBJZGVudGlmaWVyRVJqCitfX1pOSzNL
SlMxNkpTVmFyaWFibGVPYmplY3QyMWdldFByb3BlcnR5QXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVSagogX19aTkszS0pTMTlJbnRlcm5hbEZ1bmN0aW9uSW1wMTRp
bXBsZW1lbnRzQ2FsbEV2CiBfX1pOSzNLSlMxOUludGVybmFsRnVuY3Rpb25JbXAyMWltcGxlbWVu
dHNIYXNJbnN0YW5jZUV2CiBfX1pOSzNLSlM0TGlzdDhnZXRTbGljZUVpUlMwXwpAQCAtMjY2LDcg
KzI2Nyw3IEBAIF9fWk5LM0tKUzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXgKIF9fWk5L
M0tKUzhKU09iamVjdDE0aW1wbGVtZW50c0NhbGxFdgogX19aTkszS0pTOEpTT2JqZWN0MTR0b0ds
b2JhbE9iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0tKUzhKU09iamVjdDE5aW1wbGVtZW50
c0NvbnN0cnVjdEV2Ci1fX1pOSzNLSlM4SlNPYmplY3QyMWdldFByb3BlcnR5QXR0cmlidXRlc0VS
S05TXzEwSWRlbnRpZmllckVSagorX19aTkszS0pTOEpTT2JqZWN0MjFnZXRQcm9wZXJ0eUF0dHJp
YnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUmoKIF9fWk5LM0tKUzhKU09i
amVjdDIxaW1wbGVtZW50c0hhc0luc3RhbmNlRXYKIF9fWk5LM0tKUzhKU09iamVjdDNnZXRFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOSzNLSlM4SlNPYmplY3QzZ2V0RVBO
U185RXhlY1N0YXRlRWoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAK
IG5hbWVzcGFjZSBLSlMgewogCi1jb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja0NvbnN0cnVjdG9y
OjppbmZvID0geyAiQ2FsbGJhY2tDb25zdHJ1Y3RvciIsIDAsIDB9OworY29uc3QgQ2xhc3NJbmZv
IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIkNhbGxiYWNrQ29uc3RydWN0b3IiLCAw
LCAwLCAwIH07CiAKIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxsYmFja0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0
cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgOiBKU09iamVjdChleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKQpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrRnVu
Y3Rpb246OmluZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb25JbXA6
OmluZm8sIDB9OworY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tGdW5jdGlvbjo6aW5mbyA9IHsg
IkNhbGxiYWNrRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywgMCwgMCB9Owog
CiBKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSkKICAgICA6IEludGVybmFsRnVuY3Rpb25JbXAoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5mdW5jdGlvblByb3RvdHlwZSgpLCBuYW1lKQpJbmRleDogSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDgg
QEAKIG5hbWVzcGFjZSBLSlMgewogCiAvLyBEZWZpbmUgdGhlIHR3byB0eXBlcyBvZiBKU0NhbGxi
YWNrT2JqZWN0cyB3ZSBzdXBwb3J0LgotdGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNPYmplY3Q+OjppbmZvID0geyAiQ2FsbGJhY2tPYmplY3QiLCAwLCAwIH07
Ci10ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9i
amVjdD46OmluZm8gPSB7ICJDYWxsYmFja0dsb2JhbE9iamVjdCIsIDAsIDAgfTsKK3RlbXBsYXRl
IDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0Pjo6aW5mbyA9IHsg
IkNhbGxiYWNrT2JqZWN0IiwgMCwgMCwgMCB9OwordGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZv
IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjppbmZvID0geyAiQ2FsbGJhY2tHbG9i
YWxPYmplY3QiLCAwLCAwLCAwIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0PikgPD0gQ0VMTF9TSVpFLCBnbG9iYWxfY2FsbGJhY2tfb2Jq
ZWN0X2ZpdHNfaW5fY2VsbCk7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuY3BwCShyZXZp
c2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywyMSArMzMsMTQgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKLXN0YXRpYyBp
bmxpbmUgTGlzdCogZ2xvYmFsRW1wdHlMaXN0KCkKLXsKLSAgICBzdGF0aWMgTGlzdCBzdGF0aWNF
bXB0eUxpc3Q7Ci0gICAgcmV0dXJuICZzdGF0aWNFbXB0eUxpc3Q7Ci19Ci0KIC8vIEVDTUEgMTAu
MgogCiAvLyBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBnbG9iYWxFeGVjIHBzZXVkby1FeGVjU3Rh
dGUKIGlubGluZSBFeGVjU3RhdGU6OkV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogdGhpc09iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkKICAgICAsIG1fZXhjZXB0aW9uKDApCi0gICAgLCBtX3Byb3BlcnR5TmFtZXMoQ29tbW9u
SWRlbnRpZmllcnM6OnNoYXJlZCgpKQotICAgICwgbV9lbXB0eUxpc3QoZ2xvYmFsRW1wdHlMaXN0
KCkpCiAgICAgLCBtX2NhbGxpbmdFeGVjKDApCisgICAgLCBtX3BlclRocmVhZERhdGEoZ2xvYmFs
T2JqZWN0LT5wZXJUaHJlYWREYXRhKCkpCiAgICAgLCBtX3Njb3BlTm9kZSgwKQogICAgICwgbV9m
dW5jdGlvbigwKQogICAgICwgbV9hcmd1bWVudHMoMCkKQEAgLTY3LDkgKzYwLDggQEAgaW5saW5l
IEV4ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2JqZQogaW5saW5lIEV4ZWNTdGF0ZTo6RXhl
Y1N0YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QpCiAgICAgLCBtX2V4Y2VwdGlvbigwKQotICAgICwgbV9wcm9wZXJ0eU5hbWVzKENvbW1v
bklkZW50aWZpZXJzOjpzaGFyZWQoKSkKLSAgICAsIG1fZW1wdHlMaXN0KGdsb2JhbEVtcHR5TGlz
dCgpKQogICAgICwgbV9jYWxsaW5nRXhlYygwKQorICAgICwgbV9wZXJUaHJlYWREYXRhKGdsb2Jh
bE9iamVjdC0+cGVyVGhyZWFkRGF0YSgpKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUp
CiAgICAgLCBtX2Z1bmN0aW9uKDApCiAgICAgLCBtX2FyZ3VtZW50cygwKQpAQCAtOTAsOSArODIs
OCBAQCBpbmxpbmUgRXhlY1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplCiBpbmxpbmUgRXhl
Y1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IHRoaXNPYmplY3QsIEV2YWxOb2RlKiBldmFsTm9kZSwgRXhlY1N0YXRlKiBjYWxsaW5nRXhlYywg
Y29uc3QgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbiwgSlNWYXJpYWJsZU9iamVjdCogdmFyaWFibGVP
YmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX2V4Y2Vw
dGlvbigwKQotICAgICwgbV9wcm9wZXJ0eU5hbWVzKGNhbGxpbmdFeGVjLT5tX3Byb3BlcnR5TmFt
ZXMpCi0gICAgLCBtX2VtcHR5TGlzdChjYWxsaW5nRXhlYy0+bV9lbXB0eUxpc3QpCiAgICAgLCBt
X2NhbGxpbmdFeGVjKGNhbGxpbmdFeGVjKQorICAgICwgbV9wZXJUaHJlYWREYXRhKGNhbGxpbmdF
eGVjLT5tX3BlclRocmVhZERhdGEpCiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKICAgICAs
IG1fZnVuY3Rpb24oMCkKICAgICAsIG1fYXJndW1lbnRzKDApCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNT
dGF0ZS5oCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAg
Y2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZTsKICAgICBjbGFzcyBGdW5jdGlvbkltcDsKICAgICBjbGFz
cyBHbG9iYWxGdW5jSW1wOworICAgIHN0cnVjdCBIYXNoVGFibGU7CiAgICAgY2xhc3MgSW50ZXJw
cmV0ZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNWYXJpYWJsZU9i
amVjdDsKQEAgLTQ2LDYgKzQ3LDE5IEBAIG5hbWVzcGFjZSBLSlMgIHsKICAgICAKICAgICBlbnVt
IENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9OwogCisgICAg
c3RydWN0IFBlclRocmVhZERhdGEgeworICAgICAgICBjb25zdCBIYXNoVGFibGUqIGFycmF5VGFi
bGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogZGF0ZVRhYmxlOworICAgICAgICBjb25zdCBI
YXNoVGFibGUqIG1hdGhUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJUYWJs
ZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBSZWdFeHBJbXBUYWJsZTsKKyAgICAgICAgY29u
c3QgSGFzaFRhYmxlKiBSZWdFeHBPYmplY3RJbXBUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRh
YmxlKiBzdHJpbmdUYWJsZTsKKworICAgICAgICBDb21tb25JZGVudGlmaWVycyogcHJvcGVydHlO
YW1lczsKKyAgICAgICAgY29uc3QgTGlzdCBlbXB0eUxpc3Q7CisgICAgfTsKKwogICAgIC8vIFJl
cHJlc2VudHMgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2NyaXB0IGV4ZWN1dGlvbi4KICAgICAvLyBQ
YXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgogICAgIGNsYXNz
IEV4ZWNTdGF0ZSA6IE5vbmNvcHlhYmxlIHsKQEAgLTk2LDggKzExMCwxNSBAQCBuYW1lc3BhY2Ug
S0pTICB7CiAKICAgICAgICAgLy8gVGhlc2UgcG9pbnRlcnMgYXJlIHVzZWQgdG8gYXZvaWQgYWNj
ZXNzaW5nIGdsb2JhbCB2YXJpYWJsZXMgZm9yIHRoZXNlLAogICAgICAgICAvLyB0byBhdm9pZCB0
YWtpbmcgUElDIGJyYW5jaGVzIGluIE1hY2gtTyBiaW5hcmllcy4KLSAgICAgICAgY29uc3QgQ29t
bW9uSWRlbnRpZmllcnMmIHByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiAqbV9wcm9wZXJ0
eU5hbWVzOyB9Ci0gICAgICAgIGNvbnN0IExpc3QmIGVtcHR5TGlzdCgpIGNvbnN0IHsgcmV0dXJu
ICptX2VtcHR5TGlzdDsgfQorICAgICAgICBjb25zdCBDb21tb25JZGVudGlmaWVycyYgcHJvcGVy
dHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuICptX3BlclRocmVhZERhdGEtPnByb3BlcnR5TmFtZXM7
IH0KKyAgICAgICAgY29uc3QgTGlzdCYgZW1wdHlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9wZXJU
aHJlYWREYXRhLT5lbXB0eUxpc3Q7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSog
YXJyYXlUYWJsZShFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIGV4ZWMtPm1fcGVyVGhyZWFkRGF0
YS0+YXJyYXlUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBkYXRlVGFi
bGUoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBleGVjLT5tX3BlclRocmVhZERhdGEtPmRhdGVU
YWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBtYXRoVGFibGUoRXhlY1N0
YXRlKiBleGVjKSB7IHJldHVybiBleGVjLT5tX3BlclRocmVhZERhdGEtPm1hdGhUYWJsZTsgfQor
ICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJUYWJsZShFeGVjU3RhdGUqIGV4
ZWMpIHsgcmV0dXJuIGV4ZWMtPm1fcGVyVGhyZWFkRGF0YS0+bnVtYmVyVGFibGU7IH0KKyAgICAg
ICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogUmVnRXhwSW1wVGFibGUoRXhlY1N0YXRlKiBleGVj
KSB7IHJldHVybiBleGVjLT5tX3BlclRocmVhZERhdGEtPlJlZ0V4cEltcFRhYmxlOyB9CisgICAg
ICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIFJlZ0V4cE9iamVjdEltcFRhYmxlKEV4ZWNTdGF0
ZSogZXhlYykgeyByZXR1cm4gZXhlYy0+bV9wZXJUaHJlYWREYXRhLT5SZWdFeHBPYmplY3RJbXBU
YWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdUYWJsZShFeGVj
U3RhdGUqIGV4ZWMpIHsgcmV0dXJuIGV4ZWMtPm1fcGVyVGhyZWFkRGF0YS0+c3RyaW5nVGFibGU7
IH0KIAogICAgICAgICBMb2NhbFN0b3JhZ2UmIGxvY2FsU3RvcmFnZSgpIHsgcmV0dXJuICptX2xv
Y2FsU3RvcmFnZTsgfQogICAgICAgICB2b2lkIHNldExvY2FsU3RvcmFnZShMb2NhbFN0b3JhZ2Uq
IHMpIHsgbV9sb2NhbFN0b3JhZ2UgPSBzOyB9CkBAIC0xNjgsNyArMTg5LDcgQEAgbmFtZXNwYWNl
IEtKUyAgewogICAgICAgICBFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhp
c09iamVjdCk7CiAgICAgICAgIEV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBQcm9ncmFtTm9kZSopOwogICAgICAgICBFeGVjU3RhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCogdGhpc09iamVjdCwgRXZhbE5vZGUqLCBFeGVjU3RhdGUqIGNhbGxpbmdF
eGVjU3RhdGUsIGNvbnN0IFNjb3BlQ2hhaW4mLCBKU1ZhcmlhYmxlT2JqZWN0Kik7Ci0gICAgICAg
IEV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU09iamVj
dCogZ2xvYmFsVGhpc1ZhbHVlLCBGdW5jdGlvbkJvZHlOb2RlKiwgRXhlY1N0YXRlKiBjYWxsaW5n
RXhlY1N0YXRlLCBGdW5jdGlvbkltcCosIGNvbnN0IExpc3QmIGFyZ3MpOworICAgICAgICBFeGVj
U3RhdGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNPYmplY3QqIGds
b2JhbFRoaXNWYWx1ZSwgRnVuY3Rpb25Cb2R5Tm9kZSosIEV4ZWNTdGF0ZSogY2FsbGluZ0V4ZWNT
dGF0ZSwgRnVuY3Rpb25JbXAqLCBjb25zdCBMaXN0JiBhcmdzKSBfX2F0dHJpYnV0ZV9fICgoX19h
bHdheXNfaW5saW5lX18pKTsKICAgICAgICAgfkV4ZWNTdGF0ZSgpOwogCiAgICAgICAgIC8vIEV4
ZWNTdGF0ZXMgYXJlIGFsd2F5cyBzdGFjay1hbGxvY2F0ZWQsIGFuZCB0aGUgZ2FyYmFnZSBjb2xs
ZWN0b3IKQEAgLTE3NiwxMSArMTk3LDExIEBAIG5hbWVzcGFjZSBLSlMgIHsKIAogICAgICAgICBK
U0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CiAgICAgICAgIEpTVmFsdWUqIG1fZXhjZXB0
aW9uOwotICAgICAgICBDb21tb25JZGVudGlmaWVycyogbV9wcm9wZXJ0eU5hbWVzOwotICAgICAg
ICBjb25zdCBMaXN0KiBtX2VtcHR5TGlzdDsKIAogICAgICAgICBFeGVjU3RhdGUqIG1fY2FsbGlu
Z0V4ZWM7CiAKKyAgICAgICAgY29uc3QgUGVyVGhyZWFkRGF0YSogbV9wZXJUaHJlYWREYXRhOwor
CiAgICAgICAgIFNjb3BlTm9kZSogbV9zY29wZU5vZGU7CiAgICAgICAgIAogICAgICAgICBGdW5j
dGlvbkltcCogbV9mdW5jdGlvbjsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZUlubGlu
ZXMuaAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw4IEBAIG5hbWVzcGFjZSBLSlMgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25JbXAqIGZ1bmMsIGNvbnN0
IExpc3QmIGFyZ3MpCiAgICAgICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAg
ICAgICAsIG1fZXhjZXB0aW9uKDApCi0gICAgICAgICwgbV9wcm9wZXJ0eU5hbWVzKGNhbGxpbmdF
eGVjLT5tX3Byb3BlcnR5TmFtZXMpCi0gICAgICAgICwgbV9lbXB0eUxpc3QoY2FsbGluZ0V4ZWMt
Pm1fZW1wdHlMaXN0KQogICAgICAgICAsIG1fY2FsbGluZ0V4ZWMoY2FsbGluZ0V4ZWMpCisgICAg
ICAgICwgbV9wZXJUaHJlYWREYXRhKGNhbGxpbmdFeGVjLT5tX3BlclRocmVhZERhdGEpCiAgICAg
ICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Cb2R5Tm9kZSkKICAgICAgICAgLCBtX2Z1bmN0aW9u
KGZ1bmMpCiAgICAgICAgICwgbV9hcmd1bWVudHMoJmFyZ3MpCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRhdGVNYXRoLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgog
I2luY2x1ZGUgImlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgImxleGVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAidXN0cmluZy5o
IgpAQCAtNTQsNiArNTUsNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgICAgICBD
b21tb25JZGVudGlmaWVyczo6c2hhcmVkKCk7CiAgICAgICAgIGxleGVyKCk7CiAgICAgICAgIGlu
aXREYXRlTWF0aCgpOworICAgICAgICBKU0dsb2JhbE9iamVjdDo6dGhyZWFkQ2xhc3NJbmZvSGFz
aFRhYmxlcygpOwogICAgIH0KICNlbmRpZgogfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pT
R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9i
YWxPYmplY3QuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDExIEBACiAjaW5jbHVk
ZSAic2NvcGVfY2hhaW5fbWFyay5oIgogI2luY2x1ZGUgInN0cmluZ19vYmplY3QuaCIKIAorI2lm
IFVTRShNVUxUSVBMRV9USFJFQURTKQorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgor
dXNpbmcgbmFtZXNwYWNlIFdURjsKKyNlbmRpZgorCiAjaWYgSEFWRShTWVNfVElNRV9IKQogI2lu
Y2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKQEAgLTU4LDYgKzYzLDE0IEBACiAKIG5hbWVzcGFj
ZSBLSlMgewogCitleHRlcm4gSGFzaFRhYmxlIGFycmF5VGFibGU7CitleHRlcm4gSGFzaFRhYmxl
IGRhdGVUYWJsZTsKK2V4dGVybiBIYXNoVGFibGUgbWF0aFRhYmxlOworZXh0ZXJuIEhhc2hUYWJs
ZSBudW1iZXJUYWJsZTsKK2V4dGVybiBIYXNoVGFibGUgUmVnRXhwSW1wVGFibGU7CitleHRlcm4g
SGFzaFRhYmxlIFJlZ0V4cE9iamVjdEltcFRhYmxlOworZXh0ZXJuIEhhc2hUYWJsZSBzdHJpbmdU
YWJsZTsKKwogLy8gRGVmYXVsdCBudW1iZXIgb2YgdGlja3MgYmVmb3JlIGEgdGltZW91dCBjaGVj
ayBzaG91bGQgYmUgZG9uZS4KIHN0YXRpYyBjb25zdCBpbnQgaW5pdGlhbFRpY2tDb3VudFRocmVz
aG9sZCA9IDI1NTsKIApAQCAtMTE4LDcgKzEzMSw2MiBAQCBKU0dsb2JhbE9iamVjdDo6fkpTR2xv
YmFsT2JqZWN0KCkKICAgICBkZWxldGUgZCgpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KCkKK3N0cnVjdCBUaHJlYWRDbGFzc0luZm9IYXNoVGFibGVzIHsKKyAgICBUaHJlYWRDbGFz
c0luZm9IYXNoVGFibGVzKCkKKyAgICAgICAgOiBhcnJheVRhYmxlKEtKUzo6YXJyYXlUYWJsZSkK
KyAgICAgICAgLCBkYXRlVGFibGUoS0pTOjpkYXRlVGFibGUpCisgICAgICAgICwgbWF0aFRhYmxl
KEtKUzo6bWF0aFRhYmxlKQorICAgICAgICAsIG51bWJlclRhYmxlKEtKUzo6bnVtYmVyVGFibGUp
CisgICAgICAgICwgUmVnRXhwSW1wVGFibGUoS0pTOjpSZWdFeHBJbXBUYWJsZSkKKyAgICAgICAg
LCBSZWdFeHBPYmplY3RJbXBUYWJsZShLSlM6OlJlZ0V4cE9iamVjdEltcFRhYmxlKQorICAgICAg
ICAsIHN0cmluZ1RhYmxlKEtKUzo6c3RyaW5nVGFibGUpCisgICAgeworICAgIH0KKworICAgIH5U
aHJlYWRDbGFzc0luZm9IYXNoVGFibGVzKCkKKyAgICB7CisjaWYgVVNFKE1VTFRJUExFX1RIUkVB
RFMpCisgICAgICAgIGRlbGV0ZVtdIGFycmF5VGFibGUudGFibGU7CisgICAgICAgIGRlbGV0ZVtd
IGRhdGVUYWJsZS50YWJsZTsKKyAgICAgICAgZGVsZXRlW10gbWF0aFRhYmxlLnRhYmxlOworICAg
ICAgICBkZWxldGVbXSBudW1iZXJUYWJsZS50YWJsZTsKKyAgICAgICAgZGVsZXRlW10gUmVnRXhw
SW1wVGFibGUudGFibGU7CisgICAgICAgIGRlbGV0ZVtdIFJlZ0V4cE9iamVjdEltcFRhYmxlLnRh
YmxlOworICAgICAgICBkZWxldGVbXSBzdHJpbmdUYWJsZS50YWJsZTsKKyNlbmRpZgorICAgIH0K
KworI2lmIFVTRShNVUxUSVBMRV9USFJFQURTKQorICAgIEhhc2hUYWJsZSBhcnJheVRhYmxlOwor
ICAgIEhhc2hUYWJsZSBkYXRlVGFibGU7CisgICAgSGFzaFRhYmxlIG1hdGhUYWJsZTsKKyAgICBI
YXNoVGFibGUgbnVtYmVyVGFibGU7CisgICAgSGFzaFRhYmxlIFJlZ0V4cEltcFRhYmxlOworICAg
IEhhc2hUYWJsZSBSZWdFeHBPYmplY3RJbXBUYWJsZTsKKyAgICBIYXNoVGFibGUgc3RyaW5nVGFi
bGU7CisjZWxzZQorICAgIEhhc2hUYWJsZSYgYXJyYXlUYWJsZTsKKyAgICBIYXNoVGFibGUmIGRh
dGVUYWJsZTsKKyAgICBIYXNoVGFibGUmIG1hdGhUYWJsZTsKKyAgICBIYXNoVGFibGUmIG51bWJl
clRhYmxlOworICAgIEhhc2hUYWJsZSYgUmVnRXhwSW1wVGFibGU7CisgICAgSGFzaFRhYmxlJiBS
ZWdFeHBPYmplY3RJbXBUYWJsZTsKKyAgICBIYXNoVGFibGUmIHN0cmluZ1RhYmxlOworI2VuZGlm
Cit9OworCitUaHJlYWRDbGFzc0luZm9IYXNoVGFibGVzKiBKU0dsb2JhbE9iamVjdDo6dGhyZWFk
Q2xhc3NJbmZvSGFzaFRhYmxlcygpCit7CisjaWYgVVNFKE1VTFRJUExFX1RIUkVBRFMpCisgICAg
c3RhdGljIFRocmVhZFNwZWNpZmljPFRocmVhZENsYXNzSW5mb0hhc2hUYWJsZXM+IHNoYXJlZElu
c3RhbmNlOworICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKKyNlbHNlCisgICAgc3RhdGljIFRo
cmVhZENsYXNzSW5mb0hhc2hUYWJsZXMgc2hhcmVkSW5zdGFuY2U7CisgICAgcmV0dXJuICZzaGFy
ZWRJbnN0YW5jZTsKKyNlbmRpZgorfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2Jq
ZWN0KiB0aGlzVmFsdWUpCiB7CiAgICAgQVNTRVJUKEpTTG9jazo6Y3VycmVudFRocmVhZElzSG9s
ZGluZ0xvY2soKSk7CiAKQEAgLTE0Miw2ICsyMTAsMTcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdCgpCiAgICAgZCgpLT5hY3RpdmF0aW9ucyA9IG5ld1N0YWNrTm9kZTsKICAgICBkKCktPmFj
dGl2YXRpb25Db3VudCA9IDA7CiAKKyAgICBkKCktPnBlclRocmVhZERhdGEuYXJyYXlUYWJsZSA9
ICZ0aHJlYWRDbGFzc0luZm9IYXNoVGFibGVzKCktPmFycmF5VGFibGU7CisgICAgZCgpLT5wZXJU
aHJlYWREYXRhLmRhdGVUYWJsZSA9ICZ0aHJlYWRDbGFzc0luZm9IYXNoVGFibGVzKCktPmRhdGVU
YWJsZTsKKyAgICBkKCktPnBlclRocmVhZERhdGEubWF0aFRhYmxlID0gJnRocmVhZENsYXNzSW5m
b0hhc2hUYWJsZXMoKS0+bWF0aFRhYmxlOworICAgIGQoKS0+cGVyVGhyZWFkRGF0YS5udW1iZXJU
YWJsZSA9ICZ0aHJlYWRDbGFzc0luZm9IYXNoVGFibGVzKCktPm51bWJlclRhYmxlOworICAgIGQo
KS0+cGVyVGhyZWFkRGF0YS5SZWdFeHBJbXBUYWJsZSA9ICZ0aHJlYWRDbGFzc0luZm9IYXNoVGFi
bGVzKCktPlJlZ0V4cEltcFRhYmxlOworICAgIGQoKS0+cGVyVGhyZWFkRGF0YS5SZWdFeHBPYmpl
Y3RJbXBUYWJsZSA9ICZ0aHJlYWRDbGFzc0luZm9IYXNoVGFibGVzKCktPlJlZ0V4cE9iamVjdElt
cFRhYmxlOworICAgIGQoKS0+cGVyVGhyZWFkRGF0YS5zdHJpbmdUYWJsZSA9ICZ0aHJlYWRDbGFz
c0luZm9IYXNoVGFibGVzKCktPnN0cmluZ1RhYmxlOworICAgIGQoKS0+cGVyVGhyZWFkRGF0YS5w
cm9wZXJ0eU5hbWVzID0gQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpOworCisgICAgZCgpLT5n
bG9iYWxFeGVjLnNldChuZXcgR2xvYmFsRXhlY1N0YXRlKHRoaXMsIHRoaXNWYWx1ZSkpOworCiAg
ICAgZCgpLT5wYWdlR3JvdXBJZGVudGlmaWVyID0gMDsKIAogICAgIHJlc2V0KHByb3RvdHlwZSgp
KTsKQEAgLTIzMSw3ICszMTAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVl
KiBwcm90CiAKICAgICBkKCktPmV2YWxGdW5jdGlvbiA9IDA7CiAKLSAgICBFeGVjU3RhdGUqIGV4
ZWMgPSAmZCgpLT5nbG9iYWxFeGVjOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGQoKS0+Z2xvYmFs
RXhlYy5nZXQoKTsKIAogICAgIC8vIFByb3RvdHlwZXMKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90
eXBlID0gbmV3IEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMpOwpAQCAtNDE4LDcgKzQ5Nyw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6Om1hcmsoKQogICAgIGZvciAoRXhlY1N0YXRlU3RhY2s6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gZCgpLT5hY3RpdmVFeGVjU3RhdGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKICAgICAgICAgKCppdCktPm1fc2NvcGVDaGFpbi5tYXJrKCk7CiAKLSAgICBtYXJrSWZO
ZWVkZWQoZCgpLT5nbG9iYWxFeGVjLmV4Y2VwdGlvbigpKTsKKyAgICBtYXJrSWZOZWVkZWQoZCgp
LT5nbG9iYWxFeGVjLT5leGNlcHRpb24oKSk7CiAKICAgICBtYXJrSWZOZWVkZWQoZCgpLT5vYmpl
Y3RDb25zdHJ1Y3Rvcik7CiAgICAgbWFya0lmTmVlZGVkKGQoKS0+ZnVuY3Rpb25Db25zdHJ1Y3Rv
cik7CkBAIC00NjIsNyArNTQxLDcgQEAgSlNHbG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0Ojp0
b0dsb2JhbAogCiBFeGVjU3RhdGUqIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCkKIHsKLSAg
ICByZXR1cm4gJmQoKS0+Z2xvYmFsRXhlYzsKKyAgICByZXR1cm4gZCgpLT5nbG9iYWxFeGVjLmdl
dCgpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0ZWFyT2ZmQWN0aXZhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIGJvb2wgbGVhdmVSZWxpYykKQEAgLTQ5Miw0ICs1NzEsNSBAQCBib29sIEpTR2xv
YmFsT2JqZWN0Ojppc0R5bmFtaWNTY29wZSgpIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKwog
fSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuaAko
cmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBjbGFz
cyBFdmFsRXJyb3JQcm90b3R5cGU7CiAgICAgY2xhc3MgRnVuY3Rpb25PYmplY3RJbXA7CiAgICAg
Y2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CisgICAgc3RydWN0IEhhc2hUYWJsZTsKICAgICBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBOYXRpdmVFcnJvckltcDsKICAgICBjbGFzcyBO
YXRpdmVFcnJvclByb3RvdHlwZTsKQEAgLTYyLDYgKzYzLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgY2xhc3MgU3RyaW5nT2JqZWN0SW1wOwogICAgIGNsYXNzIFN0cmluZ1Byb3RvdHlwZTsKICAg
ICBjbGFzcyBTeW50YXhFcnJvclByb3RvdHlwZTsKKyAgICBzdHJ1Y3QgVGhyZWFkQ2xhc3NJbmZv
SGFzaFRhYmxlczsKICAgICBjbGFzcyBUeXBlRXJyb3I7CiAgICAgY2xhc3MgVHlwZUVycm9yUHJv
dG90eXBlOwogICAgIGNsYXNzIFVyaUVycm9yOwpAQCAtNzUsOSArNzcsOCBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICAgICAgdXNpbmcgSlNWYXJpYWJsZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdERh
dGE7CiAKICAgICAgICAgc3RydWN0IEpTR2xvYmFsT2JqZWN0RGF0YSA6IHB1YmxpYyBKU1Zhcmlh
YmxlT2JqZWN0RGF0YSB7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdERhdGEoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKKyAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0RGF0YSgpCiAgICAgICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0RGF0
YSgmaW5saW5lU3ltYm9sVGFibGUpCi0gICAgICAgICAgICAgICAgLCBnbG9iYWxFeGVjKGdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQogCkBAIC04
Niw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgICAgICAgICBEZWJ1Z2dlciogZGVi
dWdnZXI7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEdsb2JhbEV4ZWNTdGF0ZSBnbG9iYWxF
eGVjOworICAgICAgICAgICAgT3duUHRyPEdsb2JhbEV4ZWNTdGF0ZT4gZ2xvYmFsRXhlYzsKICAg
ICAgICAgICAgIGludCByZWN1cnNpb247CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHRpbWVvdXRU
aW1lOwpAQCAtMTQwLDIwICsxNDEsMjIgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBwYWdlR3JvdXBJZGVudGlmaWVyOwogCiAgICAgICAgICAgICBPd25QdHI8SGFzaFNl
dDxKU09iamVjdCo+ID4gYXJyYXlWaXNpdGVkRWxlbWVudHM7IC8vIEdsb2JhbCBkYXRhIHNoYXJl
ZCBieSBhcnJheSBwcm90b3R5cGUgZnVuY3Rpb25zLgorCisgICAgICAgICAgICBQZXJUaHJlYWRE
YXRhIHBlclRocmVhZERhdGE7CiAgICAgICAgIH07CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KCkKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChuZXcgSlNHbG9i
YWxPYmplY3REYXRhKHRoaXMsIHRoaXMpKQorICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0
KG5ldyBKU0dsb2JhbE9iamVjdERhdGEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGluaXQoKTsK
KyAgICAgICAgICAgIGluaXQodGhpcyk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QoSlNWYWx1ZSogcHJvdG8sIEpTT2JqZWN0KiBnbG9iYWxUaGlz
VmFsdWUpCi0gICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QocHJvdG8sIG5ldyBKU0dsb2Jh
bE9iamVjdERhdGEodGhpcywgZ2xvYmFsVGhpc1ZhbHVlKSkKKyAgICAgICAgICAgIDogSlNWYXJp
YWJsZU9iamVjdChwcm90bywgbmV3IEpTR2xvYmFsT2JqZWN0RGF0YSkKICAgICAgICAgewotICAg
ICAgICAgICAgaW5pdCgpOworICAgICAgICAgICAgaW5pdChnbG9iYWxUaGlzVmFsdWUpOwogICAg
ICAgICB9CiAKICAgICBwdWJsaWM6CkBAIC0yNDYsOCArMjQ5LDE0IEBAIG5hbWVzcGFjZSBLSlMg
ewogCiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiYgYXJyYXlWaXNpdGVkRWxlbWVudHMoKSB7
IGlmICghZCgpLT5hcnJheVZpc2l0ZWRFbGVtZW50cykgZCgpLT5hcnJheVZpc2l0ZWRFbGVtZW50
cy5zZXQobmV3IEhhc2hTZXQ8SlNPYmplY3QqPik7IHJldHVybiAqZCgpLT5hcnJheVZpc2l0ZWRF
bGVtZW50czsgfQogCisgICAgICAgIC8vIFBlci10aHJlYWQgaGFzaCB0YWJsZXMsIGNhY2hlZCBv
biB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgZmFzdGVyIGFjY2Vzcy4KKyAgICAgICAgY29uc3QgUGVy
VGhyZWFkRGF0YSogcGVyVGhyZWFkRGF0YSgpIGNvbnN0IHsgcmV0dXJuICZkKCktPnBlclRocmVh
ZERhdGE7IH0KKworICAgICAgICAvLyBJbml0aWFsaXplIGFuZC9vciByZXRyaWV2ZSBwZXItdGhy
ZWFkIGhhc2ggdGFibGVzIC0gdXNlIHBlclRocmVhZERhdGEoKSBmb3IgZmFzdGVyIGFjY2VzcyBp
bnN0ZWFkLgorICAgICAgICBzdGF0aWMgVGhyZWFkQ2xhc3NJbmZvSGFzaFRhYmxlcyogdGhyZWFk
Q2xhc3NJbmZvSGFzaFRhYmxlcygpOworCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBpbml0
KCk7CisgICAgICAgIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgCiAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0RGF0YSogZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEpTR2xvYmFsT2JqZWN0RGF0YSo+KEpTVmFyaWFibGVPYmplY3Q6OmQpOyB9CiAKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9KU1ZhcmlhYmxlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvSlNWYXJpYWJsZU9iamVjdC5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysg
SmF2YVNjcmlwdENvcmUva2pzL0pTVmFyaWFibGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MywxNCArNTMsMTQgQEAgdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVz
KAogICAgIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMpOwog
fQogCi1ib29sIEpTVmFyaWFibGVPYmplY3Q6OmdldFByb3BlcnR5QXR0cmlidXRlcyhjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdAorYm9v
bCBKU1ZhcmlhYmxlT2JqZWN0OjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBj
b25zdAogewogICAgIHNpemVfdCBpbmRleCA9IHN5bWJvbFRhYmxlKCkuZ2V0KHByb3BlcnR5TmFt
ZS51c3RyaW5nKCkucmVwKCkpOwogICAgIGlmIChpbmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2Vy
KCkpIHsKICAgICAgICAgYXR0cmlidXRlcyA9IGxvY2FsU3RvcmFnZSgpW2luZGV4XS5hdHRyaWJ1
dGVzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0Ojpn
ZXRQcm9wZXJ0eUF0dHJpYnV0ZXMocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1
cm4gSlNPYmplY3Q6OmdldFByb3BlcnR5QXR0cmlidXRlcyhleGVjLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpOwogfQogCiB2b2lkIEpTVmFyaWFibGVPYmplY3Q6Om1hcmsoKQpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcg
KzUwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxl
T2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZSgpIGNv
bnN0ID0gMDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJvcGVydHlBdHRyaWJ1dGVzKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJvcGVydHlBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNv
bnN0OwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBTdWJjbGFzc2VzIG9mIEpTVmFyaWFi
bGVPYmplY3QgY2FuIHN1YmNsYXNzIHRoaXMgc3RydWN0IHRvIGFkZCBkYXRhCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvYXJyYXlfaW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9hcnJheV9pbnN0YW5jZS5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNj
cmlwdENvcmUva2pzL2FycmF5X2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluRGVuc2l0eU11bHRpcGxpCiAKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjb3B5aW5nU29ydEN1dG9mZiA9IDUwMDAwOwogCi1jb25zdCBDbGFz
c0luZm8gQXJyYXlJbnN0YW5jZTo6aW5mbyA9IHsiQXJyYXkiLCAwLCAwfTsKK2NvbnN0IENsYXNz
SW5mbyBBcnJheUluc3RhbmNlOjppbmZvID0geyJBcnJheSIsIDAsIDAsIDB9OwogCiBzdGF0aWMg
aW5saW5lIHNpemVfdCBzdG9yYWdlU2l6ZSh1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEFycmF5UHJvdG90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3Qg
Q2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjppbmZvID0geyJBcnJheSIsICZBcnJheUluc3RhbmNl
OjppbmZvLCAmYXJyYXlUYWJsZX07Citjb25zdCBDbGFzc0luZm8gQXJyYXlQcm90b3R5cGU6Omlu
Zm8gPSB7IkFycmF5IiwgJkFycmF5SW5zdGFuY2U6OmluZm8sIDAsIEV4ZWNTdGF0ZTo6YXJyYXlU
YWJsZX07CiAKIC8qIFNvdXJjZSBmb3IgYXJyYXlfb2JqZWN0Lmx1dC5oCiBAYmVnaW4gYXJyYXlU
YWJsZSAxNgpAQCAtNzIsNyArNzIsNyBAQCBBcnJheVByb3RvdHlwZTo6QXJyYXlQcm90b3R5cGUo
RXhlY1N0YXRlCiAKIGJvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QXJyYXlJbnN0YW5j
ZT4oZXhlYywgJmFycmF5VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0
dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxBcnJheUluc3RhbmNlPihleGVjLCBFeGVjU3RhdGU6
OmFycmF5VGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIApJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL2Jvb2xfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvYm9vbF9vYmplY3QuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9ib29sX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBCb29sZWFuSW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENs
YXNzSW5mbyBCb29sZWFuSW5zdGFuY2U6OmluZm8gPSB7ICJCb29sZWFuIiwgMCwgMCB9OworY29u
c3QgQ2xhc3NJbmZvIEJvb2xlYW5JbnN0YW5jZTo6aW5mbyA9IHsgIkJvb2xlYW4iLCAwLCAwLCAw
IH07CiAKIEJvb2xlYW5JbnN0YW5jZTo6Qm9vbGVhbkluc3RhbmNlKEpTT2JqZWN0KiBwcm90bykK
ICAgICA6IEpTV3JhcHBlck9iamVjdChwcm90bykKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9j
cmVhdGVfaGFzaF90YWJsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvY3JlYXRl
X2hhc2hfdGFibGUJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2NyZWF0
ZV9oYXNoX3RhYmxlCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgc3ViIG91dHB1
dCgpIHsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgMCwgMCB9XG4iOwogICAgIHByaW50
ICJ9O1xuXG4iOwotICAgIHByaW50ICJjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlICRuYW1lID0gIjsK
KyAgICBwcmludCAiZXh0ZXJuIGNvbnN0IHN0cnVjdCBIYXNoVGFibGUgJG5hbWUgPSAiOwogICAg
IHByaW50ICJceyAiLCAkc2l6ZSAtIDEsICIsICRuYW1lRW50cmllcywgMCBcfTtcblxuIjsKICAg
ICBwcmludCAifSAvLyBuYW1lc3BhY2VcbiI7CiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMv
ZGF0ZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9kYXRlX29i
amVjdC5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2RhdGVfb2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBib29sIGZp
bGxTdHJ1Y3R1cmVzVXNpbmdEYXRlQXJncygKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIERhdGVJbnN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29u
c3QgQ2xhc3NJbmZvIERhdGVJbnN0YW5jZTo6aW5mbyA9IHsiRGF0ZSIsIDAsIDB9OworY29uc3Qg
Q2xhc3NJbmZvIERhdGVJbnN0YW5jZTo6aW5mbyA9IHsiRGF0ZSIsIDAsIDAsIDB9OwogCiBEYXRl
SW5zdGFuY2U6OkRhdGVJbnN0YW5jZShKU09iamVjdCAqcHJvdG8pCiAgIDogSlNXcmFwcGVyT2Jq
ZWN0KHByb3RvKQpAQCAtNDE2LDcgKzQxNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1RpbWVf
dFNpZ25lZCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEYXRlUHJvdG90
eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBEYXRl
UHJvdG90eXBlOjppbmZvID0geyJEYXRlIiwgJkRhdGVJbnN0YW5jZTo6aW5mbywgJmRhdGVUYWJs
ZX07Citjb25zdCBDbGFzc0luZm8gRGF0ZVByb3RvdHlwZTo6aW5mbyA9IHsiRGF0ZSIsICZEYXRl
SW5zdGFuY2U6OmluZm8sIDAsIEV4ZWNTdGF0ZTo6ZGF0ZVRhYmxlfTsKIAogLyogU291cmNlIGZv
ciBkYXRlX29iamVjdC5sdXQuaAogICAgRklYTUVMIFdlIGNvdWxkIHVzZSB0ZW1wbGF0ZXMgdG8g
c2ltcGxpZnkgdGhlIFVUQyB2YXJpYW50cy4KQEAgLTQ3OCw3ICs0NzgsNyBAQCBEYXRlUHJvdG90
eXBlOjpEYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSAqCiAKIGJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uU2xvdDxKU09iamVjdD4oZXhlYywgJmRhdGVUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBF
eGVjU3RhdGU6OmRhdGVUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERhdGVPYmplY3RJbXAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ4OSw4ICs0ODksOCBAQCBEYXRlT2JqZWN0
SW1wOjpEYXRlT2JqZWN0SW1wKEV4ZWNTdGF0ZSogCiAgIDogSW50ZXJuYWxGdW5jdGlvbkltcChm
dW5jUHJvdG8sIGRhdGVQcm90by0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkKIHsKICAgcHV0RGly
ZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGRhdGVQcm90bywgRG9udEVudW18
RG9udERlbGV0ZXxSZWFkT25seSk7Ci0gIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBEYXRlT2JqZWN0
RnVuY0ltcChleGVjLCBmdW5jUHJvdG8sIERhdGVPYmplY3RGdW5jSW1wOjpQYXJzZSwgMSwgQ29t
bW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5wYXJzZSksIERvbnRFbnVtKTsKLSAgcHV0RGlyZWN0
RnVuY3Rpb24obmV3IERhdGVPYmplY3RGdW5jSW1wKGV4ZWMsIGZ1bmNQcm90bywgRGF0ZU9iamVj
dEZ1bmNJbXA6OlVUQywgNywgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5VVEMpLCBEb250
RW51bSk7CisgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBEYXRlT2JqZWN0RnVuY0ltcChleGVjLCBm
dW5jUHJvdG8sIERhdGVPYmplY3RGdW5jSW1wOjpQYXJzZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnBhcnNlKSwgRG9udEVudW0pOworICBwdXREaXJlY3RGdW5jdGlvbihuZXcgRGF0ZU9iamVj
dEZ1bmNJbXAoZXhlYywgZnVuY1Byb3RvLCBEYXRlT2JqZWN0RnVuY0ltcDo6VVRDLCA3LCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuVVRDKSwgRG9udEVudW0pOwogICBwdXREaXJlY3QoZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwgNywgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7CiB9
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9lcnJvcl9vYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL2tqcy9lcnJvcl9vYmplY3QuY3BwCShyZXZpc2lvbiAzMjYzNSkK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9lcnJvcl9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRXJyb3JJbnN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LWNvbnN0IENsYXNzSW5mbyBFcnJvckluc3RhbmNlOjppbmZvID0geyAiRXJyb3IiLCAwLCAwIH07
Citjb25zdCBDbGFzc0luZm8gRXJyb3JJbnN0YW5jZTo6aW5mbyA9IHsgIkVycm9yIiwgMCwgMCwg
MCB9OwogCiBFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTT2JqZWN0KiBwcm90b3R5cGUp
CiAgICAgOiBKU09iamVjdChwcm90b3R5cGUpCkBAIC0xMTQsNyArMTE0LDcgQEAgTmF0aXZlRXJy
b3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gTmF0aXZlRXJyb3JJbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1jb25zdCBDbGFzc0luZm8gTmF0aXZlRXJyb3JJbXA6OmluZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwIH07Citjb25zdCBDbGFzc0luZm8gTmF0aXZl
RXJyb3JJbXA6OmluZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZv
LCAwLCAwIH07CiAKIE5hdGl2ZUVycm9ySW1wOjpOYXRpdmVFcnJvckltcChFeGVjU3RhdGUqIGV4
ZWMsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG8sIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBw
cm90KQogICAgIDogSW50ZXJuYWxGdW5jdGlvbkltcChmdW5jUHJvdG8sIElkZW50aWZpZXIocHJv
dC0+Z2V0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS0+Z2V0U3RyaW5nKCkpKQpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9uSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJ
bmZvIEZ1bmN0aW9uSW1wOjppbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbklt
cDo6aW5mbywgMCB9OworY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uSW1wOjppbmZvID0geyAiRnVu
Y3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywgMCwgMCB9OwogCiBGdW5jdGlvbklt
cDo6RnVuY3Rpb25JbXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBG
dW5jdGlvbkJvZHlOb2RlKiBiLCBjb25zdCBTY29wZUNoYWluJiBzYykKICAgOiBJbnRlcm5hbEZ1
bmN0aW9uSW1wKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b3R5cGUo
KSwgbmFtZSkKQEAgLTI3OSw3ICsyNzksNyBAQCBJZGVudGlmaWVyJiBJbmRleFRvTmFtZU1hcDo6
b3BlcmF0b3JbXShjCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVu
dHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBB
cmd1bWVudHM6OmluZm8gPSB7ICJBcmd1bWVudHMiLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8g
QXJndW1lbnRzOjppbmZvID0geyAiQXJndW1lbnRzIiwgMCwgMCwgMCB9OwogCiAvLyBFQ01BIDEw
LjEuOAogQXJndW1lbnRzOjpBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkltcCog
ZnVuYywgY29uc3QgTGlzdCYgYXJncywgQWN0aXZhdGlvbkltcCogYWN0KQpAQCAtMzQyLDcgKzM0
Miw3IEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFjdGl2YXRpb25JbXAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIEFjdGl2YXRpb25JbXA6OmluZm8g
PSB7ICJBY3RpdmF0aW9uIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEFjdGl2YXRpb25JbXA6
OmluZm8gPSB7ICJBY3RpdmF0aW9uIiwgMCwgMCwgMCB9OwogCiBBY3RpdmF0aW9uSW1wOjpBY3Rp
dmF0aW9uSW1wKGNvbnN0IEFjdGl2YXRpb25EYXRhJiBvbGREYXRhLCBib29sIGxlYXZlUmVsaWMp
CiB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAkocmV2aXNpb24g
MzI2MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBAQCBGdW5jdGlvblByb3RvdHlwZTo6RnVuY3Rpb25Qcm90
b3R5cGUoRXhlCiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAKICAgICBwdXRE
aXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgdGhpcywgMCwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKSwgRG9u
dEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVj
LCB0aGlzLCAyLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPmFwcGx5LCBmdW5jdGlvblBy
b3RvRnVuY0FwcGx5KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90
b3R5cGVGdW5jdGlvbihleGVjLCB0aGlzLCAxLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCkt
PmNhbGwsIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RG
dW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgdGhpcywgMiwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmFwcGx5LCBmdW5jdGlvblByb3RvRnVuY0FwcGx5KSwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCB0aGlzLCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbCwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKSwgRG9udEVu
dW0pOwogfQogCiAvLyBFQ01BIDE1LjMuNApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVy
bmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuY3BwCShy
ZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIExhYmVsU3RhY2s6OmNvbnRhaW5zKGNv
bnN0IElkZW50aWZpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJbnRlcm5h
bEZ1bmN0aW9uSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5m
byBJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvID0geyAiRnVuY3Rpb24iLCAwLCAwIH07Citjb25z
dCBDbGFzc0luZm8gSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgMCwg
MCwgMCB9OwogCiBJbnRlcm5hbEZ1bmN0aW9uSW1wOjpJbnRlcm5hbEZ1bmN0aW9uSW1wKCkKIHsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL2xleGVyLmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvbGV4ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIExleGVyOjpM
ZXhlcigpCiAgICAgLCBuZXh0MSgwKQogICAgICwgbmV4dDIoMCkKICAgICAsIG5leHQzKDApCisg
ICAgLCBtYWluVGFibGUoS0pTOjptYWluVGFibGUpCiB7CiAgICAgbV9idWZmZXI4LnJlc2VydmVD
YXBhY2l0eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKICAgICBtX2J1ZmZlcjE2LnJlc2Vy
dmVDYXBhY2l0eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKQEAgLTk1LDYgKzk2LDExIEBA
IExleGVyOjpMZXhlcigpCiAgICAgbV9pZGVudGlmaWVycy5yZXNlcnZlQ2FwYWNpdHkoaW5pdGlh
bFN0cmluZ1RhYmxlQ2FwYWNpdHkpOwogfQogCitMZXhlcjo6fkxleGVyKCkKK3sKKyAgICBkZWxl
dGVbXSBtYWluVGFibGUudGFibGU7Cit9CisKIHZvaWQgTGV4ZXI6OnNldENvZGUoaW50IHN0YXJ0
aW5nTGluZU51bWJlciwgY29uc3QgVUNoYXIqIGMsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAgIHl5
bGluZW5vID0gMSArIHN0YXJ0aW5nTGluZU51bWJlcjsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9sZXhlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCShyZXZp
c2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw2ICsyNCw3IEBACiAjaWZuZGVmIExleGVyX2gKICNkZWZpbmUgTGV4ZXJfaAogCisj
aW5jbHVkZSAibG9va3VwLmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtOTQsNiArOTUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBmcmllbmQg
TGV4ZXImIGxleGVyKCk7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6VGhyZWFkU3BlY2lmaWM8TGV4
ZXI+OwogICAgIExleGVyKCk7CisgICAgfkxleGVyKCk7CiAKICAgICBpbnQgeXlsaW5lbm87CiAg
ICAgYm9vbCBkb25lOwpAQCAtMTQ1LDYgKzE0Nyw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIAog
ICAgIFVTdHJpbmcgbV9wYXR0ZXJuOwogICAgIFVTdHJpbmcgbV9mbGFnczsKKworICAgIGNvbnN0
IEhhc2hUYWJsZSBtYWluVGFibGU7CiAgIH07CiAgIAogICBMZXhlciYgbGV4ZXIoKTsgLy8gUmV0
dXJucyB0aGUgc2luZ2xldG9uZSBKYXZhU2NyaXB0IGxleGVyLgpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL2xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9sb29rdXAu
aAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB9OwogCiAj
ZGVmaW5lIEtKU19JTVBMRU1FTlRfUFJPVE9UWVBFKENsYXNzTmFtZSwgQ2xhc3NQcm90b3R5cGUp
IFwKLSAgICBjb25zdCBDbGFzc0luZm8gQ2xhc3NQcm90b3R5cGU6OmluZm8gPSB7IENsYXNzTmFt
ZSJQcm90b3R5cGUiLCAwLCAmQ2xhc3NQcm90b3R5cGUjI1RhYmxlICB9OyBcCisgICAgY29uc3Qg
Q2xhc3NJbmZvIENsYXNzUHJvdG90eXBlOjppbmZvID0geyBDbGFzc05hbWUiUHJvdG90eXBlIiwg
MCwgJkNsYXNzUHJvdG90eXBlIyNUYWJsZSwgMCAgfTsgXAogICAgIEpTT2JqZWN0KiBDbGFzc1By
b3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMpIFwKICAgICB7IFwKICAgICAgICAgcmV0dXJu
IEtKUzo6Y2FjaGVHbG9iYWxPYmplY3Q8Q2xhc3NQcm90b3R5cGU+KGV4ZWMsIElkZW50aWZpZXIo
IltbIiBDbGFzc05hbWUgIi5wcm90b3R5cGVdXSIpKTsgXApJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL21hdGhfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbWF0
aF9vYmplY3QuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9tYXRo
X29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEtK
UyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNYXRoT2JqZWN0SW1wIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBNYXRoT2Jq
ZWN0SW1wOjppbmZvID0geyAiTWF0aCIsIDAsICZtYXRoVGFibGUgfTsKK2NvbnN0IENsYXNzSW5m
byBNYXRoT2JqZWN0SW1wOjppbmZvID0geyAiTWF0aCIsIDAsIDAsIEV4ZWNTdGF0ZTo6bWF0aFRh
YmxlIH07CiAKIC8qIFNvdXJjZSBmb3IgbWF0aF9vYmplY3QubHV0LmgKIEBiZWdpbiBtYXRoVGFi
bGUgMjEKQEAgLTczLDcgKzczLDcgQEAgTWF0aE9iamVjdEltcDo6TWF0aE9iamVjdEltcChFeGVj
U3RhdGUqLAogCiBib29sIE1hdGhPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZz
bG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8TWF0aE9iamVjdEltcCwg
SlNPYmplY3Q+KGV4ZWMsICZtYXRoVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5U2xvdDxNYXRoT2JqZWN0SW1wLCBKU09iamVjdD4o
ZXhlYywgRXhlY1N0YXRlOjptYXRoVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKIEpTVmFsdWUqIE1hdGhPYmplY3RJbXA6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0
YXRlKiwgaW50IHRva2VuKSBjb25zdApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL251bWJlcl9v
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9udW1iZXJfb2JqZWN0
LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbnVtYmVyX29iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJJbnN0YW5jZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBOdW1iZXJJbnN0YW5jZTo6
aW5mbyA9IHsgIk51bWJlciIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBOdW1iZXJJbnN0YW5j
ZTo6aW5mbyA9IHsgIk51bWJlciIsIDAsIDAsIDAgfTsKIAogTnVtYmVySW5zdGFuY2U6Ok51bWJl
ckluc3RhbmNlKEpTT2JqZWN0KiBwcm90bykKICAgICA6IEpTV3JhcHBlck9iamVjdChwcm90bykK
QEAgLTQ1MCw3ICs0NTAsNyBAQCBKU1ZhbHVlKiBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihF
eGVjCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJPYmplY3RJbXAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBOdW1iZXJP
YmplY3RJbXA6OmluZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZv
LCAmbnVtYmVyVGFibGUgfTsKK2NvbnN0IENsYXNzSW5mbyBOdW1iZXJPYmplY3RJbXA6OmluZm8g
PSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwLCBFeGVjU3RhdGU6
Om51bWJlclRhYmxlIH07CiAKIC8qIFNvdXJjZSBmb3IgbnVtYmVyX29iamVjdC5sdXQuaAogQGJl
Z2luIG51bWJlclRhYmxlIDUKQEAgLTQ3Myw3ICs0NzMsNyBAQCBOdW1iZXJPYmplY3RJbXA6Ok51
bWJlck9iamVjdEltcChFeGVjU3RhCiAKIGJvb2wgTnVtYmVyT2JqZWN0SW1wOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PE51
bWJlck9iamVjdEltcCwgSW50ZXJuYWxGdW5jdGlvbkltcD4oZXhlYywgJm51bWJlclRhYmxlLCB0
aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8
TnVtYmVyT2JqZWN0SW1wLCBJbnRlcm5hbEZ1bmN0aW9uSW1wPihleGVjLCBFeGVjU3RhdGU6Om51
bWJlclRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBKU1ZhbHVl
KiBOdW1iZXJPYmplY3RJbXA6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiwgaW50IHRva2Vu
KSBjb25zdApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2
YVNjcmlwdENvcmUva2pzL29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYg
QEAKIAogI2luY2x1ZGUgImRhdGVfb2JqZWN0LmgiCiAjaW5jbHVkZSAiZXJyb3Jfb2JqZWN0Lmgi
Ci0jaW5jbHVkZSAibG9va3VwLmgiCiAjaW5jbHVkZSAibm9kZXMuaCIKICNpbmNsdWRlICJvcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKQEAgLTMxOCw3ICszMTcs
NyBAQCBib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUgKmV4CiB9CiAKIC8vIEVD
TUEgOC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiAvKmV4
ZWMqLywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKQorYm9vbCBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5h
bWUpCiB7CiAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgIEpTVmFsdWUgKnYgPSBfcHJvcC5nZXQo
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTMzMiw3ICszMzEsNyBAQCBib29sIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqCiAgIH0KIAogICAvLyBMb29rIGluIHRoZSBz
dGF0aWMgaGFzaHRhYmxlIG9mIHByb3BlcnRpZXMKLSAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9
IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpOworICBjb25zdCBIYXNoRW50cnkq
IGVudHJ5ID0gZmluZFByb3BlcnR5SGFzaEVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgIGlm
IChlbnRyeSAmJiBlbnRyeS0+YXR0cmlidXRlcyAmIERvbnREZWxldGUpCiAgICAgcmV0dXJuIGZh
bHNlOyAvLyB0aGlzIGJ1aWx0aW4gcHJvcGVydHkgY2FuJ3QgYmUgZGVsZXRlZAogICAvLyBGSVhN
RTogU2hvdWxkIHRoZSBjb2RlIGhlcmUgYWN0dWFsbHkgZG8gc29tZSBkZWxldGlvbj8KQEAgLTM5
NSwxMCArMzk0LDEwIEBAIEpTVmFsdWUqIEpTT2JqZWN0OjpkZWZhdWx0VmFsdWUoRXhlY1N0YXQK
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCAiTm8gZGVmYXVsdCB2YWx1ZSIp
OwogfQogCi1jb25zdCBIYXNoRW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnko
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorY29uc3QgSGFzaEVudHJ5KiBK
U09iamVjdDo6ZmluZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIGZvciAoY29uc3QgQ2xhc3NJbmZv
KiBpbmZvID0gY2xhc3NJbmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewot
ICAgICAgICBpZiAoY29uc3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlID0gaW5mby0+cHJvcEhh
c2hUYWJsZSkgeworICAgICAgICBpZiAoY29uc3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlID0g
aW5mby0+cHJvcEhhc2hUYWJsZShleGVjKSkgewogICAgICAgICAgICAgaWYgKGNvbnN0IEhhc2hF
bnRyeSogZSA9IHByb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGU7CiAgICAgICAgIH0KQEAgLTUyOSwyMyArNTI4LDIzIEBAIGJvb2wgSlNP
YmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKK2Jvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNF
bnVtZXJhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KSBjb25zdAogewogICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogIAotICBpZiAoIWdldFByb3BlcnR5
QXR0cmlidXRlcyhwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKQorICBpZiAoIWdldFByb3BlcnR5
QXR0cmlidXRlcyhleGVjLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKQogICAgIHJldHVybiBm
YWxzZTsKICAgZWxzZQogICAgIHJldHVybiAhKGF0dHJpYnV0ZXMgJiBEb250RW51bSk7CiB9CiAK
LWJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5QXR0cmlidXRlcyhjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdAorYm9vbCBKU09iamVjdDo6
Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3QKIHsKICAgaWYgKF9wcm9w
LmdldChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKQogICAgIHJldHVybiB0cnVlOwogICAgIAog
ICAvLyBMb29rIGluIHRoZSBzdGF0aWMgaGFzaHRhYmxlIG9mIHByb3BlcnRpZXMKLSAgY29uc3Qg
SGFzaEVudHJ5KiBlID0gZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSk7CisgIGNv
bnN0IEhhc2hFbnRyeSogZSA9IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShleGVjLCBwcm9wZXJ0eU5h
bWUpOwogICBpZiAoZSkgewogICAgIGF0dHJpYnV0ZXMgPSBlLT5hdHRyaWJ1dGVzOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtNTYwLDcgKzU1OSw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5
TmFtZXMoRXhlY1N0YXQKIAogICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGZyb20gdGhlIHN0YXRpYyBo
YXNodGFibGVzIG9mIHByb3BlcnRpZXMKICAgICBmb3IgKGNvbnN0IENsYXNzSW5mbyogaW5mbyA9
IGNsYXNzSW5mbygpOyBpbmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKLSAgICAgICAg
Y29uc3QgSGFzaFRhYmxlKiB0YWJsZSA9IGluZm8tPnByb3BIYXNoVGFibGU7CisgICAgICAgIGNv
bnN0IEhhc2hUYWJsZSogdGFibGUgPSBpbmZvLT5wcm9wSGFzaFRhYmxlKGV4ZWMpOwogICAgICAg
ICBpZiAoIXRhYmxlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghdGFibGUt
PnRhYmxlKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuaAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDE5IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgIGNvbnN0IENsYXNzSW5mbyogcGFyZW50Q2xhc3M7CiAgICAgLyoq
CiAgICAgICogU3RhdGljIGhhc2gtdGFibGUgb2YgcHJvcGVydGllcy4KKyAgICAgKiBGb3IgY2xh
c3NlcyB0aGF0IGNhbiBiZSB1c2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcywgaXQgaXMgYWNjZXNz
ZWQgdmlhIGEgZ2V0dGVyIGZ1bmN0aW9uIHRoYXQgd291bGQgdHlwaWNhbGx5IHJldHVybiBhIHBv
aW50ZXIgdG8gdGhyZWFkLXNwZWNpZmljIHZhbHVlLgogICAgICAqLwotICAgIGNvbnN0IEhhc2hU
YWJsZSogcHJvcEhhc2hUYWJsZTsKKyAgICBjb25zdCBIYXNoVGFibGUqIHByb3BIYXNoVGFibGUo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGNsYXNzUHJvcEhhc2hU
YWJsZUdldHRlckZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGNsYXNzUHJvcEhhc2hUYWJs
ZUdldHRlckZ1bmN0aW9uKGV4ZWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4g
c3RhdGljUHJvcEhhc2hUYWJsZTsKKyAgICB9CisKKyAgICBjb25zdCBIYXNoVGFibGUqIHN0YXRp
Y1Byb3BIYXNoVGFibGU7CisgICAgdHlwZWRlZiBjb25zdCBIYXNoVGFibGUqICgqQ2xhc3NQcm9w
SGFzaFRhYmxlR2V0dGVyRnVuY3Rpb24pKEV4ZWNTdGF0ZSopOworICAgIGNvbnN0IENsYXNzUHJv
cEhhc2hUYWJsZUdldHRlckZ1bmN0aW9uIGNsYXNzUHJvcEhhc2hUYWJsZUdldHRlckZ1bmN0aW9u
OwogICB9OwogICAKICAgLy8gVGhpcyBpcyBhbiBpbnRlcm5hbCB2YWx1ZSBvYmplY3Qgd2hpY2gg
c3RvcmVzIGdldHRlciBhbmQgc2V0dGVyIGZ1bmN0aW9ucwpAQCAtMTQ1LDggKzE1Niw4IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAqIEFuZCBpbiB5b3VyIHNvdXJjZSBmaWxlOgogICAgICAqCiAg
ICAgICogXGNvZGUKLSAgICAgKiAgIGNvbnN0IENsYXNzSW5mbyBCYXJJbXA6OmluZm8gPSB7ICJC
YXIiLCAwLCAwIH07IC8vIG5vIHBhcmVudCBjbGFzcwotICAgICAqICAgY29uc3QgQ2xhc3NJbmZv
IEZvb0ltcDo6aW5mbyA9IHsgIkZvbyIsICZCYXJJbXA6OmluZm8sIDAgfTsKKyAgICAgKiAgIGNv
bnN0IENsYXNzSW5mbyBCYXJJbXA6OmluZm8gPSB7ICJCYXIiLCAwLCAwLCAwIH07IC8vIG5vIHBh
cmVudCBjbGFzcworICAgICAqICAgY29uc3QgQ2xhc3NJbmZvIEZvb0ltcDo6aW5mbyA9IHsgIkZv
byIsICZCYXJJbXA6OmluZm8sIDAsIDAgfTsKICAgICAgKiBcZW5kY29kZQogICAgICAqCiAgICAg
ICogQHNlZSBpbmhlcml0cygpCkBAIC00MDksNyArNDIwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAg
IHZpcnR1YWwgSlNHbG9iYWxPYmplY3QqIHRvR2xvYmFsT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
OwogCi0gICAgdmlydHVhbCBib29sIGdldFByb3BlcnR5QXR0cmlidXRlcyhjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0UHJvcGVydHlBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0OwogICAgIAogICAg
IC8vIFdlYkNvcmUgdXNlcyB0aGlzIHRvIG1ha2UgZG9jdW1lbnQuYWxsIGFuZCBzdHlsZS5maWx0
ZXIgdW5kZXRlY3RhYmxlCiAgICAgdmlydHVhbCBib29sIG1hc3F1ZXJhZGVBc1VuZGVmaW5lZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00NDMsNyArNDU0LDcgQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgUHJvcGVydHlNYXAgX3Byb3A7CiAKICAgcHJpdmF0ZToKLSAgICBjb25zdCBIYXNo
RW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeSggY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lICkgY29uc3Q7CisgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnko
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBK
U1ZhbHVlICpfcHJvdG87CiAgIH07CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3Rf
b2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0X29iamVj
dC5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL29iamVjdF9vYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNSArNDYsMTUgQEAgT2JqZWN0UHJvdG90eXBl
OjpPYmplY3RQcm90b3R5cGUoRXhlY1N0YQogICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90
b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnRvU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Q
cm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0xvY2FsZVN0cmluZywgb2JqZWN0
UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rp
b24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiksIERvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywg
ZnVuY3Rpb25Qcm90b3R5cGUsIDEsIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+aGFzT3du
UHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KSwgRG9udEVudW0pOwotICAg
IHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblBy
b3RvdHlwZSwgMSwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5wcm9wZXJ0eUlzRW51bWVy
YWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpLCBEb250RW51bSk7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9u
UHJvdG90eXBlLCAxLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPmlzUHJvdG90eXBlT2Ys
IG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAx
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzT3duUHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hh
c093blByb3BlcnR5KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90
b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3BlcnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51
bWVyYWJsZSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBl
RnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5pc1Byb3RvdHlwZU9mLCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKSwgRG9udEVudW0p
OwogCiAgICAgLy8gTW96aWxsYSBleHRlbnNpb25zCi0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3
IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAyLCBDb21tb25JZGVu
dGlmaWVyczo6c2hhcmVkKCktPl9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmlu
ZUdldHRlciksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBl
RnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDIsIENvbW1vbklkZW50aWZpZXJzOjpz
aGFyZWQoKS0+X19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKSwg
RG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihl
eGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMSwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5f
X2xvb2t1cEdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpLCBEb250RW51bSk7
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0
aW9uUHJvdG90eXBlLCAxLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPl9fbG9va3VwU2V0
dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciksIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5
cGUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2RlZmluZUdldHRlcl9fLCBvYmplY3RQcm90
b0Z1bmNEZWZpbmVHZXR0ZXIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3
IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAyLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuX19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVy
KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlv
bihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLl9fbG9v
a3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciksIERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Q
cm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2xvb2t1cFNldHRlcl9fLCBvYmpl
Y3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpLCBEb250RW51bSk7CiB9CiAKIApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL3JlZ2V4cF9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9yZWdleHBfb2JqZWN0LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0
Q29yZS9ranMvcmVnZXhwX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE0ICs0Niwx
NCBAQCBzdGF0aWMgSlNWYWx1ZSogcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoCiAKIC8vIEVDTUEg
MTUuMTAuNQogCi1jb25zdCBDbGFzc0luZm8gUmVnRXhwUHJvdG90eXBlOjppbmZvID0geyAiUmVn
RXhwUHJvdG90eXBlIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cFByb3RvdHlwZTo6
aW5mbyA9IHsgIlJlZ0V4cFByb3RvdHlwZSIsIDAsIDAsIDAgfTsKIAogUmVnRXhwUHJvdG90eXBl
OjpSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBPYmplY3RQcm90b3R5cGUqIG9iamVj
dFByb3RvdHlwZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQogICAgIDog
SlNPYmplY3Qob2JqZWN0UHJvdG90eXBlKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQ
cm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgQ29tbW9uSWRlbnRp
ZmllcnM6OnNoYXJlZCgpLT5jb21waWxlLCByZWdFeHBQcm90b0Z1bmNDb21waWxlKSwgRG9udEVu
dW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBm
dW5jdGlvblByb3RvdHlwZSwgMCwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5leGVjLCBy
ZWdFeHBQcm90b0Z1bmNFeGVjKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5l
dyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgQ29tbW9uSWRl
bnRpZmllcnM6OnNoYXJlZCgpLT50ZXN0LCByZWdFeHBQcm90b0Z1bmNUZXN0KSwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5j
dGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGUsIHJlZ0V4cFBy
b3RvRnVuY0NvbXBpbGUpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFBy
b3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZXhlYywgcmVnRXhwUHJvdG9GdW5jRXhlYyksIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5
cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50ZXN0LCByZWdFeHBQcm90b0Z1bmNUZXN0KSwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihl
eGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5n
LCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKIH0KIApAQCAtMTIyLDcgKzEy
Miw3IEBAIEpTVmFsdWUqIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGEKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlZ0V4cEltcCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cEltcDo6aW5mbyA9IHsg
IlJlZ0V4cCIsIDAsICZSZWdFeHBJbXBUYWJsZSB9OworY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cElt
cDo6aW5mbyA9IHsgIlJlZ0V4cCIsIDAsIDAsIEV4ZWNTdGF0ZTo6UmVnRXhwSW1wVGFibGUgfTsK
IAogLyogU291cmNlIGZvciByZWdleHBfb2JqZWN0Lmx1dC5oCiBAYmVnaW4gUmVnRXhwSW1wVGFi
bGUgNQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIFJlZ0V4cEltcDo6flJlZ0V4cEltcCgpCiAKIGJvb2wg
UmVnRXhwSW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgcmV0dXJuIGdl
dFN0YXRpY1ZhbHVlU2xvdDxSZWdFeHBJbXAsIEpTT2JqZWN0PihleGVjLCAmUmVnRXhwSW1wVGFi
bGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNs
b3Q8UmVnRXhwSW1wLCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpSZWdFeHBJbXBUYWJsZShl
eGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogSlNWYWx1ZSogUmVnRXhwSW1w
OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3QKQEAgLTE3MSw3
ICsxNzEsNyBAQCBKU1ZhbHVlKiBSZWdFeHBJbXA6OmdldFZhbHVlUHJvcGVydHkoRXhlCiAKIHZv
aWQgUmVnRXhwSW1wOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlKQogewotICAgIGxvb2t1cFB1dDxSZWdFeHBJbXAsIEpT
T2JqZWN0PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAmUmVnRXhwSW1wVGFibGUsIHRoaXMp
OworICAgIGxvb2t1cFB1dDxSZWdFeHBJbXAsIEpTT2JqZWN0PihleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBFeGVjU3RhdGU6OlJlZ0V4cEltcFRhYmxlKGV4ZWMpLCB0aGlzKTsKIH0KIAogdm9p
ZCBSZWdFeHBJbXA6OnB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4s
IEpTVmFsdWUqIHZhbHVlKQpAQCAtMjQyLDcgKzI0Miw3IEBAIEpTVmFsdWUqIFJlZ0V4cEltcDo6
Y2FsbEFzRnVuY3Rpb24oRXhlY1MKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IFJlZ0V4cE9iamVjdEltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3Qg
Q2xhc3NJbmZvIFJlZ0V4cE9iamVjdEltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFs
RnVuY3Rpb25JbXA6OmluZm8sICZSZWdFeHBPYmplY3RJbXBUYWJsZSB9OworY29uc3QgQ2xhc3NJ
bmZvIFJlZ0V4cE9iamVjdEltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b25JbXA6OmluZm8sIDAsIEV4ZWNTdGF0ZTo6UmVnRXhwT2JqZWN0SW1wVGFibGUgfTsKIAogLyog
U291cmNlIGZvciByZWdleHBfb2JqZWN0Lmx1dC5oCiBAYmVnaW4gUmVnRXhwT2JqZWN0SW1wVGFi
bGUgMjEKQEAgLTM2Myw3ICszNjMsNyBAQCBKU1ZhbHVlICpSZWdFeHBPYmplY3RJbXA6OmdldFJp
Z2h0Q29udGV4CiAKIGJvb2wgUmVnRXhwT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxSZWdFeHBPYmplY3RJbXAs
IEludGVybmFsRnVuY3Rpb25JbXA+KGV4ZWMsICZSZWdFeHBPYmplY3RJbXBUYWJsZSwgdGhpcywg
cHJvcGVydHlOYW1lLCBzbG90KTsKKyAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxSZWdFeHBP
YmplY3RJbXAsIEludGVybmFsRnVuY3Rpb25JbXA+KGV4ZWMsIEV4ZWNTdGF0ZTo6UmVnRXhwT2Jq
ZWN0SW1wVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIEpTVmFs
dWUgKlJlZ0V4cE9iamVjdEltcDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBpbnQgdG9r
ZW4pIGNvbnN0CkBAIC00MDgsNyArNDA4LDcgQEAgSlNWYWx1ZSAqUmVnRXhwT2JqZWN0SW1wOjpn
ZXRWYWx1ZVByb3BlcgogCiB2b2lkIFJlZ0V4cE9iamVjdEltcDo6cHV0KEV4ZWNTdGF0ZSAqZXhl
YywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSkKIHsKLSAg
ICBsb29rdXBQdXQ8UmVnRXhwT2JqZWN0SW1wLCBJbnRlcm5hbEZ1bmN0aW9uSW1wPihleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCAmUmVnRXhwT2JqZWN0SW1wVGFibGUsIHRoaXMpOworICAgIGxv
b2t1cFB1dDxSZWdFeHBPYmplY3RJbXAsIEludGVybmFsRnVuY3Rpb25JbXA+KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIEV4ZWNTdGF0ZTo6UmVnRXhwT2JqZWN0SW1wVGFibGUoZXhlYyksIHRo
aXMpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdEltcDo6cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3Rh
dGUgKmV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAqdmFsdWUpCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvc3RyaW5nX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L3N0cmluZ19vYmplY3QuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9zdHJpbmdfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgS0pTIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmluZ0lu
c3RhbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIFN0
cmluZ0luc3RhbmNlOjppbmZvID0geyAiU3RyaW5nIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZv
IFN0cmluZ0luc3RhbmNlOjppbmZvID0geyAiU3RyaW5nIiwgMCwgMCwgMCB9OwogCiBTdHJpbmdJ
bnN0YW5jZTo6U3RyaW5nSW5zdGFuY2UoSlNPYmplY3QgKnByb3RvKQogICA6IEpTV3JhcHBlck9i
amVjdChwcm90bykKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFN0cmluZ0luc3RhbmNlOjpnZXRQ
cm9wZXJ0eU5hbWVzKEV4CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBT
dHJpbmdQcm90b3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1jb25zdCBDbGFzc0lu
Zm8gU3RyaW5nUHJvdG90eXBlOjppbmZvID0geyAiU3RyaW5nIiwgJlN0cmluZ0luc3RhbmNlOjpp
bmZvLCAmc3RyaW5nVGFibGUgfTsKK2NvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5cGU6Omlu
Zm8gPSB7ICJTdHJpbmciLCAmU3RyaW5nSW5zdGFuY2U6OmluZm8sIDAsIEV4ZWNTdGF0ZTo6c3Ry
aW5nVGFibGUgfTsKIC8qIFNvdXJjZSBmb3Igc3RyaW5nX29iamVjdC5sdXQuaAogQGJlZ2luIHN0
cmluZ1RhYmxlIDI2CiAgIHRvU3RyaW5nICAgICAgICAgICAgICAmc3RyaW5nUHJvdG9GdW5jVG9T
dHJpbmcgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMApAQCAtMTczLDcgKzE3Myw3
IEBAIFN0cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGEKIAogYm9vbCBTdHJp
bmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQogewotICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25TbG90PFN0cmluZ0luc3RhbmNlPihleGVjLCAmc3RyaW5nVGFibGUs
IHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8U3RyaW5nSW5zdGFuY2U+KGV4ZWMsIEV4ZWNTdGF0ZTo6c3RyaW5nVGFibGUoZXhlYyksIHRo
aXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IEphdmFT
Y3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMDQtMjUgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpeCBydW4td2Via2l0LXRlc3RzIC0tdGhyZWFkaW5nCisgICAgICAgIGFuZCBw
cm92aXNpb25hbGx5IGZpeCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NjYxPgorICAgICAgICBQcm94eSBzZXJ2ZXIgaXNzdWUgaW4gU3VuZGF5J3MgTmlnaHRseQor
CisgICAgICAgICogVXNlck9iamVjdEltcC5jcHA6IEFkanVzdGVkIGZvciB0aGUgbmV3IG1lbWJl
ciBhZGRlZCB0byBDbGFzc0luZm8uCisKIDIwMDgtMDQtMjUgIE1hcmsgUm93ZSAgPG1yb3dlQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IEph
dmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRHbHVl
L1VzZXJPYmplY3RJbXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiVXNlck9iamVjdEltcC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5
TmFtZUFycmF5Lmg+CiAKLWNvbnN0IENsYXNzSW5mbyBVc2VyT2JqZWN0SW1wOjppbmZvID0geyAi
VXNlck9iamVjdCIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBVc2VyT2JqZWN0SW1wOjppbmZv
ID0geyAiVXNlck9iamVjdCIsIDAsIDAsIDAgfTsKIAogVXNlck9iamVjdEltcDo6VXNlck9iamVj
dEltcChKU1VzZXJPYmplY3QqIHVzZXJPYmplY3QpCiAgICAgOiBmSlNVc2VyT2JqZWN0KChKU1Vz
ZXJPYmplY3QqKXVzZXJPYmplY3QtPlJldGFpbigpKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMyNjM1KQorKysgV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OCBAQAorMjAwOC0wNC0y
NSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHJ1bi13ZWJraXQtdGVzdHMgLS10
aHJlYWRpbmcKKyAgICAgICAgYW5kIHByb3Zpc2lvbmFsbHkgZml4IDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NjE+CisgICAgICAgIFByb3h5IHNlcnZlciBpc3N1
ZSBpbiBTdW5kYXkncyBOaWdodGx5CisKKyAgICAgICAgQWRqdXN0ZWQgZm9yIEphdmFTY3JpcHRD
b3JlIGNoYW5nZXM6IGFkZGVkIGEgbmV3IG1lbWJlciB0byBDbGFzc0luZm8gb2JqZWN0cywgdHVy
bmVkCisgICAgICAgIENsYXNzSW5mbzo6cHJvcEhhc2hUYWJsZSBpbnRvIGEgZnVuY3Rpb24sIG1h
ZGUgZ2V0UHJvcGVydHlBdHRyaWJ1dGVzKCkgdGFrZSBhbiBFeGVjU3RhdGUgcG9pbnRlci4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpjdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93V3JhcHBlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dXcmFw
cGVyOjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93V3JhcHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvdG90eXBlOjpjbGFzc0luZm8p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25FbGVt
ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5
OjpjdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1h
Z2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjop
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpjdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6Y3VzdG9tUHV0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdy
YXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1JHQkNvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNTdG9yYWdlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3RvcmFnZTo6Y3Vz
dG9tUHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hT
TFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW06CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisKIDIwMDgtMDQtMjggIFRvciBBcm5lIFZl
c3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEtK
UzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBDbGFzc0luZm8gSlNBdWRpb0NvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVjdG9yIiwgMCwgMCB9OworY29uc3QgQ2xh
c3NJbmZvIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXVkaW9Db25zdHJ1Y3RvciIs
IDAsIDAsIDAgfTsKIAogSlNBdWRpb0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBET01PYmplY3QoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcs
NyArMTM3LDcgQEAgcHJpdmF0ZToKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBKU0RPTVdpbmRv
d0Jhc2UgT2JqZWN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1jb25zdCBDbGFzc0luZm8g
SlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAwLCAmSlNET01XaW5kb3dCYXNl
VGFibGUgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldp
bmRvdyIsIDAsICZKU0RPTVdpbmRvd0Jhc2VUYWJsZSwgMCB9OwogCiAvKgogQGJlZ2luIEpTRE9N
V2luZG93QmFzZVRhYmxlIDExOApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEyICs4MiwxMiBAQCBib29s
IEpTRE9NV2luZG93OjpjdXN0b21HZXRPd25Qcm9wZXJ0eVNsCiAgICAgaWYgKCFpbXBsKCktPmZy
YW1lKCkpIHsKICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGlzIHNhZmUgZm9yIGNyb3Nz
LWRvbWFpbiBhbmQgc2FtZSBkb21haW4gdXNlLgogICAgICAgICAvLyBJdCBpZ25vcmVzIGFueSBj
dXN0b20gcHJvcGVydGllcyB0aGF0IG1pZ2h0IGJlIHNldCBvbiB0aGUgRE9NV2luZG93IChpbmNs
dWRpbmcgYSBjdXN0b20gcHJvdG90eXBlKS4KLSAgICAgICAgZW50cnkgPSBzX2luZm8ucHJvcEhh
c2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICAgICAgZW50cnkgPSBzX2luZm8ucHJv
cEhhc2hUYWJsZShleGVjKS0+ZW50cnkocHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYgKGVudHJ5
ICYmICEoZW50cnktPmF0dHJpYnV0ZXMgJiBGdW5jdGlvbikgJiYgZW50cnktPmludGVnZXJWYWx1
ZSA9PSBDbG9zZWRBdHRyTnVtKSB7CiAgICAgICAgICAgICBzbG90LnNldFN0YXRpY0VudHJ5KHRo
aXMsIGVudHJ5LCBzdGF0aWNWYWx1ZUdldHRlcjxKU0RPTVdpbmRvdz4pOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgZW50cnkgPSBKU0RPTVdpbmRvd1Byb3Rv
dHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgICAg
IGVudHJ5ID0gSlNET01XaW5kb3dQcm90b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMp
LT5lbnRyeShwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAoZW50cnkgJiYgKGVudHJ5LT5hdHRy
aWJ1dGVzICYgRnVuY3Rpb24pICYmIGVudHJ5LT5mdW5jdGlvblZhbHVlID09IGpzRE9NV2luZG93
UHJvdG90eXBlRnVuY3Rpb25DbG9zZSkgewogICAgICAgICAgICAgc2xvdC5zZXRTdGF0aWNFbnRy
eSh0aGlzLCBlbnRyeSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmN1
c3RvbUdldE93blByb3BlcnR5U2wKICAgICAvLyBwcm90b3R5cGUgZHVlIHRvIHRoZSBibGFua2V0
IHNhbWUgb3JpZ2luIChhbGxvd3NBY2Nlc3NGcm9tKSBjaGVjayBhdCB0aGUgZW5kIG9mIGdldE93
blByb3BlcnR5U2xvdC4KICAgICAvLyBBbHNvLCBpdCdzIGltcG9ydGFudCB0byBnZXQgdGhlIGlt
cGxlbWVudGF0aW9uIHN0cmFpZ2h0IG91dCBvZiB0aGUgRE9NV2luZG93IHByb3RvdHlwZSByZWdh
cmRsZXNzIG9mCiAgICAgLy8gd2hhdCBwcm90b3R5cGUgaXMgYWN0dWFsbHkgc2V0IG9uIHRoaXMg
b2JqZWN0LgotICAgIGVudHJ5ID0gSlNET01XaW5kb3dQcm90b3R5cGU6OnNfaW5mby5wcm9wSGFz
aFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgIGVudHJ5ID0gSlNET01XaW5kb3dQcm90
b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwog
ICAgIGlmIChlbnRyeSkgewogICAgICAgICBpZiAoKGVudHJ5LT5hdHRyaWJ1dGVzICYgRnVuY3Rp
b24pCiAgICAgICAgICAgICAgICAgJiYgKGVudHJ5LT5mdW5jdGlvblZhbHVlID09IGpzRE9NV2lu
ZG93UHJvdG90eXBlRnVuY3Rpb25CbHVyCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1dyYXBwZXIuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QCB1c2luZyBuYW1lc3BhY2UgS0pTOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IENs
YXNzSW5mbyBKU0RPTVdpbmRvd1dyYXBwZXI6OnNfaW5mbyA9IHsgIkpTRE9NV2luZG93V3JhcHBl
ciIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd1dyYXBwZXI6OnNfaW5mbyA9
IHsgIkpTRE9NV2luZG93V3JhcHBlciIsIDAsIDAsIDAgfTsKIAogSlNET01XaW5kb3dXcmFwcGVy
OjpKU0RPTVdpbmRvd1dyYXBwZXIoRE9NV2luZG93KiBkb21XaW5kb3cpCiAgICAgOiBCYXNlKGpz
TnVsbCgpKQpAQCAtOTQsOSArOTQsOSBAQCB2b2lkIEpTRE9NV2luZG93V3JhcHBlcjo6Z2V0UHJv
cGVydHlOYW1lCiAgICAgbV93aW5kb3ctPmdldFByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlO
YW1lcyk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3dXcmFwcGVyOjpnZXRQcm9wZXJ0eUF0dHJpYnV0
ZXMoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykg
Y29uc3QKK2Jvb2wgSlNET01XaW5kb3dXcmFwcGVyOjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoS0pT
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQmIGF0dHJpYnV0ZXMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2luZG93LT5nZXRQcm9wZXJ0
eUF0dHJpYnV0ZXMocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gbV93aW5k
b3ctPmdldFByb3BlcnR5QXR0cmlidXRlcyhleGVjLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMp
OwogfQogCiB2b2lkIEpTRE9NV2luZG93V3JhcHBlcjo6ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVu
Y3Rpb24pCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93V3JhcHBlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmgJKHJl
dmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1dyYXBwZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhLSlM6OkV4ZWNTdGF0ZSosIGNv
bnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBLSlM6OkpTVmFsdWUqLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6UHJv
cGVydHlOYW1lQXJyYXkmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldFByb3BlcnR5QXR0cmli
dXRlcyhjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJvcGVydHlBdHRyaWJ1dGVz
KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlZmluZUdl
dHRlcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBLSlM6OkpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
ZWZpbmVTZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgS0pTOjpKU09iamVjdCogc2V0dGVyRnVuY3Rpb24pOwogICAgICAgICB2aXJ0dWFs
IEtKUzo6SlNWYWx1ZSogbG9va3VwR2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEJhc2UuaAkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyog
Y2xhc3NJbmZvKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEtK
Uzo6Q2xhc3NJbmZvIHNfY2xhc3NJbmZvID0geyBKU0V2ZW50VGFyZ2V0UHJvdG90eXBlSW5mb3Jt
YXRpb246OnByb3RvdHlwZUNsYXNzTmFtZSgpLCAwLCAmS0pTOjpKU0V2ZW50VGFyZ2V0UHJvdG90
eXBlVGFibGUgfTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBLSlM6OkNsYXNzSW5mbyBzX2Ns
YXNzSW5mbyA9IHsgSlNFdmVudFRhcmdldFByb3RvdHlwZUluZm9ybWF0aW9uOjpwcm90b3R5cGVD
bGFzc05hbWUoKSwgMCwgJktKUzo6SlNFdmVudFRhcmdldFByb3RvdHlwZVRhYmxlLCAwIH07CiAg
ICAgICAgICAgICByZXR1cm4gJnNfY2xhc3NJbmZvOwogICAgICAgICB9CiAgICAgfTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcAkocmV2
aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIEpTVmFsdWUqIGpzSFRNTElu
cHV0RWxlbWVudEJhc2VGdW5jdGlvblMKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAot
Y29uc3QgQ2xhc3NJbmZvIEpTSFRNTElucHV0RWxlbWVudEJhc2U6OnNfaW5mbyA9IHsgIkhUTUxJ
bnB1dEVsZW1lbnRCYXNlIiwgJkpTSFRNTEVsZW1lbnQ6OnNfaW5mbywgJkpTSFRNTElucHV0RWxl
bWVudEJhc2VUYWJsZSB9OworY29uc3QgQ2xhc3NJbmZvIEpTSFRNTElucHV0RWxlbWVudEJhc2U6
OnNfaW5mbyA9IHsgIkhUTUxJbnB1dEVsZW1lbnRCYXNlIiwgJkpTSFRNTEVsZW1lbnQ6OnNfaW5m
bywgJkpTSFRNTElucHV0RWxlbWVudEJhc2VUYWJsZSwgMCB9OwogCiBKU0hUTUxJbnB1dEVsZW1l
bnRCYXNlOjpKU0hUTUxJbnB1dEVsZW1lbnRCYXNlKEtKUzo6SlNPYmplY3QqIHByb3RvdHlwZSwg
UGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBlKQogICAgIDogSlNIVE1MRWxlbWVudChwcm90
b3R5cGUsIGUuZ2V0KCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbkVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0hUTUxPcHRpb25FbGVtZW50Q29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIk9wdGlvbkNvbnN0cnVjdG9yIiwgMCwgMCB9OworY29uc3Qg
Q2xhc3NJbmZvIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiT3B0
aW9uQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAKIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1
Y3Rvcjo6SlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogRE9NT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlz
dG9yeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3Rv
cnlDdXN0b20uY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNI
aXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBib29sIEpT
SGlzdG9yeTo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93LCBldmVu
IHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KLSAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0g
SlNIaXN0b3J5UHJvdG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlO
YW1lKTsKKyAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gSlNIaXN0b3J5UHJvdG90eXBlOjpz
X2luZm8ucHJvcEhhc2hUYWJsZShleGVjKS0+ZW50cnkocHJvcGVydHlOYW1lKTsKICAgICBpZiAo
ZW50cnkpIHsKICAgICAgICAgLy8gQWxsb3cgYWNjZXNzIHRvIGJhY2soKSwgZm9yd2FyZCgpIGFu
ZCBnbygpIGZyb20gYW55IGZyYW1lLgogICAgICAgICBpZiAoKGVudHJ5LT5hdHRyaWJ1dGVzICYg
RnVuY3Rpb24pCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgS0pTOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0ltYWdl
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkltYWdlQ29uc3RydWN0b3IiLCAwLCAwIH07Citjb25z
dCBDbGFzc0luZm8gSlNJbWFnZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJJbWFnZUNvbnN0cnVj
dG9yIiwgMCwgMCwgMCB9OwogCiBKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IERPTU9iamVjdChl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcAkocmV2
aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3Jh
cHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIFdyYXBwZXJN
YXAmIHdyYXBwZXJzKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNJ
bnNwZWN0ZWRPYmplY3RXcmFwcGVyOjpzX2luZm8gPSB7ICJKU0luc3BlY3RlZE9iamVjdFdyYXBw
ZXIiLCAmSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbywgMCB9OworY29uc3QgQ2xh
c3NJbmZvIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6c19pbmZvID0geyAiSlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyIiwgJkpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpzX2luZm8sIDAsIDAg
fTsKIAogSlNWYWx1ZSogSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjp3cmFwKEV4ZWNTdGF0ZSog
dW53cmFwcGVkRXhlYywgSlNWYWx1ZSogdW53cmFwcGVkVmFsdWUpCiB7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAkocmV2
aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tX
cmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgV3JhcHBl
ck1hcCYgd3JhcHBlcnMoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBK
U0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6c19pbmZvID0geyAiSlNJbnNwZWN0b3JDYWxsYmFj
a1dyYXBwZXIiLCAmSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbywgMCB9OworY29u
c3QgQ2xhc3NJbmZvIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyOjpzX2luZm8gPSB7ICJKU0lu
c3BlY3RvckNhbGxiYWNrV3JhcHBlciIsICZKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6c19p
bmZvLCAwLCAwIH07CiAKIEpTVmFsdWUqIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyOjp3cmFw
KEV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNWYWx1ZSogdW53cmFwcGVkVmFsdWUpCiB7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDMy
NjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBib29sIEpTTG9jYXRpb246OmN1c3RvbUdldE93blBy
b3BlcnR5U2xvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENoZWNrIGZvciB0aGUg
ZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFp
bi4KLSAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gSlNMb2NhdGlvblByb3RvdHlwZTo6c19p
bmZvLnByb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSA9IEpTTG9jYXRpb25Qcm90b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4
ZWMpLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSAmJiAoZW50cnktPmF0dHJp
YnV0ZXMgJiBGdW5jdGlvbikKICAgICAgICAgICAgICYmIChlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9
PSBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25SZXBsYWNlCiAgICAgICAgICAgICAgICAgfHwg
ZW50cnktPmZ1bmN0aW9uVmFsdWUgPT0ganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uUmVsb2Fk
CkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Y3VzdG9tUHV0KEV4ZWNTdGF0ZSog
ZXgKIAogICAgIGJvb2wgc2FtZURvbWFpbkFjY2VzcyA9IGFsbG93c0FjY2Vzc0Zyb21GcmFtZShl
eGVjLCBmcmFtZSk7CiAKLSAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gSlNMb2NhdGlvbjo6
c19pbmZvLnByb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeSA9IEpTTG9jYXRpb246OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLT5l
bnRyeShwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghZW50cnkpIHsKICAgICAgICAgaWYgKHNhbWVE
b21haW5BY2Nlc3MpCiAgICAgICAgICAgICBKU09iamVjdDo6cHV0KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0Nv
bGxlY3Rpb24uY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNO
YW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogCi1jb25zdCBDbGFz
c0luZm8gSlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6c19pbmZvID0geyAiQ29sbGVjdGlvbiIsIDAs
IDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU05hbWVkTm9kZXNDb2xsZWN0aW9uOjpzX2luZm8gPSB7
ICJDb2xsZWN0aW9uIiwgMCwgMCwgMCB9OwogCiAvLyBTdWNoIGEgY29sbGVjdGlvbiBpcyB1c3Vh
bGx5IHZlcnkgc2hvcnQtbGl2ZWQsIGl0IG9ubHkgZXhpc3RzCiAvLyBmb3IgY29uc3RydWN0cyBs
aWtlIGRvY3VtZW50LmZvcm1zLjxuYW1lPlsxXSwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuY3BwCShyZXZpc2lvbiAzMjYzNSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgQ2xhc3NJbmZvIEpTUXVhcmFudGluZWRPYmplY3RX
cmFwcGVyOjpzX2luZm8gPSB7ICJKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlciIsIDAsIDAgfTsK
K2NvbnN0IENsYXNzSW5mbyBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6c19pbmZvID0geyAi
SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIiLCAwLCAwLCAwIH07CiAKIEpTUXVhcmFudGluZWRP
YmplY3RXcmFwcGVyKiBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6YXNXcmFwcGVyKEpTVmFs
dWUqIHZhbHVlKQogewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JHQkNvbG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuY3BwCShyZXZpc2lv
biAzMjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jb25zdCBDbGFzc0luZm8gSlNSR0JDb2xvcjo6c19pbmZvID0geyAiUkdC
Q29sb3IiLCAwLCAmSlNSR0JDb2xvclRhYmxlIH07Citjb25zdCBDbGFzc0luZm8gSlNSR0JDb2xv
cjo6c19pbmZvID0geyAiUkdCQ29sb3IiLCAwLCAmSlNSR0JDb2xvclRhYmxlLCAwIH07CiAKIC8q
CiBAYmVnaW4gSlNSR0JDb2xvclRhYmxlIDMKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNT
dG9yYWdlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3Rv
cmFnZUN1c3RvbS5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1N0b3JhZ2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wg
SlNTdG9yYWdlOjpjdXN0b21QdXQoRXhlY1N0YXRlKiBleGUKICAgICAvLyBTaW5jZSBoYXNQcm9w
ZXJ0eSgpIHdvdWxkIGVuZCB1cCBjYWxsaW5nIGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBm
b29sZWQsIHdlIG5lZWQgdG8gY2hlY2sKICAgICAvLyB0aGUgbmF0aXZlIHByb3BlcnR5IHNsb3Rz
IG1hbnVhbGx5LgogICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgIGlmIChnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNTdG9yYWdlLCBCYXNlPihleGVjLCBzX2luZm8ucHJvcEhhc2hUYWJsZSwgdGhpcywg
cHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICBpZiAoZ2V0U3RhdGljVmFsdWVTbG90PEpTU3RvcmFn
ZSwgQmFzZT4oZXhlYywgc19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgSlNWYWx1
ZSogcHJvdG90eXBlID0gdGhpcy0+cHJvdG90eXBlKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAz
MjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCB1c2luZyBuYW1lc3BhY2UgS0pT
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU1hNTEh0dHBSZXF1
ZXN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IiLCAw
LCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OwogCiBKU1hNTEh0
dHBSZXF1ZXN0Q29uc3RydWN0b3I6OkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IERPTU9iamVjdChleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hTTFRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNYU0xUUHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y29uc3QgQ2xhc3NJbmZvIEpTWFNMVFByb2Nlc3Nvcjo6c19pbmZvID0geyAiWFNMVFByb2Nlc3Nv
ciIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1hTTFRQcm9jZXNzb3I6OnNfaW5mbyA9IHsg
IlhTTFRQcm9jZXNzb3IiLCAwLCAwLCAwIH07CiAKIC8qCiBAYmVnaW4gSlNYU0xUUHJvY2Vzc29y
UHJvdG90eXBlVGFibGUgNwpAQCAtMTg2LDcgKzE4Niw3IEBAIEpTVmFsdWUqIGpzWFNMVFByb2Nl
c3NvclByb3RvdHlwZUZ1bmN0aW8KICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotY29u
c3QgQ2xhc3NJbmZvIEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJYU0xU
UHJvY2Vzc29yQ29uc3J1Y3RvciIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1hTTFRQcm9j
ZXNzb3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiWFNMVFByb2Nlc3NvckNvbnNydWN0b3IiLCAw
LCAwLCAwIH07CiAKIEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yOjpKU1hTTFRQcm9jZXNzb3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgOiBET01PYmplY3QoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC03MzAsNyArNzMwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcQGhhc2hLZXlzLCBcQGhhc2hWYWx1ZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXEBoYXNoU3BlY2lhbHMsIFxAaGFzaFBhcmFtZXRlcnMpOwog
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJv
dG90eXBlOjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAwLCAm
JHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUgfTtcblxuIik7CisgICAgcHVzaChAaW1wbENvbnRl
bnQsICJjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwi
JHt2aXNpYmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAwLCAmJHtjbGFzc05hbWV9UHJvdG90eXBl
VGFibGUsIDAgfTtcblxuIik7CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkRvTm90Q2FjaGUifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2JqZWN0
KiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CkBAIC03NzIsOCArNzcyLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiJiR7Y2xhc3NOYW1lfVRhYmxlICIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiMCAiKQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIjAgIik7
CiAgICAgfQorICAgIHB1c2goQGltcGxDb250ZW50LCAiLCAwICIpOwogICAgIHB1c2goQGltcGxD
b250ZW50LCAifTtcblxuIik7CiAKICAgICAjIEdldCBjb3JyZWN0IHBhc3Mvc3RvcmUgdHlwZXMg
cmVzcGVjdGluZyBQT0RUeXBlIGZsYWcKQEAgLTE3NzgsNyArMTc3OSw3IEBAIEVPRgogJGltcGxD
b250ZW50IC49IDw8ICJFT0YiOwogfTsKIAotY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICIke3Zpc2libGVDbGFzc05hbWV9Q29uc3RydWN0b3IiLCAw
LCAmJHtjbGFzc05hbWV9Q29uc3RydWN0b3JUYWJsZSB9OworY29uc3QgQ2xhc3NJbmZvICR7Y2xh
c3NOYW1lfUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICIke3Zpc2libGVDbGFzc05hbWV9Q29uc3Ry
dWN0b3IiLCAwLCAmJHtjbGFzc05hbWV9Q29uc3RydWN0b3JUYWJsZSwgMCB9OwogCiBib29sICR7
Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
SW5kZXg6IFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKLWNvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJy
YXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZBcnJheUluc3RhbmNlOjppbmZvLCAwIH07
Citjb25zdCBDbGFzc0luZm8gUnVudGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1lQXJyYXki
LCAmQXJyYXlJbnN0YW5jZTo6aW5mbywgMCwgMCB9OwogCiBSdW50aW1lQXJyYXk6OlJ1bnRpbWVB
cnJheShFeGVjU3RhdGUgKmV4ZWMsIEJpbmRpbmdzOjpBcnJheSAqYSkKICAgICA6IEpTT2JqZWN0
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKSkKSW5kZXg6IFdl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiB1
c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFtZXNwYWNlIEJpbmRpbmdzOwogCi1jb25zdCBD
bGFzc0luZm8gUnVudGltZU9iamVjdEltcDo6c19pbmZvID0geyAiUnVudGltZU9iamVjdCIsIDAs
IDAgfTsKK2NvbnN0IENsYXNzSW5mbyBSdW50aW1lT2JqZWN0SW1wOjpzX2luZm8gPSB7ICJSdW50
aW1lT2JqZWN0IiwgMCwgMCwgMCB9OwogCiBSdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0
SW1wKFBhc3NSZWZQdHI8QmluZGluZ3M6Okluc3RhbmNlPiBpKQogICAgIDogaW5zdGFuY2UoaSkK
SW5kZXg6IFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lvbiAzMjYzNSkKKysr
IFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTYsNyArMTk2LDcgQEAgdW5zaWduZWQgaW50IE9iamNBcnJheTo6Z2V0TGVuZ3RoKCkgY29ucwog
ICAgIHJldHVybiBbX2FycmF5LmdldCgpIGNvdW50XTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIE9i
amNGYWxsYmFja09iamVjdEltcDo6aW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIsIDAsIDAg
fTsKK2NvbnN0IENsYXNzSW5mbyBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmluZm8gPSB7ICJPYmpj
RmFsbGJhY2tPYmplY3QiLCAwLCAwLCAwIH07CiAKIE9iamNGYWxsYmFja09iamVjdEltcDo6T2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKE9iamNJbnN0YW5jZSogaSwgY29uc3QgS0pTOjpJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSkKIDogX2luc3RhbmNlKGkpCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzI2MzUpCisr
KyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDA4LTA0LTI1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggcnVuLXdlYmtpdC10
ZXN0cyAtLXRocmVhZGluZworICAgICAgICBhbmQgcHJvdmlzaW9uYWxseSBmaXggPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2MT4KKyAgICAgICAgUHJveHkgc2Vy
dmVyIGlzc3VlIGluIFN1bmRheSdzIE5pZ2h0bHkKKworICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbTogKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOiBJbml0aWFsaXplIHRocmVhZGluZy4gUHJl
dmlvdXNseSwgdGhpcyB3YXMKKyAgICAgICAgb25seSBkb25lIGZyb20gaWNvbiBkYXRhYmFzZSBj
b2RlLCB3aGljaCBpcyBub3Qgcm9idXN0IGVub3VnaC4KKwogMjAwOC0wNC0yMCBBZGFtIEJhcnRo
IDxoazk1NjVAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4gYW5k
IFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMzI2MzUpCisr
KyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYg
KzEyNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dlYkRhc2hib2FyZFJlZ2lvbi5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CisjaW1wb3J0IDxranMvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2ltcG9ydCA8bWFjaC1vL2R5
bGQuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1hdXRvLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVu
dGltZS5oPgpAQCAtNDU3LDYgKzQ1OCw3IEBAIHN0YXRpYyBCT09MIGdyYW1tYXJDaGVja2luZ0Vu
YWJsZWQ7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAg
IHJldHVybiBuaWw7CisgICAgS0pTOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgYWxsb3dz
VW5kbyA9IFlFUzsKICAgICB6b29tTXVsdGlwbGllciA9IDE7CiAgICAgem9vbU11bHRpcGxpZXJJ
c1RleHRPbmx5ID0gWUVTOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0wNC0yNSAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHJ1bi13ZWJraXQtdGVzdHMgLS10aHJlYWRp
bmcKKyAgICAgICAgYW5kIHByb3Zpc2lvbmFsbHkgZml4IDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NjE+CisgICAgICAgIFByb3h5IHNlcnZlciBpc3N1ZSBpbiBT
dW5kYXkncyBOaWdodGx5CisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDogKFdlYlZpZXc6OldlYlZp
ZXcpOiBJbml0aWFsaXplIHRocmVhZGluZy4gUHJldmlvdXNseSwgdGhpcyB3YXMgb25seSBkb25l
IGZyb20KKyAgICAgICAgaWNvbiBkYXRhYmFzZSBjb2RlLCB3aGljaCBpcyBub3Qgcm9idXN0IGVu
b3VnaC4KKwogMjAwOC0wNC0yNiAgQWRhbSBCYXJ0aCA8aGs5NTY1QGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuIGFuZCBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShy
ZXZpc2lvbiAzMjYzNSkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1R5cGluZ0NvbW1hbmQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI3ByYWdtYSB3YXJu
aW5nKHBvcCkKKyNpbmNsdWRlIDxranMvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL3ZhbHVlLmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQ
cml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+CkBAIC0yNzMs
NiArMjc0LDggQEAgV2ViVmlldzo6V2ViVmlldygpCiAsIG1fdG9wTGV2ZWxQYXJlbnQoMCkKICwg
bV9kZWxldGVCYWNraW5nU3RvcmVUaW1lckFjdGl2ZShmYWxzZSkKIHsKKyAgICBLSlM6OmluaXRp
YWxpemVUaHJlYWRpbmcoKTsKKwogICAgIG1fYmFja2luZ1N0b3JlU2l6ZS5jeCA9IG1fYmFja2lu
Z1N0b3JlU2l6ZS5jeSA9IDA7CiAKICAgICBDb0NyZWF0ZUluc3RhbmNlKENMU0lEX0RyYWdEcm9w
SGVscGVyLCAwLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX0lEcm9wVGFyZ2V0SGVscGVyLCh2
b2lkKiopJm1fZHJvcFRhcmdldEhlbHBlcik7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMjYzNSkKKysr
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDA4LTA0LTI1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggcnVuLXdlYmtpdC10
ZXN0cyAtLXRocmVhZGluZworICAgICAgICBhbmQgcHJvdmlzaW9uYWxseSBmaXggPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2MT4KKyAgICAgICAgUHJveHkgc2Vy
dmVyIGlzc3VlIGluIFN1bmRheSdzIE5pZ2h0bHkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChydW5K
YXZhU2NyaXB0VGhyZWFkKToKKyAgICAgICAgKHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMpOgorICAg
ICAgICAoc3RvcEphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAgICAgU3Bhd25lZCB0aHJlYWRzIHdl
cmUgaW1tZWRpYXRlbHkgZGV0YWNoZWQsIHVubGlrZSB0aGUgb3JpZ2luYWwgb25lcywgc28gam9p
bmluZyB0aGVtCisgICAgICAgIG1hZGUgbm8gc2Vuc2UuIE5vdywgYWxsIHRocmVhZHMgYXJlIGNy
ZWF0ZWQgZGV0YWNoZWQsIGFuZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKSBqdXN0CisgICAgICAg
IHdhaXRzIGZvciB0aGVtIGFsbCB0byBleGl0LgorCiAyMDA4LTA0LTI2ICBSb2JpbiBEdW5uICA8
cm9iaW5AYWxsZHVubi5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIu
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhy
ZWFkaW5nUHRocmVhZHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAJKHJldmlzaW9uIDMy
NjM1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRo
cmVhZGluZ1B0aHJlYWRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQCB2b2lk
KiBydW5KYXZhU2NyaXB0VGhyZWFkKHZvaWQqIGFyZykKIAogICAgICAgICAvLyBDaGVjayBmb3Ig
Y2FuY2VsbGF0aW9uLgogICAgICAgICBpZiAoamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5h
dGUpIHsKKyAgICAgICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCktPnJlbW92ZShwdGhyZWFkX3Nl
bGYoKSk7CiAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVh
ZHNNdXRleCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMTA1LDYgKzEw
Niw3IEBAIHZvaWQgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50OyBpKyspIHsKICAgICAgICAgcHRocmVhZF90IHB0
aHJlYWQ7CiAgICAgICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCAwLCAmcnVuSmF2YVNjcmlw
dFRocmVhZCwgMCk7CisgICAgICAgIHB0aHJlYWRfZGV0YWNoKHB0aHJlYWQpOwogICAgICAgICBq
YXZhU2NyaXB0VGhyZWFkcygpLT5hZGQocHRocmVhZCk7CiAgICAgfQogCkBAIC0xMjEsOSArMTIz
LDE0IEBAIHZvaWQgc3RvcEphdmFTY3JpcHRUaHJlYWRzKCkKIAogICAgIHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKIAotICAgIFRocmVhZFNldDo6aXRlcmF0
b3IgZW5kID0gamF2YVNjcmlwdFRocmVhZHMoKS0+ZW5kKCk7Ci0gICAgZm9yIChUaHJlYWRTZXQ6
Oml0ZXJhdG9yIGl0ID0gamF2YVNjcmlwdFRocmVhZHMoKS0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgIHB0aHJlYWRfdCBwdGhyZWFkID0gKml0OwotICAgICAgICBwdGhyZWFk
X2pvaW4ocHRocmVhZCwgMCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgcHRocmVhZF9t
dXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKyAgICAgICAgaW50IHRocmVhZENv
dW50ID0gamF2YVNjcmlwdFRocmVhZHMoKS0+c2l6ZSgpOworICAgICAgICBwdGhyZWFkX211dGV4
X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisKKyAgICAgICAgaWYgKCF0aHJlYWRD
b3VudCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHVzbGVlcCgxMDAwKTsKICAgICB9
CiB9Cg==
</data>
<flag name="review"
          id="9127"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20869</attachid>
            <date>2008-04-28 10:00:21 -0700</date>
            <delta_ts>2008-04-28 10:12:43 -0700</delta_ts>
            <desc>updated fix</desc>
            <filename>HashTables.txt</filename>
            <type>text/plain</type>
            <size>80184</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIyIEBACisyMDA4LTA0LTI4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXggcnVuLXdlYmtpdC10ZXN0cyAtLXRocmVhZGluZwor
ICAgICAgICBhbmQgcHJvdmlzaW9uYWxseSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODY2MT4KKyAgICAgICAgUHJveHkgc2VydmVyIGlzc3VlIGluIFN1bmRh
eSdzIE5pZ2h0bHkKKworICAgICAgICBDaGFuZ2VkIENsYXNzSW5mbyBvYmplY3RzIGZvciBidWls
dC1pbiBvYmplY3RzIHRvIGhvbGQgYSBnZXR0ZXIgZnVuY3Rpb24gcmV0dXJuaW5nCisgICAgICAg
IGEgcGVyLXRocmVhZCBpbnN0YW5jZS4gVGhpcyBtYWtlcyBpdCBzYWZlIHRvIHNoYXJlIHRoZXNl
IENsYXNzSW5mbyBvYmplY3RzIGJldHdlZW4gdGhyZWFkcyAtCisgICAgICAgIGFuZCB0aGVzZSBh
cmUgdGhlIG9ubHkgb25lcyB0aGF0IG5lZWQgdG8gYmUgc2hhcmVkLgorCisgICAgICAgICoga2pz
L2xleGVyLmNwcDoKKyAgICAgICAgKEtKUzo6TGV4ZXI6OkxleGVyKToKKyAgICAgICAgKEtKUzo6
TGV4ZXI6On5MZXhlcik6CisgICAgICAgICoga2pzL2xleGVyLmg6CisgICAgICAgIE1hZGUgbWFp
blRhYmxlIGEgbWVtYmVyIG9mIExleGVyLCBzbyB0aGF0IGl0IG5vIGxvbmdlciBuZWVkcyB0byBi
ZSBzaGFyZWQgYmV0d2VlbiB0aHJlYWRzLgorCisgICAgICAgICoga2pzL29iamVjdC5jcHA6Cisg
ICAgICAgIChLSlM6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OkpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkpOgorICAgICAgICAoS0pTOjpKU09iamVjdDo6
cHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAoS0pTOjpKU09iamVjdDo6Z2V0UHJvcGVy
dHlBdHRyaWJ1dGVzKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIGtqcy9vYmplY3QuaDoKKyAgICAgICAgKEtKUzo6Q2xhc3NJbmZvOjpwcm9w
SGFzaFRhYmxlKToKKyAgICAgICAgQWRkZWQgYSBuZXcgY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVy
RnVuY3Rpb24gZmllbGQgdG8gQ2xhc3NJbmZvLiBJZiBpdCBpcyBub24temVybywgdGhlCisgICAg
ICAgIHN0YXRpYyB0YWJsZSBpcyBub3QgdXNlZC4KKworICAgICAgICAqIGtqcy9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChLSlM6OlRocmVhZENsYXNzSW5mb0hhc2hUYWJsZXM6OlRocmVh
ZENsYXNzSW5mb0hhc2hUYWJsZXMpOiBUaGlzIG5ldyBjbGFzcyBob2xkcyBwZXItdGhyZWFkCisg
ICAgICAgIEhhc2hUYWJsZXMgZm9yIGJ1aWx0LWluIGNsYXNzZXMuIFRoZSBvbGQgc3RhdGljIHN0
cnVjdHMgYXJlIGNvcGllZCB0byBjcmVhdGUgcGVyLXRocmVhZAorICAgICAgICBpbnN0YW5jZXMu
CisgICAgICAgIChLSlM6OkpTR2xvYmFsT2JqZWN0Ojp0aHJlYWRDbGFzc0luZm9IYXNoVGFibGVz
KTogQW4gYWNjZXNzb3IvaW5pdGlhbGl6ZXIgZm9yIHRoZSBhYm92ZS4KKyAgICAgICAgKEtKUzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOiBDb3B5IHBlci10aHJlYWQgZGF0YSBpbnRvIGEgc2luZ2xl
IHN0cnVjdHVyZSBmb3IgZmFzdGVyIGFjY2Vzcy4KKyAgICAgICAgQWxzbywgY29uc3RydWN0IGds
b2JhbEV4ZWMuCisgICAgICAgIChLSlM6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6IEFkYXB0ZWQg
Zm9yIGdsb2JhbEV4ZWMgbm93IGJlaW5nIGFuIE93blB0ci4KKyAgICAgICAgKEtKUzo6SlNHbG9i
YWxPYmplY3Q6Om1hcmspOiBEaXR0by4KKyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6Omds
b2JhbEV4ZWMpOiBEaXR0by4KKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0RGF0YTo6SlNHbG9iYWxPYmpl
Y3REYXRhKTogTWFkZSBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRhOjpnbG9iYWxF
eGVjIGFuIE93blB0ciwgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgYmUgaW5pdGlhbGl6ZWQgZnJv
bSBKU0dsb2JhbE9iamVjdDo6aW5pdCgpIGFmdGVyIHRoZW0uIE90aGVyd2lzZSwgRXhlY1N0YXRl
IGNvbnN0cnVjdG9yIHdhcworICAgICAgICB0cnlpbmcgdG8gYWNjZXNzIGhhbGYtaW5pdGlhbGl6
ZWQgSlNHbG9iYWxPYmplY3QgdG8gbWFrZSBpdHMgb3duIGNvcHkgb2YgdGhlc2UgdGFibGUKKyAg
ICAgICAgcmVmZXJlbmNlcywgYW5kIGZhaWxlZC4KKyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmpl
Y3Q6OkpTR2xvYmFsT2JqZWN0KTogUGFzcyAidGhpcyIgdmFsdWUgdG8gaW5pdCgpIHRvIGNyZWF0
ZSBnbG9iYWxFeGVjLgorICAgICAgICAoS0pTOjpKU0dsb2JhbE9iamVjdDo6cGVyVGhyZWFkRGF0
YSk6IEFuIGFjY2Vzc29yIGZvciBwZXItdGhyZWFkIGRhdGEuCisKKyAgICAgICAgKiBranMvRXhl
Y1N0YXRlLmNwcDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpFeGVjU3RhdGUpOgorICAgICAg
ICAqIGtqcy9FeGVjU3RhdGUuaDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpwcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjplbXB0eUxpc3QpOgorICAgICAgICAoS0pT
OjpFeGVjU3RhdGU6OmFycmF5VGFibGUpOgorICAgICAgICAoS0pTOjpFeGVjU3RhdGU6OmRhdGVU
YWJsZSk6CisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6bWF0aFRhYmxlKToKKyAgICAgICAgKEtK
Uzo6RXhlY1N0YXRlOjpudW1iZXJUYWJsZSk6CisgICAgICAgIChLSlM6OkV4ZWNTdGF0ZTo6UmVn
RXhwSW1wVGFibGUpOgorICAgICAgICAoS0pTOjpFeGVjU3RhdGU6OlJlZ0V4cE9iamVjdEltcFRh
YmxlKToKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpzdHJpbmdUYWJsZSk6CisgICAgICAgICog
a2pzL0V4ZWNTdGF0ZUlubGluZXMuaDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpFeGVjU3Rh
dGUpOgorICAgICAgICBFYWNoIEV4ZWNTdGF0ZSBob2xkcyBpdHMgb3duIHJlZmVyZW5jZSB0byBw
ZXItdGhyZWFkIGRhdGEsIGZvciBldmVuIGZhc3RlciBhY2Nlc3MuIE1vdmVkCisgICAgICAgIG1f
ZW1wdHlMaXN0IGFuZCBtX3Byb3BlcnR5TmFtZXMgdG8gdGhlIHNhbWUgc3RydWN0dXJlLCBtYWtp
bmcgRXhlY1N0YXRlIGZhc3RlciB0byBjb25zdHJ1Y3QKKyAgICAgICAgYW5kIHRha2UgbGVzcyBz
cGFjZSBvbiB0aGUgc3RhY2suCisKKyAgICAgICAgKiBranMvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHA6IChLSlM6OmluaXRpYWxpemVUaHJlYWRpbmcpOiBJbml0aWFsaXplIHRocmVhZC1zdGF0aWMg
ZGF0YQorICAgICAgICBhZGRlZCB0byBKU0dsb2JhbE9iamVjdC4KKworICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAqIEFQ
SS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAqIEFQ
SS9KU0NhbGxiYWNrT2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisgICAgICAgICoga2pzL0pTVmFyaWFibGVPYmplY3QuY3BwOgorICAg
ICAgICAoS0pTOjpKU1ZhcmlhYmxlT2JqZWN0OjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMpOgorICAg
ICAgICAqIGtqcy9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICoga2pzL2FycmF5X2luc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKiBranMvYXJyYXlfb2JqZWN0LmNw
cDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6QXJyYXlQcm90b3R5cGU6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICoga2pzL2Jvb2xfb2JqZWN0LmNwcDoKKyAgICAgICAg
KEtKUzo6KToKKyAgICAgICAgKiBranMvY3JlYXRlX2hhc2hfdGFibGU6CisgICAgICAgICoga2pz
L2RhdGVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6RGF0ZVBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEtKUzo6RGF0ZU9iamVjdElt
cDo6RGF0ZU9iamVjdEltcCk6CisgICAgICAgICoga2pzL2Vycm9yX29iamVjdC5jcHA6CisgICAg
ICAgIChLSlM6Oik6CisgICAgICAgICoga2pzL2Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEtKUzo6
KToKKyAgICAgICAgKiBranMvZnVuY3Rpb25fb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6RnVu
Y3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBranMvaW50ZXJu
YWwuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAqIGtqcy9sb29rdXAuaDoKKyAgICAg
ICAgKiBranMvbWF0aF9vYmplY3QuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAoS0pT
OjpNYXRoT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9udW1i
ZXJfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6TnVtYmVyT2Jq
ZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9vYmplY3Rfb2JqZWN0
LmNwcDoKKyAgICAgICAgKEtKUzo6T2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUpOgor
ICAgICAgICAqIGtqcy9yZWdleHBfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAg
ICAgKEtKUzo6UmVnRXhwUHJvdG90eXBlOjpSZWdFeHBQcm90b3R5cGUpOgorICAgICAgICAoS0pT
OjpSZWdFeHBJbXA6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OlJlZ0V4cElt
cDo6cHV0KToKKyAgICAgICAgKEtKUzo6UmVnRXhwT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoS0pTOjpSZWdFeHBPYmplY3RJbXA6OnB1dCk6CisgICAgICAgICoga2pz
L3N0cmluZ19vYmplY3QuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAoS0pTOjpTdHJp
bmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIEFkanVzdCBmb3IgdGhl
IGFib3ZlIGNoYW5nZXMuCisKIDIwMDgtMDQtMjcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgX19a
TjNLSlMxNEpTR2xvYmFsT2JqZWN0MTdwdXRXaXRoQXR0cmlidQogX19aTjNLSlMxNEpTR2xvYmFs
T2JqZWN0MTdzdGFydFRpbWVvdXRDaGVja0V2CiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3QxOGdl
dE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQ
cm9wZXJ0eVNsb3RFCiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRVBOU183SlNWYWx1ZUUKLV9fWk4zS0pTMTRKU0dsb2JhbE9iamVj
dDRpbml0RXYKK19fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCiBf
X1pOM0tKUzE0SlNHbG9iYWxPYmplY3Q0bWFya0V2CiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3Q1
cmVzZXRFUE5TXzdKU1ZhbHVlRQogX19aTjNLSlMxNEpTR2xvYmFsT2JqZWN0RDJFdgpAQCAtMTIw
LDYgKzEyMCw3IEBAIF9fWk4zS0pTMTRTdHJpbmdJbnN0YW5jZTRpbmZvRQogX19aTjNLSlMxNFN0
cmluZ0luc3RhbmNlQzFFUE5TXzhKU09iamVjdEVSS05TXzdVU3RyaW5nRQogX19aTjNLSlMxNFN0
cmluZ0luc3RhbmNlQzJFUE5TXzhKU09iamVjdEVSS05TXzdVU3RyaW5nRQogX19aTjNLSlMxNUds
b2JhbEV4ZWNTdGF0ZUMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU184SlNPYmplY3RFCitfX1pO
M0tKUzE1R2xvYmFsRXhlY1N0YXRlRDFFdgogX19aTjNLSlMxNUpTV3JhcHBlck9iamVjdDRtYXJr
RXYKIF9fWk4zS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MTZnZXRQ
cm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RQpAQCAt
MjM3LDcgKzIzOCw3IEBAIF9fWk5LM0tKUzEzQXJyYXlJbnN0YW5jZTdnZXRJdGVtRWoKIF9fWk5L
M0tKUzE0SlNHbG9iYWxPYmplY3QxNGlzRHluYW1pY1Njb3BlRXYKIF9fWk5LM0tKUzE0SlNHbG9i
YWxPYmplY3QxNHRvR2xvYmFsT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTkszS0pTMTZKU1Zh
cmlhYmxlT2JqZWN0MTZpc1ZhcmlhYmxlT2JqZWN0RXYKLV9fWk5LM0tKUzE2SlNWYXJpYWJsZU9i
amVjdDIxZ2V0UHJvcGVydHlBdHRyaWJ1dGVzRVJLTlNfMTBJZGVudGlmaWVyRVJqCitfX1pOSzNL
SlMxNkpTVmFyaWFibGVPYmplY3QyMWdldFByb3BlcnR5QXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVSagogX19aTkszS0pTMTlJbnRlcm5hbEZ1bmN0aW9uSW1wMTRp
bXBsZW1lbnRzQ2FsbEV2CiBfX1pOSzNLSlMxOUludGVybmFsRnVuY3Rpb25JbXAyMWltcGxlbWVu
dHNIYXNJbnN0YW5jZUV2CiBfX1pOSzNLSlM0TGlzdDhnZXRTbGljZUVpUlMwXwpAQCAtMjY2LDcg
KzI2Nyw3IEBAIF9fWk5LM0tKUzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXgKIF9fWk5L
M0tKUzhKU09iamVjdDE0aW1wbGVtZW50c0NhbGxFdgogX19aTkszS0pTOEpTT2JqZWN0MTR0b0ds
b2JhbE9iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0tKUzhKU09iamVjdDE5aW1wbGVtZW50
c0NvbnN0cnVjdEV2Ci1fX1pOSzNLSlM4SlNPYmplY3QyMWdldFByb3BlcnR5QXR0cmlidXRlc0VS
S05TXzEwSWRlbnRpZmllckVSagorX19aTkszS0pTOEpTT2JqZWN0MjFnZXRQcm9wZXJ0eUF0dHJp
YnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUmoKIF9fWk5LM0tKUzhKU09i
amVjdDIxaW1wbGVtZW50c0hhc0luc3RhbmNlRXYKIF9fWk5LM0tKUzhKU09iamVjdDNnZXRFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOSzNLSlM4SlNPYmplY3QzZ2V0RVBO
U185RXhlY1N0YXRlRWoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAK
IG5hbWVzcGFjZSBLSlMgewogCi1jb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja0NvbnN0cnVjdG9y
OjppbmZvID0geyAiQ2FsbGJhY2tDb25zdHJ1Y3RvciIsIDAsIDB9OworY29uc3QgQ2xhc3NJbmZv
IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIkNhbGxiYWNrQ29uc3RydWN0b3IiLCAw
LCAwLCAwIH07CiAKIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxsYmFja0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0
cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgOiBKU09iamVjdChleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKQpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrRnVu
Y3Rpb246OmluZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb25JbXA6
OmluZm8sIDB9OworY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tGdW5jdGlvbjo6aW5mbyA9IHsg
IkNhbGxiYWNrRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywgMCwgMCB9Owog
CiBKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSkKICAgICA6IEludGVybmFsRnVuY3Rpb25JbXAoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5mdW5jdGlvblByb3RvdHlwZSgpLCBuYW1lKQpJbmRleDogSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDgg
QEAKIG5hbWVzcGFjZSBLSlMgewogCiAvLyBEZWZpbmUgdGhlIHR3byB0eXBlcyBvZiBKU0NhbGxi
YWNrT2JqZWN0cyB3ZSBzdXBwb3J0LgotdGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNPYmplY3Q+OjppbmZvID0geyAiQ2FsbGJhY2tPYmplY3QiLCAwLCAwIH07
Ci10ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9i
amVjdD46OmluZm8gPSB7ICJDYWxsYmFja0dsb2JhbE9iamVjdCIsIDAsIDAgfTsKK3RlbXBsYXRl
IDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0Pjo6aW5mbyA9IHsg
IkNhbGxiYWNrT2JqZWN0IiwgMCwgMCwgMCB9OwordGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZv
IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjppbmZvID0geyAiQ2FsbGJhY2tHbG9i
YWxPYmplY3QiLCAwLCAwLCAwIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0PikgPD0gQ0VMTF9TSVpFLCBnbG9iYWxfY2FsbGJhY2tfb2Jq
ZWN0X2ZpdHNfaW5fY2VsbCk7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuY3BwCShyZXZp
c2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywyMSArMzMsMTQgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKLXN0YXRpYyBp
bmxpbmUgTGlzdCogZ2xvYmFsRW1wdHlMaXN0KCkKLXsKLSAgICBzdGF0aWMgTGlzdCBzdGF0aWNF
bXB0eUxpc3Q7Ci0gICAgcmV0dXJuICZzdGF0aWNFbXB0eUxpc3Q7Ci19Ci0KIC8vIEVDTUEgMTAu
MgogCiAvLyBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBnbG9iYWxFeGVjIHBzZXVkby1FeGVjU3Rh
dGUKIGlubGluZSBFeGVjU3RhdGU6OkV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogdGhpc09iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkKICAgICAsIG1fZXhjZXB0aW9uKDApCi0gICAgLCBtX3Byb3BlcnR5TmFtZXMoQ29tbW9u
SWRlbnRpZmllcnM6OnNoYXJlZCgpKQotICAgICwgbV9lbXB0eUxpc3QoZ2xvYmFsRW1wdHlMaXN0
KCkpCiAgICAgLCBtX2NhbGxpbmdFeGVjKDApCisgICAgLCBtX3BlclRocmVhZERhdGEoZ2xvYmFs
T2JqZWN0LT5wZXJUaHJlYWREYXRhKCkpCiAgICAgLCBtX3Njb3BlTm9kZSgwKQogICAgICwgbV9m
dW5jdGlvbigwKQogICAgICwgbV9hcmd1bWVudHMoMCkKQEAgLTY3LDkgKzYwLDggQEAgaW5saW5l
IEV4ZWNTdGF0ZTo6RXhlY1N0YXRlKEpTR2xvYmFsT2JqZQogaW5saW5lIEV4ZWNTdGF0ZTo6RXhl
Y1N0YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QpCiAgICAgLCBtX2V4Y2VwdGlvbigwKQotICAgICwgbV9wcm9wZXJ0eU5hbWVzKENvbW1v
bklkZW50aWZpZXJzOjpzaGFyZWQoKSkKLSAgICAsIG1fZW1wdHlMaXN0KGdsb2JhbEVtcHR5TGlz
dCgpKQogICAgICwgbV9jYWxsaW5nRXhlYygwKQorICAgICwgbV9wZXJUaHJlYWREYXRhKGdsb2Jh
bE9iamVjdC0+cGVyVGhyZWFkRGF0YSgpKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUp
CiAgICAgLCBtX2Z1bmN0aW9uKDApCiAgICAgLCBtX2FyZ3VtZW50cygwKQpAQCAtOTAsOSArODIs
OCBAQCBpbmxpbmUgRXhlY1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplCiBpbmxpbmUgRXhl
Y1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IHRoaXNPYmplY3QsIEV2YWxOb2RlKiBldmFsTm9kZSwgRXhlY1N0YXRlKiBjYWxsaW5nRXhlYywg
Y29uc3QgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbiwgSlNWYXJpYWJsZU9iamVjdCogdmFyaWFibGVP
YmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX2V4Y2Vw
dGlvbigwKQotICAgICwgbV9wcm9wZXJ0eU5hbWVzKGNhbGxpbmdFeGVjLT5tX3Byb3BlcnR5TmFt
ZXMpCi0gICAgLCBtX2VtcHR5TGlzdChjYWxsaW5nRXhlYy0+bV9lbXB0eUxpc3QpCiAgICAgLCBt
X2NhbGxpbmdFeGVjKGNhbGxpbmdFeGVjKQorICAgICwgbV9wZXJUaHJlYWREYXRhKGNhbGxpbmdF
eGVjLT5tX3BlclRocmVhZERhdGEpCiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKICAgICAs
IG1fZnVuY3Rpb24oMCkKICAgICAsIG1fYXJndW1lbnRzKDApCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNT
dGF0ZS5oCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAg
Y2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZTsKICAgICBjbGFzcyBGdW5jdGlvbkltcDsKICAgICBjbGFz
cyBHbG9iYWxGdW5jSW1wOworICAgIHN0cnVjdCBIYXNoVGFibGU7CiAgICAgY2xhc3MgSW50ZXJw
cmV0ZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNWYXJpYWJsZU9i
amVjdDsKQEAgLTQ2LDYgKzQ3LDE5IEBAIG5hbWVzcGFjZSBLSlMgIHsKICAgICAKICAgICBlbnVt
IENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9OwogCisgICAg
c3RydWN0IFBlclRocmVhZERhdGEgeworICAgICAgICBjb25zdCBIYXNoVGFibGUqIGFycmF5VGFi
bGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogZGF0ZVRhYmxlOworICAgICAgICBjb25zdCBI
YXNoVGFibGUqIG1hdGhUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJUYWJs
ZTsKKyAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBSZWdFeHBJbXBUYWJsZTsKKyAgICAgICAgY29u
c3QgSGFzaFRhYmxlKiBSZWdFeHBPYmplY3RJbXBUYWJsZTsKKyAgICAgICAgY29uc3QgSGFzaFRh
YmxlKiBzdHJpbmdUYWJsZTsKKworICAgICAgICBDb21tb25JZGVudGlmaWVycyogcHJvcGVydHlO
YW1lczsKKyAgICAgICAgY29uc3QgTGlzdCBlbXB0eUxpc3Q7CisgICAgfTsKKwogICAgIC8vIFJl
cHJlc2VudHMgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2NyaXB0IGV4ZWN1dGlvbi4KICAgICAvLyBQ
YXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgogICAgIGNsYXNz
IEV4ZWNTdGF0ZSA6IE5vbmNvcHlhYmxlIHsKQEAgLTk2LDggKzExMCwxNSBAQCBuYW1lc3BhY2Ug
S0pTICB7CiAKICAgICAgICAgLy8gVGhlc2UgcG9pbnRlcnMgYXJlIHVzZWQgdG8gYXZvaWQgYWNj
ZXNzaW5nIGdsb2JhbCB2YXJpYWJsZXMgZm9yIHRoZXNlLAogICAgICAgICAvLyB0byBhdm9pZCB0
YWtpbmcgUElDIGJyYW5jaGVzIGluIE1hY2gtTyBiaW5hcmllcy4KLSAgICAgICAgY29uc3QgQ29t
bW9uSWRlbnRpZmllcnMmIHByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiAqbV9wcm9wZXJ0
eU5hbWVzOyB9Ci0gICAgICAgIGNvbnN0IExpc3QmIGVtcHR5TGlzdCgpIGNvbnN0IHsgcmV0dXJu
ICptX2VtcHR5TGlzdDsgfQorICAgICAgICBjb25zdCBDb21tb25JZGVudGlmaWVycyYgcHJvcGVy
dHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuICptX3BlclRocmVhZERhdGEtPnByb3BlcnR5TmFtZXM7
IH0KKyAgICAgICAgY29uc3QgTGlzdCYgZW1wdHlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9wZXJU
aHJlYWREYXRhLT5lbXB0eUxpc3Q7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSog
YXJyYXlUYWJsZShFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIGV4ZWMtPm1fcGVyVGhyZWFkRGF0
YS0+YXJyYXlUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBkYXRlVGFi
bGUoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBleGVjLT5tX3BlclRocmVhZERhdGEtPmRhdGVU
YWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBtYXRoVGFibGUoRXhlY1N0
YXRlKiBleGVjKSB7IHJldHVybiBleGVjLT5tX3BlclRocmVhZERhdGEtPm1hdGhUYWJsZTsgfQor
ICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJUYWJsZShFeGVjU3RhdGUqIGV4
ZWMpIHsgcmV0dXJuIGV4ZWMtPm1fcGVyVGhyZWFkRGF0YS0+bnVtYmVyVGFibGU7IH0KKyAgICAg
ICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogUmVnRXhwSW1wVGFibGUoRXhlY1N0YXRlKiBleGVj
KSB7IHJldHVybiBleGVjLT5tX3BlclRocmVhZERhdGEtPlJlZ0V4cEltcFRhYmxlOyB9CisgICAg
ICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIFJlZ0V4cE9iamVjdEltcFRhYmxlKEV4ZWNTdGF0
ZSogZXhlYykgeyByZXR1cm4gZXhlYy0+bV9wZXJUaHJlYWREYXRhLT5SZWdFeHBPYmplY3RJbXBU
YWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdUYWJsZShFeGVj
U3RhdGUqIGV4ZWMpIHsgcmV0dXJuIGV4ZWMtPm1fcGVyVGhyZWFkRGF0YS0+c3RyaW5nVGFibGU7
IH0KIAogICAgICAgICBMb2NhbFN0b3JhZ2UmIGxvY2FsU3RvcmFnZSgpIHsgcmV0dXJuICptX2xv
Y2FsU3RvcmFnZTsgfQogICAgICAgICB2b2lkIHNldExvY2FsU3RvcmFnZShMb2NhbFN0b3JhZ2Uq
IHMpIHsgbV9sb2NhbFN0b3JhZ2UgPSBzOyB9CkBAIC0xNzYsMTEgKzE5NywxMSBAQCBuYW1lc3Bh
Y2UgS0pTICB7CiAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0OwogICAg
ICAgICBKU1ZhbHVlKiBtX2V4Y2VwdGlvbjsKLSAgICAgICAgQ29tbW9uSWRlbnRpZmllcnMqIG1f
cHJvcGVydHlOYW1lczsKLSAgICAgICAgY29uc3QgTGlzdCogbV9lbXB0eUxpc3Q7CiAKICAgICAg
ICAgRXhlY1N0YXRlKiBtX2NhbGxpbmdFeGVjOwogCisgICAgICAgIGNvbnN0IFBlclRocmVhZERh
dGEqIG1fcGVyVGhyZWFkRGF0YTsKKwogICAgICAgICBTY29wZU5vZGUqIG1fc2NvcGVOb2RlOwog
ICAgICAgICAKICAgICAgICAgRnVuY3Rpb25JbXAqIG1fZnVuY3Rpb247CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvRXhlY1N0YXRlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9FeGVjU3RhdGVJbmxpbmVzLmgJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlw
dENvcmUva2pzL0V4ZWNTdGF0ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUs
OCBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1
bmN0aW9uSW1wKiBmdW5jLCBjb25zdCBMaXN0JiBhcmdzKQogICAgICAgICA6IG1fZ2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdCkKICAgICAgICAgLCBtX2V4Y2VwdGlvbigwKQotICAgICAgICAsIG1f
cHJvcGVydHlOYW1lcyhjYWxsaW5nRXhlYy0+bV9wcm9wZXJ0eU5hbWVzKQotICAgICAgICAsIG1f
ZW1wdHlMaXN0KGNhbGxpbmdFeGVjLT5tX2VtcHR5TGlzdCkKICAgICAgICAgLCBtX2NhbGxpbmdF
eGVjKGNhbGxpbmdFeGVjKQorICAgICAgICAsIG1fcGVyVGhyZWFkRGF0YShjYWxsaW5nRXhlYy0+
bV9wZXJUaHJlYWREYXRhKQogICAgICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uQm9keU5vZGUp
CiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jKQogICAgICAgICAsIG1fYXJndW1lbnRzKCZhcmdz
KQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2
aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEYXRlTWF0aC5o
IgogI2luY2x1ZGUgImR0b2EuaCIKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJsZXhlci5oIgogI2luY2x1ZGUgIlBhcnNlci5o
IgogI2luY2x1ZGUgInVzdHJpbmcuaCIKQEAgLTU0LDYgKzU1LDcgQEAgdm9pZCBpbml0aWFsaXpl
VGhyZWFkaW5nKCkKICAgICAgICAgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpOwogICAgICAg
ICBsZXhlcigpOwogICAgICAgICBpbml0RGF0ZU1hdGgoKTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3Q6OnRocmVhZENsYXNzSW5mb0hhc2hUYWJsZXMoKTsKICAgICB9CiAjZW5kaWYKIH0KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCwxMSBAQAogI2luY2x1ZGUgInNjb3BlX2NoYWluX21hcmsuaCIKICNpbmNsdWRlICJz
dHJpbmdfb2JqZWN0LmgiCiAKKyNpZiBVU0UoTVVMVElQTEVfVEhSRUFEUykKKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU3BlY2lmaWMuaD4KK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisjZW5kaWYKKwogI2lm
IEhBVkUoU1lTX1RJTUVfSCkKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2VuZGlmCkBAIC01OCw2
ICs2MywxNCBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAorZXh0ZXJuIEhhc2hUYWJsZSBhcnJheVRh
YmxlOworZXh0ZXJuIEhhc2hUYWJsZSBkYXRlVGFibGU7CitleHRlcm4gSGFzaFRhYmxlIG1hdGhU
YWJsZTsKK2V4dGVybiBIYXNoVGFibGUgbnVtYmVyVGFibGU7CitleHRlcm4gSGFzaFRhYmxlIFJl
Z0V4cEltcFRhYmxlOworZXh0ZXJuIEhhc2hUYWJsZSBSZWdFeHBPYmplY3RJbXBUYWJsZTsKK2V4
dGVybiBIYXNoVGFibGUgc3RyaW5nVGFibGU7CisKIC8vIERlZmF1bHQgbnVtYmVyIG9mIHRpY2tz
IGJlZm9yZSBhIHRpbWVvdXQgY2hlY2sgc2hvdWxkIGJlIGRvbmUuCiBzdGF0aWMgY29uc3QgaW50
IGluaXRpYWxUaWNrQ291bnRUaHJlc2hvbGQgPSAyNTU7CiAKQEAgLTExOCw3ICsxMzEsNjIgQEAg
SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpCiAgICAgZGVsZXRlIGQoKTsKIH0KIAot
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdCgpCitzdHJ1Y3QgVGhyZWFkQ2xhc3NJbmZvSGFzaFRh
YmxlcyB7CisgICAgVGhyZWFkQ2xhc3NJbmZvSGFzaFRhYmxlcygpCisgICAgICAgIDogYXJyYXlU
YWJsZShLSlM6OmFycmF5VGFibGUpCisgICAgICAgICwgZGF0ZVRhYmxlKEtKUzo6ZGF0ZVRhYmxl
KQorICAgICAgICAsIG1hdGhUYWJsZShLSlM6Om1hdGhUYWJsZSkKKyAgICAgICAgLCBudW1iZXJU
YWJsZShLSlM6Om51bWJlclRhYmxlKQorICAgICAgICAsIFJlZ0V4cEltcFRhYmxlKEtKUzo6UmVn
RXhwSW1wVGFibGUpCisgICAgICAgICwgUmVnRXhwT2JqZWN0SW1wVGFibGUoS0pTOjpSZWdFeHBP
YmplY3RJbXBUYWJsZSkKKyAgICAgICAgLCBzdHJpbmdUYWJsZShLSlM6OnN0cmluZ1RhYmxlKQor
ICAgIHsKKyAgICB9CisKKyAgICB+VGhyZWFkQ2xhc3NJbmZvSGFzaFRhYmxlcygpCisgICAgewor
I2lmIFVTRShNVUxUSVBMRV9USFJFQURTKQorICAgICAgICBkZWxldGVbXSBhcnJheVRhYmxlLnRh
YmxlOworICAgICAgICBkZWxldGVbXSBkYXRlVGFibGUudGFibGU7CisgICAgICAgIGRlbGV0ZVtd
IG1hdGhUYWJsZS50YWJsZTsKKyAgICAgICAgZGVsZXRlW10gbnVtYmVyVGFibGUudGFibGU7Cisg
ICAgICAgIGRlbGV0ZVtdIFJlZ0V4cEltcFRhYmxlLnRhYmxlOworICAgICAgICBkZWxldGVbXSBS
ZWdFeHBPYmplY3RJbXBUYWJsZS50YWJsZTsKKyAgICAgICAgZGVsZXRlW10gc3RyaW5nVGFibGUu
dGFibGU7CisjZW5kaWYKKyAgICB9CisKKyNpZiBVU0UoTVVMVElQTEVfVEhSRUFEUykKKyAgICBI
YXNoVGFibGUgYXJyYXlUYWJsZTsKKyAgICBIYXNoVGFibGUgZGF0ZVRhYmxlOworICAgIEhhc2hU
YWJsZSBtYXRoVGFibGU7CisgICAgSGFzaFRhYmxlIG51bWJlclRhYmxlOworICAgIEhhc2hUYWJs
ZSBSZWdFeHBJbXBUYWJsZTsKKyAgICBIYXNoVGFibGUgUmVnRXhwT2JqZWN0SW1wVGFibGU7Cisg
ICAgSGFzaFRhYmxlIHN0cmluZ1RhYmxlOworI2Vsc2UKKyAgICBIYXNoVGFibGUmIGFycmF5VGFi
bGU7CisgICAgSGFzaFRhYmxlJiBkYXRlVGFibGU7CisgICAgSGFzaFRhYmxlJiBtYXRoVGFibGU7
CisgICAgSGFzaFRhYmxlJiBudW1iZXJUYWJsZTsKKyAgICBIYXNoVGFibGUmIFJlZ0V4cEltcFRh
YmxlOworICAgIEhhc2hUYWJsZSYgUmVnRXhwT2JqZWN0SW1wVGFibGU7CisgICAgSGFzaFRhYmxl
JiBzdHJpbmdUYWJsZTsKKyNlbmRpZgorfTsKKworVGhyZWFkQ2xhc3NJbmZvSGFzaFRhYmxlcyog
SlNHbG9iYWxPYmplY3Q6OnRocmVhZENsYXNzSW5mb0hhc2hUYWJsZXMoKQoreworI2lmIFVTRShN
VUxUSVBMRV9USFJFQURTKQorICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxUaHJlYWRDbGFzc0lu
Zm9IYXNoVGFibGVzPiBzaGFyZWRJbnN0YW5jZTsKKyAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7
CisjZWxzZQorICAgIHN0YXRpYyBUaHJlYWRDbGFzc0luZm9IYXNoVGFibGVzIHNoYXJlZEluc3Rh
bmNlOworICAgIHJldHVybiAmc2hhcmVkSW5zdGFuY2U7CisjZW5kaWYKK30KKwordm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChKU09iamVjdCogdGhpc1ZhbHVlKQogewogICAgIEFTU0VSVChKU0xv
Y2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwogCkBAIC0xNDIsNiArMjEwLDE3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoKQogICAgIGQoKS0+YWN0aXZhdGlvbnMgPSBuZXdT
dGFja05vZGU7CiAgICAgZCgpLT5hY3RpdmF0aW9uQ291bnQgPSAwOwogCisgICAgZCgpLT5wZXJU
aHJlYWREYXRhLmFycmF5VGFibGUgPSAmdGhyZWFkQ2xhc3NJbmZvSGFzaFRhYmxlcygpLT5hcnJh
eVRhYmxlOworICAgIGQoKS0+cGVyVGhyZWFkRGF0YS5kYXRlVGFibGUgPSAmdGhyZWFkQ2xhc3NJ
bmZvSGFzaFRhYmxlcygpLT5kYXRlVGFibGU7CisgICAgZCgpLT5wZXJUaHJlYWREYXRhLm1hdGhU
YWJsZSA9ICZ0aHJlYWRDbGFzc0luZm9IYXNoVGFibGVzKCktPm1hdGhUYWJsZTsKKyAgICBkKCkt
PnBlclRocmVhZERhdGEubnVtYmVyVGFibGUgPSAmdGhyZWFkQ2xhc3NJbmZvSGFzaFRhYmxlcygp
LT5udW1iZXJUYWJsZTsKKyAgICBkKCktPnBlclRocmVhZERhdGEuUmVnRXhwSW1wVGFibGUgPSAm
dGhyZWFkQ2xhc3NJbmZvSGFzaFRhYmxlcygpLT5SZWdFeHBJbXBUYWJsZTsKKyAgICBkKCktPnBl
clRocmVhZERhdGEuUmVnRXhwT2JqZWN0SW1wVGFibGUgPSAmdGhyZWFkQ2xhc3NJbmZvSGFzaFRh
YmxlcygpLT5SZWdFeHBPYmplY3RJbXBUYWJsZTsKKyAgICBkKCktPnBlclRocmVhZERhdGEuc3Ry
aW5nVGFibGUgPSAmdGhyZWFkQ2xhc3NJbmZvSGFzaFRhYmxlcygpLT5zdHJpbmdUYWJsZTsKKyAg
ICBkKCktPnBlclRocmVhZERhdGEucHJvcGVydHlOYW1lcyA9IENvbW1vbklkZW50aWZpZXJzOjpz
aGFyZWQoKTsKKworICAgIGQoKS0+Z2xvYmFsRXhlYy5zZXQobmV3IEdsb2JhbEV4ZWNTdGF0ZSh0
aGlzLCB0aGlzVmFsdWUpKTsKKwogICAgIGQoKS0+cGFnZUdyb3VwSWRlbnRpZmllciA9IDA7CiAK
ICAgICByZXNldChwcm90b3R5cGUoKSk7CkBAIC0yMzEsNyArMzEwLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6cmVzZXQoSlNWYWx1ZSogcHJvdAogCiAgICAgZCgpLT5ldmFsRnVuY3Rpb24gPSAw
OwogCi0gICAgRXhlY1N0YXRlKiBleGVjID0gJmQoKS0+Z2xvYmFsRXhlYzsKKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBkKCktPmdsb2JhbEV4ZWMuZ2V0KCk7CiAKICAgICAvLyBQcm90b3R5cGVzCiAg
ICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZSA9IG5ldyBGdW5jdGlvblByb3RvdHlwZShleGVjKTsK
QEAgLTQxOCw3ICs0OTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrKCkKICAgICBmb3Ig
KEV4ZWNTdGF0ZVN0YWNrOjpjb25zdF9pdGVyYXRvciBpdCA9IGQoKS0+YWN0aXZlRXhlY1N0YXRl
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5tX3Njb3BlQ2hhaW4u
bWFyaygpOwogCi0gICAgbWFya0lmTmVlZGVkKGQoKS0+Z2xvYmFsRXhlYy5leGNlcHRpb24oKSk7
CisgICAgbWFya0lmTmVlZGVkKGQoKS0+Z2xvYmFsRXhlYy0+ZXhjZXB0aW9uKCkpOwogCiAgICAg
bWFya0lmTmVlZGVkKGQoKS0+b2JqZWN0Q29uc3RydWN0b3IpOwogICAgIG1hcmtJZk5lZWRlZChk
KCktPmZ1bmN0aW9uQ29uc3RydWN0b3IpOwpAQCAtNDYyLDcgKzU0MSw3IEBAIEpTR2xvYmFsT2Jq
ZWN0KiBKU0dsb2JhbE9iamVjdDo6dG9HbG9iYWwKIAogRXhlY1N0YXRlKiBKU0dsb2JhbE9iamVj
dDo6Z2xvYmFsRXhlYygpCiB7Ci0gICAgcmV0dXJuICZkKCktPmdsb2JhbEV4ZWM7CisgICAgcmV0
dXJuIGQoKS0+Z2xvYmFsRXhlYy5nZXQoKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6dGVh
ck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjLCBib29sIGxlYXZlUmVsaWMpCkBAIC00OTIs
NCArNTcxLDUgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6aXNEeW5hbWljU2NvcGUoKSBjbwogICAg
IHJldHVybiB0cnVlOwogfQogCisKIH0gLy8gbmFtZXNwYWNlIEtKUwpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgY2xhc3MgRXZhbEVycm9yUHJvdG90eXBlOwogICAgIGNsYXNzIEZ1
bmN0aW9uT2JqZWN0SW1wOwogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOworICAgIHN0cnVj
dCBIYXNoVGFibGU7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTmF0aXZl
RXJyb3JJbXA7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90b3R5cGU7CkBAIC02Nyw2ICs2OCw3
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGNsYXNzIFVyaUVycm9yOwogICAgIGNsYXNzIFVyaUVy
cm9yUHJvdG90eXBlOwogICAgIHN0cnVjdCBBY3RpdmF0aW9uU3RhY2tOb2RlOworICAgIHN0cnVj
dCBUaHJlYWRDbGFzc0luZm9IYXNoVGFibGVzOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8RXhlY1N0
YXRlKiwgMTY+IEV4ZWNTdGF0ZVN0YWNrOwogCkBAIC03NSw5ICs3Nyw4IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgICAgICB1c2luZyBKU1ZhcmlhYmxlT2JqZWN0OjpKU1ZhcmlhYmxlT2JqZWN0RGF0
YTsKIAogICAgICAgICBzdHJ1Y3QgSlNHbG9iYWxPYmplY3REYXRhIDogcHVibGljIEpTVmFyaWFi
bGVPYmplY3REYXRhIHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0RGF0YShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGhpc1ZhbHVlKQorICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3REYXRhKCkKICAgICAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3REYXRh
KCZpbmxpbmVTeW1ib2xUYWJsZSkKLSAgICAgICAgICAgICAgICAsIGdsb2JhbEV4ZWMoZ2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICB9CiAKQEAgLTg2
LDcgKzg3LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICAgICAgICAgIERlYnVnZ2VyKiBkZWJ1
Z2dlcjsKICAgICAgICAgICAgIAotICAgICAgICAgICAgR2xvYmFsRXhlY1N0YXRlIGdsb2JhbEV4
ZWM7CisgICAgICAgICAgICBPd25QdHI8R2xvYmFsRXhlY1N0YXRlPiBnbG9iYWxFeGVjOwogICAg
ICAgICAgICAgaW50IHJlY3Vyc2lvbjsKIAogICAgICAgICAgICAgdW5zaWduZWQgdGltZW91dFRp
bWU7CkBAIC0xNDAsMjAgKzE0MSwyMiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICAgIHVu
c2lnbmVkIHBhZ2VHcm91cElkZW50aWZpZXI7CiAKICAgICAgICAgICAgIE93blB0cjxIYXNoU2V0
PEpTT2JqZWN0Kj4gPiBhcnJheVZpc2l0ZWRFbGVtZW50czsgLy8gR2xvYmFsIGRhdGEgc2hhcmVk
IGJ5IGFycmF5IHByb3RvdHlwZSBmdW5jdGlvbnMuCisKKyAgICAgICAgICAgIFBlclRocmVhZERh
dGEgcGVyVGhyZWFkRGF0YTsKICAgICAgICAgfTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgSlNH
bG9iYWxPYmplY3QoKQotICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KG5ldyBKU0dsb2Jh
bE9iamVjdERhdGEodGhpcywgdGhpcykpCisgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3Qo
bmV3IEpTR2xvYmFsT2JqZWN0RGF0YSkKICAgICAgICAgewotICAgICAgICAgICAgaW5pdCgpOwor
ICAgICAgICAgICAgaW5pdCh0aGlzKTsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICBKU0dsb2JhbE9iamVjdChKU1ZhbHVlKiBwcm90bywgSlNPYmplY3QqIGdsb2JhbFRoaXNW
YWx1ZSkKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChwcm90bywgbmV3IEpTR2xvYmFs
T2JqZWN0RGF0YSh0aGlzLCBnbG9iYWxUaGlzVmFsdWUpKQorICAgICAgICAgICAgOiBKU1Zhcmlh
YmxlT2JqZWN0KHByb3RvLCBuZXcgSlNHbG9iYWxPYmplY3REYXRhKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpbml0KCk7CisgICAgICAgICAgICBpbml0KGdsb2JhbFRoaXNWYWx1ZSk7CiAgICAg
ICAgIH0KIAogICAgIHB1YmxpYzoKQEAgLTI0Niw4ICsyNDksMTQgQEAgbmFtZXNwYWNlIEtKUyB7
CiAKICAgICAgICAgSGFzaFNldDxKU09iamVjdCo+JiBhcnJheVZpc2l0ZWRFbGVtZW50cygpIHsg
aWYgKCFkKCktPmFycmF5VmlzaXRlZEVsZW1lbnRzKSBkKCktPmFycmF5VmlzaXRlZEVsZW1lbnRz
LnNldChuZXcgSGFzaFNldDxKU09iamVjdCo+KTsgcmV0dXJuICpkKCktPmFycmF5VmlzaXRlZEVs
ZW1lbnRzOyB9CiAKKyAgICAgICAgLy8gUGVyLXRocmVhZCBoYXNoIHRhYmxlcywgY2FjaGVkIG9u
IHRoZSBnbG9iYWwgb2JqZWN0IGZvciBmYXN0ZXIgYWNjZXNzLgorICAgICAgICBjb25zdCBQZXJU
aHJlYWREYXRhKiBwZXJUaHJlYWREYXRhKCkgY29uc3QgeyByZXR1cm4gJmQoKS0+cGVyVGhyZWFk
RGF0YTsgfQorCisgICAgICAgIC8vIEluaXRpYWxpemUgYW5kL29yIHJldHJpZXZlIHBlci10aHJl
YWQgaGFzaCB0YWJsZXMgLSB1c2UgcGVyVGhyZWFkRGF0YSgpIGZvciBmYXN0ZXIgYWNjZXNzIGlu
c3RlYWQuCisgICAgICAgIHN0YXRpYyBUaHJlYWRDbGFzc0luZm9IYXNoVGFibGVzKiB0aHJlYWRD
bGFzc0luZm9IYXNoVGFibGVzKCk7CisKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGluaXQo
KTsKKyAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICAKICAg
ICAgICAgSlNHbG9iYWxPYmplY3REYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
SlNHbG9iYWxPYmplY3REYXRhKj4oSlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KIApJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL0pTVmFyaWFibGVPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU1ZhcmlhYmxlT2JqZWN0LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvSlNWYXJpYWJsZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDE0ICs1MywxNCBAQCB2b2lkIEpTVmFyaWFibGVPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMo
CiAgICAgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcyk7CiB9
CiAKLWJvb2wgSlNWYXJpYWJsZU9iamVjdDo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0Citib29s
IEpTVmFyaWFibGVPYmplY3Q6OmdldFByb3BlcnR5QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNv
bnN0CiB7CiAgICAgc2l6ZV90IGluZGV4ID0gc3ltYm9sVGFibGUoKS5nZXQocHJvcGVydHlOYW1l
LnVzdHJpbmcoKS5yZXAoKSk7CiAgICAgaWYgKGluZGV4ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIo
KSkgewogICAgICAgICBhdHRyaWJ1dGVzID0gbG9jYWxTdG9yYWdlKClbaW5kZXhdLmF0dHJpYnV0
ZXM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dFByb3BlcnR5QXR0cmlidXRlcyhwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgIHJldHVy
biBKU09iamVjdDo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKGV4ZWMsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcyk7CiB9CiAKIHZvaWQgSlNWYXJpYWJsZU9iamVjdDo6bWFyaygpCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNj
cmlwdENvcmUva2pzL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVP
YmplY3QoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzRHluYW1pY1Njb3BlKCkgY29u
c3QgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29u
c3Q7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIC8vIFN1YmNsYXNzZXMgb2YgSlNWYXJpYWJs
ZU9iamVjdCBjYW4gc3ViY2xhc3MgdGhpcyBzdHJ1Y3QgdG8gYWRkIGRhdGEKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9hcnJheV9pbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUva2pzL2FycmF5X2luc3RhbmNlLmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvYXJyYXlfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5EZW5zaXR5TXVsdGlwbGkKIAogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNvcHlpbmdTb3J0Q3V0b2ZmID0gNTAwMDA7CiAKLWNvbnN0IENsYXNz
SW5mbyBBcnJheUluc3RhbmNlOjppbmZvID0geyJBcnJheSIsIDAsIDB9OworY29uc3QgQ2xhc3NJ
bmZvIEFycmF5SW5zdGFuY2U6OmluZm8gPSB7IkFycmF5IiwgMCwgMCwgMH07CiAKIHN0YXRpYyBp
bmxpbmUgc2l6ZV90IHN0b3JhZ2VTaXplKHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKIHsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gQXJyYXlQcm90b3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBD
bGFzc0luZm8gQXJyYXlQcm90b3R5cGU6OmluZm8gPSB7IkFycmF5IiwgJkFycmF5SW5zdGFuY2U6
OmluZm8sICZhcnJheVRhYmxlfTsKK2NvbnN0IENsYXNzSW5mbyBBcnJheVByb3RvdHlwZTo6aW5m
byA9IHsiQXJyYXkiLCAmQXJyYXlJbnN0YW5jZTo6aW5mbywgMCwgRXhlY1N0YXRlOjphcnJheVRh
YmxlfTsKIAogLyogU291cmNlIGZvciBhcnJheV9vYmplY3QubHV0LmgKIEBiZWdpbiBhcnJheVRh
YmxlIDE2CkBAIC03Miw3ICs3Miw3IEBAIEFycmF5UHJvdG90eXBlOjpBcnJheVByb3RvdHlwZShF
eGVjU3RhdGUKIAogYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxBcnJheUluc3RhbmNl
PihleGVjLCAmYXJyYXlUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1
cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEFycmF5SW5zdGFuY2U+KGV4ZWMsIEV4ZWNTdGF0ZTo6
YXJyYXlUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvYm9vbF9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9ib29sX29iamVjdC5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNj
cmlwdENvcmUva2pzL2Jvb2xfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEJvb2xlYW5JbnN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xh
c3NJbmZvIEJvb2xlYW5JbnN0YW5jZTo6aW5mbyA9IHsgIkJvb2xlYW4iLCAwLCAwIH07Citjb25z
dCBDbGFzc0luZm8gQm9vbGVhbkluc3RhbmNlOjppbmZvID0geyAiQm9vbGVhbiIsIDAsIDAsIDAg
fTsKIAogQm9vbGVhbkluc3RhbmNlOjpCb29sZWFuSW5zdGFuY2UoSlNPYmplY3QqIHByb3RvKQog
ICAgIDogSlNXcmFwcGVyT2JqZWN0KHByb3RvKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2Ny
ZWF0ZV9oYXNoX3RhYmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jcmVhdGVf
aGFzaF90YWJsZQkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY3JlYXRl
X2hhc2hfdGFibGUJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBzdWIgb3V0cHV0
KCkgewogICAgIH0KICAgICBwcmludCAiICAgeyAwLCAwLCAwLCAwIH1cbiI7CiAgICAgcHJpbnQg
In07XG5cbiI7Ci0gICAgcHJpbnQgImNvbnN0IHN0cnVjdCBIYXNoVGFibGUgJG5hbWUgPSAiOwor
ICAgIHByaW50ICJleHRlcm4gY29uc3Qgc3RydWN0IEhhc2hUYWJsZSAkbmFtZSA9ICI7CiAgICAg
cHJpbnQgIlx7ICIsICRzaXplIC0gMSwgIiwgJG5hbWVFbnRyaWVzLCAwIFx9O1xuXG4iOwogICAg
IHByaW50ICJ9IC8vIG5hbWVzcGFjZVxuIjsKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9k
YXRlX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2RhdGVfb2Jq
ZWN0LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZGF0ZV9vYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIGJvb2wgZmls
bFN0cnVjdHVyZXNVc2luZ0RhdGVBcmdzKAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRGF0ZUluc3RhbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25z
dCBDbGFzc0luZm8gRGF0ZUluc3RhbmNlOjppbmZvID0geyJEYXRlIiwgMCwgMH07Citjb25zdCBD
bGFzc0luZm8gRGF0ZUluc3RhbmNlOjppbmZvID0geyJEYXRlIiwgMCwgMCwgMH07CiAKIERhdGVJ
bnN0YW5jZTo6RGF0ZUluc3RhbmNlKEpTT2JqZWN0ICpwcm90bykKICAgOiBKU1dyYXBwZXJPYmpl
Y3QocHJvdG8pCkBAIC00MTYsNyArNDE2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVGltZV90
U2lnbmVkKCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERhdGVQcm90b3R5
cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIERhdGVQ
cm90b3R5cGU6OmluZm8gPSB7IkRhdGUiLCAmRGF0ZUluc3RhbmNlOjppbmZvLCAmZGF0ZVRhYmxl
fTsKK2NvbnN0IENsYXNzSW5mbyBEYXRlUHJvdG90eXBlOjppbmZvID0geyJEYXRlIiwgJkRhdGVJ
bnN0YW5jZTo6aW5mbywgMCwgRXhlY1N0YXRlOjpkYXRlVGFibGV9OwogCiAvKiBTb3VyY2UgZm9y
IGRhdGVfb2JqZWN0Lmx1dC5oCiAgICBGSVhNRUwgV2UgY291bGQgdXNlIHRlbXBsYXRlcyB0byBz
aW1wbGlmeSB0aGUgVVRDIHZhcmlhbnRzLgpAQCAtNDc4LDcgKzQ3OCw3IEBAIERhdGVQcm90b3R5
cGU6OkRhdGVQcm90b3R5cGUoRXhlY1N0YXRlICoKIAogYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rp
b25TbG90PEpTT2JqZWN0PihleGVjLCAmZGF0ZVRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6ZGF0ZVRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGF0ZU9iamVjdEltcCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDg5LDggKzQ4OSw4IEBAIERhdGVPYmplY3RJ
bXA6OkRhdGVPYmplY3RJbXAoRXhlY1N0YXRlKiAKICAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1wKGZ1
bmNQcm90bywgZGF0ZVByb3RvLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKQogewogICBwdXREaXJl
Y3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZGF0ZVByb3RvLCBEb250RW51bXxE
b250RGVsZXRlfFJlYWRPbmx5KTsKLSAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IERhdGVPYmplY3RG
dW5jSW1wKGV4ZWMsIGZ1bmNQcm90bywgRGF0ZU9iamVjdEZ1bmNJbXA6OlBhcnNlLCAxLCBDb21t
b25JZGVudGlmaWVyczo6c2hhcmVkKCktPnBhcnNlKSwgRG9udEVudW0pOwotICBwdXREaXJlY3RG
dW5jdGlvbihuZXcgRGF0ZU9iamVjdEZ1bmNJbXAoZXhlYywgZnVuY1Byb3RvLCBEYXRlT2JqZWN0
RnVuY0ltcDo6VVRDLCA3LCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPlVUQyksIERvbnRF
bnVtKTsKKyAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IERhdGVPYmplY3RGdW5jSW1wKGV4ZWMsIGZ1
bmNQcm90bywgRGF0ZU9iamVjdEZ1bmNJbXA6OlBhcnNlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucGFyc2UpLCBEb250RW51bSk7CisgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBEYXRlT2JqZWN0
RnVuY0ltcChleGVjLCBmdW5jUHJvdG8sIERhdGVPYmplY3RGdW5jSW1wOjpVVEMsIDcsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5VVEMpLCBEb250RW51bSk7CiAgIHB1dERpcmVjdChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoLCA3LCBSZWFkT25seXxEb250RGVsZXRlfERvbnRFbnVtKTsKIH0K
IApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2Vycm9yX29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL2Vycm9yX29iamVjdC5jcHAJKHJldmlzaW9uIDMyNjM1KQor
KysgSmF2YVNjcmlwdENvcmUva2pzL2Vycm9yX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBFcnJvckluc3RhbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
Y29uc3QgQ2xhc3NJbmZvIEVycm9ySW5zdGFuY2U6OmluZm8gPSB7ICJFcnJvciIsIDAsIDAgfTsK
K2NvbnN0IENsYXNzSW5mbyBFcnJvckluc3RhbmNlOjppbmZvID0geyAiRXJyb3IiLCAwLCAwLCAw
IH07CiAKIEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNPYmplY3QqIHByb3RvdHlwZSkK
ICAgICA6IEpTT2JqZWN0KHByb3RvdHlwZSkKQEAgLTExNCw3ICsxMTQsNyBAQCBOYXRpdmVFcnJv
clByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBOYXRpdmVFcnJvckltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLWNvbnN0IENsYXNzSW5mbyBOYXRpdmVFcnJvckltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkludGVybmFsRnVuY3Rpb25JbXA6OmluZm8sIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBOYXRpdmVF
cnJvckltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb25JbXA6OmluZm8s
IDAsIDAgfTsKIAogTmF0aXZlRXJyb3JJbXA6Ok5hdGl2ZUVycm9ySW1wKEV4ZWNTdGF0ZSogZXhl
YywgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90bywgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHBy
b3QpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90bywgSWRlbnRpZmllcihwcm90
LT5nZXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUpLT5nZXRTdHJpbmcoKSkpCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlw
dENvcmUva2pzL2Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBu
YW1lc3BhY2UgS0pTIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rp
b25JbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0lu
Zm8gRnVuY3Rpb25JbXA6OmluZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1w
OjppbmZvLCAwIH07Citjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25JbXA6OmluZm8gPSB7ICJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwLCAwIH07CiAKIEZ1bmN0aW9uSW1w
OjpGdW5jdGlvbkltcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEZ1
bmN0aW9uQm9keU5vZGUqIGIsIGNvbnN0IFNjb3BlQ2hhaW4mIHNjKQogICA6IEludGVybmFsRnVu
Y3Rpb25JbXAoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblByb3RvdHlwZSgp
LCBuYW1lKQpAQCAtMjc5LDcgKzI3OSw3IEBAIElkZW50aWZpZXImIEluZGV4VG9OYW1lTWFwOjpv
cGVyYXRvcltdKGMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIEFy
Z3VtZW50czo6aW5mbyA9IHsgIkFyZ3VtZW50cyIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBB
cmd1bWVudHM6OmluZm8gPSB7ICJBcmd1bWVudHMiLCAwLCAwLCAwIH07CiAKIC8vIEVDTUEgMTAu
MS44CiBBcmd1bWVudHM6OkFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uSW1wKiBm
dW5jLCBjb25zdCBMaXN0JiBhcmdzLCBBY3RpdmF0aW9uSW1wKiBhY3QpCkBAIC0zNDIsNyArMzQy
LDcgQEAgYm9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQWN0aXZhdGlvbkltcCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8gQWN0aXZhdGlvbkltcDo6aW5mbyA9
IHsgIkFjdGl2YXRpb24iLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gQWN0aXZhdGlvbkltcDo6
aW5mbyA9IHsgIkFjdGl2YXRpb24iLCAwLCAwLCAwIH07CiAKIEFjdGl2YXRpb25JbXA6OkFjdGl2
YXRpb25JbXAoY29uc3QgQWN0aXZhdGlvbkRhdGEmIG9sZERhdGEsIGJvb2wgbGVhdmVSZWxpYykK
IHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwCShyZXZpc2lvbiAz
MjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBAIEZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3Rv
dHlwZShFeGUKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIAogICAgIHB1dERp
cmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCB0aGlzLCAwLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMs
IHRoaXMsIDIsIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+YXBwbHksIGZ1bmN0aW9uUHJv
dG9GdW5jQXBwbHkpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3Rv
dHlwZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIDEsIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+
Y2FsbCwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1
bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCB0aGlzLCAyLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYXBwbHksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpLCBEb250RW51
bSk7CiB9CiAKIC8vIEVDTUEgMTUuMy40CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJu
YWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAJKHJl
dmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2ludGVybmFsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgTGFiZWxTdGFjazo6Y29udGFpbnMoY29u
c3QgSWRlbnRpZmkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEludGVybmFs
RnVuY3Rpb25JbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZv
IEludGVybmFsRnVuY3Rpb25JbXA6OmluZm8gPSB7ICJGdW5jdGlvbiIsIDAsIDAgfTsKK2NvbnN0
IENsYXNzSW5mbyBJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvID0geyAiRnVuY3Rpb24iLCAwLCAw
LCAwIH07CiAKIEludGVybmFsRnVuY3Rpb25JbXA6OkludGVybmFsRnVuY3Rpb25JbXAoKQogewpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvbGV4ZXIuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9sZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAgTGV4ZXI6Okxl
eGVyKCkKICAgICAsIG5leHQxKDApCiAgICAgLCBuZXh0MigwKQogICAgICwgbmV4dDMoMCkKKyAg
ICAsIG1haW5UYWJsZShLSlM6Om1haW5UYWJsZSkKIHsKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUNh
cGFjaXR5KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwogICAgIG1fYnVmZmVyMTYucmVzZXJ2
ZUNhcGFjaXR5KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwpAQCAtOTUsNiArOTYsMTEgQEAg
TGV4ZXI6OkxleGVyKCkKICAgICBtX2lkZW50aWZpZXJzLnJlc2VydmVDYXBhY2l0eShpbml0aWFs
U3RyaW5nVGFibGVDYXBhY2l0eSk7CiB9CiAKK0xleGVyOjp+TGV4ZXIoKQoreworICAgIGRlbGV0
ZVtdIG1haW5UYWJsZS50YWJsZTsKK30KKwogdm9pZCBMZXhlcjo6c2V0Q29kZShpbnQgc3RhcnRp
bmdMaW5lTnVtYmVyLCBjb25zdCBVQ2hhciogYywgdW5zaWduZWQgaW50IGxlbikKIHsKICAgeXls
aW5lbm8gPSAxICsgc3RhcnRpbmdMaW5lTnVtYmVyOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L2xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgJKHJldmlz
aW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDYgKzI0LDcgQEAKICNpZm5kZWYgTGV4ZXJfaAogI2RlZmluZSBMZXhlcl9oCiAKKyNp
bmNsdWRlICJsb29rdXAuaCIKICNpbmNsdWRlICJ1c3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC05NCw2ICs5NSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGZyaWVuZCBM
ZXhlciYgbGV4ZXIoKTsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpUaHJlYWRTcGVjaWZpYzxMZXhl
cj47CiAgICAgTGV4ZXIoKTsKKyAgICB+TGV4ZXIoKTsKIAogICAgIGludCB5eWxpbmVubzsKICAg
ICBib29sIGRvbmU7CkBAIC0xNDUsNiArMTQ3LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgCiAg
ICAgVVN0cmluZyBtX3BhdHRlcm47CiAgICAgVVN0cmluZyBtX2ZsYWdzOworCisgICAgY29uc3Qg
SGFzaFRhYmxlIG1haW5UYWJsZTsKICAgfTsKICAgCiAgIExleGVyJiBsZXhlcigpOyAvLyBSZXR1
cm5zIHRoZSBzaW5nbGV0b25lIEphdmFTY3JpcHQgbGV4ZXIuCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvbG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5o
CShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9sb29rdXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIH07CiAKICNk
ZWZpbmUgS0pTX0lNUExFTUVOVF9QUk9UT1RZUEUoQ2xhc3NOYW1lLCBDbGFzc1Byb3RvdHlwZSkg
XAotICAgIGNvbnN0IENsYXNzSW5mbyBDbGFzc1Byb3RvdHlwZTo6aW5mbyA9IHsgQ2xhc3NOYW1l
IlByb3RvdHlwZSIsIDAsICZDbGFzc1Byb3RvdHlwZSMjVGFibGUgIH07IFwKKyAgICBjb25zdCBD
bGFzc0luZm8gQ2xhc3NQcm90b3R5cGU6OmluZm8gPSB7IENsYXNzTmFtZSJQcm90b3R5cGUiLCAw
LCAmQ2xhc3NQcm90b3R5cGUjI1RhYmxlLCAwICB9OyBcCiAgICAgSlNPYmplY3QqIENsYXNzUHJv
dG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYykgXAogICAgIHsgXAogICAgICAgICByZXR1cm4g
S0pTOjpjYWNoZUdsb2JhbE9iamVjdDxDbGFzc1Byb3RvdHlwZT4oZXhlYywgSWRlbnRpZmllcigi
W1siIENsYXNzTmFtZSAiLnByb3RvdHlwZV1dIikpOyBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvbWF0aF9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9tYXRo
X29iamVjdC5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL21hdGhf
b2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgS0pT
IHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1hdGhPYmplY3RJbXAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmpl
Y3RJbXA6OmluZm8gPSB7ICJNYXRoIiwgMCwgJm1hdGhUYWJsZSB9OworY29uc3QgQ2xhc3NJbmZv
IE1hdGhPYmplY3RJbXA6OmluZm8gPSB7ICJNYXRoIiwgMCwgMCwgRXhlY1N0YXRlOjptYXRoVGFi
bGUgfTsKIAogLyogU291cmNlIGZvciBtYXRoX29iamVjdC5sdXQuaAogQGJlZ2luIG1hdGhUYWJs
ZSAyMQpAQCAtNzMsNyArNzMsNyBAQCBNYXRoT2JqZWN0SW1wOjpNYXRoT2JqZWN0SW1wKEV4ZWNT
dGF0ZSosCiAKIGJvb2wgTWF0aE9iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNs
b3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5U2xvdDxNYXRoT2JqZWN0SW1wLCBK
U09iamVjdD4oZXhlYywgJm1hdGhUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PE1hdGhPYmplY3RJbXAsIEpTT2JqZWN0Pihl
eGVjLCBFeGVjU3RhdGU6Om1hdGhUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAogSlNWYWx1ZSogTWF0aE9iamVjdEltcDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBpbnQgdG9rZW4pIGNvbnN0CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbnVtYmVyX29i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL251bWJlcl9vYmplY3Qu
Y3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9udW1iZXJfb2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE51bWJlckluc3RhbmNlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIE51bWJlckluc3RhbmNlOjpp
bmZvID0geyAiTnVtYmVyIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIE51bWJlckluc3RhbmNl
OjppbmZvID0geyAiTnVtYmVyIiwgMCwgMCwgMCB9OwogCiBOdW1iZXJJbnN0YW5jZTo6TnVtYmVy
SW5zdGFuY2UoSlNPYmplY3QqIHByb3RvKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KHByb3RvKQpA
QCAtNDUwLDcgKzQ1MCw3IEBAIEpTVmFsdWUqIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4
ZWMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE51bWJlck9iamVjdEltcCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIE51bWJlck9i
amVjdEltcDo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb25JbXA6OmluZm8s
ICZudW1iZXJUYWJsZSB9OworY29uc3QgQ2xhc3NJbmZvIE51bWJlck9iamVjdEltcDo6aW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb25JbXA6OmluZm8sIDAsIEV4ZWNTdGF0ZTo6
bnVtYmVyVGFibGUgfTsKIAogLyogU291cmNlIGZvciBudW1iZXJfb2JqZWN0Lmx1dC5oCiBAYmVn
aW4gbnVtYmVyVGFibGUgNQpAQCAtNDczLDcgKzQ3Myw3IEBAIE51bWJlck9iamVjdEltcDo6TnVt
YmVyT2JqZWN0SW1wKEV4ZWNTdGEKIAogYm9vbCBOdW1iZXJPYmplY3RJbXA6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8TnVt
YmVyT2JqZWN0SW1wLCBJbnRlcm5hbEZ1bmN0aW9uSW1wPihleGVjLCAmbnVtYmVyVGFibGUsIHRo
aXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxO
dW1iZXJPYmplY3RJbXAsIEludGVybmFsRnVuY3Rpb25JbXA+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVt
YmVyVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIEpTVmFsdWUq
IE51bWJlck9iamVjdEltcDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBpbnQgdG9rZW4p
IGNvbnN0CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBA
QAogCiAjaW5jbHVkZSAiZGF0ZV9vYmplY3QuaCIKICNpbmNsdWRlICJlcnJvcl9vYmplY3QuaCIK
LSNpbmNsdWRlICJsb29rdXAuaCIKICNpbmNsdWRlICJub2Rlcy5oIgogI2luY2x1ZGUgIm9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtMzE4LDcgKzMxNyw3
IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSAqZXgKIH0KIAogLy8gRUNN
QSA4LjYuMi41Ci1ib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIC8qZXhl
YyovLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFt
ZSkKIHsKICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgSlNWYWx1ZSAqdiA9IF9wcm9wLmdldChw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwpAQCAtMzMyLDcgKzMzMSw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSoKICAgfQogCiAgIC8vIExvb2sgaW4gdGhlIHN0
YXRpYyBoYXNodGFibGUgb2YgcHJvcGVydGllcwotICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0g
ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSk7CisgIGNvbnN0IEhhc2hFbnRyeSog
ZW50cnkgPSBmaW5kUHJvcGVydHlIYXNoRW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgaWYg
KGVudHJ5ICYmIGVudHJ5LT5hdHRyaWJ1dGVzICYgRG9udERlbGV0ZSkKICAgICByZXR1cm4gZmFs
c2U7IC8vIHRoaXMgYnVpbHRpbiBwcm9wZXJ0eSBjYW4ndCBiZSBkZWxldGVkCiAgIC8vIEZJWE1F
OiBTaG91bGQgdGhlIGNvZGUgaGVyZSBhY3R1YWxseSBkbyBzb21lIGRlbGV0aW9uPwpAQCAtMzk1
LDEwICszOTQsMTAgQEAgSlNWYWx1ZSogSlNPYmplY3Q6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdAog
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJObyBkZWZhdWx0IHZhbHVlIik7
CiB9CiAKLWNvbnN0IEhhc2hFbnRyeSogSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Citjb25zdCBIYXNoRW50cnkqIEpT
T2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBDbGFzc0luZm8q
IGluZm8gPSBjbGFzc0luZm8oKTsgaW5mbzsgaW5mbyA9IGluZm8tPnBhcmVudENsYXNzKSB7Ci0g
ICAgICAgIGlmIChjb25zdCBIYXNoVGFibGUqIHByb3BIYXNoVGFibGUgPSBpbmZvLT5wcm9wSGFz
aFRhYmxlKSB7CisgICAgICAgIGlmIChjb25zdCBIYXNoVGFibGUqIHByb3BIYXNoVGFibGUgPSBp
bmZvLT5wcm9wSGFzaFRhYmxlKGV4ZWMpKSB7CiAgICAgICAgICAgICBpZiAoY29uc3QgSGFzaEVu
dHJ5KiBlID0gcHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZTsKICAgICAgICAgfQpAQCAtNTI5LDIzICs1MjgsMjMgQEAgYm9vbCBKU09i
amVjdDo6aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0Vu
dW1lcmFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0CiB7CiAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgCi0gIGlmICghZ2V0UHJvcGVydHlB
dHRyaWJ1dGVzKHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpCisgIGlmICghZ2V0UHJvcGVydHlB
dHRyaWJ1dGVzKGV4ZWMsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpCiAgICAgcmV0dXJuIGZh
bHNlOwogICBlbHNlCiAgICAgcmV0dXJuICEoYXR0cmlidXRlcyAmIERvbnRFbnVtKTsKIH0KIAot
Ym9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0Citib29sIEpTT2JqZWN0Ojpn
ZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdAogewogICBpZiAoX3Byb3Au
Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpCiAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAg
IC8vIExvb2sgaW4gdGhlIHN0YXRpYyBoYXNodGFibGUgb2YgcHJvcGVydGllcwotICBjb25zdCBI
YXNoRW50cnkqIGUgPSBmaW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKTsKKyAgY29u
c3QgSGFzaEVudHJ5KiBlID0gZmluZFByb3BlcnR5SGFzaEVudHJ5KGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CiAgIGlmIChlKSB7CiAgICAgYXR0cmlidXRlcyA9IGUtPmF0dHJpYnV0ZXM7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC01NjAsNyArNTU5LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlO
YW1lcyhFeGVjU3RhdAogCiAgICAgLy8gQWRkIHByb3BlcnRpZXMgZnJvbSB0aGUgc3RhdGljIGhh
c2h0YWJsZXMgb2YgcHJvcGVydGllcwogICAgIGZvciAoY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0g
Y2xhc3NJbmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewotICAgICAgICBj
b25zdCBIYXNoVGFibGUqIHRhYmxlID0gaW5mby0+cHJvcEhhc2hUYWJsZTsKKyAgICAgICAgY29u
c3QgSGFzaFRhYmxlKiB0YWJsZSA9IGluZm8tPnByb3BIYXNoVGFibGUoZXhlYyk7CiAgICAgICAg
IGlmICghdGFibGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCF0YWJsZS0+
dGFibGUpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsOCArNjUsMTggQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBwYXJlbnRDbGFzczsKICAgICAvKioK
ICAgICAgKiBTdGF0aWMgaGFzaC10YWJsZSBvZiBwcm9wZXJ0aWVzLgorICAgICAqIEZvciBjbGFz
c2VzIHRoYXQgY2FuIGJlIHVzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLCBpdCBpcyBhY2Nlc3Nl
ZCB2aWEgYSBnZXR0ZXIgZnVuY3Rpb24gdGhhdCB3b3VsZCB0eXBpY2FsbHkgcmV0dXJuIGEgcG9p
bnRlciB0byB0aHJlYWQtc3BlY2lmaWMgdmFsdWUuCiAgICAgICovCi0gICAgY29uc3QgSGFzaFRh
YmxlKiBwcm9wSGFzaFRhYmxlOworICAgIGNvbnN0IEhhc2hUYWJsZSogcHJvcEhhc2hUYWJsZShF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoY2xhc3NQcm9wSGFzaFRh
YmxlR2V0dGVyRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gY2xhc3NQcm9wSGFzaFRhYmxl
R2V0dGVyRnVuY3Rpb24oZXhlYyk7CisgICAgICAgIHJldHVybiBzdGF0aWNQcm9wSGFzaFRhYmxl
OworICAgIH0KKworICAgIGNvbnN0IEhhc2hUYWJsZSogc3RhdGljUHJvcEhhc2hUYWJsZTsKKyAg
ICB0eXBlZGVmIGNvbnN0IEhhc2hUYWJsZSogKCpDbGFzc1Byb3BIYXNoVGFibGVHZXR0ZXJGdW5j
dGlvbikoRXhlY1N0YXRlKik7CisgICAgY29uc3QgQ2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVyRnVu
Y3Rpb24gY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVyRnVuY3Rpb247CiAgIH07CiAgIAogICAvLyBU
aGlzIGlzIGFuIGludGVybmFsIHZhbHVlIG9iamVjdCB3aGljaCBzdG9yZXMgZ2V0dGVyIGFuZCBz
ZXR0ZXIgZnVuY3Rpb25zCkBAIC0xNDUsOCArMTU1LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
ICogQW5kIGluIHlvdXIgc291cmNlIGZpbGU6CiAgICAgICoKICAgICAgKiBcY29kZQotICAgICAq
ICAgY29uc3QgQ2xhc3NJbmZvIEJhckltcDo6aW5mbyA9IHsgIkJhciIsIDAsIDAgfTsgLy8gbm8g
cGFyZW50IGNsYXNzCi0gICAgICogICBjb25zdCBDbGFzc0luZm8gRm9vSW1wOjppbmZvID0geyAi
Rm9vIiwgJkJhckltcDo6aW5mbywgMCB9OworICAgICAqICAgY29uc3QgQ2xhc3NJbmZvIEJhcklt
cDo6aW5mbyA9IHsgIkJhciIsIDAsIDAsIDAgfTsgLy8gbm8gcGFyZW50IGNsYXNzCisgICAgICog
ICBjb25zdCBDbGFzc0luZm8gRm9vSW1wOjppbmZvID0geyAiRm9vIiwgJkJhckltcDo6aW5mbywg
MCwgMCB9OwogICAgICAqIFxlbmRjb2RlCiAgICAgICoKICAgICAgKiBAc2VlIGluaGVyaXRzKCkK
QEAgLTQwOSw3ICs0MTksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIEpTT2JqZWN0
KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCBKU0dsb2JhbE9i
amVjdCogdG9HbG9iYWxPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0UHJvcGVydHlBdHRyaWJ1dGVzKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9wZXJ0
eUF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3Q7CiAgICAgCiAgICAgLy8gV2ViQ29yZSB1c2VzIHRo
aXMgdG8gbWFrZSBkb2N1bWVudC5hbGwgYW5kIHN0eWxlLmZpbHRlciB1bmRldGVjdGFibGUKICAg
ICB2aXJ0dWFsIGJvb2wgbWFzcXVlcmFkZUFzVW5kZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTQ0Myw3ICs0NTMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQcm9wZXJ0eU1h
cCBfcHJvcDsKIAogICBwcml2YXRlOgotICAgIGNvbnN0IEhhc2hFbnRyeSogZmluZFByb3BlcnR5
SGFzaEVudHJ5KCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUgKSBjb25zdDsKKyAgICBj
b25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIEpTVmFsdWUgKl9wcm90bzsKICAg
fTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdF9vYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3Rfb2JqZWN0LmNwcAkocmV2aXNpb24gMzI2
MzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0X29iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBPYmplY3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZShF
eGVjU3RhCiAgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMs
IGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIG9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1bmN0aW9u
KG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvTG9jYWxlU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0
cmluZyksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVu
Y3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52
YWx1ZU9mLCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwg
MSwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5oYXNPd25Qcm9wZXJ0eSwgb2JqZWN0UHJv
dG9GdW5jSGFzT3duUHJvcGVydHkpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24o
bmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBDb21tb25J
ZGVudGlmaWVyczo6c2hhcmVkKCktPnByb3BlcnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1
bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIENvbW1v
bklkZW50aWZpZXJzOjpzaGFyZWQoKS0+aXNQcm90b3R5cGVPZiwgb2JqZWN0UHJvdG9GdW5jSXNQ
cm90b3R5cGVPZiksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90
eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5oYXNPd25Qcm9wZXJ0eSwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMs
IGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvcGVydHlJc0Vu
dW1lcmFibGUsIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKSwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5j
dGlvblByb3RvdHlwZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJvdG90eXBlT2YsIG9i
amVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpLCBEb250RW51bSk7CiAKICAgICAvLyBNb3ppbGxh
IGV4dGVuc2lvbnMKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24o
ZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDIsIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+
X19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5j
dGlvblByb3RvdHlwZSwgMiwgQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5fX2RlZmluZVNl
dHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpLCBEb250RW51bSk7Ci0gICAgcHV0
RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90
eXBlLCAxLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPl9fbG9va3VwR2V0dGVyX18sIG9i
amVjdFByb3RvRnVuY0xvb2t1cEdldHRlciksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIENv
bW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+X19sb29rdXBTZXR0ZXJfXywgb2JqZWN0UHJvdG9G
dW5jTG9va3VwU2V0dGVyKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQ
cm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMiwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLl9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciks
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24o
ZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2RlZmlu
ZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJv
dG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19sb29rdXBHZXR0ZXJfXywgb2JqZWN0
UHJvdG9GdW5jTG9va3VwR2V0dGVyKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
KG5ldyBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLl9fbG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNl
dHRlciksIERvbnRFbnVtKTsKIH0KIAogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvcmVnZXhw
X29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3JlZ2V4cF9vYmpl
Y3QuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9yZWdleHBfb2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTQgKzQ2LDE0IEBAIHN0YXRpYyBKU1ZhbHVl
KiByZWdFeHBQcm90b0Z1bmNUb1N0cmluZygKIAogLy8gRUNNQSAxNS4xMC41CiAKLWNvbnN0IENs
YXNzSW5mbyBSZWdFeHBQcm90b3R5cGU6OmluZm8gPSB7ICJSZWdFeHBQcm90b3R5cGUiLCAwLCAw
IH07Citjb25zdCBDbGFzc0luZm8gUmVnRXhwUHJvdG90eXBlOjppbmZvID0geyAiUmVnRXhwUHJv
dG90eXBlIiwgMCwgMCwgMCB9OwogCiBSZWdFeHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZShF
eGVjU3RhdGUqIGV4ZWMsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlLCBGdW5jdGlv
blByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCiAgICAgOiBKU09iamVjdChvYmplY3RQcm90
b3R5cGUpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4
ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPmNv
bXBpbGUsIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAw
LCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPmV4ZWMsIHJlZ0V4cFByb3RvRnVuY0V4ZWMp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9u
KGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBDb21tb25JZGVudGlmaWVyczo6c2hhcmVkKCkt
PnRlc3QsIHJlZ0V4cFByb3RvRnVuY1Rlc3QpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsZSwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZSksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgUHJvdG90eXBlRnVuY3Rpb24oZXhl
YywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5leGVjLCByZWdF
eHBQcm90b0Z1bmNFeGVjKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyBQ
cm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRlc3QsIHJlZ0V4cFByb3RvRnVuY1Rlc3QpLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0RnVuY3Rpb24obmV3IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90
eXBlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIHJlZ0V4cFByb3RvRnVuY1Rv
U3RyaW5nKSwgRG9udEVudW0pOwogfQogCkBAIC0xMjIsNyArMTIyLDcgQEAgSlNWYWx1ZSogcmVn
RXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gUmVnRXhwSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1jb25zdCBDbGFzc0luZm8gUmVnRXhwSW1wOjppbmZvID0geyAiUmVnRXhwIiwgMCwgJlJlZ0V4
cEltcFRhYmxlIH07Citjb25zdCBDbGFzc0luZm8gUmVnRXhwSW1wOjppbmZvID0geyAiUmVnRXhw
IiwgMCwgMCwgRXhlY1N0YXRlOjpSZWdFeHBJbXBUYWJsZSB9OwogCiAvKiBTb3VyY2UgZm9yIHJl
Z2V4cF9vYmplY3QubHV0LmgKIEBiZWdpbiBSZWdFeHBJbXBUYWJsZSA1CkBAIC0xNDcsNyArMTQ3
LDcgQEAgUmVnRXhwSW1wOjp+UmVnRXhwSW1wKCkKIAogYm9vbCBSZWdFeHBJbXA6OmdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJl
Z0V4cEltcCwgSlNPYmplY3Q+KGV4ZWMsICZSZWdFeHBJbXBUYWJsZSwgdGhpcywgcHJvcGVydHlO
YW1lLCBzbG90KTsKKyAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxSZWdFeHBJbXAsIEpTT2Jq
ZWN0PihleGVjLCBFeGVjU3RhdGU6OlJlZ0V4cEltcFRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiBKU1ZhbHVlKiBSZWdFeHBJbXA6OmdldFZhbHVlUHJvcGVydHko
RXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdApAQCAtMTcxLDcgKzE3MSw3IEBAIEpTVmFsdWUq
IFJlZ0V4cEltcDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGUKIAogdm9pZCBSZWdFeHBJbXA6OnB1dChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSog
dmFsdWUpCiB7Ci0gICAgbG9va3VwUHV0PFJlZ0V4cEltcCwgSlNPYmplY3Q+KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsICZSZWdFeHBJbXBUYWJsZSwgdGhpcyk7CisgICAgbG9va3VwUHV0PFJl
Z0V4cEltcCwgSlNPYmplY3Q+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIEV4ZWNTdGF0ZTo6
UmVnRXhwSW1wVGFibGUoZXhlYyksIHRoaXMpOwogfQogCiB2b2lkIFJlZ0V4cEltcDo6cHV0VmFs
dWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSogdmFsdWUpCkBA
IC0yNDIsNyArMjQyLDcgQEAgSlNWYWx1ZSogUmVnRXhwSW1wOjpjYWxsQXNGdW5jdGlvbihFeGVj
UwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVnRXhwT2JqZWN0SW1wIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8gUmVnRXhwT2Jq
ZWN0SW1wOjppbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywg
JlJlZ0V4cE9iamVjdEltcFRhYmxlIH07Citjb25zdCBDbGFzc0luZm8gUmVnRXhwT2JqZWN0SW1w
OjppbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywgMCwgRXhl
Y1N0YXRlOjpSZWdFeHBPYmplY3RJbXBUYWJsZSB9OwogCiAvKiBTb3VyY2UgZm9yIHJlZ2V4cF9v
YmplY3QubHV0LmgKIEBiZWdpbiBSZWdFeHBPYmplY3RJbXBUYWJsZSAyMQpAQCAtMzYzLDcgKzM2
Myw3IEBAIEpTVmFsdWUgKlJlZ0V4cE9iamVjdEltcDo6Z2V0UmlnaHRDb250ZXgKIAogYm9vbCBS
ZWdFeHBPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICByZXR1
cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cE9iamVjdEltcCwgSW50ZXJuYWxGdW5jdGlvbklt
cD4oZXhlYywgJlJlZ0V4cE9iamVjdEltcFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cE9iamVjdEltcCwgSW50ZXJuYWxG
dW5jdGlvbkltcD4oZXhlYywgRXhlY1N0YXRlOjpSZWdFeHBPYmplY3RJbXBUYWJsZShleGVjKSwg
dGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogSlNWYWx1ZSAqUmVnRXhwT2JqZWN0SW1w
OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3QKQEAgLTQwOCw3
ICs0MDgsNyBAQCBKU1ZhbHVlICpSZWdFeHBPYmplY3RJbXA6OmdldFZhbHVlUHJvcGVyCiAKIHZv
aWQgUmVnRXhwT2JqZWN0SW1wOjpwdXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVy
ICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgKnZhbHVlKQogewotICAgIGxvb2t1cFB1dDxSZWdFeHBP
YmplY3RJbXAsIEludGVybmFsRnVuY3Rpb25JbXA+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
ICZSZWdFeHBPYmplY3RJbXBUYWJsZSwgdGhpcyk7CisgICAgbG9va3VwUHV0PFJlZ0V4cE9iamVj
dEltcCwgSW50ZXJuYWxGdW5jdGlvbkltcD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgRXhl
Y1N0YXRlOjpSZWdFeHBPYmplY3RJbXBUYWJsZShleGVjKSwgdGhpcyk7CiB9CiAKIHZvaWQgUmVn
RXhwT2JqZWN0SW1wOjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2Vu
LCBKU1ZhbHVlICp2YWx1ZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVjdC5jcHAJ
KHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RyaW5nSW5zdGFuY2UgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBDbGFzc0luZm8gU3RyaW5nSW5zdGFuY2U6OmluZm8g
PSB7ICJTdHJpbmciLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gU3RyaW5nSW5zdGFuY2U6Omlu
Zm8gPSB7ICJTdHJpbmciLCAwLCAwLCAwIH07CiAKIFN0cmluZ0luc3RhbmNlOjpTdHJpbmdJbnN0
YW5jZShKU09iamVjdCAqcHJvdG8pCiAgIDogSlNXcmFwcGVyT2JqZWN0KHByb3RvKQpAQCAtMTI1
LDcgKzEyNSw3IEBAIHZvaWQgU3RyaW5nSW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXgKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmluZ1Byb3RvdHlwZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5cGU6
OmluZm8gPSB7ICJTdHJpbmciLCAmU3RyaW5nSW5zdGFuY2U6OmluZm8sICZzdHJpbmdUYWJsZSB9
OworY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6aW5mbyA9IHsgIlN0cmluZyIsICZT
dHJpbmdJbnN0YW5jZTo6aW5mbywgMCwgRXhlY1N0YXRlOjpzdHJpbmdUYWJsZSB9OwogLyogU291
cmNlIGZvciBzdHJpbmdfb2JqZWN0Lmx1dC5oCiBAYmVnaW4gc3RyaW5nVGFibGUgMjYKICAgdG9T
dHJpbmcgICAgICAgICAgICAgICZzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAgICAgICAwCkBAIC0xNzMsNyArMTczLDcgQEAgU3RyaW5nUHJvdG90eXBl
OjpTdHJpbmdQcm90b3R5cGUoRXhlY1N0YQogCiBib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7Ci0gIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8U3RyaW5nSW5zdGFuY2U+KGV4ZWMsICZzdHJpbmdUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxTdHJpbmdJbnN0YW5jZT4o
ZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24gMzI2MzUp
CisrKyBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAwOC0wNC0yNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHJ1bi13
ZWJraXQtdGVzdHMgLS10aHJlYWRpbmcKKyAgICAgICAgYW5kIHByb3Zpc2lvbmFsbHkgZml4IDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NjE+CisgICAgICAgIFBy
b3h5IHNlcnZlciBpc3N1ZSBpbiBTdW5kYXkncyBOaWdodGx5CisKKyAgICAgICAgKiBVc2VyT2Jq
ZWN0SW1wLmNwcDogQWRqdXN0ZWQgZm9yIHRoZSBuZXcgbWVtYmVyIGFkZGVkIHRvIENsYXNzSW5m
by4KKwogMjAwOC0wNC0yNSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJbmRleDogSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5j
cHAJKHJldmlzaW9uIDMyNjM1KQorKysgSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJVc2VyT2JqZWN0SW1w
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KIAotY29u
c3QgQ2xhc3NJbmZvIFVzZXJPYmplY3RJbXA6OmluZm8gPSB7ICJVc2VyT2JqZWN0IiwgMCwgMCB9
OworY29uc3QgQ2xhc3NJbmZvIFVzZXJPYmplY3RJbXA6OmluZm8gPSB7ICJVc2VyT2JqZWN0Iiwg
MCwgMCwgMCB9OwogCiBVc2VyT2JqZWN0SW1wOjpVc2VyT2JqZWN0SW1wKEpTVXNlck9iamVjdCog
dXNlck9iamVjdCkKICAgICA6IGZKU1VzZXJPYmplY3QoKEpTVXNlck9iamVjdCopdXNlck9iamVj
dC0+UmV0YWluKCkpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDA4LTA0LTI1ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXggcnVuLXdlYmtpdC10ZXN0cyAtLXRocmVhZGluZworICAgICAgICBh
bmQgcHJvdmlzaW9uYWxseSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODY2MT4KKyAgICAgICAgUHJveHkgc2VydmVyIGlzc3VlIGluIFN1bmRheSdzIE5pZ2h0
bHkKKworICAgICAgICBBZGp1c3RlZCBmb3IgSmF2YVNjcmlwdENvcmUgY2hhbmdlczogYWRkZWQg
YSBuZXcgbWVtYmVyIHRvIENsYXNzSW5mbyBvYmplY3RzLCB0dXJuZWQKKyAgICAgICAgQ2xhc3NJ
bmZvOjpwcm9wSGFzaFRhYmxlIGludG8gYSBmdW5jdGlvbiwgbWFkZSBnZXRQcm9wZXJ0eUF0dHJp
YnV0ZXMoKSB0YWtlIGFuIEV4ZWNTdGF0ZSBwb2ludGVyLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1dyYXBwZXI6OmdldFByb3BlcnR5QXR0
cmlidXRlcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRXZlbnRUYXJnZXRQcm90b3R5cGU6OmNsYXNzSW5mbyk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmN1c3RvbUdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTG9jYXRpb246OmN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0xvY2F0aW9uOjpjdXN0b21QdXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUkdCQ29sb3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpjdXN0b21QdXQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcDoKKwogMjAwOC0wNC0yOCAgVG9yIEFybmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRy
b2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0F1ZGlvQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkF1ZGlvQ29uc3RydWN0b3IiLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNBdWRpb0NvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OwogCiBKU0F1
ZGlvQ29uc3RydWN0b3I6OkpTQXVkaW9Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IERPTU9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPm9iamVjdFByb3RvdHlwZSgpKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBwcml2YXRl
OgogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vIEpTRE9NV2luZG93QmFzZSBPYmplY3QgLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCiAKLWNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNf
aW5mbyA9IHsgIldpbmRvdyIsIDAsICZKU0RPTVdpbmRvd0Jhc2VUYWJsZSB9OworY29uc3QgQ2xh
c3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgMCwgJkpTRE9NV2lu
ZG93QmFzZVRhYmxlLCAwIH07CiAKIC8qCiBAYmVnaW4gSlNET01XaW5kb3dCYXNlVGFibGUgMTE4
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNp
b24gMzI2MzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODIsMTIgKzgyLDEyIEBAIGJvb2wgSlNET01XaW5kb3c6OmN1c3Rv
bUdldE93blByb3BlcnR5U2wKICAgICBpZiAoIWltcGwoKS0+ZnJhbWUoKSkgewogICAgICAgICAv
LyBUaGUgZm9sbG93aW5nIGNvZGUgaXMgc2FmZSBmb3IgY3Jvc3MtZG9tYWluIGFuZCBzYW1lIGRv
bWFpbiB1c2UuCiAgICAgICAgIC8vIEl0IGlnbm9yZXMgYW55IGN1c3RvbSBwcm9wZXJ0aWVzIHRo
YXQgbWlnaHQgYmUgc2V0IG9uIHRoZSBET01XaW5kb3cgKGluY2x1ZGluZyBhIGN1c3RvbSBwcm90
b3R5cGUpLgotICAgICAgICBlbnRyeSA9IHNfaW5mby5wcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBlbnRyeSA9IHNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLT5l
bnRyeShwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAoZW50cnkgJiYgIShlbnRyeS0+YXR0cmli
dXRlcyAmIEZ1bmN0aW9uKSAmJiBlbnRyeS0+aW50ZWdlclZhbHVlID09IENsb3NlZEF0dHJOdW0p
IHsKICAgICAgICAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhpcywgZW50cnksIHN0YXRpY1Zh
bHVlR2V0dGVyPEpTRE9NV2luZG93Pik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQotICAgICAgICBlbnRyeSA9IEpTRE9NV2luZG93UHJvdG90eXBlOjpzX2luZm8ucHJvcEhh
c2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICAgICAgZW50cnkgPSBKU0RPTVdpbmRv
d1Byb3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVudHJ5KHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIGlmIChlbnRyeSAmJiAoZW50cnktPmF0dHJpYnV0ZXMgJiBGdW5jdGlvbikg
JiYgZW50cnktPmZ1bmN0aW9uVmFsdWUgPT0ganNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlvbkNs
b3NlKSB7CiAgICAgICAgICAgICBzbG90LnNldFN0YXRpY0VudHJ5KHRoaXMsIGVudHJ5LCBub25D
YWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMTUsNyArMTE1LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Y3VzdG9tR2V0T3duUHJvcGVydHlT
bAogICAgIC8vIHByb3RvdHlwZSBkdWUgdG8gdGhlIGJsYW5rZXQgc2FtZSBvcmlnaW4gKGFsbG93
c0FjY2Vzc0Zyb20pIGNoZWNrIGF0IHRoZSBlbmQgb2YgZ2V0T3duUHJvcGVydHlTbG90LgogICAg
IC8vIEFsc28sIGl0J3MgaW1wb3J0YW50IHRvIGdldCB0aGUgaW1wbGVtZW50YXRpb24gc3RyYWln
aHQgb3V0IG9mIHRoZSBET01XaW5kb3cgcHJvdG90eXBlIHJlZ2FyZGxlc3Mgb2YKICAgICAvLyB3
aGF0IHByb3RvdHlwZSBpcyBhY3R1YWxseSBzZXQgb24gdGhpcyBvYmplY3QuCi0gICAgZW50cnkg
PSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUtPmVudHJ5KHByb3Bl
cnR5TmFtZSk7CisgICAgZW50cnkgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6c19pbmZvLnByb3BI
YXNoVGFibGUoZXhlYyktPmVudHJ5KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGVudHJ5KSB7CiAg
ICAgICAgIGlmICgoZW50cnktPmF0dHJpYnV0ZXMgJiBGdW5jdGlvbikKICAgICAgICAgICAgICAg
ICAmJiAoZW50cnktPmZ1bmN0aW9uVmFsdWUgPT0ganNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlv
bkJsdXIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93V3JhcHBlci5jcHAJ
KHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1dyYXBw
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBL
SlM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93
V3JhcHBlcjo6c19pbmZvID0geyAiSlNET01XaW5kb3dXcmFwcGVyIiwgMCwgMCB9OworY29uc3Qg
Q2xhc3NJbmZvIEpTRE9NV2luZG93V3JhcHBlcjo6c19pbmZvID0geyAiSlNET01XaW5kb3dXcmFw
cGVyIiwgMCwgMCwgMCB9OwogCiBKU0RPTVdpbmRvd1dyYXBwZXI6OkpTRE9NV2luZG93V3JhcHBl
cihET01XaW5kb3cqIGRvbVdpbmRvdykKICAgICA6IEJhc2UoanNOdWxsKCkpCkBAIC05NCw5ICs5
NCw5IEBAIHZvaWQgSlNET01XaW5kb3dXcmFwcGVyOjpnZXRQcm9wZXJ0eU5hbWUKICAgICBtX3dp
bmRvdy0+Z2V0UHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0eU5hbWVzKTsKIH0KIAotYm9vbCBK
U0RPTVdpbmRvd1dyYXBwZXI6OmdldFByb3BlcnR5QXR0cmlidXRlcyhjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdAorYm9vbCBKU0RPTVdp
bmRvd1dyYXBwZXI6OmdldFByb3BlcnR5QXR0cmlidXRlcyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29u
c3QKIHsKLSAgICByZXR1cm4gbV93aW5kb3ctPmdldFByb3BlcnR5QXR0cmlidXRlcyhwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiBtX3dpbmRvdy0+Z2V0UHJvcGVydHlBdHRy
aWJ1dGVzKGV4ZWMsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiB9CiAKIHZvaWQgSlNET01X
aW5kb3dXcmFwcGVyOjpkZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbikKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1dyYXBwZXIuaAkocmV2aXNpb24gMzI2MzUpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHB1dFdpdGhBdHRyaWJ1dGVzKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEtKUzo6SlNWYWx1ZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBL
SlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpQcm9wZXJ0eU5hbWVBcnJheSYpOwot
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJvcGVydHlBdHRyaWJ1dGVzKGNvbnN0IEtKUzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoS0pTOjpFeGVjU3RhdGUqLCBj
b25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEtKUzo6RXhlY1N0YXRl
KiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEtKUzo6SlNPYmplY3QqIGdl
dHRlckZ1bmN0aW9uKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlZmluZVNldHRlcihLSlM6OkV4
ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBLSlM6OkpTT2Jq
ZWN0KiBzZXR0ZXJGdW5jdGlvbik7CiAgICAgICAgIHZpcnR1YWwgS0pTOjpKU1ZhbHVlKiBsb29r
dXBHZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0QmFzZS5oCShyZXZp
c2lvbiAzMjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2aXJ0dWFsIGNvbnN0IEtKUzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdAog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gc19jbGFz
c0luZm8gPSB7IEpTRXZlbnRUYXJnZXRQcm90b3R5cGVJbmZvcm1hdGlvbjo6cHJvdG90eXBlQ2xh
c3NOYW1lKCksIDAsICZLSlM6OkpTRXZlbnRUYXJnZXRQcm90b3R5cGVUYWJsZSB9OworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEtKUzo6Q2xhc3NJbmZvIHNfY2xhc3NJbmZvID0geyBKU0V2ZW50
VGFyZ2V0UHJvdG90eXBlSW5mb3JtYXRpb246OnByb3RvdHlwZUNsYXNzTmFtZSgpLCAwLCAmS0pT
OjpKU0V2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGUsIDAgfTsKICAgICAgICAgICAgIHJldHVybiAm
c19jbGFzc0luZm87CiAgICAgICAgIH0KICAgICB9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNWYWx1ZSoganNIVE1MSW5wdXRFbGVtZW50QmFzZUZ1bmN0
aW9uUwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNI
VE1MSW5wdXRFbGVtZW50QmFzZTo6c19pbmZvID0geyAiSFRNTElucHV0RWxlbWVudEJhc2UiLCAm
SlNIVE1MRWxlbWVudDo6c19pbmZvLCAmSlNIVE1MSW5wdXRFbGVtZW50QmFzZVRhYmxlIH07Citj
b25zdCBDbGFzc0luZm8gSlNIVE1MSW5wdXRFbGVtZW50QmFzZTo6c19pbmZvID0geyAiSFRNTElu
cHV0RWxlbWVudEJhc2UiLCAmSlNIVE1MRWxlbWVudDo6c19pbmZvLCAmSlNIVE1MSW5wdXRFbGVt
ZW50QmFzZVRhYmxlLCAwIH07CiAKIEpTSFRNTElucHV0RWxlbWVudEJhc2U6OkpTSFRNTElucHV0
RWxlbWVudEJhc2UoS0pTOjpKU09iamVjdCogcHJvdG90eXBlLCBQYXNzUmVmUHRyPEhUTUxJbnB1
dEVsZW1lbnQ+IGUpCiAgICAgOiBKU0hUTUxFbGVtZW50KHByb3RvdHlwZSwgZS5nZXQoKSkKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbkVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y29uc3QgQ2xhc3NJbmZvIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiT3B0aW9uQ29uc3RydWN0b3IiLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNIVE1MT3B0
aW9uRWxlbWVudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJPcHRpb25Db25zdHJ1Y3RvciIsIDAs
IDAsIDAgfTsKIAogSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yOjpKU0hUTUxPcHRpb25F
bGVtZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBET01PYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5
cGUoKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHJldmlz
aW9uIDMyNjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGJvb2wgSlNIaXN0b3J5OjpjdXN0b21HZXRP
d25Qcm9wZXJ0eVNsb3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ2hlY2sgZm9y
IHRoZSBmZXcgZnVuY3Rpb25zIHRoYXQgd2UgYWxsb3csIGV2ZW4gd2hlbiBjYWxsZWQgY3Jvc3Mt
ZG9tYWluLgotICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBKU0hpc3RvcnlQcm90b3R5cGU6
OnNfaW5mby5wcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkgPSBKU0hpc3RvcnlQcm90b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRhYmxl
KGV4ZWMpLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSkgewogICAgICAgICAv
LyBBbGxvdyBhY2Nlc3MgdG8gYmFjaygpLCBmb3J3YXJkKCkgYW5kIGdvKCkgZnJvbSBhbnkgZnJh
bWUuCiAgICAgICAgIGlmICgoZW50cnktPmF0dHJpYnV0ZXMgJiBGdW5jdGlvbikKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDMyNjM1
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiSW1hZ2VDb25zdHJ1Y3RvciIsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0ltYWdl
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkltYWdlQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAK
IEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogRE9NT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgV3JhcHBlck1hcCYgd3JhcHBlcnMoKQogICAg
IHJldHVybiBtYXA7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU0luc3BlY3RlZE9iamVjdFdyYXBw
ZXI6OnNfaW5mbyA9IHsgIkpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlciIsICZKU1F1YXJhbnRpbmVk
T2JqZWN0V3JhcHBlcjo6c19pbmZvLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyOjpzX2luZm8gPSB7ICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIiLCAmSlNR
dWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbywgMCwgMCB9OwogCiBKU1ZhbHVlKiBKU0lu
c3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoRXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBKU1Zh
bHVlKiB1bndyYXBwZWRWYWx1ZSkKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBXcmFwcGVyTWFwJiB3cmFwcGVycygpCiAg
ICAgcmV0dXJuIG1hcDsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTSW5zcGVjdG9yQ2FsbGJhY2tX
cmFwcGVyOjpzX2luZm8gPSB7ICJKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlciIsICZKU1F1YXJh
bnRpbmVkT2JqZWN0V3JhcHBlcjo6c19pbmZvLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNJbnNw
ZWN0b3JDYWxsYmFja1dyYXBwZXI6OnNfaW5mbyA9IHsgIkpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFw
cGVyIiwgJkpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpzX2luZm8sIDAsIDAgfTsKIAogSlNW
YWx1ZSogSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXI6OndyYXAoRXhlY1N0YXRlKiB1bndyYXBw
ZWRFeGVjLCBKU1ZhbHVlKiB1bndyYXBwZWRWYWx1ZSkKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG8KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ2hlY2sgZm9yIHRoZSBmZXcgZnVuY3Rpb25zIHRoYXQg
d2UgYWxsb3csIGV2ZW4gd2hlbiBjYWxsZWQgY3Jvc3MtZG9tYWluLgotICAgIGNvbnN0IEhhc2hF
bnRyeSogZW50cnkgPSBKU0xvY2F0aW9uUHJvdG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZS0+
ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gSlNMb2Nh
dGlvblByb3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVudHJ5KHByb3BlcnR5
TmFtZSk7CiAgICAgaWYgKGVudHJ5ICYmIChlbnRyeS0+YXR0cmlidXRlcyAmIEZ1bmN0aW9uKQog
ICAgICAgICAgICAgJiYgKGVudHJ5LT5mdW5jdGlvblZhbHVlID09IGpzTG9jYXRpb25Qcm90b3R5
cGVGdW5jdGlvblJlcGxhY2UKICAgICAgICAgICAgICAgICB8fCBlbnRyeS0+ZnVuY3Rpb25WYWx1
ZSA9PSBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25SZWxvYWQKQEAgLTgwLDcgKzgwLDcgQEAg
Ym9vbCBKU0xvY2F0aW9uOjpjdXN0b21QdXQoRXhlY1N0YXRlKiBleAogCiAgICAgYm9vbCBzYW1l
RG9tYWluQWNjZXNzID0gYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKTsKIAotICAg
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBKU0xvY2F0aW9uOjpzX2luZm8ucHJvcEhhc2hUYWJs
ZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gSlNM
b2NhdGlvbjo6c19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVudHJ5KHByb3BlcnR5TmFtZSk7
CiAgICAgaWYgKCFlbnRyeSkgewogICAgICAgICBpZiAoc2FtZURvbWFpbkFjY2VzcykKICAgICAg
ICAgICAgIEpTT2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAJKHJldmlz
aW9uIDMyNjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKLWNvbnN0IENsYXNzSW5mbyBKU05hbWVkTm9kZXND
b2xsZWN0aW9uOjpzX2luZm8gPSB7ICJDb2xsZWN0aW9uIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJ
bmZvIEpTTmFtZWROb2Rlc0NvbGxlY3Rpb246OnNfaW5mbyA9IHsgIkNvbGxlY3Rpb24iLCAwLCAw
LCAwIH07CiAKIC8vIFN1Y2ggYSBjb2xsZWN0aW9uIGlzIHVzdWFsbHkgdmVyeSBzaG9ydC1saXZl
ZCwgaXQgb25seSBleGlzdHMKIC8vIGZvciBjb25zdHJ1Y3RzIGxpa2UgZG9jdW1lbnQuZm9ybXMu
PG5hbWU+WzFdLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0
V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1F1YXJhbnRp
bmVkT2JqZWN0V3JhcHBlci5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBDbGFzc0luZm8gSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbyA9IHsg
IkpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyIiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpT
UXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpzX2luZm8gPSB7ICJKU1F1YXJhbnRpbmVkT2JqZWN0
V3JhcHBlciIsIDAsIDAsIDAgfTsKIAogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIqIEpTUXVh
cmFudGluZWRPYmplY3RXcmFwcGVyOjphc1dyYXBwZXIoSlNWYWx1ZSogdmFsdWUpCiB7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JHQkNvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0
IENsYXNzSW5mbyBKU1JHQkNvbG9yOjpzX2luZm8gPSB7ICJSR0JDb2xvciIsIDAsICZKU1JHQkNv
bG9yVGFibGUgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1JHQkNvbG9yOjpzX2luZm8gPSB7ICJSR0JD
b2xvciIsIDAsICZKU1JHQkNvbG9yVGFibGUsIDAgfTsKIAogLyoKIEBiZWdpbiBKU1JHQkNvbG9y
VGFibGUgMwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAkocmV2
aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBKU1N0b3JhZ2U6OmN1c3RvbVB1
dChFeGVjU3RhdGUqIGV4ZQogICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkgd291bGQgZW5kIHVw
IGNhbGxpbmcgY2FuR2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwgd2UgbmVlZCB0byBj
aGVjawogICAgIC8vIHRoZSBuYXRpdmUgcHJvcGVydHkgc2xvdHMgbWFudWFsbHkuCiAgICAgUHJv
cGVydHlTbG90IHNsb3Q7Ci0gICAgaWYgKGdldFN0YXRpY1ZhbHVlU2xvdDxKU1N0b3JhZ2UsIEJh
c2U+KGV4ZWMsIHNfaW5mby5wcm9wSGFzaFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQorICAgIGlmIChnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNTdG9yYWdlLCBCYXNlPihleGVjLCBzX2lu
Zm8ucHJvcEhhc2hUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICBKU1ZhbHVlKiBwcm90b3R5cGUgPSB0aGlz
LT5wcm90b3R5cGUoKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVz
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY29uc3QgQ2xhc3NJbmZvIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvciIsIDAsIDAgfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlhNTEh0dHBSZXF1
ZXN0Q29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAKIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rv
cjo6SlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogRE9NT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
b2JqZWN0UHJvdG90eXBlKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nl
c3Nvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3IuY3BwCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJv
Y2Vzc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBDbGFzc0luZm8gSlNY
U0xUUHJvY2Vzc29yOjpzX2luZm8gPSB7ICJYU0xUUHJvY2Vzc29yIiwgMCwgMCB9OworY29uc3Qg
Q2xhc3NJbmZvIEpTWFNMVFByb2Nlc3Nvcjo6c19pbmZvID0geyAiWFNMVFByb2Nlc3NvciIsIDAs
IDAsIDAgfTsKIAogLyoKIEBiZWdpbiBKU1hTTFRQcm9jZXNzb3JQcm90b3R5cGVUYWJsZSA3CkBA
IC0xODYsNyArMTg2LDcgQEAgSlNWYWx1ZSoganNYU0xUUHJvY2Vzc29yUHJvdG90eXBlRnVuY3Rp
bwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNYU0xU
UHJvY2Vzc29yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlhTTFRQcm9jZXNzb3JDb25zcnVjdG9y
IiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJYU0xUUHJvY2Vzc29yQ29uc3J1Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNYU0xU
UHJvY2Vzc29yQ29uc3RydWN0b3I6OkpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKICAgICA6IERPTU9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9i
amVjdFByb3RvdHlwZSgpKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTczMCw3ICs3MzAsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxAaGFzaEtleXMsIFxAaGFzaFZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcQGhhc2hTcGVjaWFscywgXEBoYXNoUGFyYW1ldGVycyk7CiAKLSAgICBwdXNoKEBpbXBsQ29u
dGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsg
XCIke3Zpc2libGVDbGFzc05hbWV9UHJvdG90eXBlXCIsIDAsICYke2NsYXNzTmFtZX1Qcm90b3R5
cGVUYWJsZSB9O1xuXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5m
byAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05hbWV9
UHJvdG90eXBlXCIsIDAsICYke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSwgMCB9O1xuXG4iKTsK
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDYWNoZSJ9KSB7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZTo6c2VsZigpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKQEAg
LTc3Miw4ICs3NzIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIGlmICgkbnVt
QXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICImJHtjbGFzc05h
bWV9VGFibGUgIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIw
ICIpCisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiMCAiKTsKICAgICB9CisgICAgcHVzaChA
aW1wbENvbnRlbnQsICIsIDAgIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsK
IAogICAgICMgR2V0IGNvcnJlY3QgcGFzcy9zdG9yZSB0eXBlcyByZXNwZWN0aW5nIFBPRFR5cGUg
ZmxhZwpAQCAtMTc3OCw3ICsxNzc5LDcgQEAgRU9GCiAkaW1wbENvbnRlbnQgLj0gPDwgIkVPRiI7
CiB9OwogCi1jb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIiR7dmlzaWJsZUNsYXNzTmFtZX1Db25zdHJ1Y3RvciIsIDAsICYke2NsYXNzTmFtZX1Db25z
dHJ1Y3RvclRhYmxlIH07Citjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIiR7dmlzaWJsZUNsYXNzTmFtZX1Db25zdHJ1Y3RvciIsIDAsICYke2NsYXNz
TmFtZX1Db25zdHJ1Y3RvclRhYmxlLCAwIH07CiAKIGJvb2wgJHtjbGFzc05hbWV9Q29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewpJbmRleDogV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogdXNpbmcgbmFtZXNw
YWNlIEtKUzsKIAotY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVu
dGltZUFycmF5IiwgJkFycmF5SW5zdGFuY2U6OmluZm8sIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBS
dW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZBcnJheUluc3RhbmNlOjpp
bmZvLCAwLCAwIH07CiAKIFJ1bnRpbWVBcnJheTo6UnVudGltZUFycmF5KEV4ZWNTdGF0ZSAqZXhl
YywgQmluZGluZ3M6OkFycmF5ICphKQogICAgIDogSlNPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5hcnJheVByb3RvdHlwZSgpKQpJbmRleDogV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7
CiB1c2luZyBuYW1lc3BhY2UgQmluZGluZ3M7CiAKLWNvbnN0IENsYXNzSW5mbyBSdW50aW1lT2Jq
ZWN0SW1wOjpzX2luZm8gPSB7ICJSdW50aW1lT2JqZWN0IiwgMCwgMCB9OworY29uc3QgQ2xhc3NJ
bmZvIFJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3QiLCAwLCAwLCAw
IH07CiAKIFJ1bnRpbWVPYmplY3RJbXA6OlJ1bnRpbWVPYmplY3RJbXAoUGFzc1JlZlB0cjxCaW5k
aW5nczo6SW5zdGFuY2U+IGkpCiAgICAgOiBpbnN0YW5jZShpKQpJbmRleDogV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDMyNjM1KQorKysgV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCB1bnNp
Z25lZCBpbnQgT2JqY0FycmF5OjpnZXRMZW5ndGgoKSBjb25zCiAgICAgcmV0dXJuIFtfYXJyYXku
Z2V0KCkgY291bnRdOwogfQogCi1jb25zdCBDbGFzc0luZm8gT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjppbmZvID0geyAiT2JqY0ZhbGxiYWNrT2JqZWN0IiwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZv
IE9iamNGYWxsYmFja09iamVjdEltcDo6aW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIsIDAs
IDAsIDAgfTsKIAogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpPYmpjRmFsbGJhY2tPYmplY3RJbXAo
T2JqY0luc3RhbmNlKiBpLCBjb25zdCBLSlM6OklkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogOiBf
aW5zdGFuY2UoaSkKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMDQtMjUgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCBydW4td2Via2l0LXRlc3RzIC0tdGhyZWFkaW5nCisg
ICAgICAgIGFuZCBwcm92aXNpb25hbGx5IGZpeCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NjYxPgorICAgICAgICBQcm94eSBzZXJ2ZXIgaXNzdWUgaW4gU3VuZGF5
J3MgTmlnaHRseQorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOiAoLVtXZWJWaWV3UHJp
dmF0ZSBpbml0XSk6IEluaXRpYWxpemUgdGhyZWFkaW5nLiBQcmV2aW91c2x5LCB0aGlzIHdhcwor
ICAgICAgICBvbmx5IGRvbmUgZnJvbSBpY29uIGRhdGFiYXNlIGNvZGUsIHdoaWNoIGlzIG5vdCBy
b2J1c3QgZW5vdWdoLgorCiAyMDA4LTA0LTIwIEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2JlbiBhbmQgU2FtIFdlaW5pZy4KSW5kZXg6
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAzMjYzNSkKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDcgQEAKICNpbXBvcnQg
PFdlYktpdC9ET01Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRGFzaGJvYXJkUmVnaW9u
Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPGtqcy9Jbml0
aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8b2Jq
Yy9vYmpjLWF1dG8uaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CkBAIC00NTcsNiAr
NDU4LDcgQEAgc3RhdGljIEJPT0wgZ3JhbW1hckNoZWNraW5nRW5hYmxlZDsKICAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBL
SlM6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBhbGxvd3NVbmRvID0gWUVTOwogICAgIHpv
b21NdWx0aXBsaWVyID0gMTsKICAgICB6b29tTXVsdGlwbGllcklzVGV4dE9ubHkgPSBZRVM7Cklu
ZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA4LTA0LTI1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXggcnVuLXdlYmtpdC10ZXN0cyAtLXRocmVhZGluZworICAgICAgICBhbmQgcHJv
dmlzaW9uYWxseSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODY2MT4KKyAgICAgICAgUHJveHkgc2VydmVyIGlzc3VlIGluIFN1bmRheSdzIE5pZ2h0bHkKKwor
ICAgICAgICAqIFdlYlZpZXcuY3BwOiAoV2ViVmlldzo6V2ViVmlldyk6IEluaXRpYWxpemUgdGhy
ZWFkaW5nLiBQcmV2aW91c2x5LCB0aGlzIHdhcyBvbmx5IGRvbmUgZnJvbQorICAgICAgICBpY29u
IGRhdGFiYXNlIGNvZGUsIHdoaWNoIGlzIG5vdCByb2J1c3QgZW5vdWdoLgorCiAyMDA4LTA0LTI2
ICBBZGFtIEJhcnRoIDxoazk1NjVAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gUm9iZW4gYW5kIFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDMyNjM1KQorKysg
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvVHlwaW5nQ29tbWFuZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2lu
ZG93TWVzc2FnZUJyb2FkY2FzdGVyLmg+CiAjcHJhZ21hIHdhcm5pbmcocG9wKQorI2luY2x1ZGUg
PGtqcy9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvdmFs
dWUuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZVUkxQcm90b2NvbFByaXYuaD4KQEAgLTI3Myw2ICsyNzQsOCBAQCBXZWJWaWV3
OjpXZWJWaWV3KCkKICwgbV90b3BMZXZlbFBhcmVudCgwKQogLCBtX2RlbGV0ZUJhY2tpbmdTdG9y
ZVRpbWVyQWN0aXZlKGZhbHNlKQogeworICAgIEtKUzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwor
CiAgICAgbV9iYWNraW5nU3RvcmVTaXplLmN4ID0gbV9iYWNraW5nU3RvcmVTaXplLmN5ID0gMDsK
IAogICAgIENvQ3JlYXRlSW5zdGFuY2UoQ0xTSURfRHJhZ0Ryb3BIZWxwZXIsIDAsIENMU0NUWF9J
TlBST0NfU0VSVkVSLCBJSURfSURyb3BUYXJnZXRIZWxwZXIsKHZvaWQqKikmbV9kcm9wVGFyZ2V0
SGVscGVyKTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMyNjM1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDgtMDQtMjUgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCBydW4td2Via2l0LXRlc3RzIC0tdGhyZWFkaW5nCisg
ICAgICAgIGFuZCBwcm92aXNpb25hbGx5IGZpeCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NjYxPgorICAgICAgICBQcm94eSBzZXJ2ZXIgaXNzdWUgaW4gU3VuZGF5
J3MgTmlnaHRseQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlw
dFRocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRUaHJlYWQpOgor
ICAgICAgICAoc3RhcnRKYXZhU2NyaXB0VGhyZWFkcyk6CisgICAgICAgIChzdG9wSmF2YVNjcmlw
dFRocmVhZHMpOgorICAgICAgICBTcGF3bmVkIHRocmVhZHMgd2VyZSBpbW1lZGlhdGVseSBkZXRh
Y2hlZCwgdW5saWtlIHRoZSBvcmlnaW5hbCBvbmVzLCBzbyBqb2luaW5nIHRoZW0KKyAgICAgICAg
bWFkZSBubyBzZW5zZS4gTm93LCBhbGwgdGhyZWFkcyBhcmUgY3JlYXRlZCBkZXRhY2hlZCwgYW5k
IHN0b3BKYXZhU2NyaXB0VGhyZWFkcygpIGp1c3QKKyAgICAgICAgd2FpdHMgZm9yIHRoZW0gYWxs
IHRvIGV4aXQuCisKIDIwMDgtMDQtMjYgIFJvYmluIER1bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNj
cmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcAkocmV2aXNpb24gMzI2MzUpCisrKyBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBAIHZvaWQqIHJ1bkphdmFTY3JpcHRUaHJl
YWQodm9pZCogYXJnKQogCiAgICAgICAgIC8vIENoZWNrIGZvciBjYW5jZWxsYXRpb24uCiAgICAg
ICAgIGlmIChqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSkgeworICAgICAgICAgICAg
amF2YVNjcmlwdFRocmVhZHMoKS0+cmVtb3ZlKHB0aHJlYWRfc2VsZigpKTsKICAgICAgICAgICAg
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMDUsNiArMTA2LDcgQEAgdm9pZCBzdGFydEph
dmFTY3JpcHRUaHJlYWRzKCkKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJl
YWRzQ291bnQ7IGkrKykgewogICAgICAgICBwdGhyZWFkX3QgcHRocmVhZDsKICAgICAgICAgcHRo
cmVhZF9jcmVhdGUoJnB0aHJlYWQsIDAsICZydW5KYXZhU2NyaXB0VGhyZWFkLCAwKTsKKyAgICAg
ICAgcHRocmVhZF9kZXRhY2gocHRocmVhZCk7CiAgICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCkt
PmFkZChwdGhyZWFkKTsKICAgICB9CiAKQEAgLTEyMSw5ICsxMjMsMTQgQEAgdm9pZCBzdG9wSmF2
YVNjcmlwdFRocmVhZHMoKQogCiAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRU
aHJlYWRzTXV0ZXgpOwogCi0gICAgVGhyZWFkU2V0OjppdGVyYXRvciBlbmQgPSBqYXZhU2NyaXB0
VGhyZWFkcygpLT5lbmQoKTsKLSAgICBmb3IgKFRocmVhZFNldDo6aXRlcmF0b3IgaXQgPSBqYXZh
U2NyaXB0VGhyZWFkcygpLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgcHRo
cmVhZF90IHB0aHJlYWQgPSAqaXQ7Ci0gICAgICAgIHB0aHJlYWRfam9pbihwdGhyZWFkLCAwKTsK
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3Jp
cHRUaHJlYWRzTXV0ZXgpOworICAgICAgICBpbnQgdGhyZWFkQ291bnQgPSBqYXZhU2NyaXB0VGhy
ZWFkcygpLT5zaXplKCk7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0
VGhyZWFkc011dGV4KTsKKworICAgICAgICBpZiAoIXRocmVhZENvdW50KQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgdXNsZWVwKDEwMDApOwogICAgIH0KIH0K
</data>
<flag name="review"
          id="9128"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>