<?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>98085</bug_id>
          
          <creation_ts>2012-10-01 15:48:16 -0700</creation_ts>
          <short_desc>IndexedDB: remove autogenerated objectStore/index id code</short_desc>
          <delta_ts>2012-10-08 18:17:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>97834</dependson>
          <blocked>98682</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jsbell</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>732074</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-01 15:48:16 -0700</bug_when>
    <thetext>After we land bug 97834, we&apos;ll need to remove support for autogenerated objectStore  and index database ids.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736967</commentid>
    <comment_count>1</comment_count>
      <attachid>167596</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-08 13:22:44 -0700</bug_when>
    <thetext>Created attachment 167596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736968</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-08 13:23:20 -0700</bug_when>
    <thetext>jsbell@ - quick once-over? mostly code removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736979</commentid>
    <comment_count>3</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-08 13:34:39 -0700</bug_when>
    <thetext>jsbell@ - wait ignore that there were a few more things I just figured out I could remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737019</commentid>
    <comment_count>4</comment_count>
      <attachid>167596</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 14:07:11 -0700</bug_when>
    <thetext>Comment on attachment 167596
Patch

Attachment 167596 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14197024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737024</commentid>
    <comment_count>5</comment_count>
      <attachid>167596</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-08 14:13:12 -0700</bug_when>
    <thetext>Comment on attachment 167596
Patch

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

lgtm, one nit.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:-628
&gt; -    ASSERT(maxIndexIds.size() == ids.size());

Why is this being removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737038</commentid>
    <comment_count>6</comment_count>
      <attachid>167596</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-08 14:21:05 -0700</bug_when>
    <thetext>Comment on attachment 167596
Patch

Attachment 167596 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14228336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737048</commentid>
    <comment_count>7</comment_count>
      <attachid>167610</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-08 14:29:29 -0700</bug_when>
    <thetext>Created attachment 167610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737054</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 14:32:45 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737057</commentid>
    <comment_count>9</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-08 14:33:32 -0700</bug_when>
    <thetext>ok this is ready - turns out the chromium side wasn&apos;t calling into the old API, thus could be removed in one shot. 

jsbell@ - ready for review. even more code/scaffolding removal than the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737065</commentid>
    <comment_count>10</comment_count>
      <attachid>167610</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-08 14:42:04 -0700</bug_when>
    <thetext>Comment on attachment 167610
Patch

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

Still lgtm, w/ nits.

&gt; Source/WebCore/ChangeLog:-1555
&gt; -

Accidental whitespace removal?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:-628
&gt; -    ASSERT(maxIndexIds.size() == ids.size());

Still want this assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737074</commentid>
    <comment_count>11</comment_count>
      <attachid>167619</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-08 14:46:59 -0700</bug_when>
    <thetext>Created attachment 167619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737075</commentid>
    <comment_count>12</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-08 14:47:54 -0700</bug_when>
    <thetext>tony@ - r?

abarth@ - r? for chromium glue (just code removal)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737296</commentid>
    <comment_count>13</comment_count>
      <attachid>167619</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 18:17:55 -0700</bug_when>
    <thetext>Comment on attachment 167619
Patch

Clearing flags on attachment: 167619

Committed r130708: &lt;http://trac.webkit.org/changeset/130708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737297</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 18:17:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167596</attachid>
            <date>2012-10-08 13:22:44 -0700</date>
            <delta_ts>2012-10-08 14:29:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98085-20121008132147.patch</filename>
            <type>text/plain</type>
            <size>31798</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYxODExMDFlY2UwNmVj
YWZiNGRiZWZkYTQ2N2UzNzhmODg5YjAwZi4uYTcyZjBkZmNkYTQxMDMzMzQxYmVhZjRjOGJjNDQ5
MWI2MWVhMmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEwLTA4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHJl
bW92ZSBhdXRvZ2VuZXJhdGVkIG9iamVjdFN0b3JlL2luZGV4IGlkIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGJh
Y2tlbmQtZ2VuZXJhdGVkIG9iamVjdHN0b3JlIGFuZCBpbmRleAorICAgICAgICBpZHMuIFRoZSBm
cm9udGVuZCBvYmplY3RzIG5vdyBtYW5hZ2UgdGhhdCBzdGF0ZSBkdXJpbmcKKyAgICAgICAgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbnMuIFRoZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Ug
YW5kCisgICAgICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSBtZXRob2RzIHdpbGwg
Z28gYXdheSB3aGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODY4MiBsYW5kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyBpcyBwYXJ0
IG9mIGEgcmVmYWN0b3JpbmcsIGV4aXN0aW5nIGluZGV4ZWRkYgorICAgICAgICB0ZXN0cyBjb3Zl
ciBjb3JyZWN0bmVzcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAg
KElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRNYXhJbmRleElkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleElu
dGVybmFsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaDoKKwogMjAxMi0xMC0wNSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIERlcHJlY2F0ZWQgZmxleGJveGVzIHN1YnRyYWN0IHNjcm9sbGJhciB3
aWR0aC9oZWlnaHQgdHdpY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjlkNWNiNGJl
ZmQyMmE1MTM1YzQ5Mzk1NjE3OGRhMmNiZjZmMDQ4YS4uYjUwNTYxYzYyZDQzZDUzMTg0ZTQxY2I2
OWVhNDEzZDliZTg0ZDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxMi0xMC0wOCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiByZW1vdmUgYXV0b2dlbmVyYXRlZCBvYmplY3RTdG9yZS9pbmRl
eCBpZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05ODA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBzdXBwb3J0IGZvciB1bnVzZWQgY3JlYXRlT2JqZWN0U3RvcmUvY3JlYXRlSW5kZXgu
IFRoZXNlCisgICAgICAgIG1ldGhvZHMgd2lsbCBnbyBhd2F5IGVudGlyZWx5IHdoZW4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NjgyIGlzIGZpeGVk
LgorCisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAq
IHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJPYmpl
Y3RTdG9yZUltcGwuaDoKKyAgICAgICAgKFdlYklEQk9iamVjdFN0b3JlSW1wbCk6CisKIDIwMTIt
MTAtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaAppbmRleCAwYTc0ZTc0OTAyNzY1NzY3ZTRkYjQzMTRlZjA3ODdhZTI4NzYwZmI4Li5j
YzE5N2MyMTdmZTY1ZWRhOTJjZTA0MjU0NTRiYjQzNmFkYzc5MzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNDYsMTAg
KzQ2LDYgQEAgY2xhc3MgSURCQmFja2luZ1N0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQmFj
a2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVHJhbnNhY3Rpb247CiAKLSAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoZXNlIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50
IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgw
ODUKLSAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBBdXRvZ2VuZXJhdGVJbmRleElkID0gLTE7Ci0g
ICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCA9IC0xOwot
CiAgICAgdmlydHVhbCB+SURCQmFja2luZ1N0b3JlKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgPSAwOwpAQCAtNjAs
NyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRN
YXhJbmRleElkcykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGlu
dDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29s
IGF1dG9JbmNyZW1lbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUo
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkg
PSAwOwogCiAgICAgY2xhc3MgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiB7CkBAIC04Niw3ICs4Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKFRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlUmVjb3JkQ2FsbGJhY2smKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5kZXhl
cyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0
X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQ
YXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0
b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNy
ZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGFzc2ln
bmVkSW5kZXhJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlx
dWUsIGJvb2wgaXNNdWx0aUVudHJ5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JS
ZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXIqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZv
clJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmll
ciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcAppbmRleCBkOTcyYzJkYmQyNTY1YzM1OWFhMDYwMWQxNmZmMzI0OWY0MzQ3M2IyLi45
ZDMwN2Q0MGQ4M2RkM2I1NTc2YWQwY2M1ZjlkNjQyZmU1YjI0NzEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xNjEsMTMgKzE2
MSwxMyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9y
ZUJhY2tlbmQgPSBtX2JhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1
dG9JbmNyZW1lbnQsIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsK
KyAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBtX21ldGFkYXRhLm1heE9iamVjdFN0b3JlSWQg
KyAxOworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0
b3JlQmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwg
bmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24t
PmJhY2tlbmQoKSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmVCYWNrZW5kKSB7CiAgICAgICAg
IEFTU0VSVChlYyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCA9IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVyYXRlT2Jq
ZWN0U3RvcmVJZDsKICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIG9i
amVjdFN0b3JlSWQsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZTo6TWluaW11bUluZGV4SWQpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4g
b2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG1ldGFkYXRhLCBvYmplY3RTdG9y
ZUJhY2tlbmQucmVsZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAg
ICAgbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggNmM0MWVkNjA4ZTg0ZDA3ZDNhODhjMmRiYmIxNjIxN2Q2ZjhhMzli
NC4uYjUwYTE0NWFjMDU5YjRhMmY0MjQwZDcyYjFkNjhhMTQ0ZWRlMmQ4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKQEAgLTE3NiwxNCArMTc2LDE0IEBAIElEQkRhdGFiYXNlTWV0YWRhdGEgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogCiBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBjcmVhdGVPYmpl
Y3RTdG9yZShBdXRvZ2VuZXJhdGVPYmplY3RTdG9yZUlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5j
cmVtZW50LCB0cmFuc2FjdGlvblB0ciwgZWMpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiAwOwogfQogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBp
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1
dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25Q
dHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXMuY29u
dGFpbnMobmFtZSkpOwogCi0gICAgQ09NUElMRV9BU1NFUlQoQXV0b2dlbmVyYXRlT2JqZWN0U3Rv
cmVJZCA9PSBJREJCYWNraW5nU3RvcmU6OkF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQsIEF1dG9n
ZW5lcmF0ZU9iamVjdFN0b3JlSWRNYXRjaGVzKTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVh
dGUodGhpcywgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZTo6TWluaW11bUluZGV4SWQpOwogICAgIEFTU0VSVChvYmplY3RTdG9y
ZS0+bmFtZSgpID09IG5hbWUpOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0
ZU9iamVjdFMKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpOwogCiAgICAgLy8gRklYTUU6IEZpeCBlZGdlIGNhc2VzIGFyb3Vu
ZCB0cmFuc2FjdGlvbiBhYm9ydHMgdGhhdCBwcmV2ZW50IHRoaXMgZnJvbSBqdXN0IGJlaW5nIEFT
U0VSVChpZCA9PSBtX21heE9iamVjdFN0b3JlSWQgKyAxKQotICAgIEFTU0VSVChpZCA9PSBBdXRv
Z2VuZXJhdGVPYmplY3RTdG9yZUlkIHx8IGlkID4gbV9tYXhPYmplY3RTdG9yZUlkKTsKKyAgICBB
U1NFUlQoaWQgPiBtX21heE9iamVjdFN0b3JlSWQpOwogICAgIG1fbWF4T2JqZWN0U3RvcmVJZCA9
IGlkOwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhp
czsKQEAgLTIwOCwxNiArMjA4LDExIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTCiAKIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRh
YmFzZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKLSAg
ICBpbnQ2NF90IG9iamVjdFN0b3JlSWQ7Ci0KLSAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdT
dG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIGRhdGFiYXNlLT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgb2JqZWN0U3RvcmUtPm5h
bWUoKSwgb2JqZWN0U3RvcmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQo
KSwgb2JqZWN0U3RvcmVJZCkpIHsKKyAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+
Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IGRhdGFiYXNlLT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgb2JqZWN0U3RvcmUtPm5hbWUoKSwg
b2JqZWN0U3RvcmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSkpIHsK
ICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBzd2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1h
bmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODA4NQotICAgIEFTU0VSVChvYmplY3RTdG9yZS0+aWQoKSA9PSBBdXRvZ2VuZXJhdGVP
YmplY3RTdG9yZUlkIHx8IG9iamVjdFN0b3JlLT5pZCgpID09IG9iamVjdFN0b3JlSWQpOwotICAg
IG9iamVjdFN0b3JlLT5zZXRJZChvYmplY3RTdG9yZUlkKTsKICAgICB0cmFuc2FjdGlvbi0+ZGlk
Q29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAKQEAgLTYyNSw3ICs2MjAsNiBAQCB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmxvYWRPYmplY3RTdG9yZXMoKQogICAgIEFTU0VSVChuYW1lcy5z
aXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJUKGtleVBhdGhzLnNpemUoKSA9PSBpZHMu
c2l6ZSgpKTsKICAgICBBU1NFUlQoYXV0b0luY3JlbWVudEZsYWdzLnNpemUoKSA9PSBpZHMuc2l6
ZSgpKTsKLSAgICBBU1NFUlQobWF4SW5kZXhJZHMuc2l6ZSgpID09IGlkcy5zaXplKCkpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIG1fb2Jq
ZWN0U3RvcmVzLnNldChuYW1lc1tpXSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
KHRoaXMsIGlkc1tpXSwgbmFtZXNbaV0sIGtleVBhdGhzW2ldLCBhdXRvSW5jcmVtZW50RmxhZ3Nb
aV0sIG1heEluZGV4SWRzW2ldKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGEz
MmE5NmJjYTA1OGIwZTgyZjkwNzVjNTM0MWQ1ZGMzOTg3MDI2MWEuLjc0ZTJjYzAyN2I1MGM5NGFm
OWNkZTNjMmFhZmEzODJlMzRlM2IxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBA
IC01NCwxMSArNTQsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRh
dGEgbWV0YWRhdGEoKSBjb25zdCA9IDA7CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hl
biBzd2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQotICAgIHN0YXRpYyBjb25zdCBp
bnQ2NF90IEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQgPSAtMTsKLQogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3Jl
KGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0
b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpID0gMDsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBzd2l0Y2ggdG8gZnJvbnQt
ZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODA4NQorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRj
aCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NjgyCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCA4YzMwNWJjYTM3NzhhZDg5NzdkMWI3NmVl
YzdiZGIxZWI0MTliN2RhLi42MjIwOWU2MGI4OGNkY2Y2NTk1ZWExNTMwZDlmYmE0MzUxZGU5ZTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtNTM3LDE0ICs1MzcsMTAgQEAgc3RhdGljIGJv
b2wgc2V0TWF4T2JqZWN0U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXMKICAgICByZXR1cm4gcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RT
dG9yZUlkS2V5LCBvYmplY3RTdG9yZUlkKTsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpCitib29sIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZSIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0
aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFu
YWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MDg1Ci0gICAgaWYgKG9iamVjdFN0b3JlSWQgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3Rv
cmVJZCkKLSAgICAgICAgb2JqZWN0U3RvcmVJZCA9IGdldE1heE9iamVjdFN0b3JlSWQobGV2ZWxE
QlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkKSArIDE7Ci0KICAgICBpZiAoIXNldE1heE9iamVjdFN0
b3JlSWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02MTIsOSArNjA4LDYgQEAgYm9vbCBJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21w
bGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1Ci0gICAg
YXNzaWduZWRPYmplY3RTdG9yZUlkID0gb2JqZWN0U3RvcmVJZDsKLQogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC05NDIsMTcgKzkzNSw2IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAg
fQogfQogCi1zdGF0aWMgaW50NjRfdCBnZXRNYXhJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQot
ewotICAgIGludDY0X3QgbWF4SW5kZXhJZCA9IC0xOwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBt
YXhJbmRleElkS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQpOwotICAg
IGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBtYXhJbmRleElkKSkKLSAg
ICAgICAgbWF4SW5kZXhJZCA9IE1pbmltdW1JbmRleElkOwotCi0gICAgQVNTRVJUKG1heEluZGV4
SWQgPj0gMCk7Ci0gICAgcmV0dXJuIG1heEluZGV4SWQ7Ci19Ci0KIHN0YXRpYyBib29sIHNldE1h
eEluZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKIHsKICAgICBpbnQ2
NF90IG1heEluZGV4SWQgPSAtMTsKQEAgLTk2MCwxMCArOTQyLDYgQEAgc3RhdGljIGJvb2wgc2V0
TWF4SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGkKICAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtleSwgbWF4
SW5kZXhJZCkpCiAgICAgICAgIG1heEluZGV4SWQgPSBNaW5pbXVtSW5kZXhJZDsKIAotICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVu
dCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MDg1Ci0gICAgaWYgKGluZGV4SWQgPT0gSURCQmFja2luZ1N0b3JlOjpBdXRvZ2VuZXJhdGVJbmRl
eElkKQotICAgICAgICBpbmRleElkID0gbWF4SW5kZXhJZCArIDE7Ci0KICAgICBpZiAoaW5kZXhJ
ZCA8PSBtYXhJbmRleElkKSB7CiAgICAgICAgIExPR19FUlJPUigiUG9zc2libGUgY29ycnVwdGlv
bjogbmV3IGluZGV4IGlkIGlzIHRvbyBzbWFsbC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTcyLDE0ICs5NTAsMTAgQEAgc3RhdGljIGJvb2wgc2V0TWF4SW5kZXhJZChMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGkKICAgICByZXR1cm4g
cHV0SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBpbmRleElkKTsKIH0KIAotYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYg
YXNzaWduZWRJbmRleElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRl
eChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29s
IGlzTXVsdGlFbnRyeSkKIHsKICAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUluZGV4Iik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rp
b24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5h
Z2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgwODUKLSAgICBpZiAoaW5kZXhJZCA9PSBBdXRvZ2VuZXJhdGVJbmRleElkKQotICAgICAg
ICBpbmRleElkID0gZ2V0TWF4SW5kZXhJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQpICsgMTsKLQogICAgIGlmICghc2V0TWF4SW5kZXhJZChsZXZlbERCVHJh
bnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwMTIsOSArOTg2LDYgQEAgYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1Ci0gICAgYXNzaWdu
ZWRJbmRleElkID0gaW5kZXhJZDsKLQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmgKaW5kZXggZWVhMjNkMjk0ZjBlOTQwNjc1MTg3NzIzM2EwMmVmZDM3NjRmMTEyYS4uY2Fh
NTdmNTE0YjU5OThkNGU4YjQyODgxYWQxMmExNDc5ZjNlYjg4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFi
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3Rv
cmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9y
PFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywg
VmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncywgVmVjdG9yPGludDY0X3Q+JiBm
b3VuZE1heEluZGV4SWRzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29s
IGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCk7CisgICAgdmly
dHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVj
b3JkSWRlbnRpZmllcigpOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVjdFN0b3JlUmVjb3Jk
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jik7CkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYpOwogCiAgICAgdmlydHVhbCB2b2lkIGdl
dEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3Rv
cjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8
SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFn
cywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncyk7Ci0gICAgdmlydHVhbCBib29s
IGNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlF
bnRyeSwgaW50NjRfdCYgYXNzaWduZWRJbmRleElkKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRl
SW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQpOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciopOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JS
ZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDIxNzdmN2VhMGQ3ZDRiYjZkYzRkMGNhZDI3
ZWYzYWJlMjhlY2U2NGQuLjk3YmI0ZjQ1OTI5NWI3OTRlNmMxMjY5MDBhNGIyNTNkZTc0MGY0Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKQEAgLTQwMSw4ICs0MDEsOCBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpbnQ2NF90IGluZGV4SWQgPSBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U6OkF1dG9nZW5lcmF0ZUluZGV4SWQ7Ci0gICAgUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5jcmVhdGVJ
bmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJh
Y2tlbmQoKSwgZWMpOworICAgIGludDY0X3QgaW5kZXhJZCA9IG1fbWV0YWRhdGEubWF4SW5kZXhJ
ZCArIDE7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXhCYWNrZW5k
ID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChpbmRleElkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUs
IG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIEFTU0VSVCgh
aW5kZXhCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4gaW5kZXgsIHdlIHNo
b3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5k
ZXggMWM5NGM4YTk2MWZjMmRjNWE4NGNlYzM5ZjgzMDkxNjgxOWY1MWM0Yi4uMTZlNzBhY2U4MTMz
NTQ4ZTgzNDJhYWQyMjY1MjhjNjdmMDA0NTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAKQEAgLTU5LDggKzU5LDcgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXAKICAgICAsIG1fYXV0
b0luY3JlbWVudChhdXRvSW5jcmVtZW50KQogICAgICwgbV9tYXhJbmRleElkKG1heEluZGV4SWQp
CiB7Ci0gICAgaWYgKG1faWQgIT0gQXV0b2dlbmVyYXRlSW5kZXhJZCkKLSAgICAgICAgbG9hZElu
ZGV4ZXMoKTsKKyAgICBsb2FkSW5kZXhlcygpOwogfQogCiBJREJPYmplY3RTdG9yZU1ldGFkYXRh
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKQEAgLTQyOSwyMCAr
NDI4LDIwIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0CiAKIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBjcmVhdGVJbmRleChB
dXRvZ2VuZXJhdGVJbmRleElkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIHRy
YW5zYWN0aW9uUHRyLCBlYyk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IDA7CiB9CiAKIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faW5kZXhlcy5jb250
YWlucyhuYW1lKSwgIkluZGV4ZXMgYWxyZWFkeSBjb250YWluICVzIiwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKIAotICAgIENPTVBJTEVfQVNTRVJUKEF1dG9nZW5lcmF0ZUluZGV4SWQgPT0gSURCQmFj
a2luZ1N0b3JlOjpBdXRvZ2VuZXJhdGVJbmRleElkLCBBdXRvZ2VuZXJhdGVJbmRleElkTWF0Y2hl
cyk7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNr
ZW5kSW1wbDo6Y3JlYXRlKG1fZGF0YWJhc2UsIHRoaXMsIGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlx
dWUsIG11bHRpRW50cnkpOwogICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwogCiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLSAg
ICBBU1NFUlQoaWQgPT0gQXV0b2dlbmVyYXRlSW5kZXhJZCB8fCBpZCA+IG1fbWF4SW5kZXhJZCk7
CisgICAgQVNTRVJUKGlkID4gbV9tYXhJbmRleElkKTsKICAgICBtX21heEluZGV4SWQgPSBpZDsK
IAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRo
aXM7CkBAIC00NTksMTYgKzQ1OCwxMSBAQCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoaW50NgogCiB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2Jq
ZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7Ci0gICAgaW50NjRf
dCBpZDsKLSAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlSW5kZXgo
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRh
YmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgaW5kZXgtPm5hbWUoKSwg
aW5kZXgtPmtleVBhdGgoKSwgaW5kZXgtPnVuaXF1ZSgpLCBpbmRleC0+bXVsdGlFbnRyeSgpLCBp
ZCkpIHsKKyAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlSW5kZXgo
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRh
YmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgaW5kZXgtPm5hbWUoKSwg
aW5kZXgtPmtleVBhdGgoKSwgaW5kZXgtPnVuaXF1ZSgpLCBpbmRleC0+bXVsdGlFbnRyeSgpKSkg
ewogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQg
bWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MDg1Ci0gICAgQVNTRVJUKGluZGV4LT5pZCgpID09IEF1dG9nZW5lcmF0ZUluZGV4
SWQgfHwgaW5kZXgtPmlkKCkgPT0gaWQpOwotICAgIGluZGV4LT5zZXRJZChpZCk7Ci0KICAgICB0
cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggMmViNWE4NjA4NWQ3NDgwNjQ5OGZiZjU1OThmYzlkYWJh
Zjg0ZjRjMi4uMWE5MGNkM2E4OTFhMWE0ZWRlNDkyNTI0OTI0Yjg5OTlhM2RmMmFmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU4LDggKzU4LDYgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBNaW5pbXVtSW5kZXhJZCA9IDMwOwot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFu
YWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MDg1Ci0gICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlSW5kZXhJZCA9
IC0xOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBJbmRleEtleXM7CiAK
QEAgLTY5LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGVJbmRleChpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21w
bGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2Vt
ZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg2ODIKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVu
aXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoUGFzc1Jl
ZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPEluZGV4S2V5cz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA4
YjFmYmM0MDVjYWExOTA5MGVjMDMwMDQ4Mjg1NzQ2NGMwZjRjNDIwLi5kNjk1YTk2MDc4NjZiYTMw
ZDMwMDEwZjUyOGM1OTkzOTI0YmIxNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC03OSwxMyArNzksOCBA
QCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VC
YWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdAogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBn
dWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJl
bmRlcmVyLAotICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJl
IHByb3h5IG9iamVjdHMuCi0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0
aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5z
YWN0aW9uKTsKLSAgICBPd25QdHI8V2ViSURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gYWRv
cHRQdHIobV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCks
IGVjKSk7Ci0gICAgaWYgKCFvYmplY3RTdG9yZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUucmVsZWFz
ZSgpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwCmluZGV4IGFlZmViMGZhZjZjMWIzZDRjNjEyZjc1NjI2YmU5MWQyMjk1
YmZmNTIuLmU3MTAyOWRlYjM0ODQ3MTViMTMwZDNhMWI4ZmNkM2Y2MDhjYjA2Y2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAt
NzAsMTYgKzcwLDYgQEAgV2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3Jl
YXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIGlkLCBjb25zdCBXZWIKICAgICByZXR1cm4gbmV3IFdl
YklEQk9iamVjdFN0b3JlSW1wbChvYmplY3RTdG9yZSk7CiB9CiAKLVdlYklEQk9iamVjdFN0b3Jl
KiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVj
KQotewotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0
b3JlID0gbV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgs
IGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSgpLCBlYyk7Ci0gICAgaWYgKCFvYmplY3RTdG9yZSkgewotICAgICAgICBBU1NFUlQoZWMp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RT
dG9yZUltcGwob2JqZWN0U3RvcmUpOwotfQotCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG1fZGF0YWJh
c2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA4NDk5NjljYjRiYTI4ZjA1OGE1MTUy
ZjkzODg5MjNmYWFmMWNhYTc0Li43NjliZGY1ZDA1ZjBiM2JiMWU4YjY1ZjRlMDlmYzMyNzVlYmNh
ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuaApAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYklEQk1ldGFk
YXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBh
dGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVj
dFN0b3JlKGxvbmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNp
b24sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDE5
OGEyODc4ODZhMjY4ZGU4MjQ0YmI0NzkzNmY4N2FmMGUxMGI2NmUuLmQ4MTQwOTNmMGY1YjM0MWVi
MmQ5OWQ5N2M5MTgyOGFjNTA1MjBkNDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMTA5LDE0ICsxMDksNiBAQCB2
b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y2xlYXIoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIGNvbnN0IFdlYklEQlRyYW5zYQogICAgIG1fb2JqZWN0U3RvcmUtPmNsZWFyKElEQkNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9uLmdldElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKLVdlYklEQkluZGV4KiBX
ZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2Rl
JiBlYykKLXsKLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1f
b2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRy
eSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsK
LSAgICBpZiAoIWluZGV4KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbmV3IFdlYklE
QkluZGV4SW1wbChpbmRleCk7Ci19Ci0KIFdlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUlt
cGw6OmNyZWF0ZUluZGV4KGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmpl
Y3RTdG9yZS0+Y3JlYXRlSW5kZXgoaWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRy
eSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBs
LmgKaW5kZXggOTAyNjQxYTAxOTRmNzg3MzkxNDE2NGIwMjZmNDBkYjlhNDU2MDg0OC4uN2U5ZWQy
NTczY2I5NGI4OTdiY2Y1ODc1YTUyMzIyNzYxYjE0MzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTUyLDcgKzUyLDYg
QEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5UmFuZ2Um
LCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIGNsZWFyKFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRy
YW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgV2ViSURCSW5kZXgqIGNyZWF0
ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChsb25nIGxvbmcsIGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBi
b29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167610</attachid>
            <date>2012-10-08 14:29:29 -0700</date>
            <delta_ts>2012-10-08 14:46:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98085-20121008142831.patch</filename>
            <type>text/plain</type>
            <size>41098</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYxODExMDFlY2UwNmVj
YWZiNGRiZWZkYTQ2N2UzNzhmODg5YjAwZi4uOTU4ZjY0MDkxY2UxYzdkZmU1Nzc3NzEwMDY5Mzc0
OTk4ZjBkYWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEwLTA4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHJl
bW92ZSBhdXRvZ2VuZXJhdGVkIG9iamVjdFN0b3JlL2luZGV4IGlkIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGJh
Y2tlbmQtZ2VuZXJhdGVkIG9iamVjdHN0b3JlIGFuZCBpbmRleAorICAgICAgICBpZHMuIFRoZSBm
cm9udGVuZCBvYmplY3RzIG5vdyBtYW5hZ2UgdGhhdCBzdGF0ZSBkdXJpbmcKKyAgICAgICAgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbnMuIFRoZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Ug
YW5kCisgICAgICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSBtZXRob2RzIHdpbGwg
Z28gYXdheSB3aGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODY4MiBsYW5kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyBpcyBwYXJ0
IG9mIGEgcmVmYWN0b3JpbmcsIGV4aXN0aW5nIGluZGV4ZWRkYgorICAgICAgICB0ZXN0cyBjb3Zl
ciBjb3JyZWN0bmVzcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAg
KElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRNYXhJbmRleElkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleElu
dGVybmFsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaDoKKwogMjAxMi0xMC0wNSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIERlcHJlY2F0ZWQgZmxleGJveGVzIHN1YnRyYWN0IHNjcm9sbGJhciB3
aWR0aC9oZWlnaHQgdHdpY2UKQEAgLTE1NTIsNyArMTU5Miw2IEBACiAgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fcmV2ZWFsRXhlY3V0aW9uTGluZSk6CiAgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanM6CiAgICAgICAgIChXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZS5mb3JtYXR0ZWQpOgotCiAyMDEyLTEwLTA0
ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFNjcmlwdHMgcGFuZWwgc2hvdWxkIG5vdCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0
byBzbmlwcGV0IGV2YWx1YXRpb24gd2hlbiBwcmV2aW91c2x5IGV2YWx1YXRlZCBzbmlwcGV0IGlz
IGVkaXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjlkNWNiNGJlZmQyMmE1MTM1
YzQ5Mzk1NjE3OGRhMmNiZjZmMDQ4YS4uYjUwNTYxYzYyZDQzZDUzMTg0ZTQxY2I2OWVhNDEzZDli
ZTg0ZDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAx
Mi0xMC0wOCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW5kZXhlZERCOiByZW1vdmUgYXV0b2dlbmVyYXRlZCBvYmplY3RTdG9yZS9pbmRleCBpZCBjb2Rl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBz
dXBwb3J0IGZvciB1bnVzZWQgY3JlYXRlT2JqZWN0U3RvcmUvY3JlYXRlSW5kZXguIFRoZXNlCisg
ICAgICAgIG1ldGhvZHMgd2lsbCBnbyBhd2F5IGVudGlyZWx5IHdoZW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NjgyIGlzIGZpeGVkLgorCisgICAg
ICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBz
cmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmg6CisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUlt
cGwuaDoKKyAgICAgICAgKFdlYklEQk9iamVjdFN0b3JlSW1wbCk6CisKIDIwMTItMTAtMDUgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApp
bmRleCAwYTc0ZTc0OTAyNzY1NzY3ZTRkYjQzMTRlZjA3ODdhZTI4NzYwZmI4Li5jYzE5N2MyMTdm
ZTY1ZWRhOTJjZTA0MjU0NTRiYjQzNmFkYzc5MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNDYsMTAgKzQ2LDYgQEAg
Y2xhc3MgSURCQmFja2luZ1N0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQmFja2luZ1N0b3Jl
PiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVHJhbnNhY3Rpb247CiAKLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZXNlIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBs
ZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKLSAgICBz
dGF0aWMgY29uc3QgaW50NjRfdCBBdXRvZ2VuZXJhdGVJbmRleElkID0gLTE7Ci0gICAgc3RhdGlj
IGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCA9IC0xOwotCiAgICAgdmly
dHVhbCB+SURCQmFja2luZ1N0b3JlKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJh
c2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgPSAwOwpAQCAtNjAsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRh
dGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3Vu
ZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYg
Zm91bmRBdXRvSW5jcmVtZW50RmxhZ3MsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRNYXhJbmRleElk
cykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFz
c2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RT
dG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNy
ZW1lbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOwogCiAg
ICAgY2xhc3MgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8
T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiB7CkBAIC04Niw3ICs4Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVj
b3JkQ2FsbGJhY2smKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3Vu
ZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91
bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwg
Ym9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGFzc2lnbmVkSW5kZXhJ
ZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wg
aXNNdWx0aUVudHJ5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJh
bnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50
aWZpZXIqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApp
bmRleCBkOTcyYzJkYmQyNTY1YzM1OWFhMDYwMWQxNmZmMzI0OWY0MzQ3M2IyLi45ZDMwN2Q0MGQ4
M2RkM2I1NTc2YWQwY2M1ZjlkNjQyZmU1YjI0NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xNjEsMTMgKzE2MSwxMyBAQCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZUJhY2tlbmQg
PSBtX2JhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1l
bnQsIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKKyAgICBpbnQ2
NF90IG9iamVjdFN0b3JlSWQgPSBtX21ldGFkYXRhLm1heE9iamVjdFN0b3JlSWQgKyAxOworICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlQmFja2Vu
ZCA9IG1fYmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwgbmFtZSwga2V5
UGF0aCwgYXV0b0luY3JlbWVudCwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmVCYWNrZW5kKSB7CiAgICAgICAgIEFTU0VSVChl
Yyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCA9IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJ
ZDsKICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIG9iamVjdFN0b3Jl
SWQsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZTo6TWluaW11bUluZGV4SWQpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3Rv
cmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG1ldGFkYXRhLCBvYmplY3RTdG9yZUJhY2tlbmQu
cmVsZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9tZXRh
ZGF0YS5vYmplY3RTdG9yZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKaW5kZXggNmM0MWVkNjA4ZTg0ZDA3ZDNhODhjMmRiYmIxNjIxN2Q2ZjhhMzliNC4uOWZiNDA2
ZmQ5MTNkNGQ5OWRkNDA3MjcxOTI1M2FkMGU0YjViNTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKQEAgLTE3NCwxNiArMTc0LDEwIEBAIElEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogICAgIHJldHVybiBtZXRhZGF0YTsKIH0KIAot
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURC
S2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBy
ZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUoQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCwgbmFtZSwg
a2V5UGF0aCwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb25QdHIsIGVjKTsKLX0KLQogUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUpKTsKIAotICAgIENPTVBJ
TEVfQVNTRVJUKEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQgPT0gSURCQmFja2luZ1N0b3JlOjpB
dXRvZ2VuZXJhdGVPYmplY3RTdG9yZUlkLCBBdXRvZ2VuZXJhdGVPYmplY3RTdG9yZUlkTWF0Y2hl
cyk7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0g
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKHRoaXMsIGlkLCBuYW1lLCBrZXlQYXRo
LCBhdXRvSW5jcmVtZW50LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6Ok1pbmltdW1J
bmRleElkKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1lKTsKIApAQCAt
MTkxLDcgKzE4NSw3IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTCiAgICAgQVNTRVJUKHRyYW5z
YWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKIAogICAg
IC8vIEZJWE1FOiBGaXggZWRnZSBjYXNlcyBhcm91bmQgdHJhbnNhY3Rpb24gYWJvcnRzIHRoYXQg
cHJldmVudCB0aGlzIGZyb20ganVzdCBiZWluZyBBU1NFUlQoaWQgPT0gbV9tYXhPYmplY3RTdG9y
ZUlkICsgMSkKLSAgICBBU1NFUlQoaWQgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCB8fCBp
ZCA+IG1fbWF4T2JqZWN0U3RvcmVJZCk7CisgICAgQVNTRVJUKGlkID4gbV9tYXhPYmplY3RTdG9y
ZUlkKTsKICAgICBtX21heE9iamVjdFN0b3JlSWQgPSBpZDsKIAogICAgIFJlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CkBAIC0yMDgsMTYgKzIwMiwxMSBAQCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlT2JqZWN0UwogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNy
ZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7Ci0gICAgaW50NjRfdCBvYmplY3RTdG9yZUlkOwot
Ci0gICAgaWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwgb2Jq
ZWN0U3RvcmUtPmlkKCksIG9iamVjdFN0b3JlLT5uYW1lKCksIG9iamVjdFN0b3JlLT5rZXlQYXRo
KCksIG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCksIG9iamVjdFN0b3JlSWQpKSB7CisgICAg
aWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwgb2JqZWN0U3Rv
cmUtPmlkKCksIG9iamVjdFN0b3JlLT5uYW1lKCksIG9iamVjdFN0b3JlLT5rZXlQYXRoKCksIG9i
amVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCkpKSB7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9y
dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKLSAgICBBU1NFUlQob2Jq
ZWN0U3RvcmUtPmlkKCkgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCB8fCBvYmplY3RTdG9y
ZS0+aWQoKSA9PSBvYmplY3RTdG9yZUlkKTsKLSAgICBvYmplY3RTdG9yZS0+c2V0SWQob2JqZWN0
U3RvcmVJZCk7CiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQog
CkBAIC02MjUsNyArNjE0LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2Jq
ZWN0U3RvcmVzKCkKICAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGlkcy5zaXplKCkpOwogICAg
IEFTU0VSVChrZXlQYXRocy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJUKGF1dG9J
bmNyZW1lbnRGbGFncy5zaXplKCkgPT0gaWRzLnNpemUoKSk7Ci0gICAgQVNTRVJUKG1heEluZGV4
SWRzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aWRzLnNpemUoKTsgaSsrKQogICAgICAgICBtX29iamVjdFN0b3Jlcy5zZXQobmFtZXNbaV0sIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBpZHNbaV0sIG5hbWVzW2ldLCBr
ZXlQYXRoc1tpXSwgYXV0b0luY3JlbWVudEZsYWdzW2ldLCBtYXhJbmRleElkc1tpXSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCmluZGV4IDE5OTRiNWY5YjU0MTg4OTc3MzE3ZmZiNDkwMTVlNmY0MjJiMzFh
ODIuLjk3Yjg1NWRhZTQwYzAwNmEyMWRhNzZjYjk3YjM4MzBjZjk3NDEzNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogCiAgICAgLy8gSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlCiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRh
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBhMzJhOTZiY2EwNThiMGU4MmY5MDc1YzUzNDFk
NWRjMzk4NzAyNjFhLi40Y2QwODQ1YjQzNmIyNzQ4N2IxZGMxNTdhMTg4MTdkMWZiZTE3YzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTQsMTIgKzU0LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3QgPSAwOwog
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBt
YW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTgwODUKLSAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBBdXRvZ2VuZXJhdGVPYmplY3RT
dG9yZUlkID0gLTE7Ci0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBs
ZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1
dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVO
YW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggOGMzMDViY2EzNzc4YWQ4OTc3ZDFiNzZlZWM3YmRiMWViNDE5Yjdk
YS4uNjIyMDllNjBiODhjZGNmNjU5NWVhMTUzMGQ5ZmJhNDM1MWRlOWUyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTUzNywxNCArNTM3LDEwIEBAIHN0YXRpYyBib29sIHNldE1heE9iamVj
dFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
CiAgICAgcmV0dXJuIHB1dEludCh0cmFuc2FjdGlvbiwgbWF4T2JqZWN0U3RvcmVJZEtleSwgb2Jq
ZWN0U3RvcmVJZCk7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYg
YXNzaWduZWRPYmplY3RTdG9yZUlkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogewog
ICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUi
KTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IFRyYW5zYWN0
aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKLSAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgd2hlbiBzd2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29t
cGxldGU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQotICAg
IGlmIChvYmplY3RTdG9yZUlkID09IEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQpCi0gICAgICAg
IG9iamVjdFN0b3JlSWQgPSBnZXRNYXhPYmplY3RTdG9yZUlkKGxldmVsREJUcmFuc2FjdGlvbiwg
ZGF0YWJhc2VJZCkgKyAxOwotCiAgICAgaWYgKCFzZXRNYXhPYmplY3RTdG9yZUlkKGxldmVsREJU
cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtNjEyLDkgKzYwOCw2IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hl
biBzd2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQotICAgIGFzc2lnbmVkT2JqZWN0
U3RvcmVJZCA9IG9iamVjdFN0b3JlSWQ7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTQy
LDE3ICs5MzUsNiBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogICAgIH0KIH0KIAotc3RhdGlj
IGludDY0X3QgZ2V0TWF4SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKLXsKLSAgICBpbnQ2NF90
IG1heEluZGV4SWQgPSAtMTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpNYXhJbmRleElkKTsKLSAgICBpZiAoIWdldEludCh0
cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtleSwgbWF4SW5kZXhJZCkpCi0gICAgICAgIG1heEluZGV4
SWQgPSBNaW5pbXVtSW5kZXhJZDsKLQotICAgIEFTU0VSVChtYXhJbmRleElkID49IDApOwotICAg
IHJldHVybiBtYXhJbmRleElkOwotfQotCiBzdGF0aWMgYm9vbCBzZXRNYXhJbmRleElkKExldmVs
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCiB7CiAgICAgaW50NjRfdCBtYXhJbmRleElk
ID0gLTE7CkBAIC05NjAsMTAgKzk0Miw2IEBAIHN0YXRpYyBib29sIHNldE1heEluZGV4SWQoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpCiAgICAg
aWYgKCFnZXRJbnQodHJhbnNhY3Rpb24sIG1heEluZGV4SWRLZXksIG1heEluZGV4SWQpKQogICAg
ICAgICBtYXhJbmRleElkID0gTWluaW11bUluZGV4SWQ7CiAKLSAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgd2hlbiBzd2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQotICAgIGlmIChp
bmRleElkID09IElEQkJhY2tpbmdTdG9yZTo6QXV0b2dlbmVyYXRlSW5kZXhJZCkKLSAgICAgICAg
aW5kZXhJZCA9IG1heEluZGV4SWQgKyAxOwotCiAgICAgaWYgKGluZGV4SWQgPD0gbWF4SW5kZXhJ
ZCkgewogICAgICAgICBMT0dfRVJST1IoIlBvc3NpYmxlIGNvcnJ1cHRpb246IG5ldyBpbmRleCBp
ZCBpcyB0b28gc21hbGwuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk3MiwxNCArOTUw
LDEwIEBAIHN0YXRpYyBib29sIHNldE1heEluZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpCiAgICAgcmV0dXJuIHB1dEludCh0cmFuc2Fj
dGlvbiwgbWF4SW5kZXhJZEtleSwgaW5kZXhJZCk7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwg
Ym9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGFzc2lnbmVkSW5kZXhJ
ZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCIp
OwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gVHJhbnNhY3Rp
b246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwotICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21w
bGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1Ci0gICAg
aWYgKGluZGV4SWQgPT0gQXV0b2dlbmVyYXRlSW5kZXhJZCkKLSAgICAgICAgaW5kZXhJZCA9IGdl
dE1heEluZGV4SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
KSArIDE7Ci0KICAgICBpZiAoIXNldE1heEluZGV4SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0xMDEyLDkgKzk4Niw2IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
SW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBzd2l0
Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQotICAgIGFzc2lnbmVkSW5kZXhJZCA9IGlu
ZGV4SWQ7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGVl
YTIzZDI5NGYwZTk0MDY3NTE4NzcyMzNhMDJlZmQzNzY0ZjExMmEuLmNhYTU3ZjUxNGI1OTk4ZDRl
OGI0Mjg4MWFkMTJhMTQ3OWYzZWI4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRh
dGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3Vu
ZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYg
Zm91bmRBdXRvSW5jcmVtZW50RmxhZ3MsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRNYXhJbmRleElk
cyk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50
LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE9i
amVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRlSW52YWxpZFJlY29yZElkZW50aWZpZXIo
KTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRPYmplY3RTdG9yZVJlY29yZChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQktleSYpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0
b3JlUmVjb3JkQ2FsbGJhY2smKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBm
b3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29s
PiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3Qm
IGFzc2lnbmVkSW5kZXhJZCk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSk7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKICAgICB2
aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZp
ZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZp
ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcAppbmRleCAyMTc3ZjdlYTBkN2Q0YmI2ZGM0ZDBjYWQyN2VmM2FiZTI4ZWNlNjRk
Li45N2JiNGY0NTkyOTViNzk0ZTZjMTI2OTAwYTRiMjUzZGU3NDBmNGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC00
MDEsOCArNDAxLDggQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0
ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgaW50NjRfdCBpbmRleElkID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlOjpBdXRvZ2VuZXJhdGVJbmRleElkOwotICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlSW5kZXgobmFtZSwga2V5
UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsK
KyAgICBpbnQ2NF90IGluZGV4SWQgPSBtX21ldGFkYXRhLm1heEluZGV4SWQgKyAxOworICAgIFJl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+
Y3JlYXRlSW5kZXgoaW5kZXhJZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAh
PSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0
ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgogICAgIGlmIChlYykKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDFjOTRjOGE5NjFm
YzJkYzVhODRjZWMzOWY4MzA5MTY4MTlmNTFjNGIuLjY5ZWFiMGJhYzgwNmQ1MWUzNTU5MjhkMzk0
NzBjMjEyMTI0MGIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC01OSw4ICs1
OSw3IEBAIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wCiAgICAgLCBtX2F1dG9JbmNyZW1lbnQoYXV0
b0luY3JlbWVudCkKICAgICAsIG1fbWF4SW5kZXhJZChtYXhJbmRleElkKQogewotICAgIGlmICht
X2lkICE9IEF1dG9nZW5lcmF0ZUluZGV4SWQpCi0gICAgICAgIGxvYWRJbmRleGVzKCk7CisgICAg
bG9hZEluZGV4ZXMoKTsKIH0KIAogSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CkBAIC00MjcsMjIgKzQyNiwxNiBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdAogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHJldHVybiBjcmVhdGVJbmRleChB
dXRvZ2VuZXJhdGVJbmRleElkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIHRy
YW5zYWN0aW9uUHRyLCBlYyk7Ci19Ci0KIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2NF90IGlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1faW5kZXhlcy5jb250YWlucyhuYW1lKSwgIkluZGV4ZXMgYWxyZWFkeSBjb250YWluICVzIiwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKIAotICAgIENPTVBJTEVfQVNTRVJUKEF1dG9nZW5lcmF0ZUlu
ZGV4SWQgPT0gSURCQmFja2luZ1N0b3JlOjpBdXRvZ2VuZXJhdGVJbmRleElkLCBBdXRvZ2VuZXJh
dGVJbmRleElkTWF0Y2hlcyk7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4
ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fZGF0YWJhc2UsIHRoaXMsIGlkLCBuYW1l
LCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpOwogICAgIEFTU0VSVChpbmRleC0+bmFtZSgp
ID09IG5hbWUpOwogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7
CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJ
T05fQ0hBTkdFKTsKLSAgICBBU1NFUlQoaWQgPT0gQXV0b2dlbmVyYXRlSW5kZXhJZCB8fCBpZCA+
IG1fbWF4SW5kZXhJZCk7CisgICAgQVNTRVJUKGlkID4gbV9tYXhJbmRleElkKTsKICAgICBtX21h
eEluZGV4SWQgPSBpZDsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBv
YmplY3RTdG9yZSA9IHRoaXM7CkBAIC00NTksMTYgKzQ1MiwxMSBAQCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5k
ZXgoaW50NgogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4g
aW5kZXgsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24p
CiB7Ci0gICAgaW50NjRfdCBpZDsKLSAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUo
KS0+Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9i
amVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwg
aW5kZXgtPm5hbWUoKSwgaW5kZXgtPmtleVBhdGgoKSwgaW5kZXgtPnVuaXF1ZSgpLCBpbmRleC0+
bXVsdGlFbnRyeSgpLCBpZCkpIHsKKyAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUo
KS0+Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9i
amVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwg
aW5kZXgtPm5hbWUoKSwgaW5kZXgtPmtleVBhdGgoKSwgaW5kZXgtPnVuaXF1ZSgpLCBpbmRleC0+
bXVsdGlFbnRyeSgpKSkgewogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0
byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1Ci0gICAgQVNTRVJUKGluZGV4LT5pZCgpID09IEF1
dG9nZW5lcmF0ZUluZGV4SWQgfHwgaW5kZXgtPmlkKCkgPT0gaWQpOwotICAgIGluZGV4LT5zZXRJ
ZChpZCk7Ci0KICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCBiNWRhY2FiOWZjNDY5NmMzOWY4YTZjYmRlMGE0
ZTI1YzA1NGM3N2M1Li4wOGVlMDFlYTM5OGExZTJhNGRlOWZiNTNjNWI2OWQyODI3NWE5YTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC02OSw4ICs2OSw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsK
IAotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQg
bWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MDg1Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwg
Ym9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiAsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggMmViNWE4NjA4NWQ3NDgwNjQ5OGZi
ZjU1OThmYzlkYWJhZjg0ZjRjMi4uNDM1M2RiOWZmMWNkMmIwOTM1ZGUyNWM2ZDJkNWU5ZTBhYjA2
YmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU4LDggKzU4LDYg
QEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBNaW5pbXVtSW5k
ZXhJZCA9IDMwOwotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9u
dC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4MDg1Ci0gICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVy
YXRlSW5kZXhJZCA9IC0xOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBJ
bmRleEtleXM7CiAKQEAgLTY5LDggKzY3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChpbnQ2NF90LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdl
bWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MDg1Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1
bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NS
ZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxJbmRleEtleXM+JiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkRhdGFiYXNlLmgKaW5kZXggMTZjZmJkODVkYjQ2MTNiNGRmM2ZmZDhjZmFhYWYxNDY5
MGZjZTRiNS4uYTQ5MzJlZTI4MjQwMDYyZDE1N2ZjZDAyYTU5YTdiMmYzNzBlMTcyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBAIC01MCwx
MSArNTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuIFdlYklEQk1ldGFkYXRhKCk7CiAgICAgfQotICAgIHZpcnR1YWwgV2Vi
SURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0
IFdlYklEQktleVBhdGgmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2Vw
dGlvbkNvZGUmKQotICAgIHsKLSAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSog
Y3JlYXRlT2JqZWN0U3RvcmUobG9uZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJJ
REJLZXlQYXRoJiwgYm9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25D
b2RlJikKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcAppbmRleCA4YjFmYmM0MDVjYWExOTA5MGVjMDMwMDQ4Mjg1NzQ2NGMwZjRjNDIwLi4yOWI4
YzRiZjQxZGNhYWZhNjE5ZWI2YTBkMWExNTExMTRjMjkxZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC03
NywxNyArNzcsNiBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdAogICAgIHJldHVybiBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlKG9iamVjdFN0b3JlLnJlbGVhc2UoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIC8v
IFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRv
IGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCi0gICAgLy8gYWxsIGltcGxlbWVu
dGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KLSAgICBJREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOwotICAgIE93blB0cjxXZWJJREJP
YmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBhZG9wdFB0cihtX3dlYklEQkRhdGFiYXNlLT5jcmVh
dGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCAqdHJhbnNhY3Rpb25Q
cm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpKTsKLSAgICBpZiAoIW9iamVjdFN0b3Jl
KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHk6OmNyZWF0ZShvYmplY3RTdG9yZS5yZWxlYXNlKCkpOwotfQotCiB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUg
YSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApp
bmRleCBlYTY5M2FkYTE3ZTNhNTFlY2IxOWEwOWRhMzQ2YjdkYzFmY2ExMDU2Li5mYzgzMWU4ZGVj
NDlhNzllNjFjYTdjYmNlZjViNDY3ZDFjNGJkNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTQ0LDcgKzQ0LDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhIG1l
dGFkYXRhKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcAppbmRleCBhZWZlYjBmYWY2YzFiM2Q0YzYxMmY3NTYyNmJlOTFkMjI5NWJmZjUyLi5lNzEw
MjlkZWIzNDg0NzE1YjEzMGQzYTFiOGZjZDNmNjA4Y2IwNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTcwLDE2ICs3MCw2
IEBAIFdlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0
b3JlKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViCiAgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RT
dG9yZUltcGwob2JqZWN0U3RvcmUpOwogfQogCi1XZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0
YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fZGF0
YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVt
ZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMp
OwotICAgIGlmICghb2JqZWN0U3RvcmUpIHsKLSAgICAgICAgQVNTRVJUKGVjKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBuZXcgV2ViSURCT2JqZWN0U3RvcmVJbXBsKG9i
amVjdFN0b3JlKTsKLX0KLQogdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBtX2RhdGFiYXNlQmFja2VuZC0+
ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKaW5kZXggODQ5OTY5Y2I0YmEyOGYwNThhNTE1MmY5Mzg4OTIzZmFh
ZjFjYWE3NC4uNzY5YmRmNWQwNWYwYjNiYjFlOGI2NWY0ZTA5ZmMzMjc1ZWJjYTg2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTUy
LDcgKzUyLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0
YSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBh
dXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25n
IGxvbmcsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wg
YXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJD
YWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCAxOThhMjg3ODg2YTI2
OGRlODI0NGJiNDc5MzZmODdhZjBlMTBiNjZlLi5kODE0MDkzZjBmNWIzNDFlYjJkOTlkOTdjOTE4
MjhhYzUwNTIwZDQ1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTEwOSwxNCArMTA5LDYgQEAgdm9pZCBXZWJJREJP
YmplY3RTdG9yZUltcGw6OmNsZWFyKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBX
ZWJJREJUcmFuc2EKICAgICBtX29iamVjdFN0b3JlLT5jbGVhcihJREJDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogfQogCi1XZWJJREJJbmRleCogV2ViSURCT2JqZWN0
U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3Jl
LT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0
aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7Ci0gICAgaWYgKCFp
bmRleCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5ldyBXZWJJREJJbmRleEltcGwo
aW5kZXgpOwotfQotCiBXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJ
bmRleChsb25nIGxvbmcgaWQsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5
UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNy
ZWF0ZUluZGV4KGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0
aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCmluZGV4IDkw
MjY0MWEwMTk0Zjc4NzM5MTQxNjRiMDI2ZjQwZGI5YTQ1NjA4NDguLjdlOWVkMjU3M2NiOTRiODk3
YmNmNTg3NWE1MjMyMjc2MWIxNDMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC01Miw3ICs1Miw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYs
IFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9v
bCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKICAgICBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgobG9uZyBsb25nLCBjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVu
dHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICBX
ZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXgg
MjE2Yzg5Mzg0Njc3NWNmNWJkMmY0NWM4YTNlYzBlNjY4NWUwZTc5Yi4uMmNmMmExZjg4N2Q3NzYz
MDJiOTdiYzVmOGM3OGViYzUwNDNmYjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgQmFja2luZ1N0b3JlUmV0ZW50aW9uKQog
ICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwogCiAgICAgY29uc3Qg
Ym9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2U7Ci0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw+IHN0b3JlID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKGRiLmdl
dCgpLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OkF1dG9nZW5lcmF0ZU9iamVjdFN0b3Jl
SWQsICJzdG9yZSIsIElEQktleVBhdGgoImtleVBhdGgiKSwgYXV0b0luY3JlbWVudCwgMCk7Cisg
ICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IHN0b3JlID0gSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Y3JlYXRlKGRiLmdldCgpLCAxLCAic3RvcmUiLCBJREJLZXlQYXRoKCJr
ZXlQYXRoIiksIGF1dG9JbmNyZW1lbnQsIDApOwogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUt
PnJlZkNvdW50KCksIDEpOwogCiAgICAgY29uc3QgYm9vbCB1bmlxdWUgPSBmYWxzZTsKQEAgLTE0
OCw3ICsxNDgsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1l
dGFkYXRhIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gSURCRGF0YWJhc2VNZXRhZGF0YSgpOyB9
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNl
cHRpb25Db2RlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDc1ZTA2NTg1ZWQ5M2Y3MjljODM1ZDRhNWJmY2U2OWQw
ZTVjMTA2ZjEuLmM1OWRjZTY3NTE3ZTFmNjNlMWQzYjMzNjQ1N2ViNjU0ZjMyYTQxZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5o
CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJh
c2UoY29uc3QgU3RyaW5nJiBuYW1lKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3Rvcjxp
bnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURC
S2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50
RmxhZ3MsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRNYXhJbmRleElkcykgT1ZFUlJJREUgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmpl
Y3RTdG9yZUlkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGF1dG9JbmNyZW1lbnQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IGNyZWF0ZUludmFsaWRSZWNvcmRJ
ZGVudGlmaWVyKCkgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29y
ZElkZW50aWZpZXI+KCk7IH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYp
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5kZXhl
cyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0
X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQ
YXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0
b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgY3JlYXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRf
dCYgYXNzaWduZWRJbmRleElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0
dWFsIGJvb2wgY3JlYXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSkgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KFRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCBib29sIHB1dEluZGV4RGF0
YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0
b3JlUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167619</attachid>
            <date>2012-10-08 14:46:59 -0700</date>
            <delta_ts>2012-10-08 18:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98085-20121008144601.patch</filename>
            <type>text/plain</type>
            <size>40257</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYxODExMDFlY2UwNmVj
YWZiNGRiZWZkYTQ2N2UzNzhmODg5YjAwZi4uYTcyZjBkZmNkYTQxMDMzMzQxYmVhZjRjOGJjNDQ5
MWI2MWVhMmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEwLTA4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHJl
bW92ZSBhdXRvZ2VuZXJhdGVkIG9iamVjdFN0b3JlL2luZGV4IGlkIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGJh
Y2tlbmQtZ2VuZXJhdGVkIG9iamVjdHN0b3JlIGFuZCBpbmRleAorICAgICAgICBpZHMuIFRoZSBm
cm9udGVuZCBvYmplY3RzIG5vdyBtYW5hZ2UgdGhhdCBzdGF0ZSBkdXJpbmcKKyAgICAgICAgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbnMuIFRoZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Ug
YW5kCisgICAgICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSBtZXRob2RzIHdpbGwg
Z28gYXdheSB3aGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODY4MiBsYW5kcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyBpcyBwYXJ0
IG9mIGEgcmVmYWN0b3JpbmcsIGV4aXN0aW5nIGluZGV4ZWRkYgorICAgICAgICB0ZXN0cyBjb3Zl
ciBjb3JyZWN0bmVzcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAg
KElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRNYXhJbmRleElkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleElu
dGVybmFsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaDoKKwogMjAxMi0xMC0wNSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIERlcHJlY2F0ZWQgZmxleGJveGVzIHN1YnRyYWN0IHNjcm9sbGJhciB3
aWR0aC9oZWlnaHQgdHdpY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjlkNWNiNGJl
ZmQyMmE1MTM1YzQ5Mzk1NjE3OGRhMmNiZjZmMDQ4YS4uYjUwNTYxYzYyZDQzZDUzMTg0ZTQxY2I2
OWVhNDEzZDliZTg0ZDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxMi0xMC0wOCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiByZW1vdmUgYXV0b2dlbmVyYXRlZCBvYmplY3RTdG9yZS9pbmRl
eCBpZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05ODA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBzdXBwb3J0IGZvciB1bnVzZWQgY3JlYXRlT2JqZWN0U3RvcmUvY3JlYXRlSW5kZXgu
IFRoZXNlCisgICAgICAgIG1ldGhvZHMgd2lsbCBnbyBhd2F5IGVudGlyZWx5IHdoZW4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NjgyIGlzIGZpeGVk
LgorCisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAq
IHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJPYmpl
Y3RTdG9yZUltcGwuaDoKKyAgICAgICAgKFdlYklEQk9iamVjdFN0b3JlSW1wbCk6CisKIDIwMTIt
MTAtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaAppbmRleCAwYTc0ZTc0OTAyNzY1NzY3ZTRkYjQzMTRlZjA3ODdhZTI4NzYwZmI4Li5j
YzE5N2MyMTdmZTY1ZWRhOTJjZTA0MjU0NTRiYjQzNmFkYzc5MzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNDYsMTAg
KzQ2LDYgQEAgY2xhc3MgSURCQmFja2luZ1N0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQmFj
a2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVHJhbnNhY3Rpb247CiAKLSAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoZXNlIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50
IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgw
ODUKLSAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBBdXRvZ2VuZXJhdGVJbmRleElkID0gLTE7Ci0g
ICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCA9IC0xOwot
CiAgICAgdmlydHVhbCB+SURCQmFja2luZ1N0b3JlKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgPSAwOwpAQCAtNjAs
NyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRN
YXhJbmRleElkcykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGlu
dDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29s
IGF1dG9JbmNyZW1lbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUo
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkg
PSAwOwogCiAgICAgY2xhc3MgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiB7CkBAIC04Niw3ICs4Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKFRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlUmVjb3JkQ2FsbGJhY2smKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5kZXhl
cyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0
X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQ
YXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0
b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNy
ZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGFzc2ln
bmVkSW5kZXhJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlx
dWUsIGJvb2wgaXNNdWx0aUVudHJ5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JS
ZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXIqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZv
clJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmll
ciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcAppbmRleCBkOTcyYzJkYmQyNTY1YzM1OWFhMDYwMWQxNmZmMzI0OWY0MzQ3M2IyLi45
ZDMwN2Q0MGQ4M2RkM2I1NTc2YWQwY2M1ZjlkNjQyZmU1YjI0NzEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xNjEsMTMgKzE2
MSwxMyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9y
ZUJhY2tlbmQgPSBtX2JhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1
dG9JbmNyZW1lbnQsIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsK
KyAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBtX21ldGFkYXRhLm1heE9iamVjdFN0b3JlSWQg
KyAxOworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0
b3JlQmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwg
bmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24t
PmJhY2tlbmQoKSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmVCYWNrZW5kKSB7CiAgICAgICAg
IEFTU0VSVChlYyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCA9IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVyYXRlT2Jq
ZWN0U3RvcmVJZDsKICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIG9i
amVjdFN0b3JlSWQsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZTo6TWluaW11bUluZGV4SWQpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4g
b2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG1ldGFkYXRhLCBvYmplY3RTdG9y
ZUJhY2tlbmQucmVsZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAg
ICAgbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggNmM0MWVkNjA4ZTg0ZDA3ZDNhODhjMmRiYmIxNjIxN2Q2ZjhhMzli
NC4uNjMxYTA2MmU5Y2Y5Nzc4ZDBjMTU1MGZkMGM0ZTQ0ZDljZTRjMmEwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKQEAgLTE3NCwxNiArMTc0LDEwIEBAIElEQkRhdGFiYXNlTWV0YWRhdGEgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogICAgIHJldHVybiBtZXRhZGF0
YTsKIH0KIAotUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICByZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUoQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJ
ZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb25QdHIsIGVjKTsKLX0K
LQogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUpKTsKIAot
ICAgIENPTVBJTEVfQVNTRVJUKEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQgPT0gSURCQmFja2lu
Z1N0b3JlOjpBdXRvZ2VuZXJhdGVPYmplY3RTdG9yZUlkLCBBdXRvZ2VuZXJhdGVPYmplY3RTdG9y
ZUlkTWF0Y2hlcyk7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVj
dFN0b3JlID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKHRoaXMsIGlkLCBuYW1l
LCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6
Ok1pbmltdW1JbmRleElkKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1l
KTsKIApAQCAtMTkxLDcgKzE4NSw3IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTCiAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdF
KTsKIAogICAgIC8vIEZJWE1FOiBGaXggZWRnZSBjYXNlcyBhcm91bmQgdHJhbnNhY3Rpb24gYWJv
cnRzIHRoYXQgcHJldmVudCB0aGlzIGZyb20ganVzdCBiZWluZyBBU1NFUlQoaWQgPT0gbV9tYXhP
YmplY3RTdG9yZUlkICsgMSkKLSAgICBBU1NFUlQoaWQgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3Rv
cmVJZCB8fCBpZCA+IG1fbWF4T2JqZWN0U3RvcmVJZCk7CisgICAgQVNTRVJUKGlkID4gbV9tYXhP
YmplY3RTdG9yZUlkKTsKICAgICBtX21heE9iamVjdFN0b3JlSWQgPSBpZDsKIAogICAgIFJlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CkBAIC0yMDgsMTYgKzIw
MiwxMSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0UwogCiB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7Ci0gICAgaW50NjRfdCBvYmplY3RT
dG9yZUlkOwotCi0gICAgaWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVj
dFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+
aWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIG9iamVjdFN0b3JlLT5uYW1lKCksIG9iamVjdFN0b3Jl
LT5rZXlQYXRoKCksIG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCksIG9iamVjdFN0b3JlSWQp
KSB7CisgICAgaWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3Jl
KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwg
b2JqZWN0U3RvcmUtPmlkKCksIG9iamVjdFN0b3JlLT5uYW1lKCksIG9iamVjdFN0b3JlLT5rZXlQ
YXRoKCksIG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCkpKSB7CiAgICAgICAgIHRyYW5zYWN0
aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBs
ZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKLSAgICBB
U1NFUlQob2JqZWN0U3RvcmUtPmlkKCkgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCB8fCBv
YmplY3RTdG9yZS0+aWQoKSA9PSBvYmplY3RTdG9yZUlkKTsKLSAgICBvYmplY3RTdG9yZS0+c2V0
SWQob2JqZWN0U3RvcmVJZCk7CiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50
cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMTk5NGI1ZjliNTQxODg5NzczMTdmZmI0
OTAxNWU2ZjQyMmIzMWE4Mi4uOTdiODU1ZGFlNDBjMDA2YTIxZGE3NmNiOTdiMzgzMGNmOTc0MTM2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAKICAgICAv
LyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0
YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2
NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGEzMmE5NmJjYTA1OGIw
ZTgyZjkwNzVjNTM0MWQ1ZGMzOTg3MDI2MWEuLjRjZDA4NDViNDM2YjI3NDg3YjFkYzE1N2ExODgx
N2QxZmJlMTdjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC01NCwxMiArNTQs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEo
KSBjb25zdCA9IDA7CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBzd2l0Y2ggdG8g
ZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQotICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEF1dG9n
ZW5lcmF0ZU9iamVjdFN0b3JlSWQgPSAtMTsKLQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBzd2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFn
ZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05ODA4NQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJp
bmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCA4YzMwNWJjYTM3NzhhZDg5NzdkMWI3NmVl
YzdiZGIxZWI0MTliN2RhLi42MjIwOWU2MGI4OGNkY2Y2NTk1ZWExNTMwZDlmYmE0MzUxZGU5ZTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtNTM3LDE0ICs1MzcsMTAgQEAgc3RhdGljIGJv
b2wgc2V0TWF4T2JqZWN0U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXMKICAgICByZXR1cm4gcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RT
dG9yZUlkS2V5LCBvYmplY3RTdG9yZUlkKTsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpCitib29sIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZSIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0
aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFu
YWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MDg1Ci0gICAgaWYgKG9iamVjdFN0b3JlSWQgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3Rv
cmVJZCkKLSAgICAgICAgb2JqZWN0U3RvcmVJZCA9IGdldE1heE9iamVjdFN0b3JlSWQobGV2ZWxE
QlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkKSArIDE7Ci0KICAgICBpZiAoIXNldE1heE9iamVjdFN0
b3JlSWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02MTIsOSArNjA4LDYgQEAgYm9vbCBJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21w
bGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1Ci0gICAg
YXNzaWduZWRPYmplY3RTdG9yZUlkID0gb2JqZWN0U3RvcmVJZDsKLQogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC05NDIsMTcgKzkzNSw2IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAg
fQogfQogCi1zdGF0aWMgaW50NjRfdCBnZXRNYXhJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQot
ewotICAgIGludDY0X3QgbWF4SW5kZXhJZCA9IC0xOwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBt
YXhJbmRleElkS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQpOwotICAg
IGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBtYXhJbmRleElkKSkKLSAg
ICAgICAgbWF4SW5kZXhJZCA9IE1pbmltdW1JbmRleElkOwotCi0gICAgQVNTRVJUKG1heEluZGV4
SWQgPj0gMCk7Ci0gICAgcmV0dXJuIG1heEluZGV4SWQ7Ci19Ci0KIHN0YXRpYyBib29sIHNldE1h
eEluZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKIHsKICAgICBpbnQ2
NF90IG1heEluZGV4SWQgPSAtMTsKQEAgLTk2MCwxMCArOTQyLDYgQEAgc3RhdGljIGJvb2wgc2V0
TWF4SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGkKICAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtleSwgbWF4
SW5kZXhJZCkpCiAgICAgICAgIG1heEluZGV4SWQgPSBNaW5pbXVtSW5kZXhJZDsKIAotICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVu
dCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MDg1Ci0gICAgaWYgKGluZGV4SWQgPT0gSURCQmFja2luZ1N0b3JlOjpBdXRvZ2VuZXJhdGVJbmRl
eElkKQotICAgICAgICBpbmRleElkID0gbWF4SW5kZXhJZCArIDE7Ci0KICAgICBpZiAoaW5kZXhJ
ZCA8PSBtYXhJbmRleElkKSB7CiAgICAgICAgIExPR19FUlJPUigiUG9zc2libGUgY29ycnVwdGlv
bjogbmV3IGluZGV4IGlkIGlzIHRvbyBzbWFsbC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTcyLDE0ICs5NTAsMTAgQEAgc3RhdGljIGJvb2wgc2V0TWF4SW5kZXhJZChMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGkKICAgICByZXR1cm4g
cHV0SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBpbmRleElkKTsKIH0KIAotYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYg
YXNzaWduZWRJbmRleElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRl
eChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29s
IGlzTXVsdGlFbnRyeSkKIHsKICAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUluZGV4Iik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rp
b24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5h
Z2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgwODUKLSAgICBpZiAoaW5kZXhJZCA9PSBBdXRvZ2VuZXJhdGVJbmRleElkKQotICAgICAg
ICBpbmRleElkID0gZ2V0TWF4SW5kZXhJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQpICsgMTsKLQogICAgIGlmICghc2V0TWF4SW5kZXhJZChsZXZlbERCVHJh
bnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwMTIsOSArOTg2LDYgQEAgYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1Ci0gICAgYXNzaWdu
ZWRJbmRleElkID0gaW5kZXhJZDsKLQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmgKaW5kZXggZWVhMjNkMjk0ZjBlOTQwNjc1MTg3NzIzM2EwMmVmZDM3NjRmMTEyYS4uY2Fh
NTdmNTE0YjU5OThkNGU4YjQyODgxYWQxMmExNDc5ZjNlYjg4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFi
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3Rv
cmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9y
PFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywg
VmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncywgVmVjdG9yPGludDY0X3Q+JiBm
b3VuZE1heEluZGV4SWRzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29s
IGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCk7CisgICAgdmly
dHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVj
b3JkSWRlbnRpZmllcigpOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVjdFN0b3JlUmVjb3Jk
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jik7CkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYpOwogCiAgICAgdmlydHVhbCB2b2lkIGdl
dEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3Rv
cjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8
SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFn
cywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncyk7Ci0gICAgdmlydHVhbCBib29s
IGNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlF
bnRyeSwgaW50NjRfdCYgYXNzaWduZWRJbmRleElkKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRl
SW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQpOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciopOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JS
ZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDIxNzdmN2VhMGQ3ZDRiYjZkYzRkMGNhZDI3
ZWYzYWJlMjhlY2U2NGQuLjk3YmI0ZjQ1OTI5NWI3OTRlNmMxMjY5MDBhNGIyNTNkZTc0MGY0Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKQEAgLTQwMSw4ICs0MDEsOCBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpbnQ2NF90IGluZGV4SWQgPSBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U6OkF1dG9nZW5lcmF0ZUluZGV4SWQ7Ci0gICAgUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5jcmVhdGVJ
bmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJh
Y2tlbmQoKSwgZWMpOworICAgIGludDY0X3QgaW5kZXhJZCA9IG1fbWV0YWRhdGEubWF4SW5kZXhJ
ZCArIDE7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXhCYWNrZW5k
ID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChpbmRleElkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUs
IG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIEFTU0VSVCgh
aW5kZXhCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4gaW5kZXgsIHdlIHNo
b3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5k
ZXggMWM5NGM4YTk2MWZjMmRjNWE4NGNlYzM5ZjgzMDkxNjgxOWY1MWM0Yi4uNjllYWIwYmFjODA2
ZDUxZTM1NTkyOGQzOTQ3MGMyMTIxMjQwYjE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAKQEAgLTU5LDggKzU5LDcgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXAKICAgICAsIG1fYXV0
b0luY3JlbWVudChhdXRvSW5jcmVtZW50KQogICAgICwgbV9tYXhJbmRleElkKG1heEluZGV4SWQp
CiB7Ci0gICAgaWYgKG1faWQgIT0gQXV0b2dlbmVyYXRlSW5kZXhJZCkKLSAgICAgICAgbG9hZElu
ZGV4ZXMoKTsKKyAgICBsb2FkSW5kZXhlcygpOwogfQogCiBJREJPYmplY3RTdG9yZU1ldGFkYXRh
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKQEAgLTQyNywyMiAr
NDI2LDE2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nl
c3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0
aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgcmV0dXJu
IGNyZWF0ZUluZGV4KEF1dG9nZW5lcmF0ZUluZGV4SWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwg
bXVsdGlFbnRyeSwgdHJhbnNhY3Rpb25QdHIsIGVjKTsKLX0KLQogUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4
KGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0
aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpLCAiSW5kZXhlcyBhbHJlYWR5
IGNvbnRhaW4gJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQ09NUElMRV9BU1NFUlQo
QXV0b2dlbmVyYXRlSW5kZXhJZCA9PSBJREJCYWNraW5nU3RvcmU6OkF1dG9nZW5lcmF0ZUluZGV4
SWQsIEF1dG9nZW5lcmF0ZUluZGV4SWRNYXRjaGVzKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9kYXRhYmFzZSwg
dGhpcywgaWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CiAgICAgQVNTRVJU
KGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRy
YW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwotICAgIEFTU0VSVChpZCA9PSBBdXRvZ2VuZXJhdGVJ
bmRleElkIHx8IGlkID4gbV9tYXhJbmRleElkKTsKKyAgICBBU1NFUlQoaWQgPiBtX21heEluZGV4
SWQpOwogICAgIG1fbWF4SW5kZXhJZCA9IGlkOwogCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKQEAgLTQ1OSwxNiArNDUyLDExIEBAIFBh
c3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpjcmVhdGVJbmRleChpbnQ2CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y3JlYXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbikKIHsKLSAgICBpbnQ2NF90IGlkOwotICAgIGlmICghb2JqZWN0U3RvcmUt
PmJhY2tpbmdTdG9yZSgpLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCks
IGluZGV4LT5pZCgpLCBpbmRleC0+bmFtZSgpLCBpbmRleC0+a2V5UGF0aCgpLCBpbmRleC0+dW5p
cXVlKCksIGluZGV4LT5tdWx0aUVudHJ5KCksIGlkKSkgeworICAgIGlmICghb2JqZWN0U3RvcmUt
PmJhY2tpbmdTdG9yZSgpLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCks
IGluZGV4LT5pZCgpLCBpbmRleC0+bmFtZSgpLCBpbmRleC0+a2V5UGF0aCgpLCBpbmRleC0+dW5p
cXVlKCksIGluZGV4LT5tdWx0aUVudHJ5KCkpKSB7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9y
dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKLSAgICBBU1NFUlQoaW5k
ZXgtPmlkKCkgPT0gQXV0b2dlbmVyYXRlSW5kZXhJZCB8fCBpbmRleC0+aWQoKSA9PSBpZCk7Ci0g
ICAgaW5kZXgtPnNldElkKGlkKTsKLQogICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tF
dmVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IGI1ZGFjYWI5ZmM0Njk2
YzM5ZjhhNmNiZGUwYTRlMjVjMDU0Yzc3YzUuLjA4ZWUwMWVhMzk4YTFlMmE0ZGU5ZmI1M2M1YjY5
ZDI4Mjc1YTlhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTY5LDggKzY5LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpOwogCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRv
IGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoaW50NjRfdCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlF
bnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mICwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCB2b2lkIHNldElu
ZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCAyZWI1YTg2
MDg1ZDc0ODA2NDk4ZmJmNTU5OGZjOWRhYmFmODRmNGMyLi40MzUzZGI5ZmYxY2QyYjA5MzVkZTI1
YzZkMmQ1ZTllMGFiMDZiZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApA
QCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2
NF90IE1pbmltdW1JbmRleElkID0gMzA7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4g
c3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKLSAgICBzdGF0aWMgY29uc3QgaW50
NjRfdCBBdXRvZ2VuZXJhdGVJbmRleElkID0gLTE7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+IEluZGV4S2V5czsKIApAQCAtNjksOCArNjcsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29s
IG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250
LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTgwODUKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRleCAxNmNmYmQ4NWRiNDYxM2I0ZGYz
ZmZkOGNmYWFhZjE0NjkwZmNlNGI1Li5hNDkzMmVlMjgyNDAwNjJkMTU3ZmNkMDJhNTlhN2IyZjM3
MGUxNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJE
YXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFi
YXNlLmgKQEAgLTUwLDExICs1MCw2IEBAIHB1YmxpYzoKICAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gV2ViSURCTWV0YWRhdGEoKTsKICAgICB9Ci0g
ICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
U3RyaW5nJiwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KICAgICB2aXJ0dWFsIFdlYklE
Qk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmlu
ZyYsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYs
IFdlYkV4Y2VwdGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDhiMWZiYzQwNWNhYTE5MDkwZWMwMzAwNDgyODU3NDY0
YzBmNGM0MjAuLjI5YjhjNGJmNDFkY2FhZmE2MTllYjZhMGQxYTE1MTExNGMyOTFlNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHAKQEAgLTc3LDE3ICs3Nyw2IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0CiAgICAg
cmV0dXJuIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUucmVs
ZWFzZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBi
ZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKLSAgICAv
LyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3Rz
LgotICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3Rh
dGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7Ci0gICAg
T3duUHRyPFdlYklEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IGFkb3B0UHRyKG1fd2ViSURC
RGF0YWJhc2UtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQs
ICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYykpOwotICAgIGlm
ICghb2JqZWN0U3RvcmUpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBJREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlKG9iamVjdFN0b3JlLnJlbGVhc2UoKSk7Ci19Ci0KIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5k
ZXJlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCmluZGV4IGVhNjkzYWRhMTdlM2E1MWVjYjE5YTA5ZGEzNDZiN2RjMWZjYTEw
NTYuLmZjODMxZThkZWM0OWE3OWU2MWNhN2NiY2VmNWI0NjdkMWM0YmQ1ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApA
QCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgYXV0
b0luY3JlbWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgYXV0
b0luY3JlbWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVy
c2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwCmluZGV4IGFlZmViMGZhZjZjMWIzZDRjNjEyZjc1NjI2YmU5MWQy
Mjk1YmZmNTIuLmU3MTAyOWRlYjM0ODQ3MTViMTMwZDNhMWI4ZmNkM2Y2MDhjYjA2Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApA
QCAtNzAsMTYgKzcwLDYgQEAgV2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNlSW1wbDo6
Y3JlYXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIGlkLCBjb25zdCBXZWIKICAgICByZXR1cm4gbmV3
IFdlYklEQk9iamVjdFN0b3JlSW1wbChvYmplY3RTdG9yZSk7CiB9CiAKLVdlYklEQk9iamVjdFN0
b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVj
dFN0b3JlID0gbV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSgpLCBlYyk7Ci0gICAgaWYgKCFvYmplY3RTdG9yZSkgewotICAgICAgICBBU1NFUlQo
ZWMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBXZWJJREJPYmpl
Y3RTdG9yZUltcGwob2JqZWN0U3RvcmUpOwotfQotCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG1fZGF0
YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCB0cmFuc2FjdGlvbi5nZXRJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA4NDk5NjljYjRiYTI4ZjA1OGE1
MTUyZjkzODg5MjNmYWFmMWNhYTc0Li43NjliZGY1ZDA1ZjBiM2JiMWU4YjY1ZjRlMDlmYzMyNzVl
YmNhODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaApAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYklEQk1l
dGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3Jl
KiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktl
eVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2Vi
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9i
amVjdFN0b3JlKGxvbmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJL
ZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZl
cnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4
IDE5OGEyODc4ODZhMjY4ZGU4MjQ0YmI0NzkzNmY4N2FmMGUxMGI2NmUuLmQ4MTQwOTNmMGY1YjM0
MWViMmQ5OWQ5N2M5MTgyOGFjNTA1MjBkNDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMTA5LDE0ICsxMDksNiBA
QCB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y2xlYXIoV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYQogICAgIG1fb2JqZWN0U3RvcmUtPmNsZWFyKElEQkNh
bGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9uLmdl
dElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKLVdlYklEQkluZGV4
KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlF
bnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9
IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlF
bnRyeSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVj
KTsKLSAgICBpZiAoIWluZGV4KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbmV3IFdl
YklEQkluZGV4SW1wbChpbmRleCk7Ci19Ci0KIFdlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9y
ZUltcGw6OmNyZWF0ZUluZGV4KGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9v
YmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgoaWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlF
bnRyeSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmgKaW5kZXggOTAyNjQxYTAxOTRmNzg3MzkxNDE2NGIwMjZmNDBkYjlhNDU2MDg0OC4uN2U5
ZWQyNTczY2I5NGI4OTdiY2Y1ODc1YTUyMzIyNzYxYjE0MzA4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTUyLDcgKzUy
LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5UmFu
Z2UmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIGNsZWFyKFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgV2ViSURCSW5kZXgqIGNy
ZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJv
b2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2Vi
RXhjZXB0aW9uQ29kZSYpOwogICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChsb25nIGxvbmcs
IGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpOwogICAgIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRU
ZXN0LmNwcAppbmRleCAyMTZjODkzODQ2Nzc1Y2Y1YmQyZjQ1YzhhM2VjMGU2Njg1ZTBlNzliLi4y
Y2YyYTFmODg3ZDc3NjMwMmI5N2JjNWY4Yzc4ZWJjNTA0M2ZiNzgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAK
QEAgLTU3LDcgKzU3LDcgQEAgVEVTVChJREJEYXRhYmFzZUJhY2tlbmRUZXN0LCBCYWNraW5nU3Rv
cmVSZXRlbnRpb24pCiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7
CiAKICAgICBjb25zdCBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gc3RvcmUgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpjcmVhdGUoZGIuZ2V0KCksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVy
YXRlT2JqZWN0U3RvcmVJZCwgInN0b3JlIiwgSURCS2V5UGF0aCgia2V5UGF0aCIpLCBhdXRvSW5j
cmVtZW50LCAwKTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gc3RvcmUg
PSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUoZGIuZ2V0KCksIDEsICJzdG9yZSIs
IElEQktleVBhdGgoImtleVBhdGgiKSwgYXV0b0luY3JlbWVudCwgMCk7CiAgICAgRVhQRUNUX0dU
KGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKICAgICBjb25zdCBib29sIHVuaXF1ZSA9
IGZhbHNlOwpAQCAtMTQ4LDcgKzE0OCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFs
IElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBJREJEYXRhYmFz
ZU1ldGFkYXRhKCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRv
SW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
JikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlv
bkNvZGUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggNzVlMDY1ODVlZDkzZjcyOWM4
MzVkNGE1YmZjZTY5ZDBlNWMxMDZmMS4uYzU5ZGNlNjc1MTdlMWY2M2UxZDNiMzM2NDU3ZWI2NTRm
MzJhNDFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtl
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtl
QmFja2luZ1N0b3JlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpIE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJh
c2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3Vu
ZEF1dG9JbmNyZW1lbnRGbGFncywgVmVjdG9yPGludDY0X3Q+JiBmb3VuZE1heEluZGV4SWRzKSBP
VkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90
JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH07CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRl
SW52YWxpZFJlY29yZElkZW50aWZpZXIoKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPE9i
amVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4oKTsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZVJl
Y29yZENhbGxiYWNrJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywg
VmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5p
cXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpIE9WRVJSSURFIHsg
fQotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0
aUVudHJ5LCBpbnQ2NF90JiBhc3NpZ25lZEluZGV4SWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9OworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNN
dWx0aUVudHJ5KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jiwg
Y29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>