<?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>124761</bug_id>
          
          <creation_ts>2013-11-21 21:30:00 -0800</creation_ts>
          <short_desc>Combine SymbolTable and SharedSymbolTable</short_desc>
          <delta_ts>2013-11-22 14:01:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124760</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>953439</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-21 21:30:00 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953451</commentid>
    <comment_count>1</comment_count>
      <attachid>217651</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-21 23:22:47 -0800</bug_when>
    <thetext>Created attachment 217651
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953452</commentid>
    <comment_count>2</comment_count>
      <attachid>217652</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-21 23:26:58 -0800</bug_when>
    <thetext>Created attachment 217652
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953454</commentid>
    <comment_count>3</comment_count>
      <attachid>217652</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-21 23:37:36 -0800</bug_when>
    <thetext>Comment on attachment 217652
the patch

Attachment 217652 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/33728010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953463</commentid>
    <comment_count>4</comment_count>
      <attachid>217652</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 23:57:47 -0800</bug_when>
    <thetext>Comment on attachment 217652
the patch

Attachment 217652 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/33608018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953469</commentid>
    <comment_count>5</comment_count>
      <attachid>217652</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-22 00:34:21 -0800</bug_when>
    <thetext>Comment on attachment 217652
the patch

Attachment 217652 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/33718011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953470</commentid>
    <comment_count>6</comment_count>
      <attachid>217652</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-11-22 00:39:55 -0800</bug_when>
    <thetext>Comment on attachment 217652
the patch

Attachment 217652 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/33618006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953477</commentid>
    <comment_count>7</comment_count>
      <attachid>217652</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-22 01:02:12 -0800</bug_when>
    <thetext>Comment on attachment 217652
the patch

Attachment 217652 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/33948001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953482</commentid>
    <comment_count>8</comment_count>
      <attachid>217652</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-22 01:45:05 -0800</bug_when>
    <thetext>Comment on attachment 217652
the patch

Attachment 217652 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/33778006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953641</commentid>
    <comment_count>9</comment_count>
      <attachid>217652</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-22 12:29:54 -0800</bug_when>
    <thetext>Comment on attachment 217652
the patch

Approach looks good to me, but build is broken:

Undefined symbols for architecture x86_64:
  &quot;__ZNK3JSC7JSValuecvPMS0_PvEv&quot;, referenced from:
      __ZN3JSC11SymbolTableC1ERNS_2VME in SymbolTable.o
      __ZN3JSC11SymbolTableC2ERNS_2VME in SymbolTable.o
  &quot;__ZNK3JSC7JSValue6asCellEv&quot;, referenced from:
      __ZN3JSC11SymbolTableC1ERNS_2VME in SymbolTable.o
      __ZN3JSC11SymbolTableC2ERNS_2VME in SymbolTable.o

Maybe you need to #include JSValueInlines.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953647</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-22 12:34:10 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 217652 [details])
&gt; Approach looks good to me, but build is broken:
&gt; 
&gt; Undefined symbols for architecture x86_64:
&gt;   &quot;__ZNK3JSC7JSValuecvPMS0_PvEv&quot;, referenced from:
&gt;       __ZN3JSC11SymbolTableC1ERNS_2VME in SymbolTable.o
&gt;       __ZN3JSC11SymbolTableC2ERNS_2VME in SymbolTable.o
&gt;   &quot;__ZNK3JSC7JSValue6asCellEv&quot;, referenced from:
&gt;       __ZN3JSC11SymbolTableC1ERNS_2VME in SymbolTable.o
&gt;       __ZN3JSC11SymbolTableC2ERNS_2VME in SymbolTable.o

Yeah I have a fix locally, just haven&apos;t uploaded it yet.

&gt; 
&gt; Maybe you need to #include JSValueInlines.h?

We shouldn&apos;t ever include that file.  The correct thing to do is to make sure that every .cpp file includes &quot;Operations.h&quot;, which pulls in a bunch of these BlahInlines.h files.  I had forgotten to add such an include to SymbolTable.cpp.

(I did a refactoring about a year ago that made Opertions.h work this way.  It was because Ossy and I ended up reaching the end of the line for JSC&apos;s include dependency graph - there was a refactoring for which no valid #include order in VM.h existed; one variant would break Darwin and another would break everything else.  It was impossible to work out why crap broke.  So with a bunch of help I moved a lot of inline methods into Inlines.h files, but that created a situations where we would have to include like three different BlahInlines.h files in every .cpp file.  So I instituted the &quot;Operations.h is your friend&quot; rule, so that if you include that, you get the inlines you need.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953651</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-22 12:37:44 -0800</bug_when>
    <thetext>&gt; &gt; Maybe you need to #include JSValueInlines.h?
&gt; 
&gt; We shouldn&apos;t ever include that file.  The correct thing to do is to make sure that every .cpp file includes &quot;Operations.h&quot;, which pulls in a bunch of these BlahInlines.h files.

Sounds like an OK rule. This kind of rule would be easier to communicate if we had a file with a clearer name. Maybe JSCInlines.h? We could either factor out the #includes from Operations.h&apos;s into a new file, or we could rename Operations.h to JSCInlines.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953657</commentid>
    <comment_count>12</comment_count>
      <attachid>217710</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-22 12:57:44 -0800</bug_when>
    <thetext>Created attachment 217710
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953671</commentid>
    <comment_count>13</comment_count>
      <attachid>217710</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-22 13:45:34 -0800</bug_when>
    <thetext>Comment on attachment 217710
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953678</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-22 14:01:41 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/159713</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217651</attachid>
            <date>2013-11-21 23:22:47 -0800</date>
            <delta_ts>2013-11-21 23:26:58 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>21457</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NjgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDEzLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29tYmluZSBTeW1ib2xUYWJsZSBhbmQgU2hhcmVkU3ltYm9sVGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc2MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGUgd2Fz
IG5ldmVyIHVzZWQgZGlyZWN0bHk7IHdlIG5vdyBhbHdheXMgdXNlZCBTaGFyZWRTeW1ib2xUYWJs
ZS4gU28sIHRoaXMKKyAgICAgICAgZ2V0cyByaWQgb2YgU3ltYm9sVGFibGUgYW5kIHJlbmFtZXMg
U2hhcmVkU3ltYm9sVGFibGUgdG8gU3ltYm9sVGFibGUuCisKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzeW1ib2xUYWJsZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OnN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnN5bWJvbFRhYmxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN5bWJvbFRhYmxlRm9yKToK
KyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpzeW1ib2xUYWJsZSk6CisgICAgICAgICogcnVu
dGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQWN0aXZhdGlvbjo6cmVnaXN0ZXJzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3Rp
dmF0aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OnN5bWJvbFRhYmxl
KToKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6SlNTeW1ib2xUYWJsZU9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNW
YXJpYWJsZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgICogcnVudGltZS9TeW1i
b2xUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpkZXN0cm95KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKwogMjAxMy0xMS0yMSAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIHR5cG8gKHJlcXVyaWVtZW50
cy0+cmVxdWlyZW1lbnRzKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzI0LDcgKzcyNCw3IEBAIHB1
YmxpYzoKICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFi
bGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCiAKLSAgICBTaGFyZWRT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+
c3ltYm9sVGFibGUoKTsgfQorICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRDb2RlLT5zeW1ib2xUYWJsZSgpOyB9CiAKICAgICBFdmFsQ29kZUNh
Y2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVy
biBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE1
OTY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQYXJzZXJFcnJvcjsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNl
UHJvdmlkZXI7Ci1jbGFzcyBTaGFyZWRTeW1ib2xUYWJsZTsKK2NsYXNzIFN5bWJvbFRhYmxlOwog
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
OwogCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJy
ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pbmZlcnJlZE5hbWU7IH0KICAgICBKU1N0cmluZyog
bmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lVmFsdWUuZ2V0KCk7IH0KLSAgICBTaGFy
ZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZShDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CiAgICAgewogICAgICAgICByZXR1cm4gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8gbV9zeW1ib2xU
YWJsZUZvckNhbGwuZ2V0KCkgOiBtX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0LmdldCgpOwogICAg
IH0KQEAgLTE1Niw4ICsxNTYsOCBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9uYW1lOwog
ICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5n
PiBtX25hbWVWYWx1ZTsKLSAgICBXcml0ZUJhcnJpZXI8U2hhcmVkU3ltYm9sVGFibGU+IG1fc3lt
Ym9sVGFibGVGb3JDYWxsOwotICAgIFdyaXRlQmFycmllcjxTaGFyZWRTeW1ib2xUYWJsZT4gbV9z
eW1ib2xUYWJsZUZvckNvbnN0cnVjdDsKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1f
c3ltYm9sVGFibGVGb3JDYWxsOworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1i
b2xUYWJsZUZvckNvbnN0cnVjdDsKICAgICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3Bh
cmFtZXRlcnM7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQg
bV9saW5lQ291bnQ7CkBAIC0zODMsNyArMzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhj
ZXB0aW9uSGFuZGxlcihjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5sZXIpIHsgY3JlYXRl
UmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5k
bGVycy5hcHBlbmQoaGFubGVyKTsgfQogICAgIFVubGlua2VkSGFuZGxlckluZm8mIGV4Y2VwdGlv
bkhhbmRsZXIoaW50IGluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURh
dGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaW5kZXhdOyB9CiAKLSAgICBTaGFyZWRTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9Cisg
ICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xUYWJs
ZS5nZXQoKTsgfQogCiAgICAgVk0qIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQogCkBAIC00
NjksNyArNDY5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIGlmIChjb2RlVHlwZSgpID09IEdsb2JhbENvZGUpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBTaGFyZWRTeW1ib2xU
YWJsZTo6Y3JlYXRlKHZtKSk7CisgICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBT
eW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNTEyLDcgKzUx
Miw3IEBAIHByaXZhdGU6CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25E
ZWNsczsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlvbkV4cHJzOwogCi0g
ICAgV3JpdGVCYXJyaWVyPFNoYXJlZFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlOworICAgIFdy
aXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKIAogICAgIFZlY3Rvcjx1bnNp
Z25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
cmV2aXNpb24gMTU5NjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzQsNyArNTM0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlv
bnM7IH0KIAotICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUoKSB7IHJldHVy
biAqbV9zeW1ib2xUYWJsZTsgfQorICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUoKSB7
IHJldHVybiAqbV9zeW1ib2xUYWJsZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkT3B0aW1pemVM
b2NhbHMoKQogICAgICAgICB7CkBAIC01NzcsNyArNTc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgbV9zaG91bGRFbWl0RGVidWdIb29rczsKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZEVtaXRQcm9maWxlSG9va3M7CiAKLSAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIG1fc3ltYm9s
VGFibGU7CisgICAgICAgIFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRhYmxlOwogCiAgICAgICAgIFNj
b3BlTm9kZSogbV9zY29wZU5vZGU7CiAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4g
bV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNTAsNyArNDM1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDcmVhdGVkID0gbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBhY3RpdmF0aW9uVmFsdWVUYWdHUFIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAKLSAgICAgICAgU2hhcmVkU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlID0gbV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+Y29kZU9yaWdp
bik7CisgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1faml0LnN5bWJvbFRhYmxl
Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICBpbnQgcmVnaXN0ZXJzT2Zmc2V0ID0gSlNB
Y3RpdmF0aW9uOjpyZWdpc3RlcnNPZmZzZXQoc3ltYm9sVGFibGUpOwogCiAgICAgICAgIGludCBi
eXRlY29kZUNhcHR1cmVTdGFydCA9IHN5bWJvbFRhYmxlLT5jYXB0dXJlU3RhcnQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMTU5NjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYzMCw3ICs0NjMwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdENyZWF0ZWQgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Olpl
cm8sIGFjdGl2YXRpb25WYWx1ZUdQUik7CiAKLSAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0gbV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAg
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1faml0LnN5bWJvbFRhYmxlRm9yKG5vZGUt
PmNvZGVPcmlnaW4pOwogICAgICAgICBpbnQgcmVnaXN0ZXJzT2Zmc2V0ID0gSlNBY3RpdmF0aW9u
OjpyZWdpc3RlcnNPZmZzZXQoc3ltYm9sVGFibGUpOwogCiAgICAgICAgIGludCBieXRlY29kZUNh
cHR1cmVTdGFydCA9IHN5bWJvbFRhYmxlLT5jYXB0dXJlU3RhcnQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAkocmV2aXNp
b24gMTU5NjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRh
YmxlID0gY29kZUJsb2NrKCktPnN5bWJvbFRhYmxlKCk7CisgICAgICAgIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSA9IGNvZGVCbG9jaygpLT5zeW1ib2xUYWJsZSgpOwogCiAgICAgICAgIC8vIFRo
aXMgZW51bWVyYXRlcyB0aGUgbG9jYWxzIHRoYXQgd2UgYWN0dWFsbHkgY2FyZSBhYm91dCBhbmQg
cGFja3MgdGhlbS4gU28gZm9yIGV4YW1wbGUKICAgICAgICAgLy8gaWYgd2UgdXNlIGxvY2FsIDEs
IDMsIDQsIDUsIDcsIHRoZW4gd2UgcmVtYXAgdGhlbTogMS0+MCwgMy0+MSwgNC0+MiwgNS0+Mywg
Ny0+NC4gV2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAkocmV2aXNpb24gMTU5NjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDM1LDcgKzQzNSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3IoY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpOwogICAgIH0KICAgICAKLSAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+c3ltYm9sVGFi
bGUoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAkocmV2aXNpb24gMTU5NjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbmxpbmUgdm9p
ZCBBcmd1bWVudHM6OmZpbmlzaENyZWF0aW9uKENhCiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgaWYgKGNvZGVCbG9jay0+aGFzU2xvd0Fy
Z3VtZW50cygpKSB7Ci0gICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGNv
ZGVCbG9jay0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
ID0gY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBjb25zdCBTbG93QXJndW1lbnQq
IHNsb3dBcmd1bWVudHMgPSBjb2RlQmxvY2stPm1hY2hpbmVTbG93QXJndW1lbnRzKCk7CiAgICAg
ICAgIGFsbG9jYXRlU2xvd0FyZ3VtZW50cygpOwogICAgICAgICBzaXplX3QgY291bnQgPSBzdGQ6
Om1pbjx1bnNpZ25lZD4obV9udW1Bcmd1bWVudHMsIHN5bWJvbFRhYmxlLT5wYXJhbWV0ZXJDb3Vu
dCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJ
KHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjM5LDcgKzYzOSw3IEBAIHB1YmxpYzoKICAgICBK
U1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
Pm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5n
ICd0aGlzJyEKICAgICBTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+c3ltYm9sVGFibGUoa2luZCk7IH0KKyAgICBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+c3ltYm9sVGFibGUoa2luZCk7IH0KIAog
ICAgIHZvaWQgY2xlYXJDb2RlSWZOb3RDb21waWxpbmcoKTsKICAgICB2b2lkIGNsZWFyVW5saW5r
ZWRDb2RlRm9yUmVjb21waWxhdGlvbklmTm90Q29tcGlsaW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTU5NjgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDE0ICs0MSwxNCBAQCBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNzIEpT
QWN0aXZhdGlvbiA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNB
Y3RpdmF0aW9uKFZNJiwgQ2FsbEZyYW1lKiwgUmVnaXN0ZXIqLCBTaGFyZWRTeW1ib2xUYWJsZSop
OworICAgIEpTQWN0aXZhdGlvbihWTSYsIENhbGxGcmFtZSosIFJlZ2lzdGVyKiwgU3ltYm9sVGFi
bGUqKTsKICAgICAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTVmFyaWFibGVPYmplY3QgQmFzZTsK
IAogICAgIHN0YXRpYyBKU0FjdGl2YXRpb24qIGNyZWF0ZShWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBSZWdpc3RlciogcmVnaXN0ZXJzLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7
Ci0gICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGNvZGVCbG9jay0+c3lt
Ym9sVGFibGUoKTsKKyAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gY29kZUJsb2Nr
LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcg
KAogICAgICAgICAgICAgTm90TnVsbCwKICAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxKU0FjdGl2
YXRpb24+KApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZhbGlkKGNvbnN0
IFN5bWJvbFRhYmxlRW50cnkmKSBjb25zdDsKICAgICBib29sIGlzVG9ybk9mZigpOwogICAgIGlu
dCByZWdpc3RlcnNPZmZzZXQoKTsKLSAgICBzdGF0aWMgaW50IHJlZ2lzdGVyc09mZnNldChTaGFy
ZWRTeW1ib2xUYWJsZSopOworICAgIHN0YXRpYyBpbnQgcmVnaXN0ZXJzT2Zmc2V0KFN5bWJvbFRh
YmxlKik7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwpA
QCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVu
dHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemUoU2hhcmVkU3ltYm9sVGFibGUqKTsKKyAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKFN5bWJvbFRhYmxlKik7CiAgICAgc3RhdGljIHNpemVfdCBz
dG9yYWdlT2Zmc2V0KCk7CiAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UoKTsg
Ly8gY2FwdHVyZUNvdW50KCkgbnVtYmVyIG9mIHJlZ2lzdGVycy4KQEAgLTExMCw3ICsxMTAsNyBA
QCBwcml2YXRlOgogZXh0ZXJuIGludCBhY3RpdmF0aW9uQ291bnQ7CiBleHRlcm4gaW50IGFsbFRo
ZVRoaW5nc0NvdW50OwogCi1pbmxpbmUgSlNBY3RpdmF0aW9uOjpKU0FjdGl2YXRpb24oVk0mIHZt
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXIqIHJlZ2lzdGVycywgU2hhcmVkU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlKQoraW5saW5lIEpTQWN0aXZhdGlvbjo6SlNBY3RpdmF0aW9uKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyKiByZWdpc3RlcnMsIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSkKICAgICA6IEJhc2UoCiAgICAgICAgIHZtLAogICAgICAgICBjYWxs
RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpLApAQCAt
MTM3LDcgKzEzNyw3IEBAIEFMV0FZU19JTkxJTkUgSlNBY3RpdmF0aW9uKiBSZWdpc3Rlcjo6YWMK
ICAgICByZXR1cm4gYXNBY3RpdmF0aW9uKGpzVmFsdWUoKSk7CiB9CiAKLWlubGluZSBpbnQgSlNB
Y3RpdmF0aW9uOjpyZWdpc3RlcnNPZmZzZXQoU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
KQoraW5saW5lIGludCBKU0FjdGl2YXRpb246OnJlZ2lzdGVyc09mZnNldChTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUpCiB7CiAgICAgcmV0dXJuIHN0b3JhZ2VPZmZzZXQoKSArICgoc3ltYm9sVGFi
bGUtPmNhcHR1cmVDb3VudCgpIC0gc3ltYm9sVGFibGUtPmNhcHR1cmVTdGFydCgpICAtIDEpICog
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpOwogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIGlu
bGluZSBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIEpTQWN0aXZhdGkKICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4odGhpcykgKyBzdG9yYWdlT2Zmc2V0KCkpOwogfQogCi1pbmxpbmUgc2l6
ZV90IEpTQWN0aXZhdGlvbjo6YWxsb2NhdGlvblNpemUoU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlKQoraW5saW5lIHNpemVfdCBKU0FjdGl2YXRpb246OmFsbG9jYXRpb25TaXplKFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSkKIHsKICAgICBzaXplX3Qgb2JqZWN0U2l6ZUluQnl0ZXMgPSBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNp
emVvZihKU0FjdGl2YXRpb24pKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemVJbkJ5dGVzID0gc3lt
Ym9sVGFibGUtPmNhcHR1cmVDb3VudCgpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oCShyZXZpc2lvbiAxNTk2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgSlNTeW1ib2xUYWJsZU9iamVjdCA6IHB1YmxpYyBKU1NjbwogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNTY29wZSBCYXNlOwogICAgIAotICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KKyAgICBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdl
dCgpOyB9CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25tZW50UmVjb3JkIHwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKICAgICAKLSAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTaGFyZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSAw
KQorICAgIEpTU3ltYm9sVGFibGVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IDApCiAgICAgICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlLCBzY29wZSkKICAgICB7CiAgICAgICAgIGlmIChzeW1ib2xUYWJs
ZSkKQEAgLTU4LDEyICs1OCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIGlmICghbV9zeW1ib2xUYWJsZSkKLSAgICAgICAg
ICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBTaGFyZWRTeW1ib2xUYWJsZTo6Y3JlYXRl
KHZtKSk7CisgICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFi
bGU6OmNyZWF0ZSh2bSkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIFdyaXRlQmFycmllcjxTaGFyZWRTeW1ib2xU
YWJsZT4gbV9zeW1ib2xUYWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3lt
Ym9sVGFibGU7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oCShyZXZpc2lvbiAxNTk2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICAgICAgUmVnaXN0ZXIq
IHJlZ2lzdGVycywKICAgICAgICAgSlNTY29wZSogc2NvcGUsCi0gICAgICAgIFNoYXJlZFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSA9IDApCisgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSA9IDApCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBzY29wZSwgc3ltYm9sVGFibGUp
CiAgICAgICAgICwgbV9yZWdpc3RlcnMocmVpbnRlcnByZXRfY2FzdDxXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+Kj4ocmVnaXN0ZXJzKSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNTk2ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBT
aGFyZWRTeW1ib2xUYWJsZTo6c19pbmZvID0geyAiU2hhcmVkU3ltYm9sVGFibGUiLCAwLCAwLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNoYXJlZFN5bWJvbFRhYmxlKSB9OworY29uc3QgQ2xhc3NJ
bmZvIFN5bWJvbFRhYmxlOjpzX2luZm8gPSB7ICJTeW1ib2xUYWJsZSIsIDAsIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoU3ltYm9sVGFibGUpIH07CiAKIFN5bWJvbFRhYmxlRW50cnkmIFN5bWJv
bFRhYmxlRW50cnk6OmNvcHlTbG93KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQogewpA
QCAtNDYsMTAgKzQ2LDEwIEBAIFN5bWJvbFRhYmxlRW50cnkmIFN5bWJvbFRhYmxlRW50cnk6OmNv
cHkKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXZvaWQgU2hhcmVkU3ltYm9sVGFibGU6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQordm9pZCBTeW1ib2xUYWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
CiB7Ci0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U2hhcmVkU3lt
Ym9sVGFibGUqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5TaGFyZWRTeW1ib2xUYWJsZTo6flNo
YXJlZFN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
U3ltYm9sVGFibGUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5TeW1ib2xUYWJsZTo6flN5bWJv
bFRhYmxlKCk7CiB9CiAKIHZvaWQgU3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdygp
CkBAIC05OCw3ICs5OCwxNSBAQCBTeW1ib2xUYWJsZUVudHJ5OjpGYXRFbnRyeSogU3ltYm9sVGFi
bGVFCiAgICAgcmV0dXJuIGVudHJ5OwogfQogCi1TeW1ib2xUYWJsZTo6U3ltYm9sVGFibGUoKSB7
IH0KK1N5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZShWTSYgdm0pCisgICAgOiBKU0NlbGwodm0sIHZt
LnNoYXJlZFN5bWJvbFRhYmxlU3RydWN0dXJlLmdldCgpKQorICAgICwgbV9wYXJhbWV0ZXJDb3Vu
dEluY2x1ZGluZ1RoaXMoMCkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCisgICAg
LCBtX2NhcHR1cmVTdGFydCgwKQorICAgICwgbV9jYXB0dXJlRW5kKDApCit7Cit9CisKIFN5bWJv
bFRhYmxlOjp+U3ltYm9sVGFibGUoKSB7IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE1
OTY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzNCwxMyArMzM0LDI3IEBAIHN0cnVjdCBTeW1ib2xUYWJsZUluZGV4
SGFzaFRyYWl0cyA6IEhhc2gKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
ID0gdHJ1ZTsKIH07CiAKLWNsYXNzIFN5bWJvbFRhYmxlIHsKK2NsYXNzIFN5bWJvbFRhYmxlIDog
cHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFN5bWJvbFRhYmxlRW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxTdHJpbmdJbXBsPj4sIFN5bWJvbFRh
YmxlSW5kZXhIYXNoVHJhaXRzPiBNYXA7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xU
YWJsZSgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIH5TeW1ib2xUYWJsZSgpOwotICAgIAorICAg
IHN0YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFN5bWJv
bFRhYmxlKiBzaGFyZWRTeW1ib2xUYWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5
bWJvbFRhYmxlPih2bS5oZWFwKSkgU3ltYm9sVGFibGUodm0pOworICAgICAgICBzaGFyZWRTeW1i
b2xUYWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gc2hhcmVkU3ltYm9s
VGFibGU7CisgICAgfQorICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0
cnVlOworICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsK
KyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhMZWFmVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwogICAgIC8vIFlvdSBtdXN0IGhvbGQgdGhlIGxv
Y2sgdW50aWwgYWZ0ZXIgeW91J3JlIGRvbmUgd2l0aCB0aGUgaXRlcmF0b3IuCiAgICAgTWFwOjpp
dGVyYXRvciBmaW5kKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXkp
CiAgICAgewpAQCAtNDMzLDMyICs0NDcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjb250
YWlucyhsb2NrZXIsIGtleSk7CiAgICAgfQogICAgIAotcHJpdmF0ZToKLSAgICBNYXAgbV9tYXA7
Ci1wdWJsaWM6Ci0gICAgbXV0YWJsZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7Ci19OwotCi0K
LWNsYXNzIFNoYXJlZFN5bWJvbFRhYmxlIDogcHVibGljIEpTQ2VsbCwgcHVibGljIFN5bWJvbFRh
YmxlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotCi0gICAgc3RhdGljIFNo
YXJlZFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgU2hhcmVkU3lt
Ym9sVGFibGUqIHNoYXJlZFN5bWJvbFRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
U2hhcmVkU3ltYm9sVGFibGU+KHZtLmhlYXApKSBTaGFyZWRTeW1ib2xUYWJsZSh2bSk7Ci0gICAg
ICAgIHNoYXJlZFN5bWJvbFRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHJldHVy
biBzaGFyZWRTeW1ib2xUYWJsZTsKLSAgICB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1
Y3R1cmUgPSB0cnVlOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0KLSAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKExl
YWZUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCiAgICAgYm9vbCB1c2Vz
Tm9uU3RyaWN0RXZhbCgpIHsgcmV0dXJuIG1fdXNlc05vblN0cmljdEV2YWw7IH0KICAgICB2b2lk
IHNldFVzZXNOb25TdHJpY3RFdmFsKGJvb2wgdXNlc05vblN0cmljdEV2YWwpIHsgbV91c2VzTm9u
U3RyaWN0RXZhbCA9IHVzZXNOb25TdHJpY3RFdmFsOyB9CiAKQEAgLTQ4MSwxNSArNDY5LDExIEBA
IHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcml2YXRlOgotICAgIFNoYXJl
ZFN5bWJvbFRhYmxlKFZNJiB2bSkKLSAgICAgICAgOiBKU0NlbGwodm0sIHZtLnNoYXJlZFN5bWJv
bFRhYmxlU3RydWN0dXJlLmdldCgpKQotICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnRJbmNsdWRp
bmdUaGlzKDApCi0gICAgICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKLSAgICAgICAg
LCBtX2NhcHR1cmVTdGFydCgwKQotICAgICAgICAsIG1fY2FwdHVyZUVuZCgwKQotICAgIHsKLSAg
ICB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sVGFibGUoVk0mKTsKKyAgICB+U3ltYm9s
VGFibGUoKTsKIAorICAgIE1hcCBtX21hcDsKKyAgICAKICAgICBpbnQgbV9wYXJhbWV0ZXJDb3Vu
dEluY2x1ZGluZ1RoaXM7CiAgICAgYm9vbCBtX3VzZXNOb25TdHJpY3RFdmFsOwogCkBAIC00OTcs
NiArNDgxLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9jYXB0dXJlRW5kOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dBcmd1bWVudFtdPiBtX3Nsb3dBcmd1bWVudHM7CisKK3B1YmxpYzoKKyAg
ICBtdXRhYmxlIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTU5
NjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgIHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBm
dW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKLSAgICBzaGFyZWRTeW1ib2xUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFNoYXJlZFN5bWJv
bFRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgc2hhcmVk
U3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2xUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLnNl
dCgqdGhpcywgU3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlLnNldCgqdGhpcywgU3BhcnNl
QXJyYXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IHdpdGhTY29wZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217652</attachid>
            <date>2013-11-21 23:26:58 -0800</date>
            <delta_ts>2013-11-22 12:57:44 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22124</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NjgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEzLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29tYmluZSBTeW1ib2xUYWJsZSBhbmQgU2hhcmVkU3ltYm9sVGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc2MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGUgd2Fz
IG5ldmVyIHVzZWQgZGlyZWN0bHk7IHdlIG5vdyBhbHdheXMgdXNlZCBTaGFyZWRTeW1ib2xUYWJs
ZS4gU28sIHRoaXMKKyAgICAgICAgZ2V0cyByaWQgb2YgU3ltYm9sVGFibGUgYW5kIHJlbmFtZXMg
U2hhcmVkU3ltYm9sVGFibGUgdG8gU3ltYm9sVGFibGUuCisKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzeW1ib2xUYWJsZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OnN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnN5bWJvbFRhYmxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN5bWJvbFRhYmxlRm9yKToK
KyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpzeW1ib2xUYWJsZSk6CisgICAgICAgICogcnVu
dGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQWN0aXZhdGlvbjo6cmVnaXN0ZXJzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3Rp
dmF0aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OnN5bWJvbFRhYmxl
KToKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6SlNTeW1ib2xUYWJsZU9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNW
YXJpYWJsZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgICogcnVudGltZS9TeW1i
b2xUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpkZXN0cm95KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisKIDIwMTMtMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggYSB0eXBvIChyZXF1cmllbWVudHMtPnJlcXVpcmVtZW50cykuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNTk2ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcyNCw3ICs3MjQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJp
bmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJl
RGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJ
bmRleF07IH0KIAogCi0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnN5bWJvbFRhYmxlKCk7IH0KKyAgICBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+c3ltYm9sVGFi
bGUoKTsgfQogCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFy
ZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCShyZXZpc2lvbiAxNTk2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUs
NyBAQCBzdHJ1Y3QgUGFyc2VyRXJyb3I7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3Mg
U291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwotY2xhc3MgU2hhcmVkU3ltYm9sVGFi
bGU7CitjbGFzcyBTeW1ib2xUYWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3Mg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKIApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAg
IGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5mZXJy
ZWROYW1lOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZVZhbHVlLmdldCgpOyB9Ci0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgIHsKICAgICAgICAgcmV0dXJuIChraW5kID09
IENvZGVGb3JDYWxsKSA/IG1fc3ltYm9sVGFibGVGb3JDYWxsLmdldCgpIDogbV9zeW1ib2xUYWJs
ZUZvckNvbnN0cnVjdC5nZXQoKTsKICAgICB9CkBAIC0xNTYsOCArMTU2LDggQEAgcHJpdmF0ZToK
ICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwog
ICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9uYW1lVmFsdWU7Ci0gICAgV3JpdGVCYXJyaWVy
PFNoYXJlZFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlRm9yQ2FsbDsKLSAgICBXcml0ZUJhcnJp
ZXI8U2hhcmVkU3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVGb3JDb25zdHJ1Y3Q7CisgICAgV3Jp
dGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlRm9yQ2FsbDsKKyAgICBXcml0ZUJh
cnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVGb3JDb25zdHJ1Y3Q7CiAgICAgUmVmUHRy
PEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOwogICAgIHVuc2lnbmVkIG1fZmlyc3RM
aW5lT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwpAQCAtMzgzLDcgKzM4Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgVW5saW5rZWRIYW5k
bGVySW5mbyYgaGFubGVyKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1f
cmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuYXBwZW5kKGhhbmxlcik7IH0KICAgICBVbmxp
bmtlZEhhbmRsZXJJbmZvJiBleGNlcHRpb25IYW5kbGVyKGludCBpbmRleCkgeyBBU1NFUlQobV9y
YXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2luZGV4XTsg
fQogCi0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9zeW1ib2xUYWJsZS5nZXQoKTsgfQorICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KIAogICAgIFZNKiB2bSgpIGNvbnN0
IHsgcmV0dXJuIG1fdm07IH0KIApAQCAtNDY5LDcgKzQ2OSw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBpZiAoY29kZVR5cGUoKSA9PSBH
bG9iYWxDb2RlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N5bWJvbFRhYmxlLnNl
dCh2bSwgdGhpcywgU2hhcmVkU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOworICAgICAgICBtX3N5
bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTUxMiw3ICs1MTIsNyBAQCBwcml2YXRlOgogICAgIEZ1bmN0aW9uRXhw
cmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVj
dG9yIG1fZnVuY3Rpb25FeHByczsKIAotICAgIFdyaXRlQmFycmllcjxTaGFyZWRTeW1ib2xUYWJs
ZT4gbV9zeW1ib2xUYWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9s
VGFibGU7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNTM0LDcgKzUzNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFZlY3RvcjxV
bmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0aW9u
cygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAKLSAgICAgICAgU2hhcmVkU3ltYm9sVGFi
bGUmIHN5bWJvbFRhYmxlKCkgeyByZXR1cm4gKm1fc3ltYm9sVGFibGU7IH0KKyAgICAgICAgU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlKCkgeyByZXR1cm4gKm1fc3ltYm9sVGFibGU7IH0KIAogICAg
ICAgICBib29sIHNob3VsZE9wdGltaXplTG9jYWxzKCkKICAgICAgICAgewpAQCAtNTc3LDcgKzU3
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc2hvdWxkRW1pdERlYnVnSG9v
a3M7CiAgICAgICAgIGJvb2wgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzOwogCi0gICAgICAgIFNo
YXJlZFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRhYmxlOworICAgICAgICBTeW1ib2xUYWJsZSogbV9z
eW1ib2xUYWJsZTsKIAogICAgICAgICBTY29wZU5vZGUqIG1fc2NvcGVOb2RlOwogICAgICAgICBT
dHJvbmc8VW5saW5rZWRDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZp
c2lvbiAxNTk2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUwLDcgKzQzNTAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgYWN0
aXZhdGlvblZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykp
OwogCi0gICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1faml0LnN5bWJv
bFRhYmxlRm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9s
VGFibGUgPSBtX2ppdC5zeW1ib2xUYWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKTsKICAgICAgICAg
aW50IHJlZ2lzdGVyc09mZnNldCA9IEpTQWN0aXZhdGlvbjo6cmVnaXN0ZXJzT2Zmc2V0KHN5bWJv
bFRhYmxlKTsKIAogICAgICAgICBpbnQgYnl0ZWNvZGVDYXB0dXJlU3RhcnQgPSBzeW1ib2xUYWJs
ZS0+Y2FwdHVyZVN0YXJ0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2MzAsNyArNDYzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDcmVhdGVkID0gbV9qaXQuYnJh
bmNoVGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCBhY3RpdmF0aW9uVmFsdWVHUFIpOwogCi0gICAg
ICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1faml0LnN5bWJvbFRhYmxlRm9y
KG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBt
X2ppdC5zeW1ib2xUYWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKTsKICAgICAgICAgaW50IHJlZ2lz
dGVyc09mZnNldCA9IEpTQWN0aXZhdGlvbjo6cmVnaXN0ZXJzT2Zmc2V0KHN5bWJvbFRhYmxlKTsK
IAogICAgICAgICBpbnQgYnl0ZWNvZGVDYXB0dXJlU3RhcnQgPSBzeW1ib2xUYWJsZS0+Y2FwdHVy
ZVN0YXJ0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rh
Y2tMYXlvdXRQaGFzZS5jcHAJKHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIFNo
YXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGNvZGVCbG9jaygpLT5zeW1ib2xUYWJsZSgp
OworICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBjb2RlQmxvY2soKS0+c3ltYm9s
VGFibGUoKTsKIAogICAgICAgICAvLyBUaGlzIGVudW1lcmF0ZXMgdGhlIGxvY2FscyB0aGF0IHdl
IGFjdHVhbGx5IGNhcmUgYWJvdXQgYW5kIHBhY2tzIHRoZW0uIFNvIGZvciBleGFtcGxlCiAgICAg
ICAgIC8vIGlmIHdlIHVzZSBsb2NhbCAxLCAzLCA0LCA1LCA3LCB0aGVuIHdlIHJlbWFwIHRoZW06
IDEtPjAsIDMtPjEsIDQtPjIsIDUtPjMsIDctPjQuIFdlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzNSw3ICs0MzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiYXNlbGluZUFyZ3VtZW50
c1JlZ2lzdGVyRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKICAgICB9CiAgICAgCi0g
ICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4pCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlRm9yKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4pCiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tG
b3IoY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTEsNyArMjUxLDcgQEAgaW5saW5lIHZvaWQgQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbihDYQog
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAg
IGlmIChjb2RlQmxvY2stPmhhc1Nsb3dBcmd1bWVudHMoKSkgewotICAgICAgICBTaGFyZWRTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgICAg
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKTsKICAg
ICAgICAgY29uc3QgU2xvd0FyZ3VtZW50KiBzbG93QXJndW1lbnRzID0gY29kZUJsb2NrLT5tYWNo
aW5lU2xvd0FyZ3VtZW50cygpOwogICAgICAgICBhbGxvY2F0ZVNsb3dBcmd1bWVudHMoKTsKICAg
ICAgICAgc2l6ZV90IGNvdW50ID0gc3RkOjptaW48dW5zaWduZWQ+KG1fbnVtQXJndW1lbnRzLCBz
eW1ib2xUYWJsZS0+cGFyYW1ldGVyQ291bnQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNTk2ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzOSw3
ICs2MzksNyBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJh
bWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0
ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCiAgICAgU3RyaW5nIHBhcmFtU3RyaW5n
KCkgY29uc3Q7Ci0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnN5
bWJvbFRhYmxlKGtpbmQpOyB9CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PnN5bWJvbFRhYmxlKGtpbmQpOyB9CiAKICAgICB2b2lkIGNsZWFyQ29kZUlmTm90Q29tcGlsaW5n
KCk7CiAgICAgdm9pZCBjbGVhclVubGlua2VkQ29kZUZvclJlY29tcGlsYXRpb25JZk5vdENvbXBp
bGluZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgJKHJldmlzaW9uIDE1OTY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsMTQgQEAgY2xhc3Mg
UmVnaXN0ZXI7CiAgICAgCiBjbGFzcyBKU0FjdGl2YXRpb24gOiBwdWJsaWMgSlNWYXJpYWJsZU9i
amVjdCB7CiBwcml2YXRlOgotICAgIEpTQWN0aXZhdGlvbihWTSYsIENhbGxGcmFtZSosIFJlZ2lz
dGVyKiwgU2hhcmVkU3ltYm9sVGFibGUqKTsKKyAgICBKU0FjdGl2YXRpb24oVk0mLCBDYWxsRnJh
bWUqLCBSZWdpc3RlciosIFN5bWJvbFRhYmxlKik7CiAgICAgCiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBKU1ZhcmlhYmxlT2JqZWN0IEJhc2U7CiAKICAgICBzdGF0aWMgSlNBY3RpdmF0aW9uKiBjcmVh
dGUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXIqIHJlZ2lzdGVycywgQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgewotICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgICAgIFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSA9IGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgSlNBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uID0gbmV3ICgKICAgICAgICAgICAgIE5vdE51bGwsCiAgICAgICAg
ICAgICBhbGxvY2F0ZUNlbGw8SlNBY3RpdmF0aW9uPigKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNWYWxpZChjb25zdCBTeW1ib2xUYWJsZUVudHJ5JikgY29uc3Q7CiAgICAg
Ym9vbCBpc1Rvcm5PZmYoKTsKICAgICBpbnQgcmVnaXN0ZXJzT2Zmc2V0KCk7Ci0gICAgc3RhdGlj
IGludCByZWdpc3RlcnNPZmZzZXQoU2hhcmVkU3ltYm9sVGFibGUqKTsKKyAgICBzdGF0aWMgaW50
IHJlZ2lzdGVyc09mZnNldChTeW1ib2xUYWJsZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogCiAg
ICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSk7CiAKLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKFNoYXJlZFN5
bWJvbFRhYmxlKik7CisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJs
ZSopOwogICAgIHN0YXRpYyBzaXplX3Qgc3RvcmFnZU9mZnNldCgpOwogCiAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+KiBzdG9yYWdlKCk7IC8vIGNhcHR1cmVDb3VudCgpIG51bWJlciBvZiByZWdp
c3RlcnMuCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKIGV4dGVybiBpbnQgYWN0aXZhdGlv
bkNvdW50OwogZXh0ZXJuIGludCBhbGxUaGVUaGluZ3NDb3VudDsKIAotaW5saW5lIEpTQWN0aXZh
dGlvbjo6SlNBY3RpdmF0aW9uKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVy
KiByZWdpc3RlcnMsIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKK2lubGluZSBKU0Fj
dGl2YXRpb246OkpTQWN0aXZhdGlvbihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdp
c3RlciogcmVnaXN0ZXJzLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCiAgICAgOiBCYXNlKAog
ICAgICAgICB2bSwKICAgICAgICAgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFj
dGl2YXRpb25TdHJ1Y3R1cmUoKSwKQEAgLTEzNyw3ICsxMzcsNyBAQCBBTFdBWVNfSU5MSU5FIEpT
QWN0aXZhdGlvbiogUmVnaXN0ZXI6OmFjCiAgICAgcmV0dXJuIGFzQWN0aXZhdGlvbihqc1ZhbHVl
KCkpOwogfQogCi1pbmxpbmUgaW50IEpTQWN0aXZhdGlvbjo6cmVnaXN0ZXJzT2Zmc2V0KFNoYXJl
ZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKK2lubGluZSBpbnQgSlNBY3RpdmF0aW9uOjpyZWdp
c3RlcnNPZmZzZXQoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQogewogICAgIHJldHVybiBzdG9y
YWdlT2Zmc2V0KCkgKyAoKHN5bWJvbFRhYmxlLT5jYXB0dXJlQ291bnQoKSAtIHN5bWJvbFRhYmxl
LT5jYXB0dXJlU3RhcnQoKSAgLSAxKSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKTsK
IH0KQEAgLTE3NSw3ICsxNzUsNyBAQCBpbmxpbmUgV3JpdGVCYXJyaWVyPFVua25vd24+KiBKU0Fj
dGl2YXRpCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgc3RvcmFnZU9m
ZnNldCgpKTsKIH0KIAotaW5saW5lIHNpemVfdCBKU0FjdGl2YXRpb246OmFsbG9jYXRpb25TaXpl
KFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKK2lubGluZSBzaXplX3QgSlNBY3RpdmF0
aW9uOjphbGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCiB7CiAgICAgc2l6
ZV90IG9iamVjdFNpemVJbkJ5dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoSlNBY3RpdmF0aW9uKSk7CiAgICAgc2l6ZV90
IHN0b3JhZ2VTaXplSW5CeXRlcyA9IHN5bWJvbFRhYmxlLT5jYXB0dXJlQ291bnQoKSAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMTU5NjgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEpTU3ltYm9sVGFibGVPYmplY3Qg
OiBwdWJsaWMgSlNTY28KIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTU2NvcGUgQmFzZTsKICAgICAK
LSAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5
bWJvbFRhYmxlLmdldCgpOyB9CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVu
dFJlY29yZCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgCi0gICAgSlNTeW1ib2xUYWJsZU9iamVj
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29wZSwgU2hhcmVkU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlID0gMCkKKyAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUgPSAwKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgc2NvcGUpCiAgICAg
ewogICAgICAgICBpZiAoc3ltYm9sVGFibGUpCkBAIC01OCwxMiArNTgsMTIgQEAgcHJvdGVjdGVk
OgogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBpZiAo
IW1fc3ltYm9sVGFibGUpCi0gICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywg
U2hhcmVkU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOworICAgICAgICAgICAgbV9zeW1ib2xUYWJs
ZS5zZXQodm0sIHRoaXMsIFN5bWJvbFRhYmxlOjpjcmVhdGUodm0pKTsKICAgICB9CiAKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICBX
cml0ZUJhcnJpZXI8U2hhcmVkU3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGU7CisgICAgV3JpdGVC
YXJyaWVyPFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTU5NjgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsCiAgICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMsCiAgICAgICAgIEpTU2NvcGUqIHNj
b3BlLAotICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSAwKQorICAgICAg
ICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSAwKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSwgc2NvcGUsIHN5bWJvbFRhYmxlKQogICAgICAgICAsIG1fcmVnaXN0ZXJzKHJlaW50ZXJw
cmV0X2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KHJlZ2lzdGVycykpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAko
cmV2aXNpb24gMTU5NjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1jb25zdCBDbGFzc0luZm8gU2hhcmVkU3ltYm9sVGFibGU6OnNfaW5mbyA9IHsgIlNo
YXJlZFN5bWJvbFRhYmxlIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFyZWRTeW1i
b2xUYWJsZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBTeW1ib2xUYWJsZTo6c19pbmZvID0geyAiU3lt
Ym9sVGFibGUiLCAwLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN5bWJvbFRhYmxlKSB9Owog
CiBTeW1ib2xUYWJsZUVudHJ5JiBTeW1ib2xUYWJsZUVudHJ5Ojpjb3B5U2xvdyhjb25zdCBTeW1i
b2xUYWJsZUVudHJ5JiBvdGhlcikKIHsKQEAgLTQ2LDEwICs0NiwxMCBAQCBTeW1ib2xUYWJsZUVu
dHJ5JiBTeW1ib2xUYWJsZUVudHJ5Ojpjb3B5CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi12b2lk
IFNoYXJlZFN5bWJvbFRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3ZvaWQgU3ltYm9sVGFi
bGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIFNoYXJlZFN5bWJvbFRhYmxlKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFNoYXJlZFN5bWJvbFRhYmxlKj4oY2VsbCk7Ci0gICAgdGhpc09iamVj
dC0+U2hhcmVkU3ltYm9sVGFibGU6On5TaGFyZWRTeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRh
YmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFN5bWJvbFRhYmxlKj4oY2VsbCk7CisgICAgdGhpc09i
amVjdC0+U3ltYm9sVGFibGU6On5TeW1ib2xUYWJsZSgpOwogfQogCiB2b2lkIFN5bWJvbFRhYmxl
RW50cnk6OmZyZWVGYXRFbnRyeVNsb3coKQpAQCAtOTgsNyArOTgsMTUgQEAgU3ltYm9sVGFibGVF
bnRyeTo6RmF0RW50cnkqIFN5bWJvbFRhYmxlRQogICAgIHJldHVybiBlbnRyeTsKIH0KIAotU3lt
Ym9sVGFibGU6OlN5bWJvbFRhYmxlKCkgeyB9CitTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGUoVk0m
IHZtKQorICAgIDogSlNDZWxsKHZtLCB2bS5zeW1ib2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkKKyAg
ICAsIG1fcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzKDApCisgICAgLCBtX3VzZXNOb25TdHJp
Y3RFdmFsKGZhbHNlKQorICAgICwgbV9jYXB0dXJlU3RhcnQoMCkKKyAgICAsIG1fY2FwdHVyZUVu
ZCgwKQoreworfQorCiBTeW1ib2xUYWJsZTo6flN5bWJvbFRhYmxlKCkgeyB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oCShyZXZpc2lvbiAxNTk2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsMTMgKzMzNCwyNyBAQCBzdHJ1
Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHMgOiBIYXNoCiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiB9OwogCi1jbGFzcyBTeW1ib2xUYWJsZSB7Citj
bGFzcyBTeW1ib2xUYWJsZSA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgorICAgIHR5cGVkZWYg
SlNDZWxsIEJhc2U7CisKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBT
eW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3Ry
aW5nSW1wbD4+LCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0cz4gTWFwOwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3ltYm9sVGFibGUoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB+U3ltYm9s
VGFibGUoKTsKLSAgICAKKyAgICBzdGF0aWMgU3ltYm9sVGFibGUqIGNyZWF0ZShWTSYgdm0pCisg
ICAgeworICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxTeW1ib2xUYWJsZT4odm0uaGVhcCkpIFN5bWJvbFRhYmxlKHZtKTsKKyAgICAg
ICAgc3ltYm9sVGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHN5bWJv
bFRhYmxlOworICAgIH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
dHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKICAgICAvLyBZb3UgbXVzdCBob2xkIHRoZSBs
b2NrIHVudGlsIGFmdGVyIHlvdSdyZSBkb25lIHdpdGggdGhlIGl0ZXJhdG9yLgogICAgIE1hcDo6
aXRlcmF0b3IgZmluZChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5
KQogICAgIHsKQEAgLTQzMywzMiArNDQ3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29u
dGFpbnMobG9ja2VyLCBrZXkpOwogICAgIH0KICAgICAKLXByaXZhdGU6Ci0gICAgTWFwIG1fbWFw
OwotcHVibGljOgotICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwotfTsKLQot
Ci1jbGFzcyBTaGFyZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBKU0NlbGwsIHB1YmxpYyBTeW1ib2xU
YWJsZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLQotICAgIHN0YXRpYyBT
aGFyZWRTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIFNoYXJlZFN5
bWJvbFRhYmxlKiBzaGFyZWRTeW1ib2xUYWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFNoYXJlZFN5bWJvbFRhYmxlPih2bS5oZWFwKSkgU2hhcmVkU3ltYm9sVGFibGUodm0pOwotICAg
ICAgICBzaGFyZWRTeW1ib2xUYWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1
cm4gc2hhcmVkU3ltYm9sVGFibGU7Ci0gICAgfQotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3Ry
dWN0dXJlID0gdHJ1ZTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotCi0gICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhM
ZWFmVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQogICAgIGJvb2wgdXNl
c05vblN0cmljdEV2YWwoKSB7IHJldHVybiBtX3VzZXNOb25TdHJpY3RFdmFsOyB9CiAgICAgdm9p
ZCBzZXRVc2VzTm9uU3RyaWN0RXZhbChib29sIHVzZXNOb25TdHJpY3RFdmFsKSB7IG1fdXNlc05v
blN0cmljdEV2YWwgPSB1c2VzTm9uU3RyaWN0RXZhbDsgfQogCkBAIC00ODEsMTUgKzQ2OSwxMSBA
QCBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJpdmF0ZToKLSAgICBTaGFy
ZWRTeW1ib2xUYWJsZShWTSYgdm0pCi0gICAgICAgIDogSlNDZWxsKHZtLCB2bS5zaGFyZWRTeW1i
b2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50SW5jbHVk
aW5nVGhpcygwKQotICAgICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCi0gICAgICAg
ICwgbV9jYXB0dXJlU3RhcnQoMCkKLSAgICAgICAgLCBtX2NhcHR1cmVFbmQoMCkKLSAgICB7Ci0g
ICAgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbFRhYmxlKFZNJik7CisgICAgflN5bWJv
bFRhYmxlKCk7CiAKKyAgICBNYXAgbV9tYXA7CisgICAgCiAgICAgaW50IG1fcGFyYW1ldGVyQ291
bnRJbmNsdWRpbmdUaGlzOwogICAgIGJvb2wgbV91c2VzTm9uU3RyaWN0RXZhbDsKIApAQCAtNDk3
LDYgKzQ4MSw5IEBAIHByaXZhdGU6CiAgICAgaW50IG1fY2FwdHVyZUVuZDsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93QXJndW1lbnRbXT4gbV9zbG93QXJndW1lbnRzOworCitwdWJsaWM6Cisg
ICAgbXV0YWJsZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE1
OTY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dy
YW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
ZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcmVnRXhwU3RydWN0
dXJlLnNldCgqdGhpcywgUmVnRXhwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7Ci0gICAgc2hhcmVkU3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTaGFyZWRTeW1i
b2xUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHN5bWJv
bFRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRo
aXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5
VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB3aXRo
U2NvcGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShy
ZXZpc2lvbiAxNTk2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjQsNyArMjY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgICAgICBT
dHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKLSAgICAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gc2hhcmVkU3ltYm9sVGFibGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IHN5bWJvbFRhYmxlU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1
cmVDaGFpblN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3BhcnNlQXJyYXlW
YWx1ZU1hcFN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2l0aFNjb3BlU3Ry
dWN0dXJlOwo=
</data>
<flag name="review"
          id="240826"
          type_id="1"
          status="-"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="240827"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217710</attachid>
            <date>2013-11-22 12:57:44 -0800</date>
            <delta_ts>2013-11-22 13:45:34 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22328</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NzA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEzLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29tYmluZSBTeW1ib2xUYWJsZSBhbmQgU2hhcmVkU3ltYm9sVGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc2MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGUgd2Fz
IG5ldmVyIHVzZWQgZGlyZWN0bHk7IHdlIG5vdyBhbHdheXMgdXNlZCBTaGFyZWRTeW1ib2xUYWJs
ZS4gU28sIHRoaXMKKyAgICAgICAgZ2V0cyByaWQgb2YgU3ltYm9sVGFibGUgYW5kIHJlbmFtZXMg
U2hhcmVkU3ltYm9sVGFibGUgdG8gU3ltYm9sVGFibGUuCisKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzeW1ib2xUYWJsZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OnN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnN5bWJvbFRhYmxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN5bWJvbFRhYmxlRm9yKToK
KyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpzeW1ib2xUYWJsZSk6CisgICAgICAgICogcnVu
dGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQWN0aXZhdGlvbjo6cmVnaXN0ZXJzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3Rp
dmF0aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OnN5bWJvbFRhYmxl
KToKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6SlNTeW1ib2xUYWJsZU9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNW
YXJpYWJsZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgICogcnVudGltZS9TeW1i
b2xUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpkZXN0cm95KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisKIDIwMTMtMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvciBzaG91bGQgYWxpZ24gdGhlIHN0YWNrIGFjY29yZGluZyB0byBu
YXRpdmUgY29udmVudGlvbnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDE1OTcwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzIyLDcgKzcyMiw3IEBAIHB1
YmxpYzoKICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFi
bGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCiAKLSAgICBTaGFyZWRT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+
c3ltYm9sVGFibGUoKTsgfQorICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRDb2RlLT5zeW1ib2xUYWJsZSgpOyB9CiAKICAgICBFdmFsQ29kZUNh
Y2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVy
biBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE1
OTcwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQYXJzZXJFcnJvcjsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNl
UHJvdmlkZXI7Ci1jbGFzcyBTaGFyZWRTeW1ib2xUYWJsZTsKK2NsYXNzIFN5bWJvbFRhYmxlOwog
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
OwogCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJy
ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pbmZlcnJlZE5hbWU7IH0KICAgICBKU1N0cmluZyog
bmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lVmFsdWUuZ2V0KCk7IH0KLSAgICBTaGFy
ZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZShDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CiAgICAgewogICAgICAgICByZXR1cm4gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8gbV9zeW1ib2xU
YWJsZUZvckNhbGwuZ2V0KCkgOiBtX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0LmdldCgpOwogICAg
IH0KQEAgLTE1Niw4ICsxNTYsOCBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9uYW1lOwog
ICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5n
PiBtX25hbWVWYWx1ZTsKLSAgICBXcml0ZUJhcnJpZXI8U2hhcmVkU3ltYm9sVGFibGU+IG1fc3lt
Ym9sVGFibGVGb3JDYWxsOwotICAgIFdyaXRlQmFycmllcjxTaGFyZWRTeW1ib2xUYWJsZT4gbV9z
eW1ib2xUYWJsZUZvckNvbnN0cnVjdDsKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1f
c3ltYm9sVGFibGVGb3JDYWxsOworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1i
b2xUYWJsZUZvckNvbnN0cnVjdDsKICAgICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3Bh
cmFtZXRlcnM7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQg
bV9saW5lQ291bnQ7CkBAIC0zODMsNyArMzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhj
ZXB0aW9uSGFuZGxlcihjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5sZXIpIHsgY3JlYXRl
UmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5k
bGVycy5hcHBlbmQoaGFubGVyKTsgfQogICAgIFVubGlua2VkSGFuZGxlckluZm8mIGV4Y2VwdGlv
bkhhbmRsZXIoaW50IGluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURh
dGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaW5kZXhdOyB9CiAKLSAgICBTaGFyZWRTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9Cisg
ICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xUYWJs
ZS5nZXQoKTsgfQogCiAgICAgVk0qIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQogCkBAIC00
NjksNyArNDY5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIGlmIChjb2RlVHlwZSgpID09IEdsb2JhbENvZGUpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBTaGFyZWRTeW1ib2xU
YWJsZTo6Y3JlYXRlKHZtKSk7CisgICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBT
eW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNTEyLDcgKzUx
Miw3IEBAIHByaXZhdGU6CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25E
ZWNsczsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlvbkV4cHJzOwogCi0g
ICAgV3JpdGVCYXJyaWVyPFNoYXJlZFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlOworICAgIFdy
aXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKIAogICAgIFZlY3Rvcjx1bnNp
Z25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
cmV2aXNpb24gMTU5NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzQsNyArNTM0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlv
bnM7IH0KIAotICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUoKSB7IHJldHVy
biAqbV9zeW1ib2xUYWJsZTsgfQorICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUoKSB7
IHJldHVybiAqbV9zeW1ib2xUYWJsZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkT3B0aW1pemVM
b2NhbHMoKQogICAgICAgICB7CkBAIC01NzcsNyArNTc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgbV9zaG91bGRFbWl0RGVidWdIb29rczsKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZEVtaXRQcm9maWxlSG9va3M7CiAKLSAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIG1fc3ltYm9s
VGFibGU7CisgICAgICAgIFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRhYmxlOwogCiAgICAgICAgIFNj
b3BlTm9kZSogbV9zY29wZU5vZGU7CiAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4g
bV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE1OTcwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNTAsNyArNDM1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDcmVhdGVkID0gbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBhY3RpdmF0aW9uVmFsdWVUYWdHUFIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAKLSAgICAgICAgU2hhcmVkU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlID0gbV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+Y29kZU9yaWdp
bik7CisgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1faml0LnN5bWJvbFRhYmxl
Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICBpbnQgcmVnaXN0ZXJzT2Zmc2V0ID0gSlNB
Y3RpdmF0aW9uOjpyZWdpc3RlcnNPZmZzZXQoc3ltYm9sVGFibGUpOwogCiAgICAgICAgIGludCBi
eXRlY29kZUNhcHR1cmVTdGFydCA9IHN5bWJvbFRhYmxlLT5jYXB0dXJlU3RhcnQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMTU5NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYzMCw3ICs0NjMwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdENyZWF0ZWQgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Olpl
cm8sIGFjdGl2YXRpb25WYWx1ZUdQUik7CiAKLSAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0gbV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAg
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1faml0LnN5bWJvbFRhYmxlRm9yKG5vZGUt
PmNvZGVPcmlnaW4pOwogICAgICAgICBpbnQgcmVnaXN0ZXJzT2Zmc2V0ID0gSlNBY3RpdmF0aW9u
OjpyZWdpc3RlcnNPZmZzZXQoc3ltYm9sVGFibGUpOwogCiAgICAgICAgIGludCBieXRlY29kZUNh
cHR1cmVTdGFydCA9IHN5bWJvbFRhYmxlLT5jYXB0dXJlU3RhcnQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAkocmV2aXNp
b24gMTU5NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRh
YmxlID0gY29kZUJsb2NrKCktPnN5bWJvbFRhYmxlKCk7CisgICAgICAgIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSA9IGNvZGVCbG9jaygpLT5zeW1ib2xUYWJsZSgpOwogCiAgICAgICAgIC8vIFRo
aXMgZW51bWVyYXRlcyB0aGUgbG9jYWxzIHRoYXQgd2UgYWN0dWFsbHkgY2FyZSBhYm91dCBhbmQg
cGFja3MgdGhlbS4gU28gZm9yIGV4YW1wbGUKICAgICAgICAgLy8gaWYgd2UgdXNlIGxvY2FsIDEs
IDMsIDQsIDUsIDcsIHRoZW4gd2UgcmVtYXAgdGhlbTogMS0+MCwgMy0+MSwgNC0+MiwgNS0+Mywg
Ny0+NC4gV2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAkocmV2aXNpb24gMTU5NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDM1LDcgKzQzNSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3IoY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpOwogICAgIH0KICAgICAKLSAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+c3ltYm9sVGFi
bGUoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAkocmV2aXNpb24gMTU5NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbmxpbmUgdm9p
ZCBBcmd1bWVudHM6OmZpbmlzaENyZWF0aW9uKENhCiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgaWYgKGNvZGVCbG9jay0+aGFzU2xvd0Fy
Z3VtZW50cygpKSB7Ci0gICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGNv
ZGVCbG9jay0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
ID0gY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBjb25zdCBTbG93QXJndW1lbnQq
IHNsb3dBcmd1bWVudHMgPSBjb2RlQmxvY2stPm1hY2hpbmVTbG93QXJndW1lbnRzKCk7CiAgICAg
ICAgIGFsbG9jYXRlU2xvd0FyZ3VtZW50cygpOwogICAgICAgICBzaXplX3QgY291bnQgPSBzdGQ6
Om1pbjx1bnNpZ25lZD4obV9udW1Bcmd1bWVudHMsIHN5bWJvbFRhYmxlLT5wYXJhbWV0ZXJDb3Vu
dCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJ
KHJldmlzaW9uIDE1OTcwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjM5LDcgKzYzOSw3IEBAIHB1YmxpYzoKICAgICBK
U1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
Pm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5n
ICd0aGlzJyEKICAgICBTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+c3ltYm9sVGFibGUoa2luZCk7IH0KKyAgICBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+c3ltYm9sVGFibGUoa2luZCk7IH0KIAog
ICAgIHZvaWQgY2xlYXJDb2RlSWZOb3RDb21waWxpbmcoKTsKICAgICB2b2lkIGNsZWFyVW5saW5r
ZWRDb2RlRm9yUmVjb21waWxhdGlvbklmTm90Q29tcGlsaW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTU5NzA1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDE0ICs0MSwxNCBAQCBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNzIEpT
QWN0aXZhdGlvbiA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNB
Y3RpdmF0aW9uKFZNJiwgQ2FsbEZyYW1lKiwgUmVnaXN0ZXIqLCBTaGFyZWRTeW1ib2xUYWJsZSop
OworICAgIEpTQWN0aXZhdGlvbihWTSYsIENhbGxGcmFtZSosIFJlZ2lzdGVyKiwgU3ltYm9sVGFi
bGUqKTsKICAgICAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTVmFyaWFibGVPYmplY3QgQmFzZTsK
IAogICAgIHN0YXRpYyBKU0FjdGl2YXRpb24qIGNyZWF0ZShWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBSZWdpc3RlciogcmVnaXN0ZXJzLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7
Ci0gICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGNvZGVCbG9jay0+c3lt
Ym9sVGFibGUoKTsKKyAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gY29kZUJsb2Nr
LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcg
KAogICAgICAgICAgICAgTm90TnVsbCwKICAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxKU0FjdGl2
YXRpb24+KApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZhbGlkKGNvbnN0
IFN5bWJvbFRhYmxlRW50cnkmKSBjb25zdDsKICAgICBib29sIGlzVG9ybk9mZigpOwogICAgIGlu
dCByZWdpc3RlcnNPZmZzZXQoKTsKLSAgICBzdGF0aWMgaW50IHJlZ2lzdGVyc09mZnNldChTaGFy
ZWRTeW1ib2xUYWJsZSopOworICAgIHN0YXRpYyBpbnQgcmVnaXN0ZXJzT2Zmc2V0KFN5bWJvbFRh
YmxlKik7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwpA
QCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVu
dHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemUoU2hhcmVkU3ltYm9sVGFibGUqKTsKKyAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKFN5bWJvbFRhYmxlKik7CiAgICAgc3RhdGljIHNpemVfdCBz
dG9yYWdlT2Zmc2V0KCk7CiAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UoKTsg
Ly8gY2FwdHVyZUNvdW50KCkgbnVtYmVyIG9mIHJlZ2lzdGVycy4KQEAgLTExMCw3ICsxMTAsNyBA
QCBwcml2YXRlOgogZXh0ZXJuIGludCBhY3RpdmF0aW9uQ291bnQ7CiBleHRlcm4gaW50IGFsbFRo
ZVRoaW5nc0NvdW50OwogCi1pbmxpbmUgSlNBY3RpdmF0aW9uOjpKU0FjdGl2YXRpb24oVk0mIHZt
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXIqIHJlZ2lzdGVycywgU2hhcmVkU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlKQoraW5saW5lIEpTQWN0aXZhdGlvbjo6SlNBY3RpdmF0aW9uKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyKiByZWdpc3RlcnMsIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSkKICAgICA6IEJhc2UoCiAgICAgICAgIHZtLAogICAgICAgICBjYWxs
RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpLApAQCAt
MTM3LDcgKzEzNyw3IEBAIEFMV0FZU19JTkxJTkUgSlNBY3RpdmF0aW9uKiBSZWdpc3Rlcjo6YWMK
ICAgICByZXR1cm4gYXNBY3RpdmF0aW9uKGpzVmFsdWUoKSk7CiB9CiAKLWlubGluZSBpbnQgSlNB
Y3RpdmF0aW9uOjpyZWdpc3RlcnNPZmZzZXQoU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
KQoraW5saW5lIGludCBKU0FjdGl2YXRpb246OnJlZ2lzdGVyc09mZnNldChTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUpCiB7CiAgICAgcmV0dXJuIHN0b3JhZ2VPZmZzZXQoKSArICgoc3ltYm9sVGFi
bGUtPmNhcHR1cmVDb3VudCgpIC0gc3ltYm9sVGFibGUtPmNhcHR1cmVTdGFydCgpICAtIDEpICog
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpOwogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIGlu
bGluZSBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIEpTQWN0aXZhdGkKICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4odGhpcykgKyBzdG9yYWdlT2Zmc2V0KCkpOwogfQogCi1pbmxpbmUgc2l6
ZV90IEpTQWN0aXZhdGlvbjo6YWxsb2NhdGlvblNpemUoU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlKQoraW5saW5lIHNpemVfdCBKU0FjdGl2YXRpb246OmFsbG9jYXRpb25TaXplKFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSkKIHsKICAgICBzaXplX3Qgb2JqZWN0U2l6ZUluQnl0ZXMgPSBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNp
emVvZihKU0FjdGl2YXRpb24pKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemVJbkJ5dGVzID0gc3lt
Ym9sVGFibGUtPmNhcHR1cmVDb3VudCgpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oCShyZXZpc2lvbiAxNTk3MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgSlNTeW1ib2xUYWJsZU9iamVjdCA6IHB1YmxpYyBKU1NjbwogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNTY29wZSBCYXNlOwogICAgIAotICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KKyAgICBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdl
dCgpOyB9CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25tZW50UmVjb3JkIHwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKICAgICAKLSAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTaGFyZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSAw
KQorICAgIEpTU3ltYm9sVGFibGVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IDApCiAgICAgICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlLCBzY29wZSkKICAgICB7CiAgICAgICAgIGlmIChzeW1ib2xUYWJs
ZSkKQEAgLTU4LDEyICs1OCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIGlmICghbV9zeW1ib2xUYWJsZSkKLSAgICAgICAg
ICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBTaGFyZWRTeW1ib2xUYWJsZTo6Y3JlYXRl
KHZtKSk7CisgICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFi
bGU6OmNyZWF0ZSh2bSkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIFdyaXRlQmFycmllcjxTaGFyZWRTeW1ib2xU
YWJsZT4gbV9zeW1ib2xUYWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3lt
Ym9sVGFibGU7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oCShyZXZpc2lvbiAxNTk3MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICAgICAgUmVnaXN0ZXIq
IHJlZ2lzdGVycywKICAgICAgICAgSlNTY29wZSogc2NvcGUsCi0gICAgICAgIFNoYXJlZFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSA9IDApCisgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSA9IDApCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBzY29wZSwgc3ltYm9sVGFibGUp
CiAgICAgICAgICwgbV9yZWdpc3RlcnMocmVpbnRlcnByZXRfY2FzdDxXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+Kj4ocmVnaXN0ZXJzKSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNTk3MDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDEzICsyOSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bWJv
bFRhYmxlLmgiCiAKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNEZXN0
cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8g
U2hhcmVkU3ltYm9sVGFibGU6OnNfaW5mbyA9IHsgIlNoYXJlZFN5bWJvbFRhYmxlIiwgMCwgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFyZWRTeW1ib2xUYWJsZSkgfTsKK2NvbnN0IENsYXNz
SW5mbyBTeW1ib2xUYWJsZTo6c19pbmZvID0geyAiU3ltYm9sVGFibGUiLCAwLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFN5bWJvbFRhYmxlKSB9OwogCiBTeW1ib2xUYWJsZUVudHJ5JiBTeW1i
b2xUYWJsZUVudHJ5Ojpjb3B5U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKIHsK
QEAgLTQ2LDEwICs0NiwxMCBAQCBTeW1ib2xUYWJsZUVudHJ5JiBTeW1ib2xUYWJsZUVudHJ5Ojpj
b3B5CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi12b2lkIFNoYXJlZFN5bWJvbFRhYmxlOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3ZvaWQgU3ltYm9sVGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQogewotICAgIFNoYXJlZFN5bWJvbFRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFNoYXJlZFN5
bWJvbFRhYmxlKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+U2hhcmVkU3ltYm9sVGFibGU6On5T
aGFyZWRTeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0
PFN5bWJvbFRhYmxlKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+U3ltYm9sVGFibGU6On5TeW1i
b2xUYWJsZSgpOwogfQogCiB2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmZyZWVGYXRFbnRyeVNsb3co
KQpAQCAtOTgsNyArOTgsMTUgQEAgU3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnkqIFN5bWJvbFRh
YmxlRQogICAgIHJldHVybiBlbnRyeTsKIH0KIAotU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKCkg
eyB9CitTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGUoVk0mIHZtKQorICAgIDogSlNDZWxsKHZtLCB2
bS5zeW1ib2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fcGFyYW1ldGVyQ291bnRJbmNs
dWRpbmdUaGlzKDApCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwgbV9j
YXB0dXJlU3RhcnQoMCkKKyAgICAsIG1fY2FwdHVyZUVuZCgwKQoreworfQorCiBTeW1ib2xUYWJs
ZTo6flN5bWJvbFRhYmxlKCkgeyB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTk3MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzQsMTMgKzMzNCwyNyBAQCBzdHJ1Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hU
cmFpdHMgOiBIYXNoCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRy
dWU7CiB9OwogCi1jbGFzcyBTeW1ib2xUYWJsZSB7CitjbGFzcyBTeW1ib2xUYWJsZSA6IHB1Ymxp
YyBKU0NlbGwgewogcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKICAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlm
aWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBTeW1ib2xUYWJsZUlu
ZGV4SGFzaFRyYWl0cz4gTWFwOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sVGFibGUo
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB+U3ltYm9sVGFibGUoKTsKLSAgICAKKyAgICBzdGF0
aWMgU3ltYm9sVGFibGUqIGNyZWF0ZShWTSYgdm0pCisgICAgeworICAgICAgICBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xUYWJsZT4o
dm0uaGVhcCkpIFN5bWJvbFRhYmxlKHZtKTsKKyAgICAgICAgc3ltYm9sVGFibGUtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOworICAgIH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKICAgICAvLyBZb3UgbXVzdCBob2xkIHRoZSBsb2NrIHVudGlsIGFmdGVyIHlvdSdyZSBk
b25lIHdpdGggdGhlIGl0ZXJhdG9yLgogICAgIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5KQogICAgIHsKQEAgLTQzMywzMiArNDQ3
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29udGFpbnMobG9ja2VyLCBrZXkpOwogICAg
IH0KICAgICAKLXByaXZhdGU6Ci0gICAgTWFwIG1fbWFwOwotcHVibGljOgotICAgIG11dGFibGUg
Q29uY3VycmVudEpJVExvY2sgbV9sb2NrOwotfTsKLQotCi1jbGFzcyBTaGFyZWRTeW1ib2xUYWJs
ZSA6IHB1YmxpYyBKU0NlbGwsIHB1YmxpYyBTeW1ib2xUYWJsZSB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKLQotICAgIHN0YXRpYyBTaGFyZWRTeW1ib2xUYWJsZSogY3JlYXRl
KFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzaGFyZWRTeW1ib2xU
YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFNoYXJlZFN5bWJvbFRhYmxlPih2bS5o
ZWFwKSkgU2hhcmVkU3ltYm9sVGFibGUodm0pOwotICAgICAgICBzaGFyZWRTeW1ib2xUYWJsZS0+
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gc2hhcmVkU3ltYm9sVGFibGU7Ci0g
ICAgfQotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKLSAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhMZWFmVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwotICAgIH0KLQogICAgIGJvb2wgdXNlc05vblN0cmljdEV2YWwoKSB7IHJldHVy
biBtX3VzZXNOb25TdHJpY3RFdmFsOyB9CiAgICAgdm9pZCBzZXRVc2VzTm9uU3RyaWN0RXZhbChi
b29sIHVzZXNOb25TdHJpY3RFdmFsKSB7IG1fdXNlc05vblN0cmljdEV2YWwgPSB1c2VzTm9uU3Ry
aWN0RXZhbDsgfQogCkBAIC00ODEsMTUgKzQ2OSwxMSBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRTeW1ib2xUYWJsZShWTSYgdm0pCi0g
ICAgICAgIDogSlNDZWxsKHZtLCB2bS5zaGFyZWRTeW1ib2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkK
LSAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50SW5jbHVkaW5nVGhpcygwKQotICAgICAgICAsIG1f
dXNlc05vblN0cmljdEV2YWwoZmFsc2UpCi0gICAgICAgICwgbV9jYXB0dXJlU3RhcnQoMCkKLSAg
ICAgICAgLCBtX2NhcHR1cmVFbmQoMCkKLSAgICB7Ci0gICAgfQorICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN5bWJvbFRhYmxlKFZNJik7CisgICAgflN5bWJvbFRhYmxlKCk7CiAKKyAgICBNYXAgbV9t
YXA7CisgICAgCiAgICAgaW50IG1fcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzOwogICAgIGJv
b2wgbV91c2VzTm9uU3RyaWN0RXZhbDsKIApAQCAtNDk3LDYgKzQ4MSw5IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fY2FwdHVyZUVuZDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJndW1lbnRb
XT4gbV9zbG93QXJndW1lbnRzOworCitwdWJsaWM6CisgICAgbXV0YWJsZSBDb25jdXJyZW50SklU
TG9jayBtX2xvY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE1OTcwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBwcm9ncmFtRXhl
Y3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0
dXJlLnNldCgqdGhpcywgRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhpcywgUmVnRXhwOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgc2hhcmVkU3ltYm9sVGFi
bGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTaGFyZWRTeW1ib2xUYWJsZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHN5bWJvbFRhYmxlU3RydWN0dXJlLnNldCgqdGhp
cywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1h
cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB3aXRoU2NvcGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNTk3MDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNyAr
MjY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb2dy
YW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0
cnVjdHVyZTsKLSAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc2hhcmVkU3ltYm9sVGFibGVTdHJ1
Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFRhYmxlU3RydWN0dXJlOwog
ICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZTsKICAgICAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gd2l0aFNjb3BlU3RydWN0dXJlOwo=
</data>
<flag name="review"
          id="240891"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>