<?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>104823</bug_id>
          
          <creation_ts>2012-12-12 10:10:44 -0800</creation_ts>
          <short_desc>[BlackBerry] Clean up log output in WebKit/blackberry</short_desc>
          <delta_ts>2012-12-17 12:14:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Jakob Petsovits">jpetsovits</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>nima.ghanavatian</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>789662</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-12-12 10:10:44 -0800</bug_when>
    <thetext>Log output is a minor mess right now. The worst thing is that we use the BBLOG() macro for logs that are already covered by a preprocessor define, but there are also consistency issues with namespace usage and point/size/rect output formats, compiler warnings, unnecessary newlines, parameter indentation that would never pass stylebot checks, and even a build error for a debug block that&apos;s defined out and hasn&apos;t been updated to reflect current WebCore API.

It&apos;s getting on my nerves to have to adjust the logging code every time I enable it, and then keep it out of the resulting patches because it&apos;s not logically related. It&apos;s time to fix logging for good. Patch below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789736</commentid>
    <comment_count>1</comment_count>
      <attachid>179088</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-12-12 11:25:52 -0800</bug_when>
    <thetext>Created attachment 179088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789738</commentid>
    <comment_count>2</comment_count>
      <attachid>179088</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-12-12 11:28:22 -0800</bug_when>
    <thetext>Comment on attachment 179088
Patch

Whoops, found two more missing Platform:: prefixes in Selection* and Input* log macros. Let&apos;s get these in too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789742</commentid>
    <comment_count>3</comment_count>
      <attachid>179089</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-12-12 11:33:03 -0800</bug_when>
    <thetext>Created attachment 179089
Slightly better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792901</commentid>
    <comment_count>4</comment_count>
      <attachid>179089</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 12:01:05 -0800</bug_when>
    <thetext>Comment on attachment 179089
Slightly better patch

Clearing flags on attachment: 179089

Committed r137929: &lt;http://trac.webkit.org/changeset/137929&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792902</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 12:01:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792916</commentid>
    <comment_count>6</comment_count>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-12-17 12:14:53 -0800</bug_when>
    <thetext>*** Bug 105200 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179088</attachid>
            <date>2012-12-12 11:25:52 -0800</date>
            <delta_ts>2012-12-12 11:32:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104823-20121212142257.patch</filename>
            <type>text/plain</type>
            <size>84069</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwMmIxMTA5ODQ0YjJlNDFiZWY5MmJmOWY2MjExMWFlNjAzZWMzNDBmLi5jNWJjYmRjY2M3
YWU1NGQyY2E5NDk4MWNkM2NhZjkxODM4ZGY5NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMTEgQEAKKzIwMTItMTItMTIgIEpha29iIFBldHNvdml0cyAgPGpw
ZXRzb3ZpdHNAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQ2xlYW4gdXAgbG9nIG91
dHB1dCBpbiBXZWJLaXQvYmxhY2tiZXJyeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNDgyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlaGF2aW9yLXByZXNlcnZpbmcgY2hhbmdlLCBmaXhpbmcgbWFu
eSBpc3N1ZXMgd2l0aCBsb2dnaW5nOgorICAgICAgICAtIENhbGwgbG9nQWx3YXlzKCkgaW5zdGVh
ZCBvZiBCQkxPRygpIGluIGFscmVhZHkgZGVmaW5lZC1vdXQgZGVidWcgYmxvY2tzLgorICAgICAg
ICAtIENhbGwgbG9nQWx3YXlzKCkgaW5zdGVhZCBvZiBCQkxPRygpIGZvciBzZXJpb3VzIGVycm9y
cywgdG9vLgorICAgICAgICAtIEZpeCBidWlsZCBmb3IgdGhlIERFQlVHX09WRVJGTE9XX0RFVEVD
VElPTiBibG9jayBpbiBDaHJvbWVDbGllbnRCbGFja0JlcnJ5LgorICAgICAgICAtIEZpeCBidWls
ZCBmb3IgZG91YmxlIGRlY2xhcmF0aW9ucyBvZiAiZWxhcHNlZCIgdmFyaWFibGVzIGluIFJlbmRl
clF1ZXVlLgorICAgICAgICAtIEZpeCBjb21waWxlciB3YXJuaW5ncyBkdWUgdG8gZm9ybWF0IHN0
cmluZyAvIHBhcmFtZXRlciBtaXNtYXRjaGVzLgorICAgICAgICAtIFJlbW92ZSB1bm5lY2Vzc2Fy
eSB0cmFpbGluZyBuZXdsaW5lcyBpbiBsb2dnZWQgc3RyaW5ncy4KKyAgICAgICAgLSBDb25zaXN0
ZW50bHkgdXNlIFBsYXRmb3JtOjogYXMgcHJlZml4IGV4Y2VwdCBpbnNpZGUgV2ViQ29yZS1uYW1l
c3BhY2VkIGNvZGUuCisgICAgICAgIC0gVXNlIGluZGVudGF0aW9uIHRoYXQgYWN0dWFsbHkgcGFz
c2VzIFdlYktpdCBzdHlsZSBjaGVja3MuCisgICAgICAgIC0gQ2hhbmdlIHBvaW50L3NpemUvcmVj
dCBvdXRwdXQgdG8gdXNlIFBsYXRmb3JtIHRvU3RyaW5nKCkgZm9ybWF0cyBmb3IgY29uc2lzdGVu
Y3kuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6YmVzdERpdmlzb3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpC
YWNraW5nU3RvcmVQcml2YXRlOjpzdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3BlbmRTY3JlZW5V
cGRhdGVzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0
ZTo6cmVzdW1lQmFja2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZVNjcmVlblVwZGF0ZXMpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZXBhaW50KToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2xvd1Njcm9sbCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnNjcm9s
bCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJl
bmRlckpvYik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OnNldEJhY2tpbmdTdG9yZVJlY3QpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpC
YWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0FmdGVyQmFja2luZ1N0b3JlUmVjdENoYW5n
ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnNj
cm9sbEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlbmRlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tp
bmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0ZvclNjcm9sbE9yTm90
UmVuZGVyZWRSZWdpb24pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3Rv
cmVQcml2YXRlOjpyZW5kZXJDb250ZW50cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRUb1dpbmRvdyk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmZpbGxXaW5kb3cpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93KToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6Y2xlYXJX
aW5kb3cpOgorICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnNldExvYWRTdGF0ZSk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjp6b29tQWJvdXRQb2ludCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpjb250ZW50c1NpemVDaGFuZ2VkKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6Onpvb21Ub0luaXRp
YWxTY2FsZU9uTG9hZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnRv
dWNoRXZlbnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6
c2NoZWR1bGVSb290TGF5ZXJDb21taXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9vdExheWVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZVByaXZhdGU6OmNvbW1pdFJvb3RMYXllcklmTmVlZGVkKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnJvb3RMYXllckNvbW1pdFRpbWVy
RmlyZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6b3ZlcmZsb3dF
eGNlZWRzQ29udGVudHNTaXplKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMu
Y3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpGYXRGaW5nZXJzOjpjaGVja0Zpbmdl
ckludGVyc2VjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkZhdEZpbmdlcnM6
OmZpbmRJbnRlcnNlY3RpbmdSZWdpb25zKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
RmF0RmluZ2Vyczo6Y2hlY2tGb3JUZXh0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0
SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbnZlcnRTdHJpbmdU
b1djaGFyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y29udmVydFN0cmluZ1RvV2No
YXJWZWN0b3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojpjb252ZXJ0U3Bhbm5hYmxl
U3RyaW5nVG9TdHJpbmcpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRs
ZXI6OmxlYXJuVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxl
cjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFBy
b2Nlc3NlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2hv
dWxkUmVxdWVzdFNwZWxsQ2hlY2tpbmdPcHRpb25zRm9yUG9pbnQpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnJlcXVlc3RTcGVsbGluZ0NoZWNraW5nT3B0aW9u
cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0RWxlbWVu
dFVuZm9jdXNlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6
c2V0SW5wdXRNb2RlRW5hYmxlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0
SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OklucHV0SGFuZGxlcjo6bm9kZVRleHRDaGFuZ2VkKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjplbnN1cmVGb2N1c1RleHRFbGVtZW50VmlzaWJsZSk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZnJhbWVVbmxvYWRl
ZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2VsZWN0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0
U2VsZWN0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpo
YW5kbGVLZXlib2FyZElucHV0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRI
YW5kbGVyOjpkZWxldGVUZXh0UmVsYXRpdmVUb0N1cnNvcik6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2UpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldENvbXBvc2luZ1JlZ2lvbik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRp
b24pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldFRleHQp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldFRleHRBdHRy
aWJ1dGVzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRS
ZWxhdGl2ZUN1cnNvclBvc2l0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5w
dXRIYW5kbGVyOjpzZXRTcGFubmFibGVUZXh0QW5kUmVsYXRpdmVDdXJzb3IpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldENvbXBvc2luZ1RleHQpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmNvbW1pdFRleHQpOgorICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6YWRkVG9SZWd1bGFyUXVldWUpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6YWRkVG9TY3JvbGxab29tUXVldWUpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6cmVuZGVyKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFy
UmVuZGVySm9icyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpz
dGFydFJlZ3VsYXJSZW5kZXJKb2JCYXRjaElmTmVlZGVkKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6UmVuZGVyUXVldWU6OnJlbmRlclZpc2libGVab29tSm9iKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6OnJlbmRlclZpc2libGVTY3JvbGxKb2IpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJl
bmRlckpvYik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpyZW5k
ZXJOb25WaXNpYmxlU2Nyb2xsSm9iKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5k
bGVyOjpjYW5jZWxTZWxlY3Rpb24pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxl
Y3Rpb25IYW5kbGVyOjpzaG91bGRVcGRhdGVTZWxlY3Rpb25PckNhcmV0Rm9yUG9pbnQpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJldFBvc2l0
aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6dXBk
YXRlT3JIYW5kbGVJbnB1dFNlbGVjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNlbGVjdGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0aW9uQ2hhbmdlZCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcDoK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3VyZmFjZVBvb2w6OmluaXRpYWxpemUpOgor
CiAyMDEyLTEyLTExICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFZpYnJhdGlvbiBBUEk6IElETCB0eXBlIGRvZXNuJ3QgbWF0Y2ggaW1wbGVtZW50YXRp
b24gdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3Bw
CmluZGV4IGM5MWEyYWQ4MTJjOTY1YWZiZGJiZGZjNGY2ZDI3Mzk4ZmRkYzUwMDkuLmUzN2QyOGNk
N2I2MGFjZTM4NTJlYThlYzlmZjJmMzkyMjJjZDgzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTE0MCw5ICsxNDAsMTAgQEAgc3RhdGlj
IERpdmlzb3IgYmVzdERpdmlzb3IoUGxhdGZvcm06OkludFNpemUgc2l6ZSwgaW50IHRpbGVXaWR0
aCwgaW50IHRpbGVIZWlnaHQKICAgICAgICAgaWYgKGlzUGVyZmVjdFdpZHRoIHx8IGlzUGVyZmVj
dEhlaWdodCkgewogICAgICAgICAgICAgYmVzdERpdmlzb3IgPSBkaXZpc29yOyAvLyBGb3VuZCBh
IHBlcmZlY3QgZml0IQogI2lmIERFQlVHX1RJTEVNQVRSSVgKLSAgICAgICAgICAgIEJCTE9HKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiYmVzdERpdmlzb3IgZm91bmQg
cGVyZmVjdCBzaXplIGlzUGVyZmVjdFdpZHRoPSVzIGlzUGVyZmVjdEhlaWdodD0lcyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGVyZmVjdFdpZHRoID8gInRydWUiIDog
ImZhbHNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQZXJmZWN0SGVp
Z2h0ID8gInRydWUiIDogImZhbHNlIik7CisgICAgICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlz
KFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAgICAgICAgICJiZXN0RGl2aXNv
ciBmb3VuZCBwZXJmZWN0IHNpemUgaXNQZXJmZWN0V2lkdGg9JXMgaXNQZXJmZWN0SGVpZ2h0PSVz
IiwKKyAgICAgICAgICAgICAgICBpc1BlcmZlY3RXaWR0aCA/ICJ0cnVlIiA6ICJmYWxzZSIsCisg
ICAgICAgICAgICAgICAgaXNQZXJmZWN0SGVpZ2h0ID8gInRydWUiIDogImZhbHNlIik7CiAjZW5k
aWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yODUsNyArMjg2LDcgQEAgYm9v
bCBCYWNraW5nU3RvcmVQcml2YXRlOjppc09wZW5HTENvbXBvc2l0aW5nKCkgY29uc3QKIHZvaWQg
QmFja2luZ1N0b3JlUHJpdmF0ZTo6c3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKQogewogICAg
IGlmIChhdG9taWNfYWRkX3ZhbHVlKCZtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzLCAwKSkg
ewotICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAg
ICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAogICAgICAgICAgICAgIkJhY2tpbmdz
dG9yZSBhbHJlYWR5IHN1c3BlbmRlZCwgaW5jcmVhc2luZyBzdXNwZW5kIGNvdW50ZXIuIik7CiAg
ICAgfQogCkBAIC0yOTUsNyArMjk2LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNw
ZW5kQmFja2luZ1N0b3JlVXBkYXRlcygpCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3Bl
bmRTY3JlZW5VcGRhdGVzKCkKIHsKICAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRlcykgewot
ICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAg
ICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAogICAgICAgICAgICAgIlNjcmVlbiBhbHJl
YWR5IHN1c3BlbmRlZCwgaW5jcmVhc2luZyBzdXNwZW5kIGNvdW50ZXIuIik7CiAgICAgfQogCkBA
IC0zMTIsNyArMzEzLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVCYWNraW5n
U3RvcmVVcGRhdGVzKCkKICAgICB1bnNpZ25lZCBjdXJyZW50VmFsdWUgPSBhdG9taWNfYWRkX3Zh
bHVlKCZtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzLCAwKTsKICAgICBBU1NFUlQoY3VycmVu
dFZhbHVlID49IDEpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPCAxKSB7Ci0gICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVs
Q3JpdGljYWwsCisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVs
Q3JpdGljYWwsCiAgICAgICAgICAgICAiQ2FsbCBtaXNtYXRjaDogQmFja2luZ3N0b3JlIGhhc24n
dCBiZWVuIHN1c3BlbmRlZCwgdGhlcmVmb3JlIHdvbid0IHJlc3VtZSEiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlc3VtZVNjcmVlblVwZGF0ZXMoQmFja2luZ1N0b3JlOjpSZXN1bWVVcGRhdGVPcGVyYXRpbwog
ICAgIEFTU0VSVChtX3N1c3BlbmRTY3JlZW5VcGRhdGVzKTsKIAogICAgIGlmICghbV9zdXNwZW5k
U2NyZWVuVXBkYXRlcykgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlz
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICBQbGF0Zm9y
bTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAogICAgICAgICAgICAgIkNh
bGwgbWlzbWF0Y2g6IFNjcmVlbiBoYXNuJ3QgYmVlbiBzdXNwZW5kZWQsIHRoZXJlZm9yZSB3b24n
dCByZXN1bWUhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNDIsNyArMzQzLDcgQEAg
dm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVTY3JlZW5VcGRhdGVzKEJhY2tpbmdTdG9y
ZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW8KICAgICAgICAgbV9yZXN1bWVPcGVyYXRpb24gPSBvcDsK
IAogICAgIGlmIChtX3N1c3BlbmRTY3JlZW5VcGRhdGVzID49IDIpIHsgLy8gd2UncmUgc3RpbGwg
c3VzcGVuZGVkCi0gICAgICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbElu
Zm8sCisgICAgICAgIEJCTE9HKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCiAgICAgICAgICAgICAi
U2NyZWVuIGFuZCBiYWNraW5nc3RvcmUgc3RpbGwgc3VzcGVuZGVkLCBkZWNyZWFzaW5nIHN1c3Bl
bmQgY291bnRlci4iKTsKICAgICAgICAgLS1tX3N1c3BlbmRTY3JlZW5VcGRhdGVzOwogICAgICAg
ICByZXR1cm47CkBAIC00MTksMTEgKzQyMCwxMSBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlcGFpbnQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHdpbmRvd1JlY3QsCiAgICAgICAgICAg
ICByZXR1cm47CiAKICNpZiBERUJVR19XRUJDT1JFX1JFUVVFU1RTCi0gICAgICAgIEJCTE9HKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjpyZXBhaW50IHJlY3Q9JWQsJWQg
JWR4JWQgY29udGVudENoYW5nZWQ9JXMgaW1tZWRpYXRlPSVzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudENoYW5n
ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaW1tZWRpYXRlID8gInRydWUiIDogImZhbHNlIikpOworICAgICAgICBQbGF0Zm9ybTo6bG9n
QWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAgICAgIkJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlcGFpbnQgcmVjdD0lcyBjb250ZW50Q2hhbmdlZD0lcyBpbW1lZGlhdGU9
JXMiLAorICAgICAgICAgICAgcmVjdC50b1N0cmluZygpLmNfc3RyKCksCisgICAgICAgICAgICBj
b250ZW50Q2hhbmdlZCA/ICJ0cnVlIiA6ICJmYWxzZSIsCisgICAgICAgICAgICBpbW1lZGlhdGUg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKICNlbmRpZgogCiAgICAgICAgIGlmIChpbW1lZGlhdGUpIHsK
QEAgLTQ2OSw3ICs0NzAsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNsb3dTY3JvbGwo
Y29uc3QgUGxhdGZvcm06OkludFNpemUmIGRlbHRhLCBjb25zdCBQbGF0ZgogI2lmIERFQlVHX0JB
Q0tJTkdTVE9SRQogICAgIC8vIFN0b3AgdGhlIHRpbWUgbWVhc3VyZW1lbnQuCiAgICAgZG91Ymxl
IGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwotICAgIEJCTE9HKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2xv
d1Njcm9sbCBlbGFwc2VkPSVmIiwgZWxhcHNlZCk7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNsb3dTY3Jv
bGwgZWxhcHNlZD0lZiIsIGVsYXBzZWQpOwogI2VuZGlmCiB9CiAKQEAgLTUwMiw3ICs1MDMsNyBA
QCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNjcm9sbChjb25zdCBQbGF0Zm9ybTo6SW50U2l6
ZSYgZGVsdGEsCiAjaWYgREVCVUdfQkFDS0lOR1NUT1JFCiAgICAgLy8gU3RvcCB0aGUgdGltZSBt
ZWFzdXJlbWVudC4KICAgICBkb3VibGUgZWxhcHNlZCA9IFdURjo6Y3VycmVudFRpbWUoKSAtIHRp
bWU7Ci0gICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJC
YWNraW5nU3RvcmVQcml2YXRlOjpzY3JvbGwgZHg9JWQsIGR5PSVkIGVsYXBzZWQ9JWYiLCBkZWx0
YS53aWR0aCgpLCBkZWx0YS5oZWlnaHQoKSwgZWxhcHNlZCk7CisgICAgUGxhdGZvcm06OmxvZ0Fs
d2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNj
cm9sbCBkeD0lZCwgZHk9JWQgZWxhcHNlZD0lZiIsIGRlbHRhLndpZHRoKCksIGRlbHRhLmhlaWdo
dCgpLCBlbGFwc2VkKTsKICNlbmRpZgogfQogCkBAIC01NjMsNyArNTY0LDcgQEAgdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpyZW5kZXJKb2IoKQogICAgIGluc3RydW1lbnRCZWdpbkZyYW1lKCk7
CiAKICNpZiBERUJVR19CQUNLSU5HU1RPUkUKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9n
QWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiQmFja2luZ1N0
b3JlUHJpdmF0ZTo6cmVuZGVySm9iIik7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9y
bTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckpvYiIpOwog
I2VuZGlmCiAKICAgICBtX3JlbmRlclF1ZXVlLT5yZW5kZXIoIW1fc3VzcGVuZFJlZ3VsYXJSZW5k
ZXJKb2JzKTsKQEAgLTczNSwxNSArNzM2LDEwIEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6
c2V0QmFja2luZ1N0b3JlUmVjdChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0CiAg
ICAgICAgIHJldHVybjsKIAogI2lmIERFQlVHX1RJTEVNQVRSSVgKLSAgICBCQkxPRyhCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNl
dEJhY2tpbmdTdG9yZVJlY3QgY2hhbmdlZCBmcm9tICglZCwlZCAlZHglZCkgdG8gKCVkLCVkICVk
eCVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmFja2luZ1N0b3JlUmVj
dC54KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmFja2luZ1N0b3JlUmVj
dC55KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmFja2luZ1N0b3JlUmVj
dC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEJhY2tpbmdTdG9y
ZVJlY3QuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVS
ZWN0LngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZVJlY3QueSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlUmVjdC53aWR0aCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlUmVjdC5oZWlnaHQoKSk7Cisg
ICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAg
ICAgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVJlY3QgY2hhbmdlZCBmcm9t
ICVzIHRvICVzIiwKKyAgICAgICAgY3VycmVudEJhY2tpbmdTdG9yZVJlY3QudG9TdHJpbmcoKS5j
X3N0cigpLAorICAgICAgICBiYWNraW5nU3RvcmVSZWN0LnRvU3RyaW5nKCkuY19zdHIoKSk7CiAj
ZW5kaWYKIAogICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBjdXJyZW50U3RhdGUgPSBmcm9udFN0
YXRlKCk7CkBAIC04MzgsNyArODM0LDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRh
dGVUaWxlc0FmdGVyQmFja2luZ1N0b3JlUmVjdENoYW5nZSgpCiAgICAgICAgICAgICAgICAgUGxh
dGZvcm06OkludFJlY3RSZWdpb24gdGlsZU5vdFJlbmRlcmVkUmVnaW9uID0gUGxhdGZvcm06Oklu
dFJlY3RSZWdpb246OmludGVyc2VjdFJlZ2lvbnMobV9yZW5kZXJRdWV1ZS0+cmVndWxhclJlbmRl
ckpvYnNOb3RSZW5kZXJlZFJlZ2lvbigpLCByZWN0KTsKICAgICAgICAgICAgICAgICBjbGVhckFu
ZFVwZGF0ZVRpbGVPZk5vdFJlbmRlcmVkUmVnaW9uKGluZGV4LCB0aWxlQnVmZmVyLCB0aWxlTm90
UmVuZGVyZWRSZWdpb24sIGN1cnJlbnRTdGF0ZSk7CiAjaWYgREVCVUdfQkFDS0lOR1NUT1JFCi0g
ICAgICAgICAgICAgICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGlj
YWwsICJCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0FmdGVyQmFja2luZ1N0b3JlUmVj
dENoYW5nZSBkaWQgY2xlYXIgdGlsZSAlcyIsCisgICAgICAgICAgICAgICAgUGxhdGZvcm06Omxv
Z0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgICAgICAgICAgICAg
IkJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVzQWZ0ZXJCYWNraW5nU3RvcmVSZWN0Q2hh
bmdlIGRpZCBjbGVhciB0aWxlICVzIiwKICAgICAgICAgICAgICAgICAgICAgdGlsZU5vdFJlbmRl
cmVkUmVnaW9uLmV4dGVudHMoKS50b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtOTc4LDkgKzk3NSw5IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6c2Nyb2xsQmFja2luZ1N0b3JlKGludCBkZWx0YVgsIGludCBkZWx0YVkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wcmVmZXJyZWRUaWxlTWF0cml4RGltZW5zaW9uKTsK
IAogI2lmIERFQlVHX1RJTEVNQVRSSVgKLSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNjcm9sbEJhY2tpbmdTdG9y
ZSBkaXZpc29yICVkeCVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdmlzb3IuZmly
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZpc29yLnNlY29uZCk7CisgICAgUGxh
dGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgIkJh
Y2tpbmdTdG9yZVByaXZhdGU6OnNjcm9sbEJhY2tpbmdTdG9yZSBkaXZpc29yICVkeCVkIiwKKyAg
ICAgICAgZGl2aXNvci5maXJzdCwgZGl2aXNvci5zZWNvbmQpOwogI2VuZGlmCiAKICAgICAvLyBJ
bml0aWFsaXplIGEgcmVjdCB3aXRoIHRoYXQgbmV3IGdlb21ldHJ5LgpAQCAtMTA1MSwxMCArMTA0
OCwxMCBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlcihjb25zdCBQbGF0Zm9ybTo6
SW50UmVjdCYgcmVjdCkKICAgICB1cGRhdGVUaWxlTWF0cml4SWZOZWVkZWQoKTsKIAogI2lmIERF
QlVHX0JBQ0tJTkdTVE9SRQotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZl
bENyaXRpY2FsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY2tpbmdTdG9yZVByaXZh
dGU6OnJlbmRlciByZWN0PSglZCwlZCAlZHglZCksIG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0
ZXMgPSAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBQ
bGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAi
QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyIHJlY3Q9JXMsIG1fc3VzcGVuZEJhY2tpbmdTdG9y
ZVVwZGF0ZXMgPSAlcyIsCisgICAgICAgIHJlY3QudG9TdHJpbmcoKS5jX3N0cigpLAorICAgICAg
ICBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID8gInRydWUiIDogImZhbHNlIik7CiAjZW5k
aWYKIAogICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBjdXJyZW50U3RhdGUgPSBmcm9udFN0YXRl
KCk7CkBAIC0xMjQ4LDcgKzEyNDUsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRW
aXNpYmxlQ29udGVudHMoYm9vbCBmb3JjZSkKICAgICAvLyBVc2UgaW52YWxpZGF0ZVdpbmRvdygp
IGluc3RlYWQuCiAgICAgQVNTRVJUKCFzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKTsK
ICAgICBpZiAoc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZl
bENyaXRpY2FsLAorICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZl
bENyaXRpY2FsLAogICAgICAgICAgICAgIkJhY2tpbmdTdG9yZTo6YmxpdFZpc2libGVDb250ZW50
cyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBpbiBkaXJlY3QgcmVuZGVyaW5nIG1vZGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMDcsMTEgKzEzMDQsOSBAQCB2b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3JjZSkKICNlbmRpZgogCiAj
aWYgREVCVUdfQkFDS0lOR1NUT1JFCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5
cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKLSAgICAgICAgIkJhY2tp
bmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoKTogZHN0UmVjdD0oJWQsJWQpICVk
eCVkLCBkb2N1bWVudFNyY1JlY3Q9KCVmLCAlZikgJWYgeCAlZiwgc2NhbGU9JWYiLAotICAgICAg
ICBkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWln
aHQoKSwKLSAgICAgICAgZG9jdW1lbnRTcmNSZWN0LngoKSwgZG9jdW1lbnRTcmNSZWN0LnkoKSwg
ZG9jdW1lbnRTcmNSZWN0LndpZHRoKCksIGRvY3VtZW50U3JjUmVjdC5oZWlnaHQoKSwKLSAgICAg
ICAgdmlld3BvcnRBY2Nlc3Nvci0+c2NhbGUoKSk7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgIkJhY2tpbmdTdG9yZVByaXZhdGU6
OmJsaXRWaXNpYmxlQ29udGVudHMoKTogZHN0UmVjdD0lcywgZG9jdW1lbnRTcmNSZWN0PSVzLCBz
Y2FsZT0lZiIsCisgICAgICAgIGRzdFJlY3QudG9TdHJpbmcoKS5jX3N0cigpLCBkb2N1bWVudFNy
Y1JlY3QudG9TdHJpbmcoKS5jX3N0cigpLCB2aWV3cG9ydEFjY2Vzc29yLT5zY2FsZSgpKTsKICNl
bmRpZgogCiAjaWYgREVCVUdfQ0hFQ0tFUkJPQVJECkBAIC0xNTIxLDE1ICsxNTE2LDE1IEBAIHZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhib29sIGZvcmNlKQog
CiAgICAgaWYgKGJsaXRDaGVja2VyZWQgJiYgIWxhc3RDaGVja2VyZWRUaW1lKSB7CiAgICAgICAg
IGxhc3RDaGVja2VyZWRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwotICAgICAgICBCQkxPRyhC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKLSAgICAgICAgICAgICJCbGl0
dGluZyBjaGVja2VyZWQgcGF0dGVybiBhdCAlZlxuIiwgbGFzdENoZWNrZXJlZFRpbWUpOworICAg
ICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAg
ICAgICAgICAgIkJsaXR0aW5nIGNoZWNrZXJlZCBwYXR0ZXJuIGF0ICVmIiwgbGFzdENoZWNrZXJl
ZFRpbWUpOwogICAgIH0gZWxzZSBpZiAoYmxpdENoZWNrZXJlZCAmJiBsYXN0Q2hlY2tlcmVkVGlt
ZSkgewotICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNh
bCwKLSAgICAgICAgICAgICJCbGl0dGluZyBjaGVja2VyZWQgcGF0dGVybiBhdCAlZlxuIiwgV1RG
OjpjdXJyZW50VGltZSgpKTsKKyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6
TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgICAgICJCbGl0dGluZyBjaGVja2VyZWQgcGF0dGVy
biBhdCAlZiIsIFdURjo6Y3VycmVudFRpbWUoKSk7CiAgICAgfSBlbHNlIGlmICghYmxpdENoZWNr
ZXJlZCAmJiBsYXN0Q2hlY2tlcmVkVGltZSkgewogICAgICAgICBkb3VibGUgdGltZSA9IFdURjo6
Y3VycmVudFRpbWUoKTsKLSAgICAgICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xl
dmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAiQmxpdHRpbmcgb3ZlciBjaGVja2VyZWQgcGF0dGVy
biBhdCAlZiB0b29rICVmXG4iLCB0aW1lLCB0aW1lIC0gbGFzdENoZWNrZXJlZFRpbWUpOworICAg
ICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAg
ICAgICAgICAgIkJsaXR0aW5nIG92ZXIgY2hlY2tlcmVkIHBhdHRlcm4gYXQgJWYgdG9vayAlZiIs
IHRpbWUsIHRpbWUgLSBsYXN0Q2hlY2tlcmVkVGltZSk7CiAgICAgICAgIGxhc3RDaGVja2VyZWRU
aW1lID0gMDsKICAgICB9CiAjZW5kaWYKQEAgLTE3ODUsMTAgKzE3ODAsOSBAQCB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVzRm9yU2Nyb2xsT3JOb3RSZW5kZXJlZFJlZ2lvbihi
b29sIGNoZWNrTG9hZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyp1cGRhdGUqLyk7CiAjaWYgREVCVUdfQkFD
S0lOR1NUT1JFCi0gICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZXh0ZW50cyA9IHRp
bGVOb3RSZW5kZXJlZFJlZ2lvbi5leHRlbnRzKCk7Ci0gICAgICAgICAgICAgICAgQkJMT0coQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAgICAgICAg
ICJCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0ZvclNjcm9sbCBkaWQgY2xlYXIgdGls
ZSAlZCwlZCAlZHglZCIsCi0gICAgICAgICAgICAgICAgICAgIGV4dGVudHMueCgpLCBleHRlbnRz
LnkoKSwgZXh0ZW50cy53aWR0aCgpLCBleHRlbnRzLmhlaWdodCgpKTsKKyAgICAgICAgICAgICAg
ICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAg
ICAgICAgICAgICAgICAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6dXBkYXRlVGlsZXNGb3JTY3JvbGwg
ZGlkIGNsZWFyIHRpbGUgJXMiLAorICAgICAgICAgICAgICAgICAgICB0aWxlTm90UmVuZGVyZWRS
ZWdpb24uZXh0ZW50cygpLnRvU3RyaW5nKCkuY19zdHIoKSk7CiAjZW5kaWYKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHVwZGF0ZVRpbGUodGlsZU9yaWdpbiwgZmFsc2UgLyppbW1lZGlhdGUq
Lyk7CkBAIC0yMDg0LDEwICsyMDc4LDkgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5k
ZXJDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlcioKICAgICAg
ICAgcmV0dXJuOwogCiAjaWYgREVCVUdfQkFDS0lOR1NUT1JFCi0gICAgQkJMT0coQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMgdGlsZUJ1ZmZlcj0weCV4IHN1
cmZhY2VPZmZzZXQ9KCVkLCVkKSBjb250ZW50c1JlY3Q9KCVkLCVkICVkeCVkKSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aWxlQnVmZmVyLCBzdXJmYWNlT2Zmc2V0LngoKSwgc3VyZmFj
ZU9mZnNldC55KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1JlY3QueCgp
LCBjb250ZW50c1JlY3QueSgpLCBjb250ZW50c1JlY3Qud2lkdGgoKSwgY29udGVudHNSZWN0Lmhl
aWdodCgpKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRp
Y2FsLAorICAgICAgICAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMgdGlsZUJ1
ZmZlcj0weCVwIHN1cmZhY2VPZmZzZXQ9JXMgY29udGVudHNSZWN0PSVzIiwKKyAgICAgICAgdGls
ZUJ1ZmZlciwgc3VyZmFjZU9mZnNldC50b1N0cmluZygpLmNfc3RyKCksIGNvbnRlbnRzUmVjdC50
b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAKICAgICAvLyBJdCBpcyB1cCB0byBjYWxsZXJz
IG9mIHRoaXMgbWV0aG9kIHRvIHBlcmZvcm0gbGF5b3V0IHRoZW1zZWx2ZXMhCkBAIC0yMjE5LDEw
ICsyMjEyLDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VG9XaW5kb3coY29uc3Qg
UGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZlciA9IGJ1ZmZlcigpOwogICAgIEFTU0VSVChkc3RCdWZm
ZXIpOwogICAgIEFTU0VSVChzcmNCdWZmZXIpOwotICAgIGlmICghZHN0QnVmZmVyKSB7Ci0gICAg
ICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sCi0gICAgICAgICAg
ICAiRW1wdHkgd2luZG93IGJ1ZmZlciwgY291bGRuJ3QgYmxpdFRvV2luZG93Iik7Ci0gICAgfQor
ICAgIGlmICghZHN0QnVmZmVyKQorICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3Jt
OjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBibGl0VG9XaW5k
b3ciKTsKIAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6YmxpdFRvQnVmZmVy
KGRzdEJ1ZmZlciwgZHN0UmVjdCwgc3JjQnVmZmVyLCBzcmNSZWN0LCBibGVuZE1vZGUsIGdsb2Jh
bEFscGhhKTsKIApAQCAtMjI0NiwxMCArMjIzNyw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6ZmlsbFdpbmRvdyhQbGF0Zm9ybTo6R3JhcGhpY3M6OkZpbGxQYXR0ZXJuIHBhdHRlcm4sCiAK
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogZHN0QnVmZmVyID0g
YnVmZmVyKCk7CiAgICAgQVNTRVJUKGRzdEJ1ZmZlcik7Ci0gICAgaWYgKCFkc3RCdWZmZXIpIHsK
LSAgICAgICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsV2FybiwKLSAgICAg
ICAgICAgICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBmaWxsV2luZG93Iik7Ci0gICAg
fQorICAgIGlmICghZHN0QnVmZmVyKQorICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRm
b3JtOjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBmaWxsV2lu
ZG93Iik7CiAKICAgICBpZiAocGF0dGVybiA9PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkNoZWNrZXJib2FyZFBhdHRlcm4gJiYgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdz
Ojppc1B1YmxpY0J1aWxkKCkpIHsKICAgICAgICAgLy8gRm9yIHB1YmxpYyBidWlsZHMsIGNvbnZl
eSB0aGUgaW1wcmVzc2lvbiBvZiBsZXNzIGNoZWNrZXJib2FyZC4KQEAgLTIzMDksNyArMjI5OCw5
IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyhjb25zdCBQbGF0
Zm9ybTo6SW50UmVjdCYgZHN0KQogICAgIH0KIAogI2lmIERFQlVHX0JBQ0tJTkdTVE9SRQotICAg
IEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiQmFja2luZ1N0
b3JlUHJpdmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyBkc3QgPSAlcyIsIGRzdC50b1N0cmluZygpLmNf
c3RyKCkpOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGlj
YWwsCisgICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93IGRzdCA9
ICVzIiwKKyAgICAgICAgZHN0LnRvU3RyaW5nKCkuY19zdHIoKSk7CiAjZW5kaWYKIAogICAgIC8v
IFNpbmNlIG91ciB3aW5kb3cgbWF5IGFsc28gYmUgZG91YmxlIGJ1ZmZlcmVkLCB3ZSBuZWVkIHRv
IGFsc28gY29weSB0aGUKQEAgLTIzMjksNyArMjMyMCw5IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0KQogICAg
ICAgICByZXR1cm47CiAKICNpZiBERUJVR19CQUNLSU5HU1RPUkUKLSAgICBCQkxPRyhCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6Omlu
dmFsaWRhdGVXaW5kb3cgcG9zdGluZyA9ICVzIiwgZHN0UmVjdC50b1N0cmluZygpLmNfc3RyKCkp
OworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCisg
ICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93IHBvc3RpbmcgPSAl
cyIsCisgICAgICAgIGRzdFJlY3QudG9TdHJpbmcoKS5jX3N0cigpKTsKICNlbmRpZgogCiAgICAg
bV9jdXJyZW50V2luZG93QmFja0J1ZmZlciA9IChtX2N1cnJlbnRXaW5kb3dCYWNrQnVmZmVyICsg
MSkgJSAyOwpAQCAtMjM2MywxMCArMjM1Niw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6
Y2xlYXJXaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QsCiAKICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogZHN0QnVmZmVyID0gYnVmZmVyKCk7CiAg
ICAgQVNTRVJUKGRzdEJ1ZmZlcik7Ci0gICAgaWYgKCFkc3RCdWZmZXIpIHsKLSAgICAgICAgQkJM
T0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsV2FybiwKLSAgICAgICAgICAgICJFbXB0
eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBjbGVhcldpbmRvdyIpOwotICAgIH0KKyAgICBpZiAo
IWRzdEJ1ZmZlcikKKyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2
ZWxXYXJuLCAiRW1wdHkgd2luZG93IGJ1ZmZlciwgY291bGRuJ3QgY2xlYXJXaW5kb3ciKTsKIAog
ICAgIHdpbmRvd0Zyb250QnVmZmVyU3RhdGUoKS0+Y2xlYXJCbGl0dGVkUmVnaW9uKHJlY3QpOwog
ICAgIHdpbmRvd0JhY2tCdWZmZXJTdGF0ZSgpLT5hZGRCbGl0dGVkUmVnaW9uKHJlY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggNTFhZjgxNTMwOThkNGIw
NjBhNDhkMDNjYTNjNzk1Yzg4NzEyZmUxZC4uNWE4ZmI5ZjJjMTBkZGM0Mjg5ZjAxMTdmN2QwNjUz
NjViYTYzMGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBA
IC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRMb2FkU3RhdGUoTG9h
ZFN0YXRlIHN0YXRlKQogICAgIG1fbG9hZFN0YXRlID0gc3RhdGU7CiAKICNpZiBERUJVR19XRUJQ
QUdFX0xPQUQKLSAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiV2ViUGFnZVByaXZh
dGU6OnNldExvYWRTdGF0ZSAlZCIsIHN0YXRlKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBs
YXRmb3JtOjpMb2dMZXZlbEluZm8sICJXZWJQYWdlUHJpdmF0ZTo6c2V0TG9hZFN0YXRlICVkIiwg
c3RhdGUpOwogI2VuZGlmCiAKICAgICBzd2l0Y2ggKG1fbG9hZFN0YXRlKSB7CkBAIC0xMjE5LDgg
KzEyMTksMTEgQEAgYm9vbCBXZWJQYWdlUHJpdmF0ZTo6em9vbUFib3V0UG9pbnQoZG91YmxlIHVu
Y2xhbXBlZFNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBhbmMKICAgICB6b29tLnNjYWxlKHNjYWxl
KTsKIAogI2lmIERFQlVHX1dFQlBBR0VfTE9BRAotICAgIGlmIChsb2FkU3RhdGUoKSA8IEZpbmlz
aGVkKQotICAgICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiV2ViUGFnZVByaXZh
dGU6Onpvb21BYm91dFBvaW50IHNjYWxlICVmIGFuY2hvciAoJWYsICVmKSIsIHNjYWxlLCBhbmNo
b3IueCgpLCBhbmNob3IueSgpKTsKKyAgICBpZiAobG9hZFN0YXRlKCkgPCBGaW5pc2hlZCkgewor
ICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAg
ICAgICAgICAiV2ViUGFnZVByaXZhdGU6Onpvb21BYm91dFBvaW50IHNjYWxlICVmIGFuY2hvciAl
cyIsCisgICAgICAgICAgICBzY2FsZSwgUGxhdGZvcm06OkZsb2F0UG9pbnQoYW5jaG9yKS50b1N0
cmluZygpLmNfc3RyKCkpOworICAgIH0KICNlbmRpZgogCiAgICAgLy8gT3VyIGN1cnJlbnQgc2Ny
b2xsIHBvc2l0aW9uIGluIGZsb2F0LgpAQCAtMTU1MSw3ICsxNTU0LDcgQEAgdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6Y29udGVudHNTaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUp
CiAgICAgbV9jb250ZW50c1NpemVDaGFuZ2VkID0gdHJ1ZTsKIAogI2lmIERFQlVHX1dFQlBBR0Vf
TE9BRAotICAgIEJCTE9HKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJXZWJQYWdlUHJpdmF0ZTo6
Y29udGVudHNTaXplQ2hhbmdlZCAlZHglZCIsIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBjb250ZW50
c1NpemUuaGVpZ2h0KCkpOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xl
dmVsSW5mbywgIldlYlBhZ2VQcml2YXRlOjpjb250ZW50c1NpemVDaGFuZ2VkICVzIiwgUGxhdGZv
cm06OkludFNpemUoY29udGVudHNTaXplKS50b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiB9
CiAKQEAgLTE2MzMsNyArMTYzNiw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmxheW91dEZpbmlz
aGVkKCkKIHZvaWQgV2ViUGFnZVByaXZhdGU6Onpvb21Ub0luaXRpYWxTY2FsZU9uTG9hZCgpCiB7
CiAjaWYgREVCVUdfV0VCUEFHRV9MT0FECi0gICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIldlYlBhZ2VQcml2YXRlOjp6b29tVG9Jbml0aWFsU2NhbGVPbkxvYWQiKTsKKyAgICBQbGF0
Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJXZWJQYWdlUHJpdmF0ZTo6
em9vbVRvSW5pdGlhbFNjYWxlT25Mb2FkIik7CiAjZW5kaWYKIAogICAgIGJvb2wgbmVlZHNMYXlv
dXQgPSBmYWxzZTsKQEAgLTE2NTEsNyArMTY1NCw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6Onpv
b21Ub0luaXRpYWxTY2FsZU9uTG9hZCgpCiAKICAgICBpZiAoY29udGVudHNTaXplKCkuaXNFbXB0
eSgpKSB7CiAjaWYgREVCVUdfV0VCUEFHRV9MT0FECi0gICAgICAgIEJCTE9HKFBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sICJXZWJQYWdlUHJpdmF0ZTo6em9vbVRvSW5pdGlhbFNjYWxlT25Mb2FkIGNv
bnRlbnQgaXMgZW1wdHkhIik7CisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06
OkxvZ0xldmVsSW5mbywgIldlYlBhZ2VQcml2YXRlOjp6b29tVG9Jbml0aWFsU2NhbGVPbkxvYWQg
Y29udGVudCBpcyBlbXB0eSEiKTsKICNlbmRpZgogICAgICAgICByZXF1ZXN0TGF5b3V0SWZOZWVk
ZWQoKTsKICAgICAgICAgbm90aWZ5VHJhbnNmb3JtZWRDb250ZW50c1NpemVDaGFuZ2VkKCk7CkBA
IC00MDE4LDcgKzQwMjEsNyBAQCBib29sIFdlYlBhZ2VQcml2YXRlOjpoYW5kbGVXaGVlbEV2ZW50
KFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIGJvb2wgV2ViUGFnZTo6dG91Y2hFdmVu
dChjb25zdCBQbGF0Zm9ybTo6VG91Y2hFdmVudCYgZXZlbnQpCiB7CiAjaWYgREVCVUdfVE9VQ0hf
RVZFTlRTCi0gICAgQkJMT0coTG9nTGV2ZWxDcml0aWNhbCwgIiVzIiwgZXZlbnQudG9TdHJpbmco
KS5jX3N0cigpKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENy
aXRpY2FsLCAiJXMiLCBldmVudC50b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtNTI2OSw3ICs1MjcyLDkgQEAgdm9pZCBXZWJQYWdlUHJp
dmF0ZTo6c2NoZWR1bGVSb290TGF5ZXJDb21taXQoKQogICAgIG1fbmVlZHNDb21taXQgPSB0cnVl
OwogICAgIGlmICghbV9yb290TGF5ZXJDb21taXRUaW1lci0+aXNBY3RpdmUoKSkgewogI2lmIERF
QlVHX0FDX0NPTU1JVAotICAgICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwg
IiVzOiBtX3Jvb3RMYXllckNvbW1pdFRpbWVyLT5pc0FjdGl2ZSgpID0gJWQiLCBXVEZfUFJFVFRZ
X0ZVTkNUSU9OLCBtX3Jvb3RMYXllckNvbW1pdFRpbWVyLT5pc0FjdGl2ZSgpKTsKKyAgICAgICAg
UGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAg
ICAgICIlczogbV9yb290TGF5ZXJDb21taXRUaW1lci0+aXNBY3RpdmUoKSA9ICVkIiwKKyAgICAg
ICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04sIG1fcm9vdExheWVyQ29tbWl0VGltZXItPmlzQWN0
aXZlKCkpOwogI2VuZGlmCiAgICAgICAgIG1fcm9vdExheWVyQ29tbWl0VGltZXItPnN0YXJ0T25l
U2hvdCgwKTsKICAgICB9CkBAIC01MzU3LDggKzUzNjIsOSBAQCB2b2lkIFdlYlBhZ2VQcml2YXRl
Ojpjb21taXRSb290TGF5ZXIoY29uc3QgSW50UmVjdCYgbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZHJhd3NSb290TGF5
ZXIpCiB7CiAjaWYgREVCVUdfQUNfQ09NTUlUCi0gICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVs
Q3JpdGljYWwsICIlczogbV9jb21wb3NpdG9yID0gMHgleCIsCi0gICAgICAgICAgICBXVEZfUFJF
VFRZX0ZVTkNUSU9OLCBtX2NvbXBvc2l0b3IuZ2V0KCkpOworICAgIFBsYXRmb3JtOjpsb2dBbHdh
eXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCisgICAgICAgICIlczogbV9jb21wb3NpdG9y
ID0gMHglcCIsCisgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04sIG1fY29tcG9zaXRvci5nZXQo
KSk7CiAjZW5kaWYKIAogICAgIGlmICghbV9jb21wb3NpdG9yKQpAQCAtNTM5NiwxMyArNTQwMiwx
NCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpjb21taXRSb290TGF5ZXIoY29uc3QgSW50UmVjdCYg
bGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nLAogYm9vbCBXZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9v
dExheWVySWZOZWVkZWQoKQogewogI2lmIERFQlVHX0FDX0NPTU1JVAotICAgIEJCTE9HKFBsYXRm
b3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiJXM6IG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCA9ICVk
LCBtX25lZWRzQ29tbWl0ID0gJWQsIG1fZnJhbWVMYXllcnMgPSAweCV4LCBtX2ZyYW1lTGF5ZXJz
LT5oYXNMYXllcigpID0gJWQsIG5lZWRzTGF5b3V0UmVjdXJzaXZlKCkgPSAlZCIsCi0gICAgICAg
ICAgICBXVEZfUFJFVFRZX0ZVTkNUSU9OLAotICAgICAgICAgICAgbV9zdXNwZW5kUm9vdExheWVy
Q29tbWl0LAotICAgICAgICAgICAgbV9uZWVkc0NvbW1pdCwKLSAgICAgICAgICAgIG1fZnJhbWVM
YXllcnMuZ2V0KCksCi0gICAgICAgICAgICBtX2ZyYW1lTGF5ZXJzICYmIG1fZnJhbWVMYXllcnMt
Pmhhc0xheWVyKCksCi0gICAgICAgICAgICBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dmll
dygpICYmIG5lZWRzTGF5b3V0UmVjdXJzaXZlKG1fbWFpbkZyYW1lLT52aWV3KCkpKTsKKyAgICBQ
bGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAi
JXM6IG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCA9ICVkLCBtX25lZWRzQ29tbWl0ID0gJWQsIG1f
ZnJhbWVMYXllcnMgPSAweCVwLCBtX2ZyYW1lTGF5ZXJzLT5oYXNMYXllcigpID0gJWQsIG5lZWRz
TGF5b3V0UmVjdXJzaXZlKCkgPSAlZCIsCisgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04sCisg
ICAgICAgIG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCwKKyAgICAgICAgbV9uZWVkc0NvbW1pdCwK
KyAgICAgICAgbV9mcmFtZUxheWVycy5nZXQoKSwKKyAgICAgICAgbV9mcmFtZUxheWVycyAmJiBt
X2ZyYW1lTGF5ZXJzLT5oYXNMYXllcigpLAorICAgICAgICBtX21haW5GcmFtZSAmJiBtX21haW5G
cmFtZS0+dmlldygpICYmIG5lZWRzTGF5b3V0UmVjdXJzaXZlKG1fbWFpbkZyYW1lLT52aWV3KCkp
KTsKICNlbmRpZgogCiAgICAgaWYgKG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCkKQEAgLTU0NzYs
NyArNTQ4Myw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnJvb3RMYXllckNvbW1pdFRpbWVyRmly
ZWQoVGltZXI8V2ViUGFnZVByaXZhdGU+KikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgREVCVUdf
QUNfQ09NTUlUCi0gICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlcyIsIFdU
Rl9QUkVUVFlfRlVOQ1RJT04pOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06Okxv
Z0xldmVsQ3JpdGljYWwsICIlcyIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOwogI2VuZGlmCiAKICAg
ICBtX2JhY2tpbmdTdG9yZS0+ZC0+aW5zdHJ1bWVudEJlZ2luRnJhbWUoKTsKQEAgLTU1MDMsOSAr
NTUxMCwxMCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpyb290TGF5ZXJDb21taXRUaW1lckZpcmVk
KFRpbWVyPFdlYlBhZ2VQcml2YXRlPiopCiAKICAgICAgICAgaWYgKG5lZWRzT25lU2hvdERyYXdp
bmdTeW5jaHJvbml6YXRpb24oKSkgewogI2lmIERFQlVHX0FDX0NPTU1JVAotICAgICAgICAgICAg
QkJMT0coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlczogT25lU2hvdERyYXdpbmdTeW5j
aHJvbml6YXRpb24gY29kZSBwYXRoISIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOworICAgICAgICAg
ICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAg
ICAgICAgICAgICAiJXM6IE9uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uIGNvZGUgcGF0aCEi
LAorICAgICAgICAgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04pOwogI2VuZGlmCi0KICAgICAg
ICAgICAgIGNvbnN0IEludFJlY3Qgd2luZG93UmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgdmlld3BvcnRTaXplKCkpOwogICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPnJlcGFp
bnQod2luZG93UmVjdCwgdHJ1ZSAvKmNvbnRlbnRDaGFuZ2VkKi8sIHRydWUgLyppbW1lZGlhdGUq
Lyk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5j
cHAKaW5kZXggODcwNWZmMzU0NmM5OWZiOTVlNDNjNTg1NzQ4YTEyY2U5MjhmODAzOS4uZGJhYmI5
Y2NmMjI0YjNjMDMwMGQxN2NhZGU0NGRmYWQ5ZjRkNDI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRCbGFja0JlcnJ5LmNwcApAQCAtNjkwLDExICs2OTAsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRC
bGFja0JlcnJ5OjpvdmVyZmxvd0V4Y2VlZHNDb250ZW50c1NpemUoRnJhbWUqIGZyYW1lKSBjb25z
dAogICAgICAgICByZXR1cm47CiAKICNpZiBERUJVR19PVkVSRkxPV19ERVRFQ1RJT04KLSAgICBC
QkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiQ2hyb21lQ2xpZW50Qmxh
Y2tCZXJyeTo6b3ZlcmZsb3dFeGNlZWRzQ29udGVudHNTaXplIGNvbnRlbnRzPSVkeCVkIG92ZXJm
bG93PSVkeCVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKS0+cmlnaHRMYXlvdXRPdmVyZmxvdygpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5ib3R0b21MYXlvdXRPdmVyZmxvdygpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5yaWdodEFi
c29sdXRlVmlzaWJsZU92ZXJmbG93KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPmJvdHRvbUFic29sdXRlVmlzaWJsZU92ZXJmbG93KCkpOwor
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIkNocm9tZUNsaWVudEJsYWNrQmVycnk6Om92ZXJmbG93
RXhjZWVkc0NvbnRlbnRzU2l6ZSBjb250ZW50cz0lcyBvdmVyZmxvdz0lZiB4ICVmIiwKKyAgICAg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJlY3QoZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5kb2N1bWVudFJlY3QoKSkudG9TdHJpbmcoKS5jX3N0cigpLAorICAgICAgICBmcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCktPnJpZ2h0QWJzb2x1dGVWaXNpYmxlT3ZlcmZsb3coKS50b0Zsb2F0KCks
CisgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+Ym90dG9tQWJzb2x1dGVWaXNpYmxl
T3ZlcmZsb3coKS50b0Zsb2F0KCkpOwogI2VuZGlmCiAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+b3Zl
cmZsb3dFeGNlZWRzQ29udGVudHNTaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCmluZGV4IDY0OTQxODZiZTE0
NGJlNTAxODkxYjYyNzlkOWFhODUxMjZlMzEzMGIuLjk1ZjhlOWY2YzYyZGU3OTUyNTU3MDI3YjYz
NmRjZDA0MTIyYjE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCkBAIC00Nyw4ICs0Nyw2IEBACiAjaW5jbHVkZSAi
QmFja2luZ1N0b3JlLmgiCiAjZW5kaWYKIAotdXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okxv
Z0xldmVsSW5mbzsKLXVzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2c7CiB1c2luZyBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0yODQsNyArMjgyLDggQEAgYm9vbCBGYXRGaW5nZXJzOjpjaGVja0ZpbmdlckludGVy
c2VjdGlvbihjb25zdCBJbnRSZWN0UmVnaW9uJiByZWdpb24sIGNvbnN0IEludFIKICAgICAgICAg
ICAgIG5vZGVOYW1lID0gbm9kZU5hbWUgKyAiLCBwc2V1ZG8gaWQgIiArIHRvRWxlbWVudChub2Rl
KS0+c2hhZG93UHNldWRvSWQoKTsKICAgICAgICAgbm9kZU5hbWUgPSBub2RlTmFtZSArICIpIjsK
ICAgICB9Ci0gICAgbG9nQWx3YXlzKExvZ0xldmVsSW5mbywgIiVzIGhhcyByZWdpb24gJXMsIGlu
dGVyc2VjdGluZyBhdCAlcyAoYXJlYSAlZCkiLCBub2RlTmFtZS5sYXRpbjEoKS5kYXRhKCksCisg
ICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAi
JXMgaGFzIHJlZ2lvbiAlcywgaW50ZXJzZWN0aW5nIGF0ICVzIChhcmVhICVkKSIsIG5vZGVOYW1l
LmxhdGluMSgpLmRhdGEoKSwKICAgICAgICAgcmVnaW9uQ29weS50b1N0cmluZygpLmNfc3RyKCks
IGludGVyc2VjdGlvbi50b1N0cmluZygpLmNfc3RyKCksIGludGVyc2VjdGlvbi5hcmVhKCkpOwog
I2VuZGlmCiAKQEAgLTMwOCw4ICszMDcsOCBAQCBib29sIEZhdEZpbmdlcnM6OmZpbmRJbnRlcnNl
Y3RpbmdSZWdpb25zKERvY3VtZW50KiBkb2N1bWVudCwgVmVjdG9yPEludGVyc2VjdGluZwogCiAj
aWYgREVCVUdfRkFUX0ZJTkdFUlMKICAgICBJbnRSZWN0IGZpbmdlclJlY3QoZmluZ2VyUmVjdEZv
clBvaW50KGZyYW1lQ29udGVudFBvcykpOwotICAgIEludFJlY3Qgc2NyZWVuRmluZ2VyUmVjdCA9
IG1fd2ViUGFnZS0+bWFwVG9UcmFuc2Zvcm1lZChmaW5nZXJSZWN0KTsKLSAgICBsb2dBbHdheXMo
TG9nTGV2ZWxJbmZvLCAiZmF0IGZpbmdlciByZWN0IG5vdyAlZCwgJWQsICVkLCAlZCIsIHNjcmVl
bkZpbmdlclJlY3QueCgpLCBzY3JlZW5GaW5nZXJSZWN0LnkoKSwgc2NyZWVuRmluZ2VyUmVjdC53
aWR0aCgpLCBzY3JlZW5GaW5nZXJSZWN0LmhlaWdodCgpKTsKKyAgICBQbGF0Zm9ybTo6SW50UmVj
dCBzY3JlZW5GaW5nZXJSZWN0ID0gbV93ZWJQYWdlLT5tYXBUb1RyYW5zZm9ybWVkKGZpbmdlclJl
Y3QpOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgImZh
dCBmaW5nZXIgcmVjdCBub3cgJXMiLCBzY3JlZW5GaW5nZXJSZWN0LnRvU3RyaW5nKCkuY19zdHIo
KSk7CiAKICAgICAvLyBvbmx5IHJlY29yZCB0aGUgZmlyc3QgZmluZ2VyIHJlY3QKICAgICBpZiAo
ZG9jdW1lbnQgPT0gbV93ZWJQYWdlLT5tX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKQEAgLTQzOSw3
ICs0MzgsNyBAQCBib29sIEZhdEZpbmdlcnM6OmNoZWNrRm9yVGV4dChOb2RlKiBjdXJOb2RlLCBW
ZWN0b3I8SW50ZXJzZWN0aW5nUmVnaW9uPiYgaW50ZXJzZQogICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIGN1clRleHQsIGxhc3RPZmZzZXQs
IGN1clRleHQsIG9mZnNldCk7CiAgICAgICAgICAgICBpZiAoIXJhbmdlLT50ZXh0KCkuc3RyaXBX
aGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CiAjaWYgREVCVUdfRkFUX0ZJTkdFUlMKLSAgICAgICAg
ICAgICAgICBsb2dBbHdheXMoTG9nTGV2ZWxJbmZvLCAiQ2hlY2tpbmcgd29yZCAnJXMnIiwgcmFu
Z2UtPnRleHQoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIFBsYXRmb3JtOjps
b2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIkNoZWNraW5nIHdvcmQgJyVzJyIsIHJh
bmdlLT50ZXh0KCkubGF0aW4xKCkuZGF0YSgpKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIElu
dFJlY3RSZWdpb24gcmFuZ2VSZWdpb24oRE9NU3VwcG9ydDo6dHJhbnNmb3JtZWRCb3VuZGluZ0Jv
eEZvclJhbmdlKCpyYW5nZSkpOwogICAgICAgICAgICAgICAgIGZvdW5kT25lIHw9IGNoZWNrRmlu
Z2VySW50ZXJzZWN0aW9uKHJhbmdlUmVnaW9uLCBmaW5nZXJSZWdpb24sIGN1ck5vZGUsIGludGVy
c2VjdGluZ1JlZ2lvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKaW5kZXggOWQwYTE3M2QxZmFhYjk2OTA4M2Jk
ZjQ1NjUxYWJlMTc4NDU5ZTE0MS4uOTcxNzVjYzhjODNkMzAxMTBmZmJiNjZjMDQ2MGU0MTQ3M2Uw
MGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9JbnB1dEhhbmRsZXIuY3BwCkBAIC00OTAsNyArNDkwLDcgQEAgc3RhdGljIGJvb2wgY29u
dmVydFN0cmluZ1RvV2NoYXIoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZywgd2NoYXJfdCogZGVz
dCwgaW50IGQKICAgICAvLyB3Y2hhcl90IHN0cmluZ3Mgc2VudCB0byBJTUYgYXJlIDMyIGJpdCBz
byBjYXN0aW5nIHRvIFVDaGFyMzIgaXMgc2FmZS4KICAgICB1X3N0clRvVVRGMzIocmVpbnRlcnBy
ZXRfY2FzdDxVQ2hhcjMyKj4oZGVzdCksIGRlc3RDYXBhY2l0eSwgZGVzdExlbmd0aCwgc3RyaW5n
LmNoYXJhY3RlcnMoKSwgbGVuZ3RoLCAmZWMpOwogICAgIGlmIChlYykgewotICAgICAgICBsb2dB
bHdheXMoTG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxlcjo6Y29udmVydFN0cmluZ1RvV2No
YXIgRXJyb3IgY29udmVydGluZyBzdHJpbmcgZWMgKCVkKS4iLCBlYyk7CisgICAgICAgIFBsYXRm
b3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6
OmNvbnZlcnRTdHJpbmdUb1djaGFyIEVycm9yIGNvbnZlcnRpbmcgc3RyaW5nIGVjICglZCkuIiwg
ZWMpOwogICAgICAgICBkZXN0TGVuZ3RoID0gMDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KQEAgLTUwNiw3ICs1MDYsNyBAQCBzdGF0aWMgYm9vbCBjb252ZXJ0U3RyaW5nVG9XY2hhclZl
Y3Rvcihjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nLCBXVEY6OlZlY3Rvcjx3YwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghd2NoYXJTdHJpbmcudHJ5UmVzZXJ2ZUNhcGFjaXR5KGxl
bmd0aCArIDEpKSB7Ci0gICAgICAgIGxvZ0Fsd2F5cyhMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRI
YW5kbGVyOjpjb252ZXJ0U3RyaW5nVG9XY2hhclZlY3RvciBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5
IGZvciBzdHJpbmcuIik7CisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06Okxv
Z0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OmNvbnZlcnRTdHJpbmdUb1djaGFyVmVjdG9y
IENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0cmluZy4iKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtNTI2LDcgKzUyNiw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBjb252
ZXJ0U3Bhbm5hYmxlU3RyaW5nVG9TdHJpbmcoc3Bhbm5hYmxlX3N0cmluZ190KiBzcmMpCiAgICAg
V1RGOjpWZWN0b3I8VUNoYXI+IGRlc3Q7CiAgICAgaW50IGRlc3RDYXBhY2l0eSA9IChzcmMtPmxl
bmd0aCAqIDIpICsgMTsKICAgICBpZiAoIWRlc3QudHJ5UmVzZXJ2ZUNhcGFjaXR5KGRlc3RDYXBh
Y2l0eSkpIHsKLSAgICAgICAgbG9nQWx3YXlzKExvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRs
ZXI6OmNvbnZlcnRTcGFubmFibGVTdHJpbmdUb1N0cmluZyBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5
IGZvciBzdHJpbmcuIik7CisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06Okxv
Z0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OmNvbnZlcnRTcGFubmFibGVTdHJpbmdUb1N0
cmluZyBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuIik7CiAgICAgICAgIHJldHVy
biBXVEY6OlN0cmluZygpOwogICAgIH0KIApAQCAtNTM1LDcgKzUzNSw3IEBAIHN0YXRpYyBXVEY6
OlN0cmluZyBjb252ZXJ0U3Bhbm5hYmxlU3RyaW5nVG9TdHJpbmcoc3Bhbm5hYmxlX3N0cmluZ190
KiBzcmMpCiAgICAgLy8gd2NoYXJfdCBzdHJpbmdzIHNlbnQgZnJvbSBJTUYgYXJlIDMyIGJpdCBz
byBjYXN0aW5nIHRvIFVDaGFyMzIgaXMgc2FmZS4KICAgICB1X3N0ckZyb21VVEYzMihkZXN0LmRh
dGEoKSwgZGVzdENhcGFjaXR5LCAmZGVzdExlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxVQ2hhcjMy
Kj4oc3JjLT5zdHIpLCBzcmMtPmxlbmd0aCwgJmVjKTsKICAgICBpZiAoZWMpIHsKLSAgICAgICAg
bG9nQWx3YXlzKExvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OmNvbnZlcnRTcGFubmFi
bGVTdHJpbmdUb1N0cmluZyBFcnJvciBjb252ZXJ0aW5nIHN0cmluZyBlYyAoJWQpLiIsIGVjKTsK
KyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwg
IklucHV0SGFuZGxlcjo6Y29udmVydFNwYW5uYWJsZVN0cmluZ1RvU3RyaW5nIEVycm9yIGNvbnZl
cnRpbmcgc3RyaW5nIGVjICglZCkuIiwgZWMpOwogICAgICAgICByZXR1cm4gV1RGOjpTdHJpbmco
KTsKICAgICB9CiAgICAgZGVzdC5yZXNpemUoZGVzdExlbmd0aCk7CkBAIC01NzEsNyArNTcxLDcg
QEAgdm9pZCBJbnB1dEhhbmRsZXI6OmxlYXJuVGV4dCgpCiAgICAgaWYgKHRleHRJbkZpZWxkLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAi
SW5wdXRIYW5kbGVyOjpsZWFyblRleHQgJyVzJyIsIHRleHRJbkZpZWxkLmxhdGluMSgpLmRhdGEo
KSk7CisgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6
bGVhcm5UZXh0ICclcyciLCB0ZXh0SW5GaWVsZC5sYXRpbjEoKS5kYXRhKCkpOwogICAgIHNlbmRM
ZWFyblRleHREZXRhaWxzKHRleHRJbkZpZWxkKTsKIH0KIApAQCAtNTc5LDEwICs1NzksMTAgQEAg
dm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVxdWUKIHsKICAgICBtX3JlcXVlc3QgPSB0ZXh0Q2hlY2tpbmdS
ZXF1ZXN0OwogCi0gICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyAnJXMnIiwgbV9yZXF1ZXN0LT50ZXh0KCkubGF0aW4xKCkuZGF0
YSgpKTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVy
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyAnJXMnIiwgbV9yZXF1ZXN0LT50ZXh0KCkubGF0aW4x
KCkuZGF0YSgpKTsKIAogICAgIGlmICghbV9yZXF1ZXN0KSB7Ci0gICAgICAgIFNwZWxsaW5nTG9n
KExvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgZGlk
IG5vdCByZWNlaXZlIGEgdmFsaWQgcmVxdWVzdC4iKTsKKyAgICAgICAgU3BlbGxpbmdMb2coUGxh
dGZvcm06OkxvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcgZGlkIG5vdCByZWNlaXZlIGEgdmFsaWQgcmVxdWVzdC4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjA5LDE0ICs2MDksMTQgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWUKIAog
ICAgIHdjaGFyX3QqIGNoZWNraW5nU3RyaW5nID0gKHdjaGFyX3QqKW1hbGxvYyhzaXplb2Yod2No
YXJfdCkgKiAocmVxdWVzdExlbmd0aCArIDEpKTsKICAgICBpZiAoIWNoZWNraW5nU3RyaW5nKSB7
Ci0gICAgICAgIGxvZ0Fsd2F5cyhMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuIik7
CisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWws
ICJJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nIENhbm5vdCBhbGxvY2F0ZSBt
ZW1vcnkgZm9yIHN0cmluZy4iKTsKICAgICAgICAgbV9yZXF1ZXN0LT5kaWRDYW5jZWwoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGludCBwYXJhZ3JhcGhMZW5ndGggPSAwOwogICAg
IGlmICghY29udmVydFN0cmluZ1RvV2NoYXIobV9yZXF1ZXN0LT50ZXh0KCksIGNoZWNraW5nU3Ry
aW5nLCByZXF1ZXN0TGVuZ3RoICsgMSwgJnBhcmFncmFwaExlbmd0aCkpIHsKLSAgICAgICAgbG9n
QWx3YXlzKExvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nIEZhaWxlZCB0byBjb252ZXJ0IFN0cmluZyB0byB3Y2hhciB0eXBlLiIpOworICAgICAg
ICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRI
YW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyBGYWlsZWQgdG8gY29udmVydCBTdHJpbmcg
dG8gd2NoYXIgdHlwZS4iKTsKICAgICAgICAgZnJlZShjaGVja2luZ1N0cmluZyk7CiAgICAgICAg
IG1fcmVxdWVzdC0+ZGlkQ2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTYzNiwxMCArNjM2
LDExIEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVm
UHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlCiAKIHZvaWQgSW5wdXRIYW5kbGVyOjpzcGVs
bENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQpCiB7Ci0gICAg
U3BlbGxpbmdMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVx
dWVzdENhbmNlbGxlZCBFeHBlY3RlZCB0cmFuc2FjdGlvbiBpZCAlZCwgcmVjZWl2ZWQgJWQuICVz
IgotICAgICAgICAgICAgICAgICwgdHJhbnNhY3Rpb25JZAotICAgICAgICAgICAgICAgICwgbV9w
cm9jZXNzaW5nVHJhbnNhY3Rpb25JZAotICAgICAgICAgICAgICAgICwgdHJhbnNhY3Rpb25JZCA9
PSBtX3Byb2Nlc3NpbmdUcmFuc2FjdGlvbklkID8gIiIgOiAiV2UgYXJlIG91dCBvZiBzeW5jIHdp
dGggaW5wdXQgc2VydmljZS4iKTsKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxX
YXJuLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxl
ZCBFeHBlY3RlZCB0cmFuc2FjdGlvbiBpZCAlZCwgcmVjZWl2ZWQgJWQuICVzIiwKKyAgICAgICAg
dHJhbnNhY3Rpb25JZCwKKyAgICAgICAgbV9wcm9jZXNzaW5nVHJhbnNhY3Rpb25JZCwKKyAgICAg
ICAgdHJhbnNhY3Rpb25JZCA9PSBtX3Byb2Nlc3NpbmdUcmFuc2FjdGlvbklkID8gIiIgOiAiV2Ug
YXJlIG91dCBvZiBzeW5jIHdpdGggaW5wdXQgc2VydmljZS4iKTsKIAogICAgIG1fcmVxdWVzdC0+
ZGlkQ2FuY2VsKCk7CiAgICAgbV9wcm9jZXNzaW5nVHJhbnNhY3Rpb25JZCA9IC0xOwpAQCAtNjQ3
LDEzICs2NDgsMTQgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2Fu
Y2VsbGVkKGludDMyX3QgdHJhbnNhY3Rpb25JZCkKIAogdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxs
Q2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxl
X3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCiB7Ci0gICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxX
YXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCBFeHBlY3Rl
ZCB0cmFuc2FjdGlvbiBpZCAlZCwgcmVjZWl2ZWQgJWQuICVzIgotICAgICAgICAgICAgICAgICwg
dHJhbnNhY3Rpb25JZAotICAgICAgICAgICAgICAgICwgbV9wcm9jZXNzaW5nVHJhbnNhY3Rpb25J
ZAotICAgICAgICAgICAgICAgICwgdHJhbnNhY3Rpb25JZCA9PSBtX3Byb2Nlc3NpbmdUcmFuc2Fj
dGlvbklkID8gIiIgOiAiV2UgYXJlIG91dCBvZiBzeW5jIHdpdGggaW5wdXQgc2VydmljZS4iKTsK
KyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLAorICAgICAgICAiSW5wdXRI
YW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCBFeHBlY3RlZCB0cmFuc2FjdGlv
biBpZCAlZCwgcmVjZWl2ZWQgJWQuICVzIiwKKyAgICAgICAgdHJhbnNhY3Rpb25JZCwKKyAgICAg
ICAgbV9wcm9jZXNzaW5nVHJhbnNhY3Rpb25JZCwKKyAgICAgICAgdHJhbnNhY3Rpb25JZCA9PSBt
X3Byb2Nlc3NpbmdUcmFuc2FjdGlvbklkID8gIiIgOiAiV2UgYXJlIG91dCBvZiBzeW5jIHdpdGgg
aW5wdXQgc2VydmljZS4iKTsKIAogICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nIHx8ICFpc0FjdGl2
ZVRleHRFZGl0KCkpIHsKLSAgICAgICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRI
YW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCBDYW5jZWxsaW5nIHJlcXVlc3Qg
d2l0aCB0cmFuc2FjdGlvbklkICVkLiIsIHRyYW5zYWN0aW9uSWQpOworICAgICAgICBTcGVsbGlu
Z0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5n
UmVxdWVzdFByb2Nlc3NlZCBDYW5jZWxsaW5nIHJlcXVlc3Qgd2l0aCB0cmFuc2FjdGlvbklkICVk
LiIsIHRyYW5zYWN0aW9uSWQpOwogICAgICAgICBtX3JlcXVlc3QtPmRpZENhbmNlbCgpOwogICAg
ICAgICBtX3Byb2Nlc3NpbmdUcmFuc2FjdGlvbklkID0gLTE7CiAgICAgICAgIHJldHVybjsKQEAg
LTc0Miw4ICs3NDQsMTEgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNob3VsZFJlcXVlc3RTcGVsbENo
ZWNraW5nT3B0aW9uc0ZvclBvaW50KFBsYXRmb3JtOjpJbnRQb2ludCYKICAgICBtX3NwZWxsQ2hl
Y2tpbmdPcHRpb25zUmVxdWVzdC5zdGFydFRleHRQb3NpdGlvbiA9IDA7CiAgICAgbV9zcGVsbENo
ZWNraW5nT3B0aW9uc1JlcXVlc3QuZW5kVGV4dFBvc2l0aW9uID0gMDsKIAotICAgIFNwZWxsaW5n
TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2hvdWxkUmVxdWVzdFNwZWxsQ2hlY2tp
bmdPcHRpb25zRm9yUG9pbnQgRm91bmQgc3BlbGxpbmcgbWFya2VyIGF0IHBvaW50ICVkLCAlZFxu
TWFya2VyIHN0YXJ0ICVkIGVuZCAlZCIsCi0gICAgICAgIHBvaW50LngoKSwgcG9pbnQueSgpLCBz
cGVsbENoZWNraW5nT3B0aW9uUmVxdWVzdC5zdGFydFRleHRQb3NpdGlvbiwgc3BlbGxDaGVja2lu
Z09wdGlvblJlcXVlc3QuZW5kVGV4dFBvc2l0aW9uKTsKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9y
bTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpzaG91bGRSZXF1ZXN0U3Bl
bGxDaGVja2luZ09wdGlvbnNGb3JQb2ludCBGb3VuZCBzcGVsbGluZyBtYXJrZXIgYXQgcG9pbnQg
JXNcbk1hcmtlciBzdGFydCAlZCBlbmQgJWQiLAorICAgICAgICBwb2ludC50b1N0cmluZygpLmNf
c3RyKCksCisgICAgICAgIHNwZWxsQ2hlY2tpbmdPcHRpb25SZXF1ZXN0LnN0YXJ0VGV4dFBvc2l0
aW9uLAorICAgICAgICBzcGVsbENoZWNraW5nT3B0aW9uUmVxdWVzdC5lbmRUZXh0UG9zaXRpb24p
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04MDYsOSArODExLDEyIEBAIHZvaWQgSW5wdXRI
YW5kbGVyOjpyZXF1ZXN0U3BlbGxpbmdDaGVja2luZ09wdGlvbnMoaW1mX3NwX3RleHRfdCYgc3Bl
bGxDaGVja2luZ09wCiAgICAgfQogICAgIG1fc3BlbGxDaGVja2luZ09wdGlvbnNSZXF1ZXN0ID0g
c3BlbGxDaGVja2luZ09wdGlvblJlcXVlc3Q7CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8s
ICJJbnB1dEhhbmRsZXI6OnJlcXVlc3RTcGVsbGluZ0NoZWNraW5nT3B0aW9ucyBjYXJldFJlY3Qg
dG9wTGVmdD0oJWQsJWQpLCBib3R0b21SaWdodD0oJWQsJWQpLCBzdGFydFRleHRQb3NpdGlvbj0l
ZCwgZW5kVGV4dFBvc2l0aW9uPSVkIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgY2Fy
ZXRSZWN0Lm1pblhNaW5ZQ29ybmVyKCkueCgpLCBjYXJldFJlY3QubWluWE1pbllDb3JuZXIoKS55
KCksIGNhcmV0UmVjdC5tYXhYTWF4WUNvcm5lcigpLngoKSwgY2FyZXRSZWN0Lm1heFhNYXhZQ29y
bmVyKCkueSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzcGVsbENoZWNraW5nT3B0
aW9uUmVxdWVzdC5zdGFydFRleHRQb3NpdGlvbiwgc3BlbGxDaGVja2luZ09wdGlvblJlcXVlc3Qu
ZW5kVGV4dFBvc2l0aW9uKTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAor
ICAgICAgICAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0U3BlbGxpbmdDaGVja2luZ09wdGlvbnMgY2Fy
ZXRSZWN0IHRvcExlZnQ9JXMsIGJvdHRvbVJpZ2h0PSVzLCBzdGFydFRleHRQb3NpdGlvbj0lZCwg
ZW5kVGV4dFBvc2l0aW9uPSVkIiwKKyAgICAgICAgUGxhdGZvcm06OkludFBvaW50KGNhcmV0UmVj
dC5taW5YTWluWUNvcm5lcigpKS50b1N0cmluZygpLmNfc3RyKCksCisgICAgICAgIFBsYXRmb3Jt
OjpJbnRQb2ludChjYXJldFJlY3QubWF4WE1heFlDb3JuZXIoKSkudG9TdHJpbmcoKS5jX3N0cigp
LAorICAgICAgICBzcGVsbENoZWNraW5nT3B0aW9uUmVxdWVzdC5zdGFydFRleHRQb3NpdGlvbiwK
KyAgICAgICAgc3BlbGxDaGVja2luZ09wdGlvblJlcXVlc3QuZW5kVGV4dFBvc2l0aW9uKTsKIAog
ICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPnJlcXVlc3RTcGVsbGluZ0NoZWNraW5nT3B0aW9ucyhz
cGVsbENoZWNraW5nT3B0aW9uUmVxdWVzdCwgY2FyZXRSZWN0LCBzY3JlZW5PZmZzZXQsIHNob3Vs
ZE1vdmVEaWFsb2cpOwogfQpAQCAtODE2LDcgKzgyNCw3IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpy
ZXF1ZXN0U3BlbGxpbmdDaGVja2luZ09wdGlvbnMoaW1mX3NwX3RleHRfdCYgc3BlbGxDaGVja2lu
Z09wCiB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZChib29sIHJlZm9jdXNP
Y2N1cmluZykKIHsKICAgICBpZiAoaXNBY3RpdmVUZXh0RWRpdCgpKSB7Ci0gICAgICAgIEZvY3Vz
TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZCIpOwor
ICAgICAgICBGb2N1c0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpz
ZXRFbGVtZW50VW5mb2N1c2VkIik7CiAKICAgICAgICAgLy8gUGFzcyBhbnkgdGV4dCBpbnRvIHRo
ZSBmaWVsZCB0byBJTUYgdG8gbGVhcm4uCiAgICAgICAgIGxlYXJuVGV4dCgpOwpAQCAtODQ4LDkg
Kzg1NiwxMCBAQCBib29sIElucHV0SGFuZGxlcjo6aXNJbnB1dE1vZGVFbmFibGVkKCkgY29uc3QK
IAogdm9pZCBJbnB1dEhhbmRsZXI6OnNldElucHV0TW9kZUVuYWJsZWQoYm9vbCBhY3RpdmUpCiB7
Ci0gICAgRm9jdXNMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRJbnB1dE1vZGVF
bmFibGVkICclcycsIG92ZXJyaWRlIGlzICclcyciCi0gICAgICAgICAgICAgLCBhY3RpdmUgPyAi
dHJ1ZSIgOiAiZmFsc2UiCi0gICAgICAgICAgICAgLCBtX3dlYlBhZ2UtPm1fZHVtcFJlbmRlclRy
ZWUgfHwgUGxhdGZvcm06OlNldHRpbmdzOjppbnN0YW5jZSgpLT5hbHdheXNTaG93S2V5Ym9hcmRP
bkZvY3VzKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBGb2N1c0xvZyhQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpzZXRJbnB1dE1vZGVFbmFibGVkICcl
cycsIG92ZXJyaWRlIGlzICclcyciLAorICAgICAgICBhY3RpdmUgPyAidHJ1ZSIgOiAiZmFsc2Ui
LAorICAgICAgICBtX3dlYlBhZ2UtPm1fZHVtcFJlbmRlclRyZWUgfHwgUGxhdGZvcm06OlNldHRp
bmdzOjppbnN0YW5jZSgpLT5hbHdheXNTaG93S2V5Ym9hcmRPbkZvY3VzKCkgPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKIAogICAgIG1faW5wdXRNb2RlRW5hYmxlZCA9IGFjdGl2ZTsKIApAQCAtOTA3LDcg
KzkxNiwxMCBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQoRWxlbWVudCog
ZWxlbWVudCkKICAgICAgICAgfQogICAgIH0KIAotICAgIEZvY3VzTG9nKExvZ0xldmVsSW5mbywg
IklucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQsIFR5cGU9JWQsIFN0eWxlPSVkLCBLZXli
b2FyZCBUeXBlPSVkLCBFbnRlciBLZXk9JWQiLCB0eXBlLCBtX2N1cnJlbnRGb2N1c0VsZW1lbnRU
ZXh0RWRpdE1hc2ssIGtleWJvYXJkVHlwZSwgZW50ZXJLZXlUeXBlKTsKKyAgICBGb2N1c0xvZyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50
Rm9jdXNlZCwgVHlwZT0lZCwgU3R5bGU9JWxsZCwgS2V5Ym9hcmQgVHlwZT0lZCwgRW50ZXIgS2V5
PSVkIiwKKyAgICAgICAgdHlwZSwgbV9jdXJyZW50Rm9jdXNFbGVtZW50VGV4dEVkaXRNYXNrLCBr
ZXlib2FyZFR5cGUsIGVudGVyS2V5VHlwZSk7CisKICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5p
bnB1dEZvY3VzR2FpbmVkKG1fY3VycmVudEZvY3VzRWxlbWVudFRleHRFZGl0TWFzaywga2V5Ym9h
cmRUeXBlLCBlbnRlcktleVR5cGUpOwogCiAgICAgaGFuZGxlSW5wdXRMb2NhbGVDaGFuZ2VkKG1f
d2ViUGFnZS0+bV93ZWJTZXR0aW5ncy0+aXNXcml0aW5nRGlyZWN0aW9uUlRMKCkpOwpAQCAtOTE2
LDcgKzkyOCw3IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50Rm9jdXNlZChFbGVtZW50
KiBlbGVtZW50KQogICAgICAgICBub3RpZnlDbGllbnRPZktleWJvYXJkVmlzaWJpbGl0eUNoYW5n
ZSh0cnVlLCB0cnVlIC8qIHRyaWdnZXJlZEJ5Rm9jdXNDaGFuZ2UgKi8pOwogCiAjaWZkZWYgRU5B
QkxFX1NQRUxMSU5HX0xPRwotICAgIFNwZWxsaW5nTG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFu
ZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQgRm9jdXNpbmcgdGhlIGZpZWxkIHRvb2sgJWYgc2Vjb25k
cy4iLCB0aW1lci5lbGFwc2VkKCkpOworICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZl
bEluZm8sICJJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkIEZvY3VzaW5nIHRoZSBmaWVs
ZCB0b29rICVmIHNlY29uZHMuIiwgdGltZXIuZWxhcHNlZCgpKTsKICNlbmRpZgogCiAgICAgLy8g
Q2hlY2sgaWYgdGhlIGZpZWxkIHNob3VsZCBiZSBzcGVsbGNoZWNrZWQuCkBAIC05MjgsNyArOTQw
LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkKEVsZW1lbnQqIGVsZW1l
bnQpCiAgICAgc3BlbGxDaGVja0Jsb2NrKGZvY3VzZWRCbG9jaywgVGV4dENoZWNraW5nUHJvY2Vz
c0JhdGNoKTsKIAogI2lmZGVmIEVOQUJMRV9TUEVMTElOR19MT0cKLSAgICBTcGVsbGluZ0xvZyhM
b2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkIFNwZWxsY2hlY2tp
bmcgdGhlIGZpZWxkIGluY3JlYXNlZCB0aGUgdG90YWwgdGltZSB0byBmb2N1cyB0byAlZiBzZWNv
bmRzLiIsIHRpbWVyLmVsYXBzZWQoKSk7CisgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xl
dmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQgU3BlbGxjaGVja2luZyB0
aGUgZmllbGQgaW5jcmVhc2VkIHRoZSB0b3RhbCB0aW1lIHRvIGZvY3VzIHRvICVmIHNlY29uZHMu
IiwgdGltZXIuZWxhcHNlZCgpKTsKICNlbmRpZgogfQogCkBAIC05NjksNyArOTgxLDcgQEAgdm9p
ZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayhWaXNpYmxlU2VsZWN0aW9uJiB2aXNpYmxl
U2VsZWN0aW9uLCBUZXh0Q2hlY2sKIAogICAgIFNwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0g
Z2V0U3BlbGxDaGVja2VyKCk7CiAgICAgaWYgKCFzcGVsbENoZWNrZXIpIHsKLSAgICAgICAgU3Bl
bGxpbmdMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFp
bGVkIHRvIHNwZWxsY2hlY2sgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50LiIpOworICAgICAg
ICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzcGVs
bENoZWNrQmxvY2sgRmFpbGVkIHRvIHNwZWxsY2hlY2sgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVt
ZW50LiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05OTgsNyArMTAxMCw3IEBAIHZv
aWQgSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2soVmlzaWJsZVNlbGVjdGlvbiYgdmlzaWJs
ZVNlbGVjdGlvbiwgVGV4dENoZWNrCiAgICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggd29y
ZHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpbmUgdG8gdGhlIGVuZC4KICAgICAgICAgICAgIHJh
bmdlRm9yU3BlbGxDaGVja2luZyA9IGdldFJhbmdlRm9yU3BlbGxDaGVja1dpdGhGaW5lR3JhbnVs
YXJpdHkoc3RhcnRPZkN1cnJlbnRMaW5lLCBlbmRPZkN1cnJlbnRMaW5lKTsKICAgICAgICAgICAg
IGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKSB7Ci0gICAgICAgICAgICAgICAgU3BlbGxpbmdM
b2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRv
IHNldCB0ZXh0IHJhbmdlIGZvciBzcGVsbGNoZWNraW5nIik7CisgICAgICAgICAgICAgICAgU3Bl
bGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6c3BlbGxDaGVj
a0Jsb2NrIEZhaWxlZCB0byBzZXQgdGV4dCByYW5nZSBmb3Igc3BlbGxjaGVja2luZyIpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXJ0T2ZD
dXJyZW50TGluZSA9IFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPmVuZFBv
c2l0aW9uKCkpOwpAQCAtMTAwNiw3ICsxMDE4LDEwIEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzcGVs
bENoZWNrQmxvY2soVmlzaWJsZVNlbGVjdGlvbiYgdmlzaWJsZVNlbGVjdGlvbiwgVGV4dENoZWNr
CiAgICAgICAgICAgICByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBET01TdXBwb3J0Ojp0cmltV2hp
dGVzcGFjZUZyb21SYW5nZShWaXNpYmxlUG9zaXRpb24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5z
dGFydFBvc2l0aW9uKCkpLCBWaXNpYmxlUG9zaXRpb24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5l
bmRQb3NpdGlvbigpKSk7CiAgICAgICAgIH0KIAotICAgICAgICBTcGVsbGluZ0xvZyhMb2dMZXZl
bEluZm8sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayBTdWJzdHJpbmcgdGV4dCBpcyAn
JXMnLCBvZiBzaXplICVkIiwgcmFuZ2VGb3JTcGVsbENoZWNraW5nLT50ZXh0KCkubGF0aW4xKCku
ZGF0YSgpLCByYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSk7CisgICAgICAg
IFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICAgICAiSW5wdXRI
YW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgU3Vic3RyaW5nIHRleHQgaXMgJyVzJywgb2Ygc2l6ZSAl
ZCIsCisgICAgICAgICAgICByYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sYXRpbjEoKS5k
YXRhKCksCisgICAgICAgICAgICByYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgo
KSk7CiAKICAgICAgICAgLy8gQ2FsbCBzcGVsbGNoZWNrIHdpdGggc3Vic3RyaW5nLgogICAgICAg
ICBzcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihTcGVsbENoZWNrUmVxdWVzdDo6Y3Jl
YXRlKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgVGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoLCBy
YW5nZUZvclNwZWxsQ2hlY2tpbmcsIHJhbmdlRm9yU3BlbGxDaGVja2luZykpOwpAQCAtMTEwNCw3
ICsxMTE5LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6Om5vZGVUZXh0Q2hhbmdlZChjb25zdCBOb2Rl
KiBub2RlKQogICAgIGlmIChwcm9jZXNzaW5nQ2hhbmdlKCkgfHwgIW5vZGUgfHwgbm9kZSAhPSBt
X2N1cnJlbnRGb2N1c0VsZW1lbnQgfHwgbV9yZWNlaXZlZEJhY2tzcGFjZUtleURvd24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6
bm9kZVRleHRDaGFuZ2VkIik7CisgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywg
IklucHV0SGFuZGxlcjo6bm9kZVRleHRDaGFuZ2VkIik7CiAKICAgICBtX3dlYlBhZ2UtPm1fY2xp
ZW50LT5pbnB1dFRleHRDaGFuZ2VkKCk7CiAKQEAgLTEyNjQsNyArMTI3OSwxMCBAQCB2b2lkIElu
cHV0SGFuZGxlcjo6ZW5zdXJlRm9jdXNUZXh0RWxlbWVudFZpc2libGUoQ2FyZXRTY3JvbGxUeXBl
IHNjcm9sbFR5cGUpCiAgICAgfQogCiAgICAgaWYgKGRlc3RpbmF0aW9uU2Nyb2xsTG9jYXRpb24g
IT0gbWFpbkZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKSB8fCB6b29tU2NhbGVSZXF1aXJlZCAh
PSBtX3dlYlBhZ2UtPmN1cnJlbnRTY2FsZSgpKSB7Ci0gICAgICAgIElucHV0TG9nKExvZ0xldmVs
SW5mbywgIklucHV0SGFuZGxlcjo6ZW5zdXJlRm9jdXNUZXh0RWxlbWVudFZpc2libGUgem9vbWlu
ZyBpbiB0byAlZiBhbmQgc2Nyb2xsaW5nIHRvIHBvaW50ICVkLCAlZCIsIHpvb21TY2FsZVJlcXVp
cmVkLCBkZXN0aW5hdGlvblNjcm9sbExvY2F0aW9uLngoKSwgZGVzdGluYXRpb25TY3JvbGxMb2Nh
dGlvbi55KCkpOworICAgICAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAg
ICAgICAgICAgIklucHV0SGFuZGxlcjo6ZW5zdXJlRm9jdXNUZXh0RWxlbWVudFZpc2libGUgem9v
bWluZyBpbiB0byAlZiBhbmQgc2Nyb2xsaW5nIHRvIHBvaW50ICVzIiwKKyAgICAgICAgICAgIHpv
b21TY2FsZVJlcXVpcmVkLAorICAgICAgICAgICAgUGxhdGZvcm06OkludFBvaW50KGRlc3RpbmF0
aW9uU2Nyb2xsTG9jYXRpb24pLnRvU3RyaW5nKCkuY19zdHIoKSk7CiAKICAgICAgICAgLy8gQW5p
bWF0ZSB0byBnaXZlbiBzY3JvbGwgcG9zaXRpb24gJiB6b29tIGxldmVsCiAgICAgICAgIG1fd2Vi
UGFnZS0+bV9maW5hbEJsb2NrUG9pbnQgPSBXZWJDb3JlOjpGbG9hdFBvaW50KGRlc3RpbmF0aW9u
U2Nyb2xsTG9jYXRpb24pOwpAQCAtMTM0OSw3ICsxMzY3LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6
OmZyYW1lVW5sb2FkZWQoY29uc3QgRnJhbWUqIGZyYW1lKQogICAgIGlmIChtX2N1cnJlbnRGb2N1
c0VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkgIT0gZnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEZvY3VzTG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6ZnJhbWVVbmxvYWRl
ZCIpOworICAgIEZvY3VzTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6
OmZyYW1lVW5sb2FkZWQiKTsKIAogICAgIHNldEVsZW1lbnRVbmZvY3VzZWQoZmFsc2UgLypyZWZv
Y3VzT2NjdXJpbmcqLyk7CiB9CkBAIC0xNDgzLDcgKzE1MDEsOSBAQCB2b2lkIElucHV0SGFuZGxl
cjo6c2VsZWN0aW9uQ2hhbmdlZCgpCiAgICAgaW50IG5ld1NlbGVjdGlvblN0YXJ0ID0gc2VsZWN0
aW9uU3RhcnQoKTsKICAgICBpbnQgbmV3U2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kKCk7CiAK
LSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5n
ZWQgc2VsZWN0aW9uU3RhcnQ9JXUsIHNlbGVjdGlvbkVuZD0ldSIsIG5ld1NlbGVjdGlvblN0YXJ0
LCBuZXdTZWxlY3Rpb25FbmQpOworICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8s
CisgICAgICAgICJJbnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5nZWQgc2VsZWN0aW9uU3RhcnQ9
JXUsIHNlbGVjdGlvbkVuZD0ldSIsCisgICAgICAgIG5ld1NlbGVjdGlvblN0YXJ0LCBuZXdTZWxl
Y3Rpb25FbmQpOwogCiAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+aW5wdXRTZWxlY3Rpb25DaGFu
Z2VkKG5ld1NlbGVjdGlvblN0YXJ0LCBuZXdTZWxlY3Rpb25FbmQpOwogCkBAIC0xNTA5LDcgKzE1
MjksOSBAQCBib29sIElucHV0SGFuZGxlcjo6c2V0U2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVu
ZCwgYm9vbCBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aQogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3
U2VsZWN0aW9uID0gRE9NU3VwcG9ydDo6dmlzaWJsZVNlbGVjdGlvbkZvclJhbmdlSW5wdXRFbGVt
ZW50KG1fY3VycmVudEZvY3VzRWxlbWVudC5nZXQoKSwgc3RhcnQsIGVuZCk7CiAgICAgbV9jdXJy
ZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0U2Vs
ZWN0aW9uKG5ld1NlbGVjdGlvbiwgY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiA/IDAgOiBGcmFt
ZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHls
ZSk7CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFNlbGVj
dGlvbiBzZWxlY3Rpb25TdGFydD0ldSwgc2VsZWN0aW9uRW5kPSV1Iiwgc3RhcnQsIGVuZCk7Cisg
ICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIklucHV0SGFuZGxl
cjo6c2V0U2VsZWN0aW9uIHNlbGVjdGlvblN0YXJ0PSV1LCBzZWxlY3Rpb25FbmQ9JXUiLAorICAg
ICAgICBzdGFydCwgZW5kKTsKIAogICAgIHJldHVybiBzdGFydCA9PSBzZWxlY3Rpb25TdGFydCgp
ICYmIGVuZCA9PSBzZWxlY3Rpb25FbmQoKTsKIH0KQEAgLTE1NDYsNyArMTU2OCw5IEBAIHZvaWQg
SW5wdXRIYW5kbGVyOjpjYW5jZWxTZWxlY3Rpb24oKQogCiBib29sIElucHV0SGFuZGxlcjo6aGFu
ZGxlS2V5Ym9hcmRJbnB1dChjb25zdCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRF
dmVudCwgYm9vbCBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9uKQogewotICAgIElucHV0TG9nKExv
Z0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRJbnB1dCByZWNlaXZlZCBj
aGFyYWN0ZXI9JyVjJywgdHlwZT0lZCIsIGtleWJvYXJkRXZlbnQuY2hhcmFjdGVyKCksIGtleWJv
YXJkRXZlbnQudHlwZSgpKTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAor
ICAgICAgICAiSW5wdXRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZElucHV0IHJlY2VpdmVkIGNoYXJh
Y3Rlcj0nJWMnLCB0eXBlPSVkIiwKKyAgICAgICAga2V5Ym9hcmRFdmVudC5jaGFyYWN0ZXIoKSwg
a2V5Ym9hcmRFdmVudC50eXBlKCkpOwogCiAgICAgLy8gQ2xlYXJpbmcgdGhlIG1fcmVjZWl2ZWRC
YWNrc3BhY2VLZXlEb3duIHN0YXRlIG9uIGFueSBLZXlib2FyZEV2ZW50LgogICAgIG1fcmVjZWl2
ZWRCYWNrc3BhY2VLZXlEb3duID0gZmFsc2U7CkBAIC0xOTQzLDcgKzE5NjcsOSBAQCBib29sIElu
cHV0SGFuZGxlcjo6ZGVsZXRlVGV4dFJlbGF0aXZlVG9DdXJzb3IoaW50IGxlZnRPZmZzZXQsIGlu
dCByaWdodE9mZnNldCkKIAogICAgIFByb2Nlc3NpbmdDaGFuZ2VHdWFyZCBndWFyZCh0aGlzKTsK
IAotICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dFJl
bGF0aXZlVG9DdXJzb3IgbGVmdCAlZCByaWdodCAlZCIsIGxlZnRPZmZzZXQsIHJpZ2h0T2Zmc2V0
KTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRI
YW5kbGVyOjpkZWxldGVUZXh0UmVsYXRpdmVUb0N1cnNvciBsZWZ0ICVkIHJpZ2h0ICVkIiwKKyAg
ICAgICAgbGVmdE9mZnNldCwgcmlnaHRPZmZzZXQpOwogCiAgICAgaW50IGNhcmV0T2Zmc2V0ID0g
Y2FyZXRQb3NpdGlvbigpOwogICAgIGludCBzdGFydCA9IHJlbGF0aXZlTGVmdE9mZnNldChjYXJl
dE9mZnNldCwgbGVmdE9mZnNldCk7CkBAIC0xOTc2LDcgKzIwMDIsNyBAQCBib29sIElucHV0SGFu
ZGxlcjo6ZGVsZXRlVGV4dChpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgaWYgKCFzZXRTZWxlY3Rp
b24oc3RhcnQsIGVuZCwgdHJ1ZSAvKmNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24qLykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFu
ZGxlcjo6ZGVsZXRlVGV4dCBzdGFydCAlZCBlbmQgJWQiLCBzdGFydCwgZW5kKTsKKyAgICBJbnB1
dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpkZWxldGVUZXh0IHN0
YXJ0ICVkIGVuZCAlZCIsIHN0YXJ0LCBlbmQpOwogCiAgICAgcmV0dXJuIGRlbGV0ZVNlbGVjdGlv
bigpOwogfQpAQCAtMTk5OSwxNCArMjAyNSwxNCBAQCBzcGFubmFibGVfc3RyaW5nX3QqIElucHV0
SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQzMgog
ICAgIC8vIGNyYXNoIGltbWVkaWF0ZWx5IG9uIGZhaWx1cmUuCiAgICAgcHN0LT5zdHIgPSAod2No
YXJfdCopbWFsbG9jKHNpemVvZih3Y2hhcl90KSAqIChsZW5ndGggKyAxKSk7CiAgICAgaWYgKCFw
c3QtPnN0cikgewotICAgICAgICBsb2dBbHdheXMoTG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFu
ZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2UgQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3Ry
aW5nLiIpOworICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENy
aXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpzcGFubmFibGVUZXh0SW5SYW5nZSBDYW5ub3QgYWxsb2Nh
dGUgbWVtb3J5IGZvciBzdHJpbmcuIik7CiAgICAgICAgIGZyZWUocHN0KTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCiAgICAgaW50IHN0cmluZ0xlbmd0aCA9IDA7CiAgICAgaWYgKCFjb252
ZXJ0U3RyaW5nVG9XY2hhcih0ZXh0U3RyaW5nLCBwc3QtPnN0ciwgbGVuZ3RoICsgMSwgJnN0cmlu
Z0xlbmd0aCkpIHsKLSAgICAgICAgbG9nQWx3YXlzKExvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhh
bmRsZXI6OnNwYW5uYWJsZVRleHRJblJhbmdlIGZhaWxlZCB0byBjb252ZXJ0IHN0cmluZy4iKTsK
KyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwg
IklucHV0SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2UgZmFpbGVkIHRvIGNvbnZlcnQgc3Ry
aW5nLiIpOwogICAgICAgICBmcmVlKHBzdC0+c3RyKTsKICAgICAgICAgZnJlZShwc3QpOwogICAg
ICAgICByZXR1cm4gMDsKQEAgLTIxNDQsNyArMjE3MCw3IEBAIGludDMyX3QgSW5wdXRIYW5kbGVy
OjpzZXRDb21wb3NpbmdSZWdpb24oaW50MzJfdCBzdGFydCwgaW50MzJfdCBlbmQpCiAgICAgaWYg
KGNvbXBvc2l0aW9uQWN0aXZlKCkpCiAgICAgICAgIGFkZEF0dHJpYnV0ZWRUZXh0TWFya2VyKHN0
YXJ0LCBlbmQsIGNvbXBvc2l0aW9uVGV4dFN0eWxlKCkpOwogCi0gICAgSW5wdXRMb2coTG9nTGV2
ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdSZWdpb24gc3RhcnQgJWQgZW5kICVk
Iiwgc3RhcnQsIGVuZCk7CisgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklu
cHV0SGFuZGxlcjo6c2V0Q29tcG9zaW5nUmVnaW9uIHN0YXJ0ICVkIGVuZCAlZCIsIHN0YXJ0LCBl
bmQpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMTYxLDcgKzIxODcsNyBAQCBpbnQzMl90IElu
cHV0SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRpb24oKQogICAgIC8vIFJlbW92ZSBhbGwgbWFya2Vy
cy4KICAgICByZW1vdmVBdHRyaWJ1dGVkVGV4dE1hcmtlcigpOwogCi0gICAgSW5wdXRMb2coTG9n
TGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpmaW5pc2hDb21wb3NpdGlvbiBjb21wbGV0ZWQiKTsK
KyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpmaW5p
c2hDb21wb3NpdGlvbiBjb21wbGV0ZWQiKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMjIxNSw3
ICsyMjQxLDkgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNldFRleHQoc3Bhbm5hYmxlX3N0cmluZ190
KiBzcGFubmFibGVTdHJpbmcpCiAgICAgV1RGOjpTdHJpbmcgdGV4dFRvSW5zZXJ0ID0gY29udmVy
dFNwYW5uYWJsZVN0cmluZ1RvU3RyaW5nKHNwYW5uYWJsZVN0cmluZyk7CiAgICAgaW50IHRleHRM
ZW5ndGggPSB0ZXh0VG9JbnNlcnQubGVuZ3RoKCk7CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbElu
Zm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgc3Bhbm5hYmxlU3RyaW5nIGlzICclcycsIG9mIGxl
bmd0aCAlZCIsIHRleHRUb0luc2VydC5sYXRpbjEoKS5kYXRhKCksIHRleHRMZW5ndGgpOworICAg
IElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJJbnB1dEhhbmRsZXI6
OnNldFRleHQgc3Bhbm5hYmxlU3RyaW5nIGlzICclcycsIG9mIGxlbmd0aCAlZCIsCisgICAgICAg
IHRleHRUb0luc2VydC5sYXRpbjEoKS5kYXRhKCksIHRleHRMZW5ndGgpOwogCiAgICAgc3Bhbl90
KiBjaGFuZ2VkU3BhbiA9IGZpcnN0U3BhbkluU3RyaW5nKHNwYW5uYWJsZVN0cmluZywgQ0hBTkdF
RF9BVFRSSUIpOwogICAgIGludCBjb21wb3NpbmdUZXh0U3RhcnQgPSBtX2NvbXBvc2luZ1RleHRT
dGFydDsKQEAgLTIyMjcsMTAgKzIyNTUsMTAgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNldFRleHQo
c3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCiAgICAgICAgIC8vIElmIHRoZSB0
ZXh0IGlzIHVuY29udmVydGVkLCBkbyBub3QgYWxsb3cgSlMgcHJvY2Vzc2luZyBhcyBpdCBpcyBu
b3QgYSAicmVhbCIKICAgICAgICAgLy8gY2hhcmFjdGVyIGluIHRoZSBmaWVsZC4KICAgICAgICAg
aWYgKGZpcnN0U3BhbkluU3RyaW5nKHNwYW5uYWJsZVN0cmluZywgVU5DT05WRVJURURfVEVYVF9B
VFRSSUIpKSB7Ci0gICAgICAgICAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRs
ZXI6OnNldFRleHQgU2luZ2xlIHRyYWlsaW5nIGNoYXJhY3RlciBkZXRlY3RlZC4gIFRleHQgaXMg
dW5jb252ZXJ0ZWQuIik7CisgICAgICAgICAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJ
bmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFNpbmdsZSB0cmFpbGluZyBjaGFyYWN0ZXIgZGV0
ZWN0ZWQuIFRleHQgaXMgdW5jb252ZXJ0ZWQuIik7CiAgICAgICAgICAgICByZXR1cm4gZWRpdG9y
LT5jb21tYW5kKCJJbnNlcnRUZXh0IikuZXhlY3V0ZSh0ZXh0VG9JbnNlcnQucmlnaHQoMSkpOwog
ICAgICAgICB9Ci0gICAgICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6
c2V0VGV4dCBTaW5nbGUgdHJhaWxpbmcgY2hhcmFjdGVyIGRldGVjdGVkLiIpOworICAgICAgICBJ
bnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFNp
bmdsZSB0cmFpbGluZyBjaGFyYWN0ZXIgZGV0ZWN0ZWQuIik7CiAgICAgICAgIHJldHVybiBoYW5k
bGVLZXlib2FyZElucHV0KFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50KHRleHRUb0luc2VydFt0ZXh0
TGVuZ3RoIC0gMV0sIFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlEb3duLCAwKSwgZmFsc2Ug
LyogY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiAqLyk7CiAgICAgfQogCkBAIC0yMjM4LDEyICsy
MjY2LDEyIEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpzZXRUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCog
c3Bhbm5hYmxlU3RyaW5nKQogICAgIGlmICghY2hhbmdlZFNwYW4pIHsKICAgICAgICAgLy8gSWYg
dGhlIGNvbXBvc2l0aW9uIGxlbmd0aCBpcyB0aGUgc2FtZSBhcyBvdXIgc3RyaW5nIGxlbmd0aCwg
dGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLgogICAgICAgICBpZiAoY29tcG9zaW5n
VGV4dExlbmd0aCA9PSB0ZXh0TGVuZ3RoKSB7Ci0gICAgICAgICAgICBJbnB1dExvZyhMb2dMZXZl
bEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgTm8gc3BhbnMgaGF2ZSBjaGFuZ2VkLiBOZXcg
dGV4dCBpcyB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIG9sZC4gTm90aGluZyB0byBkby4iKTsKKyAg
ICAgICAgICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6
OnNldFRleHQgTm8gc3BhbnMgaGF2ZSBjaGFuZ2VkLiBOZXcgdGV4dCBpcyB0aGUgc2FtZSBsZW5n
dGggYXMgdGhlIG9sZC4gTm90aGluZyB0byBkby4iKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBvc2luZ1RleHRMZW5ndGggLSB0ZXh0TGVu
Z3RoID09IDEpIHsKLSAgICAgICAgICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFu
ZGxlcjo6c2V0VGV4dCBObyBzcGFucyBoYXZlIGNoYW5nZWQuIE5ldyB0ZXh0IGlzIG9uZSBjaGFy
YWN0ZXIgc2hvcnRlciB0aGFuIHRoZSBvbGQuIFRyZWF0aW5nIGFzICdkZWxldGUnLiIpOworICAg
ICAgICAgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6
c2V0VGV4dCBObyBzcGFucyBoYXZlIGNoYW5nZWQuIE5ldyB0ZXh0IGlzIG9uZSBjaGFyYWN0ZXIg
c2hvcnRlciB0aGFuIHRoZSBvbGQuIFRyZWF0aW5nIGFzICdkZWxldGUnLiIpOwogICAgICAgICAg
ICAgcmV0dXJuIGhhbmRsZUtleWJvYXJkSW5wdXQoUGxhdGZvcm06OktleWJvYXJkRXZlbnQoS0VZ
Q09ERV9CQUNLU1BBQ0UsIFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlEb3duLCAwKSwgdHJ1
ZSAvKiBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9uICovKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTIyNzEsMjUgKzIyOTksMzEgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNldFRleHQoc3Bhbm5hYmxl
X3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCiAgICAgICAgIHRleHRUb0luc2VydC5yZW1vdmUo
dGV4dExlbmd0aCwgMSk7CiAgICAgfQogCi0gICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5w
dXRIYW5kbGVyOjpzZXRUZXh0IFJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLiBUZXh0IGJlZm9yZSBw
cm9jZXNzaW5nOiAnJXMnIiwgZWxlbWVudFRleHQoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIElu
cHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJJbnB1dEhhbmRsZXI6OnNl
dFRleHQgUmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuIFRleHQgYmVmb3JlIHByb2Nlc3Npbmc6ICcl
cyciLAorICAgICAgICBlbGVtZW50VGV4dCgpLmxhdGluMSgpLmRhdGEoKSk7CiAKICAgICBpZiAo
dGV4dExlbmd0aCA9PSAxICYmICFzcGFubmFibGVTdHJpbmctPnNwYW5zX2NvdW50KSB7CiAgICAg
ICAgIC8vIEhhbmRsZSBzaW5nbGUga2V5IG5vbi1hdHRyaWJ1dGVkIGVudHJ5IGFzIGtleSBwcmVz
cyByYXRoZXIgdGhhbiBpbnNlcnQgdG8gYWxsb3cKICAgICAgICAgLy8gdHJpZ2dlcmluZyBvZiBq
YXZhc2NyaXB0IGV2ZW50cy4KLSAgICAgICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRI
YW5kbGVyOjpzZXRUZXh0IFNpbmdsZSBjaGFyYWN0ZXIgZW50cnkgdHJlYXRlZCBhcyBrZXktcHJl
c3MgaW4gdGhlIGFic2Vuc2Ugb2Ygc3BhbnMuIik7CisgICAgICAgIElucHV0TG9nKFBsYXRmb3Jt
OjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgU2luZ2xlIGNoYXJhY3RlciBl
bnRyeSB0cmVhdGVkIGFzIGtleS1wcmVzcyBpbiB0aGUgYWJzZW5zZSBvZiBzcGFucy4iKTsKICAg
ICAgICAgcmV0dXJuIGhhbmRsZUtleWJvYXJkSW5wdXQoUGxhdGZvcm06OktleWJvYXJkRXZlbnQo
dGV4dFRvSW5zZXJ0WzBdLCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5RG93biwgMCksIHRy
dWUgLyogY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiAqLyk7CiAgICAgfQogCiAgICAgLy8gUGVy
Zm9ybSB0aGUgdGV4dCBjaGFuZ2UgYXMgYSBzaW5nbGUgY29tbWFuZCBpZiB0aGVyZSBpcyBvbmUu
CiAgICAgaWYgKCF0ZXh0VG9JbnNlcnQuaXNFbXB0eSgpICYmICFlZGl0b3ItPmNvbW1hbmQoIklu
c2VydFRleHQiKS5leGVjdXRlKHRleHRUb0luc2VydCkpIHsKLSAgICAgICAgSW5wdXRMb2coTG9n
TGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IEZhaWxlZCB0byBpbnNlcnQgdGV4dCAn
JXMnIiwgdGV4dFRvSW5zZXJ0LmxhdGluMSgpLmRhdGEoKSk7CisgICAgICAgIElucHV0TG9nKFBs
YXRmb3JtOjpMb2dMZXZlbFdhcm4sCisgICAgICAgICAgICAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0
IEZhaWxlZCB0byBpbnNlcnQgdGV4dCAnJXMnIiwKKyAgICAgICAgICAgIHRleHRUb0luc2VydC5s
YXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYg
KHJlcXVpcmVzU3BhY2VLZXlQcmVzcykKICAgICAgICAgaGFuZGxlS2V5Ym9hcmRJbnB1dChQbGF0
Zm9ybTo6S2V5Ym9hcmRFdmVudChLRVlDT0RFX1NQQUNFLCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVu
dDo6S2V5RG93biwgMCksIHRydWUgLyogY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiAqLyk7CiAK
LSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgUmVxdWVz
dCBiZWluZyBwcm9jZXNzZWQuIFRleHQgYWZ0ZXIgcHJvY2Vzc2luZyAnJXMnIiwgZWxlbWVudFRl
eHQoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbElu
Zm8sCisgICAgICAgICJJbnB1dEhhbmRsZXI6OnNldFRleHQgUmVxdWVzdCBiZWluZyBwcm9jZXNz
ZWQuIFRleHQgYWZ0ZXIgcHJvY2Vzc2luZyAnJXMnIiwKKyAgICAgICAgZWxlbWVudFRleHQoKS5s
YXRpbjEoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMzE0LDEzICsyMzQ4
LDE1IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyhpbnQgaW5zZXJ0aW9u
UG9pbnQsIHNwYW5uYWJsZV9zdHJpbmdfdCogc3BhCiAgICAgICAgIC8vIHVzZWQgYnkgSU1GLiBX
aGVuIHRoZXkgYWRkIHN1cHBvcnQgZm9yIG9uIHRoZSBmbHkgc3BlbGwgY2hlY2tpbmcgd2UgY2Fu
CiAgICAgICAgIC8vIHVzZSBpdCB0byBhcHBseSBzcGVsbGluZyBtYXJrZXJzIGFuZCBkaXNhYmxl
IGNvbnRpbnVvdXMgc3BlbGwgY2hlY2tpbmcuCiAKLSAgICAgICAgSW5wdXRMb2coTG9nTGV2ZWxJ
bmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyBhZGRpbmcgbWFya2VyICVkIHRv
ICVkIC0gJWxsdSIsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBzcGFuLT5hdHRyaWJ1dGVz
X21hc2spOworICAgICAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAg
ICAgICAgIklucHV0SGFuZGxlcjo6c2V0VGV4dEF0dHJpYnV0ZXMgYWRkaW5nIG1hcmtlciAlZCB0
byAlZCAtICVsbHUiLAorICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHNw
YW4tPmF0dHJpYnV0ZXNfbWFzayk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZWRUZXh0TWFya2VyKHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB0ZXh0U3R5bGVGcm9tTWFzayhzcGFuLT5hdHRyaWJ1
dGVzX21hc2spKTsKIAogICAgICAgICBzcGFuKys7CiAgICAgfQogCi0gICAgSW5wdXRMb2coTG9n
TGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyBhdHRyaWJ1dGUgY291
bnQgJWQiLCBzcGFubmFibGVTdHJpbmctPnNwYW5zX2NvdW50KTsKKyAgICBJbnB1dExvZyhQbGF0
Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyBhdHRy
aWJ1dGUgY291bnQgJWQiLCBzcGFubmFibGVTdHJpbmctPnNwYW5zX2NvdW50KTsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtMjM1MSwxNCArMjM4NywxOSBAQCBib29sIElucHV0SGFuZGxlcjo6
c2V0UmVsYXRpdmVDdXJzb3JQb3NpdGlvbihpbnQgaW5zZXJ0aW9uUG9pbnQsIGludCByZWxhdGl2
ZUN1cgogICAgIGlmIChjdXJzb3JQb3NpdGlvbiA8IDAgfHwgY3Vyc29yUG9zaXRpb24gPiAoaW50
KWVsZW1lbnRUZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIElu
cHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0UmVsYXRpdmVDdXJzb3JQb3Np
dGlvbiBjdXJzb3IgcG9zaXRpb24gJWQiLCBjdXJzb3JQb3NpdGlvbik7CisgICAgSW5wdXRMb2co
UGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIklucHV0SGFuZGxlcjo6c2V0UmVsYXRp
dmVDdXJzb3JQb3NpdGlvbiBjdXJzb3IgcG9zaXRpb24gJWQiLAorICAgICAgICBjdXJzb3JQb3Np
dGlvbik7CiAKICAgICByZXR1cm4gc2V0Q3Vyc29yUG9zaXRpb24oY3Vyc29yUG9zaXRpb24pOwog
fQogCiBib29sIElucHV0SGFuZGxlcjo6c2V0U3Bhbm5hYmxlVGV4dEFuZFJlbGF0aXZlQ3Vyc29y
KHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5nLCBpbnQgcmVsYXRpdmVDdXJzb3JQ
b3NpdGlvbiwgYm9vbCBtYXJrVGV4dEFzQ29tcG9zaW5nKQogewotICAgIElucHV0TG9nKExvZ0xl
dmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0U3Bhbm5hYmxlVGV4dEFuZFJlbGF0aXZlQ3Vyc29y
KCVkLCAlZCwgJWQpIiwgc3Bhbm5hYmxlU3RyaW5nLT5sZW5ndGgsIHJlbGF0aXZlQ3Vyc29yUG9z
aXRpb24sIG1hcmtUZXh0QXNDb21wb3NpbmcpOworICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dM
ZXZlbEluZm8sCisgICAgICAgICJJbnB1dEhhbmRsZXI6OnNldFNwYW5uYWJsZVRleHRBbmRSZWxh
dGl2ZUN1cnNvciglZCwgJWQsICVkKSIsCisgICAgICAgIHNwYW5uYWJsZVN0cmluZy0+bGVuZ3Ro
LCByZWxhdGl2ZUN1cnNvclBvc2l0aW9uLCBtYXJrVGV4dEFzQ29tcG9zaW5nKTsKKwogICAgIGlu
dCBpbnNlcnRpb25Qb2ludCA9IGNvbXBvc2l0aW9uQWN0aXZlKCkgPyBtX2NvbXBvc2luZ1RleHRT
dGFydCA6IHNlbGVjdGlvblN0YXJ0KCk7CiAKICAgICBQcm9jZXNzaW5nQ2hhbmdlR3VhcmQgZ3Vh
cmQodGhpcyk7CkBAIC0yMzg4LDcgKzI0MjksOSBAQCBpbnQzMl90IElucHV0SGFuZGxlcjo6c2V0
Q29tcG9zaW5nVGV4dChzcGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmluZywgaW50Mwog
ICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBJbnB1
dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldENvbXBvc2luZ1RleHQgYXQgcmVs
YXRpdmVDdXJzb3JQb3NpdGlvbjogJWQiLCByZWxhdGl2ZUN1cnNvclBvc2l0aW9uKTsKKyAgICBJ
bnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpz
ZXRDb21wb3NpbmdUZXh0IGF0IHJlbGF0aXZlQ3Vyc29yUG9zaXRpb246ICVkIiwKKyAgICAgICAg
cmVsYXRpdmVDdXJzb3JQb3NpdGlvbik7CiAKICAgICAvLyBFbmFibGUgaW5wdXQgbW9kZSBpZiB3
ZSBhcmUgcHJvY2Vzc2luZyBhIGtleSBldmVudC4KICAgICBzZXRJbnB1dE1vZGVFbmFibGVkKCk7
CkBAIC0yNDA0LDcgKzI0NDcsNyBAQCBpbnQzMl90IElucHV0SGFuZGxlcjo6Y29tbWl0VGV4dChz
cGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmluZywgaW50MzJfdCByZQogICAgIGlmICgh
c3Bhbm5hYmxlU3RyaW5nKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBJbnB1dExvZyhMb2dM
ZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OmNvbW1pdFRleHQiKTsKKyAgICBJbnB1dExvZyhQbGF0
Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpjb21taXRUZXh0Iik7CiAKICAgICBy
ZXR1cm4gc2V0U3Bhbm5hYmxlVGV4dEFuZFJlbGF0aXZlQ3Vyc29yKHNwYW5uYWJsZVN0cmluZywg
cmVsYXRpdmVDdXJzb3JQb3NpdGlvbiwgZmFsc2UgLyogbWFya1RleHRBc0NvbXBvc2luZyAqLykg
PyAwIDogLTE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAKaW5kZXggMmRhNmQ4ZTY4ZGY1NjFjNzM2OWMwNmE5MTE3
YTc1ODlkNGE1ZWM5Ny4uNjE2NGE3OTg1YmIxZDNjNDFhOGViYzk0MmNmYjYxYWI4NGFkMjgxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvUmVuZGVy
UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1Jl
bmRlclF1ZXVlLmNwcApAQCAtMzYyLDggKzM2Miw5IEBAIHZvaWQgUmVuZGVyUXVldWU6OmFkZFRv
UmVndWxhclF1ZXVlKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiByZWN0KQogewogI2lmIERFQlVH
X1JFTkRFUl9RVUVVRQogICAgIGlmIChtX3JlZ3VsYXJSZW5kZXJKb2JzUmVnaW9uLmlzUmVjdElu
UmVnaW9uKHJlY3QpICE9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpDb250YWluZWRJblJlZ2lv
bikgewotICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNh
bCwgIlJlbmRlclF1ZXVlOjphZGRUb1JlZ3VsYXJRdWV1ZSAlZCwlZCAlZHglZCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpM
b2dMZXZlbENyaXRpY2FsLAorICAgICAgICAgICAgIlJlbmRlclF1ZXVlOjphZGRUb1JlZ3VsYXJR
dWV1ZSAlcyIsCisgICAgICAgICAgICByZWN0LnRvU3RyaW5nKCkuY19zdHIoKSk7CiAgICAgfQog
I2VuZGlmCiAKQEAgLTM4Myw4ICszODQsOSBAQCB2b2lkIFJlbmRlclF1ZXVlOjphZGRUb1Njcm9s
bFpvb21RdWV1ZShjb25zdCBSZW5kZXJSZWN0JiByZWN0LCBSZW5kZXJSZWN0TGlzdCogcgogICAg
ICAgICByZXR1cm47CiAKICNpZiBERUJVR19SRU5ERVJfUVVFVUUKLSAgICBCQkxPRyhCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRlclF1ZXVlOjphZGRUb1Njcm9s
bFpvb21RdWV1ZSAlZCwlZCAlZHglZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgUGxhdGZv
cm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgIlJlbmRl
clF1ZXVlOjphZGRUb1Njcm9sbFpvb21RdWV1ZSAlcyIsCisgICAgICAgIHJlY3QudG9TdHJpbmco
KS5jX3N0cigpKTsKICNlbmRpZgogICAgIHJlY3RMaXN0LT5wdXNoX2JhY2socmVjdCk7CiAKQEAg
LTU2OSw3ICs1NzEsNyBAQCB2b2lkIFJlbmRlclF1ZXVlOjpyZW5kZXIoYm9vbCBzaG91bGRQZXJm
b3JtUmVndWxhclJlbmRlckpvYnMpCiAjaWYgREVCVUdfUkVOREVSX1FVRVVFCiAgICAgZG91Ymxl
IGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwogICAgIGlmIChlbGFwc2VkKQot
ICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJl
bmRlclF1ZXVlOjpyZW5kZXIgbGF5b3V0IGVsYXBzZWQ9JWYiLCBlbGFwc2VkKTsKKyAgICAgICAg
UGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRlclF1
ZXVlOjpyZW5kZXIgbGF5b3V0IGVsYXBzZWQ9JWYiLCBlbGFwc2VkKTsKICNlbmRpZgogCiAgICAg
Ly8gRW1wdHkgdGhlIHF1ZXVlcyBpbiBhIHByZWNpc2Ugb3JkZXIgb2YgcHJpb3JpdHkuCkBAIC01
OTksNyArNjAxLDcgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyQWxsQ3VycmVudFJlZ3VsYXJS
ZW5kZXJKb2JzKCkKICNpZiBERUJVR19SRU5ERVJfUVVFVUUKICAgICBkb3VibGUgZWxhcHNlZCA9
IFdURjo6Y3VycmVudFRpbWUoKSAtIHRpbWU7CiAgICAgaWYgKGVsYXBzZWQpCi0gICAgICAgIEJC
TE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6
OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyBsYXlvdXQgZWxhcHNlZD0lZiIsIGVs
YXBzZWQpOworICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENy
aXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyBs
YXlvdXQgZWxhcHNlZD0lZiIsIGVsYXBzZWQpOwogI2VuZGlmCiAKICAgICAvLyBUaGUgc3RhdGUg
b2YgcmVuZGVyIHF1ZXVlIG1heSBiZSBtb2RpZmllZCBmcm9tIGluc2lkZSByZXF1ZXN0TGF5b3V0
SWZOZWVkZWQuCkBAIC02MjYsNyArNjI4LDcgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyQWxs
Q3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzKCkKIAogI2lmIERFQlVHX1JFTkRFUl9RVUVVRQogICAg
ICAgICBpZiAoIXJlZ2lvbk5vdFJlbmRlcmVkLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIEJCTE9H
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJl
bmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyByZWdpb24gbm90IGNvbXBsZXRlbHkgcmVu
ZGVyZWQhIik7CisgICAgICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dM
ZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVy
Sm9icyByZWdpb24gbm90IGNvbXBsZXRlbHkgcmVuZGVyZWQhIik7CiAjZW5kaWYKIAogICAgICAg
ICAvLyBDbGlwIHRvIHRoZSB2aXNpYmxlIGNvbnRlbnRzIHNvIHdlJ2xsIGJlIGZhc3Rlci4KQEAg
LTY0MywxMCArNjQ1LDExIEBAIHZvaWQgUmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1
bGFyUmVuZGVySm9icygpCiAjaWYgREVCVUdfUkVOREVSX1FVRVVFCiAgICAgLy8gU3RvcCB0aGUg
dGltZSBtZWFzdXJlbWVudC4KICAgICBlbGFwc2VkID0gV1RGOjpjdXJyZW50VGltZSgpIC0gdGlt
ZTsKLSAgICBQbGF0Zm9ybTo6SW50UmVjdCBleHRlbnRzID0gbV9jdXJyZW50UmVndWxhclJlbmRl
ckpvYnNCYXRjaFJlZ2lvbi5leHRlbnRzKCk7Ci0gICAgaW50IG51bWJlck9mUmVjdHMgPSBtX2N1
cnJlbnRSZWd1bGFyUmVuZGVySm9ic0JhdGNoUmVnaW9uLnJlY3RzKCkuc2l6ZSgpOwotICAgIEJC
TE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6
OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyBleHRlbnRzPSglZCwlZCAlZHglZCkg
bnVtYmVyT2ZSZWN0cz0lZCBlbGFwc2VkPSVmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4dGVudHMueCgpLCBleHRlbnRzLnkoKSwgZXh0ZW50cy53aWR0aCgpLCBleHRlbnRzLmhlaWdo
dCgpLCBudW1iZXJPZlJlY3RzLCBlbGFwc2VkKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBs
YXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAiUmVuZGVyUXVldWU6OnJlbmRlckFs
bEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyBleHRlbnRzPSVzIG51bWJlck9mUmVjdHM9JWQgZWxh
cHNlZD0lZiIsCisgICAgICAgIG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2hSZWdpb24u
ZXh0ZW50cygpLnRvU3RyaW5nKCkuY19zdHIoKSwKKyAgICAgICAgbV9jdXJyZW50UmVndWxhclJl
bmRlckpvYnNCYXRjaFJlZ2lvbi5yZWN0cygpLnNpemUoKSwKKyAgICAgICAgZWxhcHNlZCk7CiAj
ZW5kaWYKIAogICAgIC8vIENsZWFyIHRoZSByZWdpb24gYW5kIGJsaXQgc2luY2UgdGhpcyBiYXRj
aCBpcyBub3cgY29tcGxldGUuCkBAIC02ODEsNyArNjg0LDkgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6
c3RhcnRSZWd1bGFyUmVuZGVySm9iQmF0Y2hJZk5lZWRlZCgpCiAgICAgbV9yZWd1bGFyUmVuZGVy
Sm9ic1JlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uKCk7CiAKICNpZiBERUJVR19SRU5E
RVJfUVVFVUUKLSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNh
bCwgIlJlbmRlclF1ZXVlOjpzdGFydFJlZ3VsYXJSZW5kZXJKb2JCYXRjaElmTmVlZGVkIGJhdGNo
IHNpemUgaXMgJWQhIiwgbV9jdXJyZW50UmVndWxhclJlbmRlckpvYnNCYXRjaC5zaXplKCkpOwor
ICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCisgICAg
ICAgICJSZW5kZXJRdWV1ZTo6c3RhcnRSZWd1bGFyUmVuZGVySm9iQmF0Y2hJZk5lZWRlZCBiYXRj
aCBzaXplIGlzICVkISIsCisgICAgICAgIG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2gu
c2l6ZSgpKTsKICNlbmRpZgogfQogCkBAIC03MDgsOCArNzEzLDEwIEBAIHZvaWQgUmVuZGVyUXVl
dWU6OnJlbmRlclZpc2libGVab29tSm9iKCkKICNpZiBERUJVR19SRU5ERVJfUVVFVUUKICAgICAv
LyBTdG9wIHRoZSB0aW1lIG1lYXN1cmVtZW50CiAgICAgZG91YmxlIGVsYXBzZWQgPSBXVEY6OmN1
cnJlbnRUaW1lKCkgLSB0aW1lOwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlclZpc2libGVab29tSm9iIHJlY3Q9KCVk
LCVkICVkeCVkKSBlbGFwc2VkPSVmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlJl
Y3QueCgpLCBzdWJSZWN0LnkoKSwgc3ViUmVjdC53aWR0aCgpLCBzdWJSZWN0LmhlaWdodCgpLCBl
bGFwc2VkKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRp
Y2FsLAorICAgICAgICAiUmVuZGVyUXVldWU6OnJlbmRlclZpc2libGVab29tSm9iIHJlY3Q9JXMg
ZWxhcHNlZD0lZiIsCisgICAgICAgIHN1YlJlY3QudG9TdHJpbmcoKS5jX3N0cigpLAorICAgICAg
ICBlbGFwc2VkKTsKICNlbmRpZgogfQogCkBAIC03MjAsMTQgKzcyNywxNSBAQCB2b2lkIFJlbmRl
clF1ZXVlOjpyZW5kZXJWaXNpYmxlU2Nyb2xsSm9iKCkKICNpZiBERUJVR19SRU5ERVJfUVVFVUUg
fHwgREVCVUdfUkVOREVSX1FVRVVFX1NPUlQKICAgICAvLyBTdGFydCB0aGUgdGltZSBtZWFzdXJl
bWVudC4KICAgICBkb3VibGUgdGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUg
ZWxhcHNlZDsKICNlbmRpZgogCiAgICAgcXVpY2tTb3J0KCZtX3Zpc2libGVTY3JvbGxKb2JzKTsK
IAogI2lmIERFQlVHX1JFTkRFUl9RVUVVRV9TT1JUCiAgICAgLy8gU3RvcCB0aGUgdGltZSBtZWFz
dXJlbWVudAotICAgIGRvdWJsZSBlbGFwc2VkID0gV1RGOjpjdXJyZW50VGltZSgpIC0gdGltZTsK
LSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRl
clF1ZXVlOjpyZW5kZXJWaXNpYmxlU2Nyb2xsSm9iIHNvcnQgZWxhcHNlZD0lZiIsIGVsYXBzZWQp
OworICAgIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOworICAgIFBsYXRmb3Jt
Ojpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJSZW5kZXJRdWV1ZTo6cmVu
ZGVyVmlzaWJsZVNjcm9sbEpvYiBzb3J0IGVsYXBzZWQ9JWYiLCBlbGFwc2VkKTsKICNlbmRpZgog
CiAgICAgUmVuZGVyUmVjdCByZWN0ID0gbV92aXNpYmxlU2Nyb2xsSm9ic1swXTsKQEAgLTc0Nyw5
ICs3NTUsMTEgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyVmlzaWJsZVNjcm9sbEpvYigpCiAK
ICNpZiBERUJVR19SRU5ERVJfUVVFVUUKICAgICAvLyBTdG9wIHRoZSB0aW1lIG1lYXN1cmVtZW50
Ci0gICAgZG91YmxlIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwotICAgIEJC
TE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6
OnJlbmRlclZpc2libGVTY3JvbGxKb2IgcmVjdD0oJWQsJWQgJWR4JWQpIGVsYXBzZWQ9JWYiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViUmVjdC54KCksIHN1YlJlY3QueSgpLCBzdWJS
ZWN0LndpZHRoKCksIHN1YlJlY3QuaGVpZ2h0KCksIGVsYXBzZWQpOworICAgIGVsYXBzZWQgPSBX
VEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZv
cm06OkxvZ0xldmVsQ3JpdGljYWwsCisgICAgICAgICJSZW5kZXJRdWV1ZTo6cmVuZGVyVmlzaWJs
ZVNjcm9sbEpvYiByZWN0PSVzIGVsYXBzZWQ9JWYiLAorICAgICAgICBzdWJSZWN0LnRvU3RyaW5n
KCkuY19zdHIoKSwKKyAgICAgICAgZWxhcHNlZCk7CiAjZW5kaWYKIAogICAgIGlmIChtX3Zpc2li
bGVTY3JvbGxKb2JzLmVtcHR5KCkpCkBAIC03ODAsOCArNzkwLDkgQEAgdm9pZCBSZW5kZXJRdWV1
ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYigpCiAKICNpZiBERUJVR19SRU5ERVJfUVVFVUUKICAg
ICAgICAgaWYgKCFyZWdpb25Ob3RSZW5kZXJlZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEJC
TE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6
OnJlbmRlclJlZ3VsYXJSZW5kZXJKb2IgcmVjdCAoJWQsJWQgJWR4JWQpIG5vdCBjb21wbGV0ZWx5
IHJlbmRlcmVkISIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC54KCks
IHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgUGxh
dGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgICAg
ICAgICAiUmVuZGVyUXVldWU6OnJlbmRlclJlZ3VsYXJSZW5kZXJKb2IgcmVjdCAlcyBub3QgY29t
cGxldGVseSByZW5kZXJlZCEiLAorICAgICAgICAgICAgICAgIHJlY3QudG9TdHJpbmcoKS5jX3N0
cigpKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTc5NSw4ICs4MDYsMTAgQEAgdm9pZCBSZW5k
ZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYigpCiAjaWYgREVCVUdfUkVOREVSX1FVRVVF
CiAgICAgLy8gU3RvcCB0aGUgdGltZSBtZWFzdXJlbWVudC4KICAgICBkb3VibGUgZWxhcHNlZCA9
IFdURjo6Y3VycmVudFRpbWUoKSAtIHRpbWU7Ci0gICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkxvZ0xldmVsQ3JpdGljYWwsICJSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpv
YiByZWN0PSglZCwlZCAlZHglZCkgZWxhcHNlZD0lZiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgZWxh
cHNlZCk7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNh
bCwKKyAgICAgICAgIlJlbmRlclF1ZXVlOjpyZW5kZXJSZWd1bGFyUmVuZGVySm9iIHJlY3Q9JXMg
ZWxhcHNlZD0lZiIsCisgICAgICAgIHJlY3QudG9TdHJpbmcoKS5jX3N0cigpLAorICAgICAgICBl
bGFwc2VkKTsKICNlbmRpZgogCiAgICAgaWYgKG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0
Y2guZW1wdHkoKSkgewpAQCAtODIyLDE0ICs4MzUsMTUgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVu
ZGVyTm9uVmlzaWJsZVNjcm9sbEpvYigpCiAjaWYgREVCVUdfUkVOREVSX1FVRVVFIHx8IERFQlVH
X1JFTkRFUl9RVUVVRV9TT1JUCiAgICAgLy8gU3RhcnQgdGhlIHRpbWUgbWVhc3VyZW1lbnQuCiAg
ICAgZG91YmxlIHRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIGVsYXBzZWQ7
CiAjZW5kaWYKIAogICAgIHF1aWNrU29ydCgmbV9ub25WaXNpYmxlU2Nyb2xsSm9icyk7CiAKICNp
ZiBERUJVR19SRU5ERVJfUVVFVUVfU09SVAogICAgIC8vIFN0b3AgdGhlIHRpbWUgbWVhc3VyZW1l
bnQuCi0gICAgZG91YmxlIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwotICAg
IEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVl
dWU6OnJlbmRlck5vblZpc2libGVTY3JvbGxKb2Igc29ydCBlbGFwc2VkPSVmIiwgZWxhcHNlZCk7
CisgICAgZWxhcHNlZCA9IFdURjo6Y3VycmVudFRpbWUoKSAtIHRpbWU7CisgICAgUGxhdGZvcm06
OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRlclF1ZXVlOjpyZW5k
ZXJOb25WaXNpYmxlU2Nyb2xsSm9iIHNvcnQgZWxhcHNlZD0lZiIsIGVsYXBzZWQpOwogI2VuZGlm
CiAKICAgICBSZW5kZXJSZWN0IHJlY3QgPSBtX25vblZpc2libGVTY3JvbGxKb2JzWzBdOwpAQCAt
ODUzLDkgKzg2NywxMCBAQCB2b2lkIFJlbmRlclF1ZXVlOjpyZW5kZXJOb25WaXNpYmxlU2Nyb2xs
Sm9iKCkKIAogI2lmIERFQlVHX1JFTkRFUl9RVUVVRQogICAgIC8vIFN0b3AgdGhlIHRpbWUgbWVh
c3VyZW1lbnQuCi0gICAgZG91YmxlIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1l
OwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVu
ZGVyUXVldWU6OnJlbmRlck5vblZpc2libGVTY3JvbGxKb2IgcmVjdD0oJWQsJWQgJWR4JWQpIGVs
YXBzZWQ9JWYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViUmVjdC54KCksIHN1YlJl
Y3QueSgpLCBzdWJSZWN0LndpZHRoKCksIHN1YlJlY3QuaGVpZ2h0KCksIGVsYXBzZWQpOworICAg
IGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOworICAgIFBsYXRmb3JtOjpsb2dB
bHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCisgICAgICAgICJSZW5kZXJRdWV1ZTo6
cmVuZGVyTm9uVmlzaWJsZVNjcm9sbEpvYiByZWN0PSVzIGVsYXBzZWQ9JWYiLAorICAgICAgICBz
dWJSZWN0LnRvU3RyaW5nKCkuY19zdHIoKSwgZWxhcHNlZCk7CiAjZW5kaWYKIAogICAgIGlmICht
X25vblZpc2libGVTY3JvbGxKb2JzLmVtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCmluZGV4
IGFhYmRhN2NlZjE0NzgwOWZlZWJhZjQwYzJiNjU1ZjI2YTJhZTQ1MjQuLmRkNWE4YjRkMzVjNTlj
ZDEwMTk3ZmM1ODU2ZTZlZjc4YzRiOTZjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCkBAIC04
Niw3ICs4Niw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6Y2FuY2VsU2VsZWN0aW9uKCkKICAg
ICBpZiAobV93ZWJQYWdlLT5tX3NlbGVjdGlvbk92ZXJsYXkpCiAgICAgICAgIG1fd2ViUGFnZS0+
bV9zZWxlY3Rpb25PdmVybGF5LT5oaWRlKCk7CiAKLSAgICBTZWxlY3Rpb25Mb2coTG9nTGV2ZWxJ
bmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6Y2FuY2VsU2VsZWN0aW9uIik7CisgICAgU2VsZWN0aW9u
TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpjYW5jZWxTZWxl
Y3Rpb24iKTsKIAogICAgIGlmIChtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5pc0lucHV0TW9k
ZSgpKQogICAgICAgICBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5jYW5jZWxTZWxlY3Rpb24o
KTsKQEAgLTIxNiwxMSArMjE2LDE0IEBAIGJvb2wgU2VsZWN0aW9uSGFuZGxlcjo6c2hvdWxkVXBk
YXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvCiAgICAgYm9v
bCBhYm92ZUNhcmV0ID0gcG9pbnQueSgpIDwgY2FyZXRSZWN0LnkoKTsKICAgICBib29sIGJlbG93
Q2FyZXQgPSBwb2ludC55KCkgPj0gY2FyZXRSZWN0Lm1heFkoKTsKIAotICAgIFNlbGVjdGlvbkxv
ZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzaG91bGRVcGRhdGVTZWxlY3Rpb25P
ckNhcmV0Rm9yUG9pbnQgbXVsdGlsaW5lID0gJXMgYWJvdmUgPSAlcyBiZWxvdyA9ICVzIGZpcnN0
IGxpbmUgPSAlcyBsYXN0IGxpbmUgPSAlcyBzdGFydCA9ICVzIgotICAgICAgICAgICAgLCBtX3dl
YlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5pc011bHRpbGluZUlucHV0TW9kZSgpID8gInRydWUiIDog
ImZhbHNlIiwgYWJvdmVDYXJldCA/ICJ0cnVlIiA6ICJmYWxzZSIsIGJlbG93Q2FyZXQgPyAidHJ1
ZSIgOiAiZmFsc2UiCi0gICAgICAgICAgICAsIGluU2FtZUxpbmUoY3VycmVudFNlbGVjdGlvbi52
aXNpYmxlU3RhcnQoKSwgc3RhcnRPZkVkaXRhYmxlQ29udGVudChjdXJyZW50U2VsZWN0aW9uLnZp
c2libGVTdGFydCgpKSkgPyAidHJ1ZSIgOiAiZmFsc2UiCi0gICAgICAgICAgICAsIGluU2FtZUxp
bmUoY3VycmVudFNlbGVjdGlvbi52aXNpYmxlRW5kKCksIGVuZE9mRWRpdGFibGVDb250ZW50KGN1
cnJlbnRTZWxlY3Rpb24udmlzaWJsZUVuZCgpKSkgPyAidHJ1ZSIgOiAiZmFsc2UiCi0gICAgICAg
ICAgICAsIHN0YXJ0Q2FyZXQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBTZWxlY3Rpb25Mb2co
UGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIlNlbGVjdGlvbkhhbmRsZXI6OnNob3Vs
ZFVwZGF0ZVNlbGVjdGlvbk9yQ2FyZXRGb3JQb2ludCBtdWx0aWxpbmUgPSAlcyBhYm92ZSA9ICVz
IGJlbG93ID0gJXMgZmlyc3QgbGluZSA9ICVzIGxhc3QgbGluZSA9ICVzIHN0YXJ0ID0gJXMiLAor
ICAgICAgICBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5pc011bHRpbGluZUlucHV0TW9kZSgp
ID8gInRydWUiIDogImZhbHNlIiwKKyAgICAgICAgYWJvdmVDYXJldCA/ICJ0cnVlIiA6ICJmYWxz
ZSIsCisgICAgICAgIGJlbG93Q2FyZXQgPyAidHJ1ZSIgOiAiZmFsc2UiLAorICAgICAgICBpblNh
bWVMaW5lKGN1cnJlbnRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIHN0YXJ0T2ZFZGl0YWJsZUNv
bnRlbnQoY3VycmVudFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSkpID8gInRydWUiIDogImZhbHNl
IiwKKyAgICAgICAgaW5TYW1lTGluZShjdXJyZW50U2VsZWN0aW9uLnZpc2libGVFbmQoKSwgZW5k
T2ZFZGl0YWJsZUNvbnRlbnQoY3VycmVudFNlbGVjdGlvbi52aXNpYmxlRW5kKCkpKSA/ICJ0cnVl
IiA6ICJmYWxzZSIsCisgICAgICAgIHN0YXJ0Q2FyZXQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAog
ICAgIGlmICghbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNNdWx0aWxpbmVJbnB1dE1vZGUo
KSAmJiAoYWJvdmVDYXJldCB8fCBiZWxvd0NhcmV0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjMyLDE0ICsyMzUsMTYgQEAgYm9vbCBTZWxlY3Rpb25IYW5kbGVyOjpzaG91bGRVcGRhdGVT
ZWxlY3Rpb25PckNhcmV0Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG8KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJldFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50ICZwb3NpdGlvbikKK3ZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2V0
Q2FyZXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAg
aWYgKCFtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5pc0lucHV0TW9kZSgpIHx8ICFtX3dlYlBh
Z2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2NhcmV0QWN0aXZlID0gdHJ1ZTsKIAotICAgIFNlbGVjdGlv
bkxvZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJldFBvc2l0aW9uIHJl
cXVlc3RlZCBwb2ludCAlZCwgJWQiLCBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSk7CisgICAg
U2VsZWN0aW9uTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJTZWxlY3Rpb25I
YW5kbGVyOjpzZXRDYXJldFBvc2l0aW9uIHJlcXVlc3RlZCBwb2ludCAlcyIsCisgICAgICAgIFBs
YXRmb3JtOjpJbnRQb2ludChwb3NpdGlvbikudG9TdHJpbmcoKS5jX3N0cigpKTsKIAogICAgIEZy
YW1lKiBmb2N1c2VkRnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IEZyYW1lU2VsZWN0aW9uKiBjb250cm9sbGVyID0gZm9jdXNlZEZyYW1lLT5zZWxlY3Rpb24oKTsK
QEAgLTI3NCw3ICsyNzksNyBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNldENhcmV0UG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgJnBvc2l0aW9uKQogCiAgICAgY29udHJvbGxlci0+
c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CiAKLSAgICBTZWxlY3Rpb25Mb2coTG9nTGV2ZWxJ
bmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbiBwb2ludCB2YWxpZCwgY3Vy
c29yIHVwZGF0ZWQiKTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywg
IlNlbGVjdGlvbkhhbmRsZXI6OnNldENhcmV0UG9zaXRpb24gcG9pbnQgdmFsaWQsIGN1cnNvciB1
cGRhdGVkIik7CiB9CiAKIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6aW5wdXRIYW5kbGVyRGlkRmlu
aXNoUHJvY2Vzc2luZ0NoYW5nZSgpCkBAIC00NDgsNyArNDUzLDkgQEAgYm9vbCBTZWxlY3Rpb25I
YW5kbGVyOjp1cGRhdGVPckhhbmRsZUlucHV0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24mIG5l
d1NlbGVjdGkKICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgU2VsZWN0aW9uTG9nKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnVwZGF0ZU9y
SGFuZGxlSW5wdXRTZWxlY3Rpb24gbWFraW5nIHNlbGVjdGlvbiBjaGFuZ2UgYXR0ZW1wdCB1c2lu
ZyBrZXkgZXZlbnQgJWQiLCBjaGFyYWN0ZXIpOworICAgIFNlbGVjdGlvbkxvZyhQbGF0Zm9ybTo6
TG9nTGV2ZWxJbmZvLAorICAgICAgICAiU2VsZWN0aW9uSGFuZGxlcjo6dXBkYXRlT3JIYW5kbGVJ
bnB1dFNlbGVjdGlvbiBtYWtpbmcgc2VsZWN0aW9uIGNoYW5nZSBhdHRlbXB0IHVzaW5nIGtleSBl
dmVudCAlZCIsCisgICAgICAgIGNoYXJhY3Rlcik7CiAKICAgICBpZiAoc2hvdWxkRXh0ZW5kU2Vs
ZWN0aW9uSW5EaXJlY3Rpb24oY29udHJvbGxlci0+c2VsZWN0aW9uKCksIGNoYXJhY3RlcikpCiAg
ICAgICAgIG1fd2ViUGFnZS0+bV9pbnB1dEhhbmRsZXItPmhhbmRsZUtleWJvYXJkSW5wdXQoUGxh
dGZvcm06OktleWJvYXJkRXZlbnQoY2hhcmFjdGVyLCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6
S2V5RG93biwgS0VZTU9EX1NISUZUKSk7CkBAIC00NzQsNyArNDgxLDEwIEBAIHZvaWQgU2VsZWN0
aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzdGFydCwg
Y29uc3QgV2ViQ29yCiAgICAgbV90aW1lci5zdGFydCgpOwogI2VuZGlmCiAKLSAgICBTZWxlY3Rp
b25Mb2coTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uIGFkanVz
dGVkIHBvaW50cyAlZCwgJWQsICVkLCAlZCIsIHN0YXJ0LngoKSwgc3RhcnQueSgpLCBlbmQueCgp
LCBlbmQueSgpKTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAg
ICAgICAgIlNlbGVjdGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbiBhZGp1c3RlZCBwb2ludHMgJXMs
ICVzIiwKKyAgICAgICAgUGxhdGZvcm06OkludFBvaW50KHN0YXJ0KS50b1N0cmluZygpLmNfc3Ry
KCksCisgICAgICAgIFBsYXRmb3JtOjpJbnRQb2ludChlbmQpLnRvU3RyaW5nKCkuY19zdHIoKSk7
CiAKICAgICAvLyBOb3RlIHRoYXQgSW50UG9pbnQoLTEsIC0xKSBpcyBiZWluZyBvdXIgc2VudGlu
ZWwgc28gZmFyIGZvcgogICAgIC8vIGNsaXBwZWQgb3V0IHNlbGVjdGlvbiBzdGFydGluZyBvciBl
bmRpbmcgbG9jYXRpb24uCkBAIC01NDUsNyArNTU1LDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVy
OjpzZXRTZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHN0YXJ0LCBjb25zdCBXZWJD
b3IKICAgICAgICAgLy8gUmVxdWVzdGVkIHNlbGVjdGlvbiByZXN1bHRzIGluIGFuIGVtcHR5IHNl
bGVjdGlvbiwgc2tpcCB0aGlzIGNoYW5nZS4KICAgICAgICAgc2VsZWN0aW9uUG9zaXRpb25DaGFu
Z2VkKHRydWUgLyogZm9yY2VVcGRhdGVXaXRob3V0Q2hhbmdlICovKTsKIAotICAgICAgICBTZWxl
Y3Rpb25Mb2coTG9nTGV2ZWxXYXJuLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uIHNl
bGVjdGlvbiBwb2ludHMgaW52YWxpZCwgc2VsZWN0aW9uIG5vdCB1cGRhdGVkLiIpOworICAgICAg
ICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIlNlbGVjdGlvbkhhbmRsZXI6
OnNldFNlbGVjdGlvbiBzZWxlY3Rpb24gcG9pbnRzIGludmFsaWQsIHNlbGVjdGlvbiBub3QgdXBk
YXRlZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTU0LDcgKzU2NCw3IEBAIHZv
aWQgU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBzdGFydCwgY29uc3QgV2ViQ29yCiAgICAgICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPm5vdGlm
eVNlbGVjdGlvbkhhbmRsZXNSZXZlcnNlZCgpOwogCiAgICAgY29udHJvbGxlci0+c2V0U2VsZWN0
aW9uKG5ld1NlbGVjdGlvbik7Ci0gICAgU2VsZWN0aW9uTG9nKExvZ0xldmVsSW5mbywgIlNlbGVj
dGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbiBzZWxlY3Rpb24gcG9pbnRzIHZhbGlkLCBzZWxlY3Rp
b24gdXBkYXRlZC4iKTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywg
IlNlbGVjdGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbiBzZWxlY3Rpb24gcG9pbnRzIHZhbGlkLCBz
ZWxlY3Rpb24gdXBkYXRlZC4iKTsKIH0KIAogLy8gRklYTUUgcmUtdXNlIHRoaXMgaW4gY29udGV4
dC4gTXVzdCBiZSB1cGRhdGVkIHRvIGluY2x1ZGUgYW4gb3B0aW9uIHRvIHJldHVybiB0aGUgaHJl
Zi4KQEAgLTYzMyw3ICs2NDMsOSBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVj
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb24sIFRleHRHcmFudQogICAgIEFTU0VS
VChtX3dlYlBhZ2UgJiYgbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKSAmJiBtX3dlYlBh
Z2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKSk7CiAgICAgRnJhbWUqIGZvY3Vz
ZWRGcmFtZSA9IG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBTZWxlY3Rp
b25Mb2coTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0T2JqZWN0IGFkanVz
dGVkIHBvaW50cyAlZCwgJWQiLCBsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSk7CisgICAgU2Vs
ZWN0aW9uTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJTZWxlY3Rpb25IYW5k
bGVyOjpzZWxlY3RPYmplY3QgYWRqdXN0ZWQgcG9pbnRzICVzIiwKKyAgICAgICAgUGxhdGZvcm06
OkludFBvaW50KGxvY2F0aW9uKS50b1N0cmluZygpLmNfc3RyKCkpOwogCiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgcmVsYXRpdmVQb2ludCA9IERPTVN1cHBvcnQ6OmNvbnZlcnRQb2ludFRvRnJhbWUo
bV93ZWJQYWdlLT5tYWluRnJhbWUoKSwgZm9jdXNlZEZyYW1lLCBsb2NhdGlvbik7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvaW50TG9jYXRpb24oZm9jdXNlZEZyYW1lLT52aXNpYmxlUG9zaXRpb25G
b3JQb2ludChyZWxhdGl2ZVBvaW50KSk7CkBAIC02NTIsNyArNjY0LDcgQEAgdm9pZCBTZWxlY3Rp
b25IYW5kbGVyOjpzZWxlY3RPYmplY3QoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAg
IEFTU0VSVChtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpICYmIG1fd2ViUGFnZS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPnNlbGVjdGlvbigpKTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1l
ID0gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIFNlbGVjdGlvbkxvZyhM
b2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3RPYmplY3QgdXNpbmcgY3VycmVu
dCBzZWxlY3Rpb24iKTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywg
IlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCB1c2luZyBjdXJyZW50IHNlbGVjdGlvbiIp
OwogCiAgICAgQVNTRVJUKGZvY3VzZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvblR5cGUo
KSAhPSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbik7CiAKQEAgLTY4MCw3ICs2OTIsNyBA
QCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdChOb2RlKiBub2RlKQogICAgIEFT
U0VSVChtX3dlYlBhZ2UgJiYgbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKSAmJiBtX3dl
YlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKSk7CiAgICAgRnJhbWUqIGZv
Y3VzZWRGcmFtZSA9IG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBTZWxl
Y3Rpb25Mb2coTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0Tm9kZSIpOwor
ICAgIFNlbGVjdGlvbkxvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxl
cjo6c2VsZWN0Tm9kZSIpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBWaXNp
YmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUobm9kZSk7CiAgICAgZm9j
dXNlZEZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7CkBAIC04Njcs
NyArODc5LDkgQEAgYm9vbCBTZWxlY3Rpb25IYW5kbGVyOjppbnB1dE5vZGVPdmVycmlkZXNUb3Vj
aCgpIGNvbnN0CiAvLyBzeXN0ZW0gaXMgbm90IGVudGlyZWx5IFdlYktpdC4KIHZvaWQgU2VsZWN0
aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkKGJvb2wgZm9yY2VVcGRhdGVXaXRo
b3V0Q2hhbmdlKQogewotICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25I
YW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQgZm9yY2VVcGRhdGVXaXRob3V0Q2hhbmdl
ID0gJXMiLCBmb3JjZVVwZGF0ZVdpdGhvdXRDaGFuZ2UgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAg
ICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIlNlbGVjdGlv
bkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0aW9uQ2hhbmdlZCBmb3JjZVVwZGF0ZVdpdGhvdXRDaGFu
Z2UgPSAlcyIsCisgICAgICAgIGZvcmNlVXBkYXRlV2l0aG91dENoYW5nZSA/ICJ0cnVlIiA6ICJm
YWxzZSIpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgY2FuIGdldCBjYWxsZWQgZHVyaW5nIFdlYlBh
Z2Ugc2h1dGRvd24gcHJvY2Vzcy4KICAgICAvLyBJZiB0aGF0IGlzIHRoZSBjYXNlLCBqdXN0IGJh
aWwgb3V0IHNpbmNlIHRoZSBjbGllbnQgaXMgbm90CkBAIC05MDMsNyArOTE3LDkgQEAgdm9pZCBT
ZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQoYm9vbCBmb3JjZVVwZGF0
ZVdpdGhvdXRDaGFuZ2UpCiAgICAgZWxzZSBpZiAoIW1fc2VsZWN0aW9uQWN0aXZlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTZWxlY3Rpb25UaW1pbmdMb2coTG9nTGV2ZWxJbmZvLCAiU2VsZWN0
aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkIHN0YXJ0aW5nIGF0ICVmIiwgbV90
aW1lci5lbGFwc2VkKCkpOworICAgIFNlbGVjdGlvblRpbWluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2
ZWxJbmZvLAorICAgICAgICAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFu
Z2VkIHN0YXJ0aW5nIGF0ICVmIiwKKyAgICAgICAgbV90aW1lci5lbGFwc2VkKCkpOwogCiAgICAg
V2ViQ29yZTo6SW50UmVjdCBzdGFydENhcmV0KERPTVN1cHBvcnQ6OkludmFsaWRQb2ludCwgV2Vi
Q29yZTo6SW50U2l6ZSgpKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGVuZENhcmV0KERPTVN1cHBv
cnQ6OkludmFsaWRQb2ludCwgV2ViQ29yZTo6SW50U2l6ZSgpKTsKQEAgLTkzNywxMCArOTUzLDE4
IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkKGJvb2wg
Zm9yY2VVcGRhdGVXaXRob3V0Q2hhbmdlKQogICAgICAgICByZWdpb25Gb3JUZXh0UXVhZHMocXVh
ZHMsIHZpc2libGVTZWxlY3Rpb25SZWdpb24pOwogCiAjaWYgU0hPV0RFQlVHX1NFTEVDVElPTkhB
TkRMRVIgLy8gRG9uJ3QgcmVseSBqdXN0IG9uIFNlbGVjdGlvbkxvZyB0byBhdm9pZCBsb29wLgot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHVuY2xpcHBlZFJlZ2lvbi5udW1S
ZWN0cygpOyBpKyspCi0gICAgICAgICAgICBTZWxlY3Rpb25Mb2coTG9nTGV2ZWxJbmZvLCAiUmVj
dCBsaXN0IC0gVW5tb2RpZmllZCAjJWQsICglZCwgJWQpICglZCB4ICVkKSIsIGksIHVuY2xpcHBl
ZFJlZ2lvbi5yZWN0cygpW2ldLngoKSwgdW5jbGlwcGVkUmVnaW9uLnJlY3RzKClbaV0ueSgpLCB1
bmNsaXBwZWRSZWdpb24ucmVjdHMoKVtpXS53aWR0aCgpLCB1bmNsaXBwZWRSZWdpb24ucmVjdHMo
KVtpXS5oZWlnaHQoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmlz
aWJsZVNlbGVjdGlvblJlZ2lvbi5udW1SZWN0cygpOyBpKyspCi0gICAgICAgICAgICBTZWxlY3Rp
b25Mb2coTG9nTGV2ZWxJbmZvLCAiUmVjdCBsaXN0ICAtIENsaXBwZWQgdG8gVmlzaWJsZSAjJWQs
ICglZCwgJWQpICglZCB4ICVkKSIsIGksIHZpc2libGVTZWxlY3Rpb25SZWdpb24ucmVjdHMoKVtp
XS54KCksIHZpc2libGVTZWxlY3Rpb25SZWdpb24ucmVjdHMoKVtpXS55KCksIHZpc2libGVTZWxl
Y3Rpb25SZWdpb24ucmVjdHMoKVtpXS53aWR0aCgpLCB2aXNpYmxlU2VsZWN0aW9uUmVnaW9uLnJl
Y3RzKClbaV0uaGVpZ2h0KCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5j
bGlwcGVkUmVnaW9uLm51bVJlY3RzKCk7IGkrKykgeworICAgICAgICAgICAgU2VsZWN0aW9uTG9n
KFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICAgICAgICAgIlJlY3QgbGlzdCAtIFVu
bW9kaWZpZWQgIyVkLCAlcyIsCisgICAgICAgICAgICAgICAgaSwKKyAgICAgICAgICAgICAgICB1
bmNsaXBwZWRSZWdpb24ucmVjdHMoKVtpXS50b1N0cmluZygpLmNfc3RyKCkpOworICAgICAgICB9
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2aXNpYmxlU2VsZWN0aW9uUmVnaW9u
Lm51bVJlY3RzKCk7IGkrKykgeworICAgICAgICAgICAgU2VsZWN0aW9uTG9nKFBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sCisgICAgICAgICAgICAgICAgIlJlY3QgbGlzdCAgLSBDbGlwcGVkIHRvIFZp
c2libGUgIyVkLCAlcyIsCisgICAgICAgICAgICAgICAgaSwKKyAgICAgICAgICAgICAgICB2aXNp
YmxlU2VsZWN0aW9uUmVnaW9uLnJlY3RzKClbaV0udG9TdHJpbmcoKS5jX3N0cigpKTsKKyAgICAg
ICAgfQogI2VuZGlmCiAKICAgICAgICAgYm9vbCBzaG91bGRDYXJlQWJvdXRQb3NzaWJsZUNsaXBw
ZWRPdXRTZWxlY3Rpb24gPSBmcmFtZSAhPSBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpIHx8IG1fd2Vi
UGFnZS0+bV9pbnB1dEhhbmRsZXItPmlzSW5wdXRNb2RlKCk7CkBAIC05NTgsMTQgKzk4MiwxOCBA
QCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0aW9uQ2hhbmdlZChib29sIGZv
cmNlVXBkYXRlV2l0aG91dENoYW5nZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIFNlbGVjdGlv
bkxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxl
cjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2VkIFN0YXJ0IFJlY3Q9KCVkLCAlZCkgKCVkIHggJWQp
IEVuZCBSZWN0PSglZCwgJWQpICglZCB4ICVkKSIsCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0
Q2FyZXQueCgpLCBzdGFydENhcmV0LnkoKSwgc3RhcnRDYXJldC53aWR0aCgpLCBzdGFydENhcmV0
LmhlaWdodCgpLCBlbmRDYXJldC54KCksIGVuZENhcmV0LnkoKSwgZW5kQ2FyZXQud2lkdGgoKSwg
ZW5kQ2FyZXQuaGVpZ2h0KCkpOworICAgIFNlbGVjdGlvbkxvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJ
bmZvLAorICAgICAgICAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFuZ2Vk
IFN0YXJ0IFJlY3Q9JXMgRW5kIFJlY3Q9JXMiLAorICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdChz
dGFydENhcmV0KS50b1N0cmluZygpLmNfc3RyKCksCisgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0
KGVuZENhcmV0KS50b1N0cmluZygpLmNfc3RyKCkpOwogCiAgICAgaWYgKG1fd2ViUGFnZS0+bV9z
ZWxlY3Rpb25PdmVybGF5KQogICAgICAgICBtX3dlYlBhZ2UtPm1fc2VsZWN0aW9uT3ZlcmxheS0+
ZHJhdyh2aXNpYmxlU2VsZWN0aW9uUmVnaW9uKTsKIAogICAgIG1fd2ViUGFnZS0+bV9jbGllbnQt
Pm5vdGlmeVNlbGVjdGlvbkRldGFpbHNDaGFuZ2VkKHN0YXJ0Q2FyZXQsIGVuZENhcmV0LCB2aXNp
YmxlU2VsZWN0aW9uUmVnaW9uLCBpbnB1dE5vZGVPdmVycmlkZXNUb3VjaCgpKTsKLSAgICBTZWxl
Y3Rpb25UaW1pbmdMb2coTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9u
UG9zaXRpb25DaGFuZ2VkIGNvbXBsZXRlZCBhdCAlZiIsIG1fdGltZXIuZWxhcHNlZCgpKTsKKyAg
ICBTZWxlY3Rpb25UaW1pbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIlNl
bGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0aW9uQ2hhbmdlZCBjb21wbGV0ZWQgYXQgJWYi
LAorICAgICAgICBtX3RpbWVyLmVsYXBzZWQoKSk7CiB9CiAKIApAQCAtOTgxLDcgKzEwMDksNyBA
QCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6Om5vdGlmeUNhcmV0UG9zaXRpb25DaGFuZ2VkSWZOZWVk
ZWQoKQogCiB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRpb25DaGFuZ2VkKCkKIHsK
LSAgICBTZWxlY3Rpb25Mb2coTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6Y2FyZXRQ
b3NpdGlvbkNoYW5nZWQiKTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIlNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRpb25DaGFuZ2VkIik7CiAKICAgICBXZWJD
b3JlOjpJbnRSZWN0IGNhcmV0TG9jYXRpb247CiAgICAgLy8gSWYgdGhlIGlucHV0IGZpZWxkIGlz
IG5vdCBhY3RpdmUsIHdlIG11c3QgYmUgdHVybmluZyBvZmYgdGhlIGNhcmV0LgpAQCAtMTAwOSw4
ICsxMDM3LDkgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCgp
CiAKICAgICBtX2NhcmV0QWN0aXZlID0gIWNhcmV0TG9jYXRpb24uaXNFbXB0eSgpOwogCi0gICAg
U2VsZWN0aW9uTG9nKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRp
b25DaGFuZ2VkIGNhcmV0IFJlY3QgJWQsICVkLCAlZHglZCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjYXJldExvY2F0aW9uLngoKSwgY2FyZXRMb2NhdGlvbi55KCksIGNhcmV0TG9jYXRpb24u
d2lkdGgoKSwgY2FyZXRMb2NhdGlvbi5oZWlnaHQoKSk7CisgICAgU2VsZWN0aW9uTG9nKFBsYXRm
b3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJTZWxlY3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0
aW9uQ2hhbmdlZCBjYXJldCBSZWN0ICVzIiwKKyAgICAgICAgUGxhdGZvcm06OkludFJlY3QoY2Fy
ZXRMb2NhdGlvbikudG9TdHJpbmcoKS5jX3N0cigpKTsKIAogICAgIGJvb2wgaXNTaW5nbGVMaW5l
SW5wdXQgPSAhbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNNdWx0aWxpbmVJbnB1dE1vZGUo
KTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG5vZGVCb3VuZGluZ0JveCA9IGlzU2luZ2xlTGluZUlu
cHV0ID8gbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+Ym91bmRpbmdCb3hGb3JJbnB1dEZpZWxk
KCkgOiBXZWJDb3JlOjpJbnRSZWN0KCk7CkBAIC0xMDIyLDggKzEwNTEsMTAgQEAgdm9pZCBTZWxl
Y3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCgpCiAgICAgICAgIG5vZGVCb3VuZGlu
Z0JveC5pbnRlcnNlY3QoY2xpcHBpbmdSZWN0Rm9yQ29udGVudCk7CiAgICAgfQogCi0gICAgU2Vs
ZWN0aW9uTG9nKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRpb25D
aGFuZ2VkOiAlcyBsaW5lIGlucHV0LCBzaW5nbGUgbGluZSBib3VuZGluZyBib3ggKCVkLCAlZCkg
JWR4JWQlcyIsCi0gICAgICAgIGlzU2luZ2xlTGluZUlucHV0ID8gInNpbmdsZSIgOiAibXVsdGki
LCBub2RlQm91bmRpbmdCb3gueCgpLCBub2RlQm91bmRpbmdCb3gueSgpLCBub2RlQm91bmRpbmdC
b3gud2lkdGgoKSwgbm9kZUJvdW5kaW5nQm94LmhlaWdodCgpLAorICAgIFNlbGVjdGlvbkxvZyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiU2VsZWN0aW9uSGFuZGxlcjo6Y2FyZXRQ
b3NpdGlvbkNoYW5nZWQ6ICVzIGxpbmUgaW5wdXQsIHNpbmdsZSBsaW5lIGJvdW5kaW5nIGJveCAl
cyVzIiwKKyAgICAgICAgaXNTaW5nbGVMaW5lSW5wdXQgPyAic2luZ2xlIiA6ICJtdWx0aSIsCisg
ICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0KG5vZGVCb3VuZGluZ0JveCkudG9TdHJpbmcoKS5jX3N0
cigpLAogICAgICAgICBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5lbGVtZW50VGV4dCgpLmlz
RW1wdHkoKSA/ICIsIGVtcHR5IHRleHQgZmllbGQiIDogIiIpOwogCiAgICAgbV93ZWJQYWdlLT5t
X2NsaWVudC0+bm90aWZ5Q2FyZXRDaGFuZ2VkKGNhcmV0TG9jYXRpb24sIG1fd2ViUGFnZS0+bV90
b3VjaEV2ZW50SGFuZGxlci0+bGFzdEZhdEZpbmdlcnNSZXN1bHQoKS5pc1RleHRJbnB1dCgpIC8q
IHVzZXJUb3VjaFRyaWdnZXJlZCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcAppbmRleCA5MmJmZTI5M2I1NWY0MWQw
N2U4OTAzMmNmMTQwZjg3ODg0MmY3MWNmLi5hMTcxN2JlMWQyOTZjYzk4NWExZTFiZDVmOTMwZDNk
YmEwMmJjZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9TdXJmYWNlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvU3VyZmFjZVBvb2wuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU3VyZmFjZVBv
b2w6OmluaXRpYWxpemUoY29uc3QgUGxhdGZvcm06OkludFNpemUmIHRpbGVTaXplKQogICAgICAg
ICBieXRlTGltaXQgKz0gc2NyZWVuU2l6ZS53aWR0aCgpICogc2NyZWVuU2l6ZS5oZWlnaHQoKSAq
IDQ7IC8vIHZpc2libGUgdGlsZSBidWZmZXIgLSBGSVhNRSwgZnJhZ2lsZSBmb3IgZnVydGhlciBt
YWludGVuYW5jZSBhcyBpdHMgc2l6ZSBkb2Vzbid0IHN5bmMgdXAgd2l0aCB0aGUgcmVzdAogICAg
ICAgICBib29sIHN1Y2Nlc3MgPSBQbGF0Zm9ybTo6R3JhcGhpY3M6OmNyZWF0ZVBpeG1hcEdyb3Vw
KFNIQVJFRF9QSVhNQVBfR1JPVVAsIGJ5dGVMaW1pdCk7CiAgICAgICAgIGlmICghc3VjY2Vzcykg
ewotICAgICAgICAgICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVsV2FybiwKKyAgICAgICAgICAg
IFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsV2FybiwKICAgICAgICAgICAg
ICAgICAiU2hhcmVkIGJ1ZmZlciBwb29sIGNvdWxkIG5vdCBiZSBzZXQgdXAsIHVzaW5nIHJlZ3Vs
YXIgbWVtb3J5IGFsbG9jYXRpb24gaW5zdGVhZC4iKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179089</attachid>
            <date>2012-12-12 11:33:03 -0800</date>
            <delta_ts>2012-12-17 12:01:04 -0800</delta_ts>
            <desc>Slightly better patch</desc>
            <filename>bug-104823-20121212143002.patch</filename>
            <type>text/plain</type>
            <size>85748</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwMmIxMTA5ODQ0YjJlNDFiZWY5MmJmOWY2MjExMWFlNjAzZWMzNDBmLi5jNWJjYmRjY2M3
YWU1NGQyY2E5NDk4MWNkM2NhZjkxODM4ZGY5NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMTEgQEAKKzIwMTItMTItMTIgIEpha29iIFBldHNvdml0cyAgPGpw
ZXRzb3ZpdHNAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQ2xlYW4gdXAgbG9nIG91
dHB1dCBpbiBXZWJLaXQvYmxhY2tiZXJyeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNDgyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlaGF2aW9yLXByZXNlcnZpbmcgY2hhbmdlLCBmaXhpbmcgbWFu
eSBpc3N1ZXMgd2l0aCBsb2dnaW5nOgorICAgICAgICAtIENhbGwgbG9nQWx3YXlzKCkgaW5zdGVh
ZCBvZiBCQkxPRygpIGluIGFscmVhZHkgZGVmaW5lZC1vdXQgZGVidWcgYmxvY2tzLgorICAgICAg
ICAtIENhbGwgbG9nQWx3YXlzKCkgaW5zdGVhZCBvZiBCQkxPRygpIGZvciBzZXJpb3VzIGVycm9y
cywgdG9vLgorICAgICAgICAtIEZpeCBidWlsZCBmb3IgdGhlIERFQlVHX09WRVJGTE9XX0RFVEVD
VElPTiBibG9jayBpbiBDaHJvbWVDbGllbnRCbGFja0JlcnJ5LgorICAgICAgICAtIEZpeCBidWls
ZCBmb3IgZG91YmxlIGRlY2xhcmF0aW9ucyBvZiAiZWxhcHNlZCIgdmFyaWFibGVzIGluIFJlbmRl
clF1ZXVlLgorICAgICAgICAtIEZpeCBjb21waWxlciB3YXJuaW5ncyBkdWUgdG8gZm9ybWF0IHN0
cmluZyAvIHBhcmFtZXRlciBtaXNtYXRjaGVzLgorICAgICAgICAtIFJlbW92ZSB1bm5lY2Vzc2Fy
eSB0cmFpbGluZyBuZXdsaW5lcyBpbiBsb2dnZWQgc3RyaW5ncy4KKyAgICAgICAgLSBDb25zaXN0
ZW50bHkgdXNlIFBsYXRmb3JtOjogYXMgcHJlZml4IGV4Y2VwdCBpbnNpZGUgV2ViQ29yZS1uYW1l
c3BhY2VkIGNvZGUuCisgICAgICAgIC0gVXNlIGluZGVudGF0aW9uIHRoYXQgYWN0dWFsbHkgcGFz
c2VzIFdlYktpdCBzdHlsZSBjaGVja3MuCisgICAgICAgIC0gQ2hhbmdlIHBvaW50L3NpemUvcmVj
dCBvdXRwdXQgdG8gdXNlIFBsYXRmb3JtIHRvU3RyaW5nKCkgZm9ybWF0cyBmb3IgY29uc2lzdGVu
Y3kuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6YmVzdERpdmlzb3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpC
YWNraW5nU3RvcmVQcml2YXRlOjpzdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3BlbmRTY3JlZW5V
cGRhdGVzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0
ZTo6cmVzdW1lQmFja2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZVNjcmVlblVwZGF0ZXMpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZXBhaW50KToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2xvd1Njcm9sbCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnNjcm9s
bCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJl
bmRlckpvYik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OnNldEJhY2tpbmdTdG9yZVJlY3QpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpC
YWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0FmdGVyQmFja2luZ1N0b3JlUmVjdENoYW5n
ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnNj
cm9sbEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlbmRlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tp
bmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0ZvclNjcm9sbE9yTm90
UmVuZGVyZWRSZWdpb24pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3Rv
cmVQcml2YXRlOjpyZW5kZXJDb250ZW50cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRUb1dpbmRvdyk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmZpbGxXaW5kb3cpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93KToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6Y2xlYXJX
aW5kb3cpOgorICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnNldExvYWRTdGF0ZSk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjp6b29tQWJvdXRQb2ludCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpjb250ZW50c1NpemVDaGFuZ2VkKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6Onpvb21Ub0luaXRp
YWxTY2FsZU9uTG9hZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnRv
dWNoRXZlbnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6
c2NoZWR1bGVSb290TGF5ZXJDb21taXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9vdExheWVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZVByaXZhdGU6OmNvbW1pdFJvb3RMYXllcklmTmVlZGVkKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnJvb3RMYXllckNvbW1pdFRpbWVy
RmlyZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6b3ZlcmZsb3dF
eGNlZWRzQ29udGVudHNTaXplKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMu
Y3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpGYXRGaW5nZXJzOjpjaGVja0Zpbmdl
ckludGVyc2VjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkZhdEZpbmdlcnM6
OmZpbmRJbnRlcnNlY3RpbmdSZWdpb25zKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
RmF0RmluZ2Vyczo6Y2hlY2tGb3JUZXh0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0
SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbnZlcnRTdHJpbmdU
b1djaGFyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y29udmVydFN0cmluZ1RvV2No
YXJWZWN0b3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojpjb252ZXJ0U3Bhbm5hYmxl
U3RyaW5nVG9TdHJpbmcpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRs
ZXI6OmxlYXJuVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxl
cjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFBy
b2Nlc3NlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2hv
dWxkUmVxdWVzdFNwZWxsQ2hlY2tpbmdPcHRpb25zRm9yUG9pbnQpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnJlcXVlc3RTcGVsbGluZ0NoZWNraW5nT3B0aW9u
cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0RWxlbWVu
dFVuZm9jdXNlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6
c2V0SW5wdXRNb2RlRW5hYmxlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0
SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OklucHV0SGFuZGxlcjo6bm9kZVRleHRDaGFuZ2VkKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjplbnN1cmVGb2N1c1RleHRFbGVtZW50VmlzaWJsZSk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZnJhbWVVbmxvYWRl
ZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2VsZWN0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0
U2VsZWN0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpo
YW5kbGVLZXlib2FyZElucHV0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRI
YW5kbGVyOjpkZWxldGVUZXh0UmVsYXRpdmVUb0N1cnNvcik6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2UpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldENvbXBvc2luZ1JlZ2lvbik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRp
b24pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldFRleHQp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldFRleHRBdHRy
aWJ1dGVzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRS
ZWxhdGl2ZUN1cnNvclBvc2l0aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5w
dXRIYW5kbGVyOjpzZXRTcGFubmFibGVUZXh0QW5kUmVsYXRpdmVDdXJzb3IpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldENvbXBvc2luZ1RleHQpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmNvbW1pdFRleHQpOgorICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6YWRkVG9SZWd1bGFyUXVldWUpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6YWRkVG9TY3JvbGxab29tUXVldWUpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6cmVuZGVyKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFy
UmVuZGVySm9icyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpz
dGFydFJlZ3VsYXJSZW5kZXJKb2JCYXRjaElmTmVlZGVkKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6UmVuZGVyUXVldWU6OnJlbmRlclZpc2libGVab29tSm9iKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6OnJlbmRlclZpc2libGVTY3JvbGxKb2IpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJl
bmRlckpvYik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpyZW5k
ZXJOb25WaXNpYmxlU2Nyb2xsSm9iKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5k
bGVyOjpjYW5jZWxTZWxlY3Rpb24pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxl
Y3Rpb25IYW5kbGVyOjpzaG91bGRVcGRhdGVTZWxlY3Rpb25PckNhcmV0Rm9yUG9pbnQpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJldFBvc2l0
aW9uKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6dXBk
YXRlT3JIYW5kbGVJbnB1dFNlbGVjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNlbGVjdGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0aW9uQ2hhbmdlZCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcDoK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3VyZmFjZVBvb2w6OmluaXRpYWxpemUpOgor
CiAyMDEyLTEyLTExICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFZpYnJhdGlvbiBBUEk6IElETCB0eXBlIGRvZXNuJ3QgbWF0Y2ggaW1wbGVtZW50YXRp
b24gdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3Bw
CmluZGV4IGM5MWEyYWQ4MTJjOTY1YWZiZGJiZGZjNGY2ZDI3Mzk4ZmRkYzUwMDkuLmUzN2QyOGNk
N2I2MGFjZTM4NTJlYThlYzlmZjJmMzkyMjJjZDgzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTE0MCw5ICsxNDAsMTAgQEAgc3RhdGlj
IERpdmlzb3IgYmVzdERpdmlzb3IoUGxhdGZvcm06OkludFNpemUgc2l6ZSwgaW50IHRpbGVXaWR0
aCwgaW50IHRpbGVIZWlnaHQKICAgICAgICAgaWYgKGlzUGVyZmVjdFdpZHRoIHx8IGlzUGVyZmVj
dEhlaWdodCkgewogICAgICAgICAgICAgYmVzdERpdmlzb3IgPSBkaXZpc29yOyAvLyBGb3VuZCBh
IHBlcmZlY3QgZml0IQogI2lmIERFQlVHX1RJTEVNQVRSSVgKLSAgICAgICAgICAgIEJCTE9HKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiYmVzdERpdmlzb3IgZm91bmQg
cGVyZmVjdCBzaXplIGlzUGVyZmVjdFdpZHRoPSVzIGlzUGVyZmVjdEhlaWdodD0lcyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGVyZmVjdFdpZHRoID8gInRydWUiIDog
ImZhbHNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQZXJmZWN0SGVp
Z2h0ID8gInRydWUiIDogImZhbHNlIik7CisgICAgICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlz
KFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAgICAgICAgICJiZXN0RGl2aXNv
ciBmb3VuZCBwZXJmZWN0IHNpemUgaXNQZXJmZWN0V2lkdGg9JXMgaXNQZXJmZWN0SGVpZ2h0PSVz
IiwKKyAgICAgICAgICAgICAgICBpc1BlcmZlY3RXaWR0aCA/ICJ0cnVlIiA6ICJmYWxzZSIsCisg
ICAgICAgICAgICAgICAgaXNQZXJmZWN0SGVpZ2h0ID8gInRydWUiIDogImZhbHNlIik7CiAjZW5k
aWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yODUsNyArMjg2LDcgQEAgYm9v
bCBCYWNraW5nU3RvcmVQcml2YXRlOjppc09wZW5HTENvbXBvc2l0aW5nKCkgY29uc3QKIHZvaWQg
QmFja2luZ1N0b3JlUHJpdmF0ZTo6c3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKQogewogICAg
IGlmIChhdG9taWNfYWRkX3ZhbHVlKCZtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzLCAwKSkg
ewotICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAg
ICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAogICAgICAgICAgICAgIkJhY2tpbmdz
dG9yZSBhbHJlYWR5IHN1c3BlbmRlZCwgaW5jcmVhc2luZyBzdXNwZW5kIGNvdW50ZXIuIik7CiAg
ICAgfQogCkBAIC0yOTUsNyArMjk2LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNw
ZW5kQmFja2luZ1N0b3JlVXBkYXRlcygpCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3Bl
bmRTY3JlZW5VcGRhdGVzKCkKIHsKICAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRlcykgewot
ICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAg
ICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAogICAgICAgICAgICAgIlNjcmVlbiBhbHJl
YWR5IHN1c3BlbmRlZCwgaW5jcmVhc2luZyBzdXNwZW5kIGNvdW50ZXIuIik7CiAgICAgfQogCkBA
IC0zMTIsNyArMzEzLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVCYWNraW5n
U3RvcmVVcGRhdGVzKCkKICAgICB1bnNpZ25lZCBjdXJyZW50VmFsdWUgPSBhdG9taWNfYWRkX3Zh
bHVlKCZtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzLCAwKTsKICAgICBBU1NFUlQoY3VycmVu
dFZhbHVlID49IDEpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPCAxKSB7Ci0gICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVs
Q3JpdGljYWwsCisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVs
Q3JpdGljYWwsCiAgICAgICAgICAgICAiQ2FsbCBtaXNtYXRjaDogQmFja2luZ3N0b3JlIGhhc24n
dCBiZWVuIHN1c3BlbmRlZCwgdGhlcmVmb3JlIHdvbid0IHJlc3VtZSEiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlc3VtZVNjcmVlblVwZGF0ZXMoQmFja2luZ1N0b3JlOjpSZXN1bWVVcGRhdGVPcGVyYXRpbwog
ICAgIEFTU0VSVChtX3N1c3BlbmRTY3JlZW5VcGRhdGVzKTsKIAogICAgIGlmICghbV9zdXNwZW5k
U2NyZWVuVXBkYXRlcykgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlz
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICBQbGF0Zm9y
bTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAogICAgICAgICAgICAgIkNh
bGwgbWlzbWF0Y2g6IFNjcmVlbiBoYXNuJ3QgYmVlbiBzdXNwZW5kZWQsIHRoZXJlZm9yZSB3b24n
dCByZXN1bWUhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNDIsNyArMzQzLDcgQEAg
dm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVTY3JlZW5VcGRhdGVzKEJhY2tpbmdTdG9y
ZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW8KICAgICAgICAgbV9yZXN1bWVPcGVyYXRpb24gPSBvcDsK
IAogICAgIGlmIChtX3N1c3BlbmRTY3JlZW5VcGRhdGVzID49IDIpIHsgLy8gd2UncmUgc3RpbGwg
c3VzcGVuZGVkCi0gICAgICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbElu
Zm8sCisgICAgICAgIEJCTE9HKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCiAgICAgICAgICAgICAi
U2NyZWVuIGFuZCBiYWNraW5nc3RvcmUgc3RpbGwgc3VzcGVuZGVkLCBkZWNyZWFzaW5nIHN1c3Bl
bmQgY291bnRlci4iKTsKICAgICAgICAgLS1tX3N1c3BlbmRTY3JlZW5VcGRhdGVzOwogICAgICAg
ICByZXR1cm47CkBAIC00MTksMTEgKzQyMCwxMSBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlcGFpbnQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHdpbmRvd1JlY3QsCiAgICAgICAgICAg
ICByZXR1cm47CiAKICNpZiBERUJVR19XRUJDT1JFX1JFUVVFU1RTCi0gICAgICAgIEJCTE9HKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjpyZXBhaW50IHJlY3Q9JWQsJWQg
JWR4JWQgY29udGVudENoYW5nZWQ9JXMgaW1tZWRpYXRlPSVzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudENoYW5n
ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaW1tZWRpYXRlID8gInRydWUiIDogImZhbHNlIikpOworICAgICAgICBQbGF0Zm9ybTo6bG9n
QWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAgICAgIkJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlcGFpbnQgcmVjdD0lcyBjb250ZW50Q2hhbmdlZD0lcyBpbW1lZGlhdGU9
JXMiLAorICAgICAgICAgICAgcmVjdC50b1N0cmluZygpLmNfc3RyKCksCisgICAgICAgICAgICBj
b250ZW50Q2hhbmdlZCA/ICJ0cnVlIiA6ICJmYWxzZSIsCisgICAgICAgICAgICBpbW1lZGlhdGUg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKICNlbmRpZgogCiAgICAgICAgIGlmIChpbW1lZGlhdGUpIHsK
QEAgLTQ2OSw3ICs0NzAsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNsb3dTY3JvbGwo
Y29uc3QgUGxhdGZvcm06OkludFNpemUmIGRlbHRhLCBjb25zdCBQbGF0ZgogI2lmIERFQlVHX0JB
Q0tJTkdTVE9SRQogICAgIC8vIFN0b3AgdGhlIHRpbWUgbWVhc3VyZW1lbnQuCiAgICAgZG91Ymxl
IGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwotICAgIEJCTE9HKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2xv
d1Njcm9sbCBlbGFwc2VkPSVmIiwgZWxhcHNlZCk7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNsb3dTY3Jv
bGwgZWxhcHNlZD0lZiIsIGVsYXBzZWQpOwogI2VuZGlmCiB9CiAKQEAgLTUwMiw3ICs1MDMsNyBA
QCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNjcm9sbChjb25zdCBQbGF0Zm9ybTo6SW50U2l6
ZSYgZGVsdGEsCiAjaWYgREVCVUdfQkFDS0lOR1NUT1JFCiAgICAgLy8gU3RvcCB0aGUgdGltZSBt
ZWFzdXJlbWVudC4KICAgICBkb3VibGUgZWxhcHNlZCA9IFdURjo6Y3VycmVudFRpbWUoKSAtIHRp
bWU7Ci0gICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJC
YWNraW5nU3RvcmVQcml2YXRlOjpzY3JvbGwgZHg9JWQsIGR5PSVkIGVsYXBzZWQ9JWYiLCBkZWx0
YS53aWR0aCgpLCBkZWx0YS5oZWlnaHQoKSwgZWxhcHNlZCk7CisgICAgUGxhdGZvcm06OmxvZ0Fs
d2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNj
cm9sbCBkeD0lZCwgZHk9JWQgZWxhcHNlZD0lZiIsIGRlbHRhLndpZHRoKCksIGRlbHRhLmhlaWdo
dCgpLCBlbGFwc2VkKTsKICNlbmRpZgogfQogCkBAIC01NjMsNyArNTY0LDcgQEAgdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpyZW5kZXJKb2IoKQogICAgIGluc3RydW1lbnRCZWdpbkZyYW1lKCk7
CiAKICNpZiBERUJVR19CQUNLSU5HU1RPUkUKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9n
QWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiQmFja2luZ1N0
b3JlUHJpdmF0ZTo6cmVuZGVySm9iIik7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9y
bTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckpvYiIpOwog
I2VuZGlmCiAKICAgICBtX3JlbmRlclF1ZXVlLT5yZW5kZXIoIW1fc3VzcGVuZFJlZ3VsYXJSZW5k
ZXJKb2JzKTsKQEAgLTczNSwxNSArNzM2LDEwIEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6
c2V0QmFja2luZ1N0b3JlUmVjdChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgYmFja2luZ1N0CiAg
ICAgICAgIHJldHVybjsKIAogI2lmIERFQlVHX1RJTEVNQVRSSVgKLSAgICBCQkxPRyhCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNl
dEJhY2tpbmdTdG9yZVJlY3QgY2hhbmdlZCBmcm9tICglZCwlZCAlZHglZCkgdG8gKCVkLCVkICVk
eCVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmFja2luZ1N0b3JlUmVj
dC54KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmFja2luZ1N0b3JlUmVj
dC55KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmFja2luZ1N0b3JlUmVj
dC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEJhY2tpbmdTdG9y
ZVJlY3QuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVS
ZWN0LngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZVJlY3QueSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlUmVjdC53aWR0aCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlUmVjdC5oZWlnaHQoKSk7Cisg
ICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAg
ICAgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVJlY3QgY2hhbmdlZCBmcm9t
ICVzIHRvICVzIiwKKyAgICAgICAgY3VycmVudEJhY2tpbmdTdG9yZVJlY3QudG9TdHJpbmcoKS5j
X3N0cigpLAorICAgICAgICBiYWNraW5nU3RvcmVSZWN0LnRvU3RyaW5nKCkuY19zdHIoKSk7CiAj
ZW5kaWYKIAogICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBjdXJyZW50U3RhdGUgPSBmcm9udFN0
YXRlKCk7CkBAIC04MzgsNyArODM0LDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRh
dGVUaWxlc0FmdGVyQmFja2luZ1N0b3JlUmVjdENoYW5nZSgpCiAgICAgICAgICAgICAgICAgUGxh
dGZvcm06OkludFJlY3RSZWdpb24gdGlsZU5vdFJlbmRlcmVkUmVnaW9uID0gUGxhdGZvcm06Oklu
dFJlY3RSZWdpb246OmludGVyc2VjdFJlZ2lvbnMobV9yZW5kZXJRdWV1ZS0+cmVndWxhclJlbmRl
ckpvYnNOb3RSZW5kZXJlZFJlZ2lvbigpLCByZWN0KTsKICAgICAgICAgICAgICAgICBjbGVhckFu
ZFVwZGF0ZVRpbGVPZk5vdFJlbmRlcmVkUmVnaW9uKGluZGV4LCB0aWxlQnVmZmVyLCB0aWxlTm90
UmVuZGVyZWRSZWdpb24sIGN1cnJlbnRTdGF0ZSk7CiAjaWYgREVCVUdfQkFDS0lOR1NUT1JFCi0g
ICAgICAgICAgICAgICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGlj
YWwsICJCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0FmdGVyQmFja2luZ1N0b3JlUmVj
dENoYW5nZSBkaWQgY2xlYXIgdGlsZSAlcyIsCisgICAgICAgICAgICAgICAgUGxhdGZvcm06Omxv
Z0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgICAgICAgICAgICAg
IkJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVzQWZ0ZXJCYWNraW5nU3RvcmVSZWN0Q2hh
bmdlIGRpZCBjbGVhciB0aWxlICVzIiwKICAgICAgICAgICAgICAgICAgICAgdGlsZU5vdFJlbmRl
cmVkUmVnaW9uLmV4dGVudHMoKS50b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtOTc4LDkgKzk3NSw5IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6c2Nyb2xsQmFja2luZ1N0b3JlKGludCBkZWx0YVgsIGludCBkZWx0YVkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wcmVmZXJyZWRUaWxlTWF0cml4RGltZW5zaW9uKTsK
IAogI2lmIERFQlVHX1RJTEVNQVRSSVgKLSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6OnNjcm9sbEJhY2tpbmdTdG9y
ZSBkaXZpc29yICVkeCVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdmlzb3IuZmly
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZpc29yLnNlY29uZCk7CisgICAgUGxh
dGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgIkJh
Y2tpbmdTdG9yZVByaXZhdGU6OnNjcm9sbEJhY2tpbmdTdG9yZSBkaXZpc29yICVkeCVkIiwKKyAg
ICAgICAgZGl2aXNvci5maXJzdCwgZGl2aXNvci5zZWNvbmQpOwogI2VuZGlmCiAKICAgICAvLyBJ
bml0aWFsaXplIGEgcmVjdCB3aXRoIHRoYXQgbmV3IGdlb21ldHJ5LgpAQCAtMTA1MSwxMCArMTA0
OCwxMCBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlcihjb25zdCBQbGF0Zm9ybTo6
SW50UmVjdCYgcmVjdCkKICAgICB1cGRhdGVUaWxlTWF0cml4SWZOZWVkZWQoKTsKIAogI2lmIERF
QlVHX0JBQ0tJTkdTVE9SRQotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZl
bENyaXRpY2FsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY2tpbmdTdG9yZVByaXZh
dGU6OnJlbmRlciByZWN0PSglZCwlZCAlZHglZCksIG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0
ZXMgPSAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBQ
bGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAi
QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyIHJlY3Q9JXMsIG1fc3VzcGVuZEJhY2tpbmdTdG9y
ZVVwZGF0ZXMgPSAlcyIsCisgICAgICAgIHJlY3QudG9TdHJpbmcoKS5jX3N0cigpLAorICAgICAg
ICBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID8gInRydWUiIDogImZhbHNlIik7CiAjZW5k
aWYKIAogICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBjdXJyZW50U3RhdGUgPSBmcm9udFN0YXRl
KCk7CkBAIC0xMjQ4LDcgKzEyNDUsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRW
aXNpYmxlQ29udGVudHMoYm9vbCBmb3JjZSkKICAgICAvLyBVc2UgaW52YWxpZGF0ZVdpbmRvdygp
IGluc3RlYWQuCiAgICAgQVNTRVJUKCFzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKTsK
ICAgICBpZiAoc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZl
bENyaXRpY2FsLAorICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZl
bENyaXRpY2FsLAogICAgICAgICAgICAgIkJhY2tpbmdTdG9yZTo6YmxpdFZpc2libGVDb250ZW50
cyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBpbiBkaXJlY3QgcmVuZGVyaW5nIG1vZGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMDcsMTEgKzEzMDQsOSBAQCB2b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3JjZSkKICNlbmRpZgogCiAj
aWYgREVCVUdfQkFDS0lOR1NUT1JFCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5
cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKLSAgICAgICAgIkJhY2tp
bmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoKTogZHN0UmVjdD0oJWQsJWQpICVk
eCVkLCBkb2N1bWVudFNyY1JlY3Q9KCVmLCAlZikgJWYgeCAlZiwgc2NhbGU9JWYiLAotICAgICAg
ICBkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWln
aHQoKSwKLSAgICAgICAgZG9jdW1lbnRTcmNSZWN0LngoKSwgZG9jdW1lbnRTcmNSZWN0LnkoKSwg
ZG9jdW1lbnRTcmNSZWN0LndpZHRoKCksIGRvY3VtZW50U3JjUmVjdC5oZWlnaHQoKSwKLSAgICAg
ICAgdmlld3BvcnRBY2Nlc3Nvci0+c2NhbGUoKSk7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgIkJhY2tpbmdTdG9yZVByaXZhdGU6
OmJsaXRWaXNpYmxlQ29udGVudHMoKTogZHN0UmVjdD0lcywgZG9jdW1lbnRTcmNSZWN0PSVzLCBz
Y2FsZT0lZiIsCisgICAgICAgIGRzdFJlY3QudG9TdHJpbmcoKS5jX3N0cigpLCBkb2N1bWVudFNy
Y1JlY3QudG9TdHJpbmcoKS5jX3N0cigpLCB2aWV3cG9ydEFjY2Vzc29yLT5zY2FsZSgpKTsKICNl
bmRpZgogCiAjaWYgREVCVUdfQ0hFQ0tFUkJPQVJECkBAIC0xNTIxLDE1ICsxNTE2LDE1IEBAIHZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhib29sIGZvcmNlKQog
CiAgICAgaWYgKGJsaXRDaGVja2VyZWQgJiYgIWxhc3RDaGVja2VyZWRUaW1lKSB7CiAgICAgICAg
IGxhc3RDaGVja2VyZWRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwotICAgICAgICBCQkxPRyhC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKLSAgICAgICAgICAgICJCbGl0
dGluZyBjaGVja2VyZWQgcGF0dGVybiBhdCAlZlxuIiwgbGFzdENoZWNrZXJlZFRpbWUpOworICAg
ICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAg
ICAgICAgICAgIkJsaXR0aW5nIGNoZWNrZXJlZCBwYXR0ZXJuIGF0ICVmIiwgbGFzdENoZWNrZXJl
ZFRpbWUpOwogICAgIH0gZWxzZSBpZiAoYmxpdENoZWNrZXJlZCAmJiBsYXN0Q2hlY2tlcmVkVGlt
ZSkgewotICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNh
bCwKLSAgICAgICAgICAgICJCbGl0dGluZyBjaGVja2VyZWQgcGF0dGVybiBhdCAlZlxuIiwgV1RG
OjpjdXJyZW50VGltZSgpKTsKKyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6
TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgICAgICJCbGl0dGluZyBjaGVja2VyZWQgcGF0dGVy
biBhdCAlZiIsIFdURjo6Y3VycmVudFRpbWUoKSk7CiAgICAgfSBlbHNlIGlmICghYmxpdENoZWNr
ZXJlZCAmJiBsYXN0Q2hlY2tlcmVkVGltZSkgewogICAgICAgICBkb3VibGUgdGltZSA9IFdURjo6
Y3VycmVudFRpbWUoKTsKLSAgICAgICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xl
dmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAiQmxpdHRpbmcgb3ZlciBjaGVja2VyZWQgcGF0dGVy
biBhdCAlZiB0b29rICVmXG4iLCB0aW1lLCB0aW1lIC0gbGFzdENoZWNrZXJlZFRpbWUpOworICAg
ICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAg
ICAgICAgICAgIkJsaXR0aW5nIG92ZXIgY2hlY2tlcmVkIHBhdHRlcm4gYXQgJWYgdG9vayAlZiIs
IHRpbWUsIHRpbWUgLSBsYXN0Q2hlY2tlcmVkVGltZSk7CiAgICAgICAgIGxhc3RDaGVja2VyZWRU
aW1lID0gMDsKICAgICB9CiAjZW5kaWYKQEAgLTE3ODUsMTAgKzE3ODAsOSBAQCB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVzRm9yU2Nyb2xsT3JOb3RSZW5kZXJlZFJlZ2lvbihi
b29sIGNoZWNrTG9hZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyp1cGRhdGUqLyk7CiAjaWYgREVCVUdfQkFD
S0lOR1NUT1JFCi0gICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZXh0ZW50cyA9IHRp
bGVOb3RSZW5kZXJlZFJlZ2lvbi5leHRlbnRzKCk7Ci0gICAgICAgICAgICAgICAgQkJMT0coQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAgICAgICAg
ICJCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlc0ZvclNjcm9sbCBkaWQgY2xlYXIgdGls
ZSAlZCwlZCAlZHglZCIsCi0gICAgICAgICAgICAgICAgICAgIGV4dGVudHMueCgpLCBleHRlbnRz
LnkoKSwgZXh0ZW50cy53aWR0aCgpLCBleHRlbnRzLmhlaWdodCgpKTsKKyAgICAgICAgICAgICAg
ICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAg
ICAgICAgICAgICAgICAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6dXBkYXRlVGlsZXNGb3JTY3JvbGwg
ZGlkIGNsZWFyIHRpbGUgJXMiLAorICAgICAgICAgICAgICAgICAgICB0aWxlTm90UmVuZGVyZWRS
ZWdpb24uZXh0ZW50cygpLnRvU3RyaW5nKCkuY19zdHIoKSk7CiAjZW5kaWYKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHVwZGF0ZVRpbGUodGlsZU9yaWdpbiwgZmFsc2UgLyppbW1lZGlhdGUq
Lyk7CkBAIC0yMDg0LDEwICsyMDc4LDkgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5k
ZXJDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlcioKICAgICAg
ICAgcmV0dXJuOwogCiAjaWYgREVCVUdfQkFDS0lOR1NUT1JFCi0gICAgQkJMT0coQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMgdGlsZUJ1ZmZlcj0weCV4IHN1
cmZhY2VPZmZzZXQ9KCVkLCVkKSBjb250ZW50c1JlY3Q9KCVkLCVkICVkeCVkKSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aWxlQnVmZmVyLCBzdXJmYWNlT2Zmc2V0LngoKSwgc3VyZmFj
ZU9mZnNldC55KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1JlY3QueCgp
LCBjb250ZW50c1JlY3QueSgpLCBjb250ZW50c1JlY3Qud2lkdGgoKSwgY29udGVudHNSZWN0Lmhl
aWdodCgpKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRp
Y2FsLAorICAgICAgICAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMgdGlsZUJ1
ZmZlcj0weCVwIHN1cmZhY2VPZmZzZXQ9JXMgY29udGVudHNSZWN0PSVzIiwKKyAgICAgICAgdGls
ZUJ1ZmZlciwgc3VyZmFjZU9mZnNldC50b1N0cmluZygpLmNfc3RyKCksIGNvbnRlbnRzUmVjdC50
b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAKICAgICAvLyBJdCBpcyB1cCB0byBjYWxsZXJz
IG9mIHRoaXMgbWV0aG9kIHRvIHBlcmZvcm0gbGF5b3V0IHRoZW1zZWx2ZXMhCkBAIC0yMjE5LDEw
ICsyMjEyLDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VG9XaW5kb3coY29uc3Qg
UGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZlciA9IGJ1ZmZlcigpOwogICAgIEFTU0VSVChkc3RCdWZm
ZXIpOwogICAgIEFTU0VSVChzcmNCdWZmZXIpOwotICAgIGlmICghZHN0QnVmZmVyKSB7Ci0gICAg
ICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sCi0gICAgICAgICAg
ICAiRW1wdHkgd2luZG93IGJ1ZmZlciwgY291bGRuJ3QgYmxpdFRvV2luZG93Iik7Ci0gICAgfQor
ICAgIGlmICghZHN0QnVmZmVyKQorICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3Jt
OjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBibGl0VG9XaW5k
b3ciKTsKIAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6YmxpdFRvQnVmZmVy
KGRzdEJ1ZmZlciwgZHN0UmVjdCwgc3JjQnVmZmVyLCBzcmNSZWN0LCBibGVuZE1vZGUsIGdsb2Jh
bEFscGhhKTsKIApAQCAtMjI0NiwxMCArMjIzNyw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6ZmlsbFdpbmRvdyhQbGF0Zm9ybTo6R3JhcGhpY3M6OkZpbGxQYXR0ZXJuIHBhdHRlcm4sCiAK
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogZHN0QnVmZmVyID0g
YnVmZmVyKCk7CiAgICAgQVNTRVJUKGRzdEJ1ZmZlcik7Ci0gICAgaWYgKCFkc3RCdWZmZXIpIHsK
LSAgICAgICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsV2FybiwKLSAgICAg
ICAgICAgICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBmaWxsV2luZG93Iik7Ci0gICAg
fQorICAgIGlmICghZHN0QnVmZmVyKQorICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRm
b3JtOjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBmaWxsV2lu
ZG93Iik7CiAKICAgICBpZiAocGF0dGVybiA9PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkNoZWNrZXJib2FyZFBhdHRlcm4gJiYgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdz
Ojppc1B1YmxpY0J1aWxkKCkpIHsKICAgICAgICAgLy8gRm9yIHB1YmxpYyBidWlsZHMsIGNvbnZl
eSB0aGUgaW1wcmVzc2lvbiBvZiBsZXNzIGNoZWNrZXJib2FyZC4KQEAgLTIzMDksNyArMjI5OCw5
IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyhjb25zdCBQbGF0
Zm9ybTo6SW50UmVjdCYgZHN0KQogICAgIH0KIAogI2lmIERFQlVHX0JBQ0tJTkdTVE9SRQotICAg
IEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiQmFja2luZ1N0
b3JlUHJpdmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyBkc3QgPSAlcyIsIGRzdC50b1N0cmluZygpLmNf
c3RyKCkpOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGlj
YWwsCisgICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93IGRzdCA9
ICVzIiwKKyAgICAgICAgZHN0LnRvU3RyaW5nKCkuY19zdHIoKSk7CiAjZW5kaWYKIAogICAgIC8v
IFNpbmNlIG91ciB3aW5kb3cgbWF5IGFsc28gYmUgZG91YmxlIGJ1ZmZlcmVkLCB3ZSBuZWVkIHRv
IGFsc28gY29weSB0aGUKQEAgLTIzMjksNyArMjMyMCw5IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0KQogICAg
ICAgICByZXR1cm47CiAKICNpZiBERUJVR19CQUNLSU5HU1RPUkUKLSAgICBCQkxPRyhCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkJhY2tpbmdTdG9yZVByaXZhdGU6Omlu
dmFsaWRhdGVXaW5kb3cgcG9zdGluZyA9ICVzIiwgZHN0UmVjdC50b1N0cmluZygpLmNfc3RyKCkp
OworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCisg
ICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93IHBvc3RpbmcgPSAl
cyIsCisgICAgICAgIGRzdFJlY3QudG9TdHJpbmcoKS5jX3N0cigpKTsKICNlbmRpZgogCiAgICAg
bV9jdXJyZW50V2luZG93QmFja0J1ZmZlciA9IChtX2N1cnJlbnRXaW5kb3dCYWNrQnVmZmVyICsg
MSkgJSAyOwpAQCAtMjM2MywxMCArMjM1Niw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6
Y2xlYXJXaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QsCiAKICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogZHN0QnVmZmVyID0gYnVmZmVyKCk7CiAg
ICAgQVNTRVJUKGRzdEJ1ZmZlcik7Ci0gICAgaWYgKCFkc3RCdWZmZXIpIHsKLSAgICAgICAgQkJM
T0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsV2FybiwKLSAgICAgICAgICAgICJFbXB0
eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBjbGVhcldpbmRvdyIpOwotICAgIH0KKyAgICBpZiAo
IWRzdEJ1ZmZlcikKKyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2
ZWxXYXJuLCAiRW1wdHkgd2luZG93IGJ1ZmZlciwgY291bGRuJ3QgY2xlYXJXaW5kb3ciKTsKIAog
ICAgIHdpbmRvd0Zyb250QnVmZmVyU3RhdGUoKS0+Y2xlYXJCbGl0dGVkUmVnaW9uKHJlY3QpOwog
ICAgIHdpbmRvd0JhY2tCdWZmZXJTdGF0ZSgpLT5hZGRCbGl0dGVkUmVnaW9uKHJlY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggNTFhZjgxNTMwOThkNGIw
NjBhNDhkMDNjYTNjNzk1Yzg4NzEyZmUxZC4uNWE4ZmI5ZjJjMTBkZGM0Mjg5ZjAxMTdmN2QwNjUz
NjViYTYzMGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBA
IC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRMb2FkU3RhdGUoTG9h
ZFN0YXRlIHN0YXRlKQogICAgIG1fbG9hZFN0YXRlID0gc3RhdGU7CiAKICNpZiBERUJVR19XRUJQ
QUdFX0xPQUQKLSAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiV2ViUGFnZVByaXZh
dGU6OnNldExvYWRTdGF0ZSAlZCIsIHN0YXRlKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBs
YXRmb3JtOjpMb2dMZXZlbEluZm8sICJXZWJQYWdlUHJpdmF0ZTo6c2V0TG9hZFN0YXRlICVkIiwg
c3RhdGUpOwogI2VuZGlmCiAKICAgICBzd2l0Y2ggKG1fbG9hZFN0YXRlKSB7CkBAIC0xMjE5LDgg
KzEyMTksMTEgQEAgYm9vbCBXZWJQYWdlUHJpdmF0ZTo6em9vbUFib3V0UG9pbnQoZG91YmxlIHVu
Y2xhbXBlZFNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBhbmMKICAgICB6b29tLnNjYWxlKHNjYWxl
KTsKIAogI2lmIERFQlVHX1dFQlBBR0VfTE9BRAotICAgIGlmIChsb2FkU3RhdGUoKSA8IEZpbmlz
aGVkKQotICAgICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiV2ViUGFnZVByaXZh
dGU6Onpvb21BYm91dFBvaW50IHNjYWxlICVmIGFuY2hvciAoJWYsICVmKSIsIHNjYWxlLCBhbmNo
b3IueCgpLCBhbmNob3IueSgpKTsKKyAgICBpZiAobG9hZFN0YXRlKCkgPCBGaW5pc2hlZCkgewor
ICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAg
ICAgICAgICAiV2ViUGFnZVByaXZhdGU6Onpvb21BYm91dFBvaW50IHNjYWxlICVmIGFuY2hvciAl
cyIsCisgICAgICAgICAgICBzY2FsZSwgUGxhdGZvcm06OkZsb2F0UG9pbnQoYW5jaG9yKS50b1N0
cmluZygpLmNfc3RyKCkpOworICAgIH0KICNlbmRpZgogCiAgICAgLy8gT3VyIGN1cnJlbnQgc2Ny
b2xsIHBvc2l0aW9uIGluIGZsb2F0LgpAQCAtMTU1MSw3ICsxNTU0LDcgQEAgdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6Y29udGVudHNTaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUp
CiAgICAgbV9jb250ZW50c1NpemVDaGFuZ2VkID0gdHJ1ZTsKIAogI2lmIERFQlVHX1dFQlBBR0Vf
TE9BRAotICAgIEJCTE9HKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJXZWJQYWdlUHJpdmF0ZTo6
Y29udGVudHNTaXplQ2hhbmdlZCAlZHglZCIsIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBjb250ZW50
c1NpemUuaGVpZ2h0KCkpOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xl
dmVsSW5mbywgIldlYlBhZ2VQcml2YXRlOjpjb250ZW50c1NpemVDaGFuZ2VkICVzIiwgUGxhdGZv
cm06OkludFNpemUoY29udGVudHNTaXplKS50b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiB9
CiAKQEAgLTE2MzMsNyArMTYzNiw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmxheW91dEZpbmlz
aGVkKCkKIHZvaWQgV2ViUGFnZVByaXZhdGU6Onpvb21Ub0luaXRpYWxTY2FsZU9uTG9hZCgpCiB7
CiAjaWYgREVCVUdfV0VCUEFHRV9MT0FECi0gICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIldlYlBhZ2VQcml2YXRlOjp6b29tVG9Jbml0aWFsU2NhbGVPbkxvYWQiKTsKKyAgICBQbGF0
Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJXZWJQYWdlUHJpdmF0ZTo6
em9vbVRvSW5pdGlhbFNjYWxlT25Mb2FkIik7CiAjZW5kaWYKIAogICAgIGJvb2wgbmVlZHNMYXlv
dXQgPSBmYWxzZTsKQEAgLTE2NTEsNyArMTY1NCw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6Onpv
b21Ub0luaXRpYWxTY2FsZU9uTG9hZCgpCiAKICAgICBpZiAoY29udGVudHNTaXplKCkuaXNFbXB0
eSgpKSB7CiAjaWYgREVCVUdfV0VCUEFHRV9MT0FECi0gICAgICAgIEJCTE9HKFBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sICJXZWJQYWdlUHJpdmF0ZTo6em9vbVRvSW5pdGlhbFNjYWxlT25Mb2FkIGNv
bnRlbnQgaXMgZW1wdHkhIik7CisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06
OkxvZ0xldmVsSW5mbywgIldlYlBhZ2VQcml2YXRlOjp6b29tVG9Jbml0aWFsU2NhbGVPbkxvYWQg
Y29udGVudCBpcyBlbXB0eSEiKTsKICNlbmRpZgogICAgICAgICByZXF1ZXN0TGF5b3V0SWZOZWVk
ZWQoKTsKICAgICAgICAgbm90aWZ5VHJhbnNmb3JtZWRDb250ZW50c1NpemVDaGFuZ2VkKCk7CkBA
IC00MDE4LDcgKzQwMjEsNyBAQCBib29sIFdlYlBhZ2VQcml2YXRlOjpoYW5kbGVXaGVlbEV2ZW50
KFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIGJvb2wgV2ViUGFnZTo6dG91Y2hFdmVu
dChjb25zdCBQbGF0Zm9ybTo6VG91Y2hFdmVudCYgZXZlbnQpCiB7CiAjaWYgREVCVUdfVE9VQ0hf
RVZFTlRTCi0gICAgQkJMT0coTG9nTGV2ZWxDcml0aWNhbCwgIiVzIiwgZXZlbnQudG9TdHJpbmco
KS5jX3N0cigpKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENy
aXRpY2FsLCAiJXMiLCBldmVudC50b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtNTI2OSw3ICs1MjcyLDkgQEAgdm9pZCBXZWJQYWdlUHJp
dmF0ZTo6c2NoZWR1bGVSb290TGF5ZXJDb21taXQoKQogICAgIG1fbmVlZHNDb21taXQgPSB0cnVl
OwogICAgIGlmICghbV9yb290TGF5ZXJDb21taXRUaW1lci0+aXNBY3RpdmUoKSkgewogI2lmIERF
QlVHX0FDX0NPTU1JVAotICAgICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwg
IiVzOiBtX3Jvb3RMYXllckNvbW1pdFRpbWVyLT5pc0FjdGl2ZSgpID0gJWQiLCBXVEZfUFJFVFRZ
X0ZVTkNUSU9OLCBtX3Jvb3RMYXllckNvbW1pdFRpbWVyLT5pc0FjdGl2ZSgpKTsKKyAgICAgICAg
UGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAg
ICAgICIlczogbV9yb290TGF5ZXJDb21taXRUaW1lci0+aXNBY3RpdmUoKSA9ICVkIiwKKyAgICAg
ICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04sIG1fcm9vdExheWVyQ29tbWl0VGltZXItPmlzQWN0
aXZlKCkpOwogI2VuZGlmCiAgICAgICAgIG1fcm9vdExheWVyQ29tbWl0VGltZXItPnN0YXJ0T25l
U2hvdCgwKTsKICAgICB9CkBAIC01MzU3LDggKzUzNjIsOSBAQCB2b2lkIFdlYlBhZ2VQcml2YXRl
Ojpjb21taXRSb290TGF5ZXIoY29uc3QgSW50UmVjdCYgbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZHJhd3NSb290TGF5
ZXIpCiB7CiAjaWYgREVCVUdfQUNfQ09NTUlUCi0gICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVs
Q3JpdGljYWwsICIlczogbV9jb21wb3NpdG9yID0gMHgleCIsCi0gICAgICAgICAgICBXVEZfUFJF
VFRZX0ZVTkNUSU9OLCBtX2NvbXBvc2l0b3IuZ2V0KCkpOworICAgIFBsYXRmb3JtOjpsb2dBbHdh
eXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCisgICAgICAgICIlczogbV9jb21wb3NpdG9y
ID0gMHglcCIsCisgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04sIG1fY29tcG9zaXRvci5nZXQo
KSk7CiAjZW5kaWYKIAogICAgIGlmICghbV9jb21wb3NpdG9yKQpAQCAtNTM5NiwxMyArNTQwMiwx
NCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpjb21taXRSb290TGF5ZXIoY29uc3QgSW50UmVjdCYg
bGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nLAogYm9vbCBXZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9v
dExheWVySWZOZWVkZWQoKQogewogI2lmIERFQlVHX0FDX0NPTU1JVAotICAgIEJCTE9HKFBsYXRm
b3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiJXM6IG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCA9ICVk
LCBtX25lZWRzQ29tbWl0ID0gJWQsIG1fZnJhbWVMYXllcnMgPSAweCV4LCBtX2ZyYW1lTGF5ZXJz
LT5oYXNMYXllcigpID0gJWQsIG5lZWRzTGF5b3V0UmVjdXJzaXZlKCkgPSAlZCIsCi0gICAgICAg
ICAgICBXVEZfUFJFVFRZX0ZVTkNUSU9OLAotICAgICAgICAgICAgbV9zdXNwZW5kUm9vdExheWVy
Q29tbWl0LAotICAgICAgICAgICAgbV9uZWVkc0NvbW1pdCwKLSAgICAgICAgICAgIG1fZnJhbWVM
YXllcnMuZ2V0KCksCi0gICAgICAgICAgICBtX2ZyYW1lTGF5ZXJzICYmIG1fZnJhbWVMYXllcnMt
Pmhhc0xheWVyKCksCi0gICAgICAgICAgICBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dmll
dygpICYmIG5lZWRzTGF5b3V0UmVjdXJzaXZlKG1fbWFpbkZyYW1lLT52aWV3KCkpKTsKKyAgICBQ
bGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAi
JXM6IG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCA9ICVkLCBtX25lZWRzQ29tbWl0ID0gJWQsIG1f
ZnJhbWVMYXllcnMgPSAweCVwLCBtX2ZyYW1lTGF5ZXJzLT5oYXNMYXllcigpID0gJWQsIG5lZWRz
TGF5b3V0UmVjdXJzaXZlKCkgPSAlZCIsCisgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04sCisg
ICAgICAgIG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCwKKyAgICAgICAgbV9uZWVkc0NvbW1pdCwK
KyAgICAgICAgbV9mcmFtZUxheWVycy5nZXQoKSwKKyAgICAgICAgbV9mcmFtZUxheWVycyAmJiBt
X2ZyYW1lTGF5ZXJzLT5oYXNMYXllcigpLAorICAgICAgICBtX21haW5GcmFtZSAmJiBtX21haW5G
cmFtZS0+dmlldygpICYmIG5lZWRzTGF5b3V0UmVjdXJzaXZlKG1fbWFpbkZyYW1lLT52aWV3KCkp
KTsKICNlbmRpZgogCiAgICAgaWYgKG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCkKQEAgLTU0NzYs
NyArNTQ4Myw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnJvb3RMYXllckNvbW1pdFRpbWVyRmly
ZWQoVGltZXI8V2ViUGFnZVByaXZhdGU+KikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgREVCVUdf
QUNfQ09NTUlUCi0gICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlcyIsIFdU
Rl9QUkVUVFlfRlVOQ1RJT04pOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06Okxv
Z0xldmVsQ3JpdGljYWwsICIlcyIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOwogI2VuZGlmCiAKICAg
ICBtX2JhY2tpbmdTdG9yZS0+ZC0+aW5zdHJ1bWVudEJlZ2luRnJhbWUoKTsKQEAgLTU1MDMsOSAr
NTUxMCwxMCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpyb290TGF5ZXJDb21taXRUaW1lckZpcmVk
KFRpbWVyPFdlYlBhZ2VQcml2YXRlPiopCiAKICAgICAgICAgaWYgKG5lZWRzT25lU2hvdERyYXdp
bmdTeW5jaHJvbml6YXRpb24oKSkgewogI2lmIERFQlVHX0FDX0NPTU1JVAotICAgICAgICAgICAg
QkJMT0coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlczogT25lU2hvdERyYXdpbmdTeW5j
aHJvbml6YXRpb24gY29kZSBwYXRoISIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOworICAgICAgICAg
ICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAg
ICAgICAgICAgICAiJXM6IE9uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uIGNvZGUgcGF0aCEi
LAorICAgICAgICAgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04pOwogI2VuZGlmCi0KICAgICAg
ICAgICAgIGNvbnN0IEludFJlY3Qgd2luZG93UmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgdmlld3BvcnRTaXplKCkpOwogICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPnJlcGFp
bnQod2luZG93UmVjdCwgdHJ1ZSAvKmNvbnRlbnRDaGFuZ2VkKi8sIHRydWUgLyppbW1lZGlhdGUq
Lyk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5j
cHAKaW5kZXggODcwNWZmMzU0NmM5OWZiOTVlNDNjNTg1NzQ4YTEyY2U5MjhmODAzOS4uZGJhYmI5
Y2NmMjI0YjNjMDMwMGQxN2NhZGU0NGRmYWQ5ZjRkNDI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRCbGFja0JlcnJ5LmNwcApAQCAtNjkwLDExICs2OTAsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRC
bGFja0JlcnJ5OjpvdmVyZmxvd0V4Y2VlZHNDb250ZW50c1NpemUoRnJhbWUqIGZyYW1lKSBjb25z
dAogICAgICAgICByZXR1cm47CiAKICNpZiBERUJVR19PVkVSRkxPV19ERVRFQ1RJT04KLSAgICBC
QkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiQ2hyb21lQ2xpZW50Qmxh
Y2tCZXJyeTo6b3ZlcmZsb3dFeGNlZWRzQ29udGVudHNTaXplIGNvbnRlbnRzPSVkeCVkIG92ZXJm
bG93PSVkeCVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKS0+cmlnaHRMYXlvdXRPdmVyZmxvdygpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5ib3R0b21MYXlvdXRPdmVyZmxvdygpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5yaWdodEFi
c29sdXRlVmlzaWJsZU92ZXJmbG93KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPmJvdHRvbUFic29sdXRlVmlzaWJsZU92ZXJmbG93KCkpOwor
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIkNocm9tZUNsaWVudEJsYWNrQmVycnk6Om92ZXJmbG93
RXhjZWVkc0NvbnRlbnRzU2l6ZSBjb250ZW50cz0lcyBvdmVyZmxvdz0lZiB4ICVmIiwKKyAgICAg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJlY3QoZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5kb2N1bWVudFJlY3QoKSkudG9TdHJpbmcoKS5jX3N0cigpLAorICAgICAgICBmcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCktPnJpZ2h0QWJzb2x1dGVWaXNpYmxlT3ZlcmZsb3coKS50b0Zsb2F0KCks
CisgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+Ym90dG9tQWJzb2x1dGVWaXNpYmxl
T3ZlcmZsb3coKS50b0Zsb2F0KCkpOwogI2VuZGlmCiAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+b3Zl
cmZsb3dFeGNlZWRzQ29udGVudHNTaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCmluZGV4IDY0OTQxODZiZTE0
NGJlNTAxODkxYjYyNzlkOWFhODUxMjZlMzEzMGIuLjk1ZjhlOWY2YzYyZGU3OTUyNTU3MDI3YjYz
NmRjZDA0MTIyYjE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCkBAIC00Nyw4ICs0Nyw2IEBACiAjaW5jbHVkZSAi
QmFja2luZ1N0b3JlLmgiCiAjZW5kaWYKIAotdXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okxv
Z0xldmVsSW5mbzsKLXVzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2c7CiB1c2luZyBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0yODQsNyArMjgyLDggQEAgYm9vbCBGYXRGaW5nZXJzOjpjaGVja0ZpbmdlckludGVy
c2VjdGlvbihjb25zdCBJbnRSZWN0UmVnaW9uJiByZWdpb24sIGNvbnN0IEludFIKICAgICAgICAg
ICAgIG5vZGVOYW1lID0gbm9kZU5hbWUgKyAiLCBwc2V1ZG8gaWQgIiArIHRvRWxlbWVudChub2Rl
KS0+c2hhZG93UHNldWRvSWQoKTsKICAgICAgICAgbm9kZU5hbWUgPSBub2RlTmFtZSArICIpIjsK
ICAgICB9Ci0gICAgbG9nQWx3YXlzKExvZ0xldmVsSW5mbywgIiVzIGhhcyByZWdpb24gJXMsIGlu
dGVyc2VjdGluZyBhdCAlcyAoYXJlYSAlZCkiLCBub2RlTmFtZS5sYXRpbjEoKS5kYXRhKCksCisg
ICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAi
JXMgaGFzIHJlZ2lvbiAlcywgaW50ZXJzZWN0aW5nIGF0ICVzIChhcmVhICVkKSIsIG5vZGVOYW1l
LmxhdGluMSgpLmRhdGEoKSwKICAgICAgICAgcmVnaW9uQ29weS50b1N0cmluZygpLmNfc3RyKCks
IGludGVyc2VjdGlvbi50b1N0cmluZygpLmNfc3RyKCksIGludGVyc2VjdGlvbi5hcmVhKCkpOwog
I2VuZGlmCiAKQEAgLTMwOCw4ICszMDcsOCBAQCBib29sIEZhdEZpbmdlcnM6OmZpbmRJbnRlcnNl
Y3RpbmdSZWdpb25zKERvY3VtZW50KiBkb2N1bWVudCwgVmVjdG9yPEludGVyc2VjdGluZwogCiAj
aWYgREVCVUdfRkFUX0ZJTkdFUlMKICAgICBJbnRSZWN0IGZpbmdlclJlY3QoZmluZ2VyUmVjdEZv
clBvaW50KGZyYW1lQ29udGVudFBvcykpOwotICAgIEludFJlY3Qgc2NyZWVuRmluZ2VyUmVjdCA9
IG1fd2ViUGFnZS0+bWFwVG9UcmFuc2Zvcm1lZChmaW5nZXJSZWN0KTsKLSAgICBsb2dBbHdheXMo
TG9nTGV2ZWxJbmZvLCAiZmF0IGZpbmdlciByZWN0IG5vdyAlZCwgJWQsICVkLCAlZCIsIHNjcmVl
bkZpbmdlclJlY3QueCgpLCBzY3JlZW5GaW5nZXJSZWN0LnkoKSwgc2NyZWVuRmluZ2VyUmVjdC53
aWR0aCgpLCBzY3JlZW5GaW5nZXJSZWN0LmhlaWdodCgpKTsKKyAgICBQbGF0Zm9ybTo6SW50UmVj
dCBzY3JlZW5GaW5nZXJSZWN0ID0gbV93ZWJQYWdlLT5tYXBUb1RyYW5zZm9ybWVkKGZpbmdlclJl
Y3QpOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgImZh
dCBmaW5nZXIgcmVjdCBub3cgJXMiLCBzY3JlZW5GaW5nZXJSZWN0LnRvU3RyaW5nKCkuY19zdHIo
KSk7CiAKICAgICAvLyBvbmx5IHJlY29yZCB0aGUgZmlyc3QgZmluZ2VyIHJlY3QKICAgICBpZiAo
ZG9jdW1lbnQgPT0gbV93ZWJQYWdlLT5tX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKQEAgLTQzOSw3
ICs0MzgsNyBAQCBib29sIEZhdEZpbmdlcnM6OmNoZWNrRm9yVGV4dChOb2RlKiBjdXJOb2RlLCBW
ZWN0b3I8SW50ZXJzZWN0aW5nUmVnaW9uPiYgaW50ZXJzZQogICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIGN1clRleHQsIGxhc3RPZmZzZXQs
IGN1clRleHQsIG9mZnNldCk7CiAgICAgICAgICAgICBpZiAoIXJhbmdlLT50ZXh0KCkuc3RyaXBX
aGl0ZVNwYWNlKCkuaXNFbXB0eSgpKSB7CiAjaWYgREVCVUdfRkFUX0ZJTkdFUlMKLSAgICAgICAg
ICAgICAgICBsb2dBbHdheXMoTG9nTGV2ZWxJbmZvLCAiQ2hlY2tpbmcgd29yZCAnJXMnIiwgcmFu
Z2UtPnRleHQoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIFBsYXRmb3JtOjps
b2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIkNoZWNraW5nIHdvcmQgJyVzJyIsIHJh
bmdlLT50ZXh0KCkubGF0aW4xKCkuZGF0YSgpKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIElu
dFJlY3RSZWdpb24gcmFuZ2VSZWdpb24oRE9NU3VwcG9ydDo6dHJhbnNmb3JtZWRCb3VuZGluZ0Jv
eEZvclJhbmdlKCpyYW5nZSkpOwogICAgICAgICAgICAgICAgIGZvdW5kT25lIHw9IGNoZWNrRmlu
Z2VySW50ZXJzZWN0aW9uKHJhbmdlUmVnaW9uLCBmaW5nZXJSZWdpb24sIGN1ck5vZGUsIGludGVy
c2VjdGluZ1JlZ2lvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKaW5kZXggOWQwYTE3M2QxZmFhYjk2OTA4M2Jk
ZjQ1NjUxYWJlMTc4NDU5ZTE0MS4uNzdmN2QxZTlmNTcyNjRkMzdlZDlhNjgwMjMyNTNmMmYwNzgw
NzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9JbnB1dEhhbmRsZXIuY3BwCkBAIC04MywxOSArODMsMTkgQEAgdXNpbmcgbmFtZXNwYWNl
IEJsYWNrQmVycnk6OlBsYXRmb3JtOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBF
TkFCTEVfSU5QVVRfTE9HCi0jZGVmaW5lIElucHV0TG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikg
bG9nQWx3YXlzKHNldmVyaXR5LCBmb3JtYXQsICMjIF9fVkFfQVJHU19fKQorI2RlZmluZSBJbnB1
dExvZyhzZXZlcml0eSwgZm9ybWF0LCAuLi4pIFBsYXRmb3JtOjpsb2dBbHdheXMoc2V2ZXJpdHks
IGZvcm1hdCwgIyMgX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmluZSBJbnB1dExvZyhzZXZlcml0
eSwgZm9ybWF0LCAuLi4pCiAjZW5kaWYgLy8gRU5BQkxFX0lOUFVUX0xPRwogCiAjaWYgRU5BQkxF
X0ZPQ1VTX0xPRwotI2RlZmluZSBGb2N1c0xvZyhzZXZlcml0eSwgZm9ybWF0LCAuLi4pIGxvZ0Fs
d2F5cyhzZXZlcml0eSwgZm9ybWF0LCAjIyBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRm9jdXNMb2co
c2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBQbGF0Zm9ybTo6bG9nQWx3YXlzKHNldmVyaXR5LCBmb3Jt
YXQsICMjIF9fVkFfQVJHU19fKQogI2Vsc2UKICNkZWZpbmUgRm9jdXNMb2coc2V2ZXJpdHksIGZv
cm1hdCwgLi4uKQogI2VuZGlmIC8vIEVOQUJMRV9GT0NVU19MT0cKIAogI2lmIEVOQUJMRV9TUEVM
TElOR19MT0cKLSNkZWZpbmUgU3BlbGxpbmdMb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBsb2dB
bHdheXMoc2V2ZXJpdHksIGZvcm1hdCwgIyMgX19WQV9BUkdTX18pCisjZGVmaW5lIFNwZWxsaW5n
TG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikgUGxhdGZvcm06OmxvZ0Fsd2F5cyhzZXZlcml0eSwg
Zm9ybWF0LCAjIyBfX1ZBX0FSR1NfXykKICNlbHNlCiAjZGVmaW5lIFNwZWxsaW5nTG9nKHNldmVy
aXR5LCBmb3JtYXQsIC4uLikKICNlbmRpZiAvLyBFTkFCTEVfU1BFTExJTkdfTE9HCkBAIC00OTAs
NyArNDkwLDcgQEAgc3RhdGljIGJvb2wgY29udmVydFN0cmluZ1RvV2NoYXIoY29uc3QgV1RGOjpT
dHJpbmcmIHN0cmluZywgd2NoYXJfdCogZGVzdCwgaW50IGQKICAgICAvLyB3Y2hhcl90IHN0cmlu
Z3Mgc2VudCB0byBJTUYgYXJlIDMyIGJpdCBzbyBjYXN0aW5nIHRvIFVDaGFyMzIgaXMgc2FmZS4K
ICAgICB1X3N0clRvVVRGMzIocmVpbnRlcnByZXRfY2FzdDxVQ2hhcjMyKj4oZGVzdCksIGRlc3RD
YXBhY2l0eSwgZGVzdExlbmd0aCwgc3RyaW5nLmNoYXJhY3RlcnMoKSwgbGVuZ3RoLCAmZWMpOwog
ICAgIGlmIChlYykgewotICAgICAgICBsb2dBbHdheXMoTG9nTGV2ZWxDcml0aWNhbCwgIklucHV0
SGFuZGxlcjo6Y29udmVydFN0cmluZ1RvV2NoYXIgRXJyb3IgY29udmVydGluZyBzdHJpbmcgZWMg
KCVkKS4iLCBlYyk7CisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xl
dmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OmNvbnZlcnRTdHJpbmdUb1djaGFyIEVycm9yIGNv
bnZlcnRpbmcgc3RyaW5nIGVjICglZCkuIiwgZWMpOwogICAgICAgICBkZXN0TGVuZ3RoID0gMDsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTUwNiw3ICs1MDYsNyBAQCBzdGF0aWMg
Ym9vbCBjb252ZXJ0U3RyaW5nVG9XY2hhclZlY3Rvcihjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5n
LCBXVEY6OlZlY3Rvcjx3YwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghd2NoYXJT
dHJpbmcudHJ5UmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCArIDEpKSB7Ci0gICAgICAgIGxvZ0Fsd2F5
cyhMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpjb252ZXJ0U3RyaW5nVG9XY2hhclZl
Y3RvciBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuIik7CisgICAgICAgIFBsYXRm
b3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6
OmNvbnZlcnRTdHJpbmdUb1djaGFyVmVjdG9yIENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0
cmluZy4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNTI2LDcgKzUyNiw3
IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBjb252ZXJ0U3Bhbm5hYmxlU3RyaW5nVG9TdHJpbmcoc3Bh
bm5hYmxlX3N0cmluZ190KiBzcmMpCiAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IGRlc3Q7CiAgICAg
aW50IGRlc3RDYXBhY2l0eSA9IChzcmMtPmxlbmd0aCAqIDIpICsgMTsKICAgICBpZiAoIWRlc3Qu
dHJ5UmVzZXJ2ZUNhcGFjaXR5KGRlc3RDYXBhY2l0eSkpIHsKLSAgICAgICAgbG9nQWx3YXlzKExv
Z0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OmNvbnZlcnRTcGFubmFibGVTdHJpbmdUb1N0
cmluZyBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuIik7CisgICAgICAgIFBsYXRm
b3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6
OmNvbnZlcnRTcGFubmFibGVTdHJpbmdUb1N0cmluZyBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZv
ciBzdHJpbmcuIik7CiAgICAgICAgIHJldHVybiBXVEY6OlN0cmluZygpOwogICAgIH0KIApAQCAt
NTM1LDcgKzUzNSw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBjb252ZXJ0U3Bhbm5hYmxlU3RyaW5n
VG9TdHJpbmcoc3Bhbm5hYmxlX3N0cmluZ190KiBzcmMpCiAgICAgLy8gd2NoYXJfdCBzdHJpbmdz
IHNlbnQgZnJvbSBJTUYgYXJlIDMyIGJpdCBzbyBjYXN0aW5nIHRvIFVDaGFyMzIgaXMgc2FmZS4K
ICAgICB1X3N0ckZyb21VVEYzMihkZXN0LmRhdGEoKSwgZGVzdENhcGFjaXR5LCAmZGVzdExlbmd0
aCwgcmVpbnRlcnByZXRfY2FzdDxVQ2hhcjMyKj4oc3JjLT5zdHIpLCBzcmMtPmxlbmd0aCwgJmVj
KTsKICAgICBpZiAoZWMpIHsKLSAgICAgICAgbG9nQWx3YXlzKExvZ0xldmVsQ3JpdGljYWwsICJJ
bnB1dEhhbmRsZXI6OmNvbnZlcnRTcGFubmFibGVTdHJpbmdUb1N0cmluZyBFcnJvciBjb252ZXJ0
aW5nIHN0cmluZyBlYyAoJWQpLiIsIGVjKTsKKyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxlcjo6Y29udmVydFNwYW5uYWJs
ZVN0cmluZ1RvU3RyaW5nIEVycm9yIGNvbnZlcnRpbmcgc3RyaW5nIGVjICglZCkuIiwgZWMpOwog
ICAgICAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKICAgICB9CiAgICAgZGVzdC5yZXNpemUoZGVz
dExlbmd0aCk7CkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OmxlYXJuVGV4
dCgpCiAgICAgaWYgKHRleHRJbkZpZWxkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpsZWFyblRleHQgJyVzJyIs
IHRleHRJbkZpZWxkLmxhdGluMSgpLmRhdGEoKSk7CisgICAgSW5wdXRMb2coUGxhdGZvcm06Okxv
Z0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6bGVhcm5UZXh0ICclcyciLCB0ZXh0SW5GaWVsZC5s
YXRpbjEoKS5kYXRhKCkpOwogICAgIHNlbmRMZWFyblRleHREZXRhaWxzKHRleHRJbkZpZWxkKTsK
IH0KIApAQCAtNTc5LDEwICs1NzksMTAgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWUKIHsKICAg
ICBtX3JlcXVlc3QgPSB0ZXh0Q2hlY2tpbmdSZXF1ZXN0OwogCi0gICAgSW5wdXRMb2coTG9nTGV2
ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyAnJXMnIiwgbV9y
ZXF1ZXN0LT50ZXh0KCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6
TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyAnJXMn
IiwgbV9yZXF1ZXN0LT50ZXh0KCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIGlmICghbV9yZXF1
ZXN0KSB7Ci0gICAgICAgIFNwZWxsaW5nTG9nKExvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgZGlkIG5vdCByZWNlaXZlIGEgdmFsaWQgcmVxdWVzdC4i
KTsKKyAgICAgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIklucHV0SGFu
ZGxlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgZGlkIG5vdCByZWNlaXZlIGEgdmFsaWQgcmVx
dWVzdC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjA5LDE0ICs2MDksMTQgQEAg
dm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVxdWUKIAogICAgIHdjaGFyX3QqIGNoZWNraW5nU3RyaW5nID0g
KHdjaGFyX3QqKW1hbGxvYyhzaXplb2Yod2NoYXJfdCkgKiAocmVxdWVzdExlbmd0aCArIDEpKTsK
ICAgICBpZiAoIWNoZWNraW5nU3RyaW5nKSB7Ci0gICAgICAgIGxvZ0Fsd2F5cyhMb2dMZXZlbENy
aXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyBDYW5ub3QgYWxs
b2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuIik7CisgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMo
UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nIENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0cmluZy4iKTsKICAgICAgICAg
bV9yZXF1ZXN0LT5kaWRDYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlu
dCBwYXJhZ3JhcGhMZW5ndGggPSAwOwogICAgIGlmICghY29udmVydFN0cmluZ1RvV2NoYXIobV9y
ZXF1ZXN0LT50ZXh0KCksIGNoZWNraW5nU3RyaW5nLCByZXF1ZXN0TGVuZ3RoICsgMSwgJnBhcmFn
cmFwaExlbmd0aCkpIHsKLSAgICAgICAgbG9nQWx3YXlzKExvZ0xldmVsQ3JpdGljYWwsICJJbnB1
dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nIEZhaWxlZCB0byBjb252ZXJ0IFN0cmlu
ZyB0byB3Y2hhciB0eXBlLiIpOworICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3Jt
OjpMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyBGYWlsZWQgdG8gY29udmVydCBTdHJpbmcgdG8gd2NoYXIgdHlwZS4iKTsKICAgICAgICAgZnJl
ZShjaGVja2luZ1N0cmluZyk7CiAgICAgICAgIG1fcmVxdWVzdC0+ZGlkQ2FuY2VsKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTYzNiwxMCArNjM2LDExIEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVl
CiAKIHZvaWQgSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpbnQz
Ml90IHRyYW5zYWN0aW9uSWQpCiB7Ci0gICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxXYXJuLCAiSW5w
dXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZCBFeHBlY3RlZCB0cmFuc2Fj
dGlvbiBpZCAlZCwgcmVjZWl2ZWQgJWQuICVzIgotICAgICAgICAgICAgICAgICwgdHJhbnNhY3Rp
b25JZAotICAgICAgICAgICAgICAgICwgbV9wcm9jZXNzaW5nVHJhbnNhY3Rpb25JZAotICAgICAg
ICAgICAgICAgICwgdHJhbnNhY3Rpb25JZCA9PSBtX3Byb2Nlc3NpbmdUcmFuc2FjdGlvbklkID8g
IiIgOiAiV2UgYXJlIG91dCBvZiBzeW5jIHdpdGggaW5wdXQgc2VydmljZS4iKTsKKyAgICBTcGVs
bGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpz
cGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZCBFeHBlY3RlZCB0cmFuc2FjdGlvbiBpZCAlZCwg
cmVjZWl2ZWQgJWQuICVzIiwKKyAgICAgICAgdHJhbnNhY3Rpb25JZCwKKyAgICAgICAgbV9wcm9j
ZXNzaW5nVHJhbnNhY3Rpb25JZCwKKyAgICAgICAgdHJhbnNhY3Rpb25JZCA9PSBtX3Byb2Nlc3Np
bmdUcmFuc2FjdGlvbklkID8gIiIgOiAiV2UgYXJlIG91dCBvZiBzeW5jIHdpdGggaW5wdXQgc2Vy
dmljZS4iKTsKIAogICAgIG1fcmVxdWVzdC0+ZGlkQ2FuY2VsKCk7CiAgICAgbV9wcm9jZXNzaW5n
VHJhbnNhY3Rpb25JZCA9IC0xOwpAQCAtNjQ3LDEzICs2NDgsMTQgQEAgdm9pZCBJbnB1dEhhbmRs
ZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKGludDMyX3QgdHJhbnNhY3Rpb25JZCkK
IAogdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMy
X3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCiB7
Ci0gICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNr
aW5nUmVxdWVzdFByb2Nlc3NlZCBFeHBlY3RlZCB0cmFuc2FjdGlvbiBpZCAlZCwgcmVjZWl2ZWQg
JWQuICVzIgotICAgICAgICAgICAgICAgICwgdHJhbnNhY3Rpb25JZAotICAgICAgICAgICAgICAg
ICwgbV9wcm9jZXNzaW5nVHJhbnNhY3Rpb25JZAotICAgICAgICAgICAgICAgICwgdHJhbnNhY3Rp
b25JZCA9PSBtX3Byb2Nlc3NpbmdUcmFuc2FjdGlvbklkID8gIiIgOiAiV2UgYXJlIG91dCBvZiBz
eW5jIHdpdGggaW5wdXQgc2VydmljZS4iKTsKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9n
TGV2ZWxXYXJuLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFBy
b2Nlc3NlZCBFeHBlY3RlZCB0cmFuc2FjdGlvbiBpZCAlZCwgcmVjZWl2ZWQgJWQuICVzIiwKKyAg
ICAgICAgdHJhbnNhY3Rpb25JZCwKKyAgICAgICAgbV9wcm9jZXNzaW5nVHJhbnNhY3Rpb25JZCwK
KyAgICAgICAgdHJhbnNhY3Rpb25JZCA9PSBtX3Byb2Nlc3NpbmdUcmFuc2FjdGlvbklkID8gIiIg
OiAiV2UgYXJlIG91dCBvZiBzeW5jIHdpdGggaW5wdXQgc2VydmljZS4iKTsKIAogICAgIGlmICgh
c3Bhbm5hYmxlU3RyaW5nIHx8ICFpc0FjdGl2ZVRleHRFZGl0KCkpIHsKLSAgICAgICAgU3BlbGxp
bmdMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFBy
b2Nlc3NlZCBDYW5jZWxsaW5nIHJlcXVlc3Qgd2l0aCB0cmFuc2FjdGlvbklkICVkLiIsIHRyYW5z
YWN0aW9uSWQpOworICAgICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAi
SW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCBDYW5jZWxsaW5nIHJl
cXVlc3Qgd2l0aCB0cmFuc2FjdGlvbklkICVkLiIsIHRyYW5zYWN0aW9uSWQpOwogICAgICAgICBt
X3JlcXVlc3QtPmRpZENhbmNlbCgpOwogICAgICAgICBtX3Byb2Nlc3NpbmdUcmFuc2FjdGlvbklk
ID0gLTE7CiAgICAgICAgIHJldHVybjsKQEAgLTc0Miw4ICs3NDQsMTEgQEAgYm9vbCBJbnB1dEhh
bmRsZXI6OnNob3VsZFJlcXVlc3RTcGVsbENoZWNraW5nT3B0aW9uc0ZvclBvaW50KFBsYXRmb3Jt
OjpJbnRQb2ludCYKICAgICBtX3NwZWxsQ2hlY2tpbmdPcHRpb25zUmVxdWVzdC5zdGFydFRleHRQ
b3NpdGlvbiA9IDA7CiAgICAgbV9zcGVsbENoZWNraW5nT3B0aW9uc1JlcXVlc3QuZW5kVGV4dFBv
c2l0aW9uID0gMDsKIAotICAgIFNwZWxsaW5nTG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxl
cjo6c2hvdWxkUmVxdWVzdFNwZWxsQ2hlY2tpbmdPcHRpb25zRm9yUG9pbnQgRm91bmQgc3BlbGxp
bmcgbWFya2VyIGF0IHBvaW50ICVkLCAlZFxuTWFya2VyIHN0YXJ0ICVkIGVuZCAlZCIsCi0gICAg
ICAgIHBvaW50LngoKSwgcG9pbnQueSgpLCBzcGVsbENoZWNraW5nT3B0aW9uUmVxdWVzdC5zdGFy
dFRleHRQb3NpdGlvbiwgc3BlbGxDaGVja2luZ09wdGlvblJlcXVlc3QuZW5kVGV4dFBvc2l0aW9u
KTsKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiSW5w
dXRIYW5kbGVyOjpzaG91bGRSZXF1ZXN0U3BlbGxDaGVja2luZ09wdGlvbnNGb3JQb2ludCBGb3Vu
ZCBzcGVsbGluZyBtYXJrZXIgYXQgcG9pbnQgJXNcbk1hcmtlciBzdGFydCAlZCBlbmQgJWQiLAor
ICAgICAgICBwb2ludC50b1N0cmluZygpLmNfc3RyKCksCisgICAgICAgIHNwZWxsQ2hlY2tpbmdP
cHRpb25SZXF1ZXN0LnN0YXJ0VGV4dFBvc2l0aW9uLAorICAgICAgICBzcGVsbENoZWNraW5nT3B0
aW9uUmVxdWVzdC5lbmRUZXh0UG9zaXRpb24pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04
MDYsOSArODExLDEyIEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1ZXN0U3BlbGxpbmdDaGVja2lu
Z09wdGlvbnMoaW1mX3NwX3RleHRfdCYgc3BlbGxDaGVja2luZ09wCiAgICAgfQogICAgIG1fc3Bl
bGxDaGVja2luZ09wdGlvbnNSZXF1ZXN0ID0gc3BlbGxDaGVja2luZ09wdGlvblJlcXVlc3Q7CiAK
LSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnJlcXVlc3RTcGVsbGlu
Z0NoZWNraW5nT3B0aW9ucyBjYXJldFJlY3QgdG9wTGVmdD0oJWQsJWQpLCBib3R0b21SaWdodD0o
JWQsJWQpLCBzdGFydFRleHRQb3NpdGlvbj0lZCwgZW5kVGV4dFBvc2l0aW9uPSVkIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICwgY2FyZXRSZWN0Lm1pblhNaW5ZQ29ybmVyKCkueCgpLCBj
YXJldFJlY3QubWluWE1pbllDb3JuZXIoKS55KCksIGNhcmV0UmVjdC5tYXhYTWF4WUNvcm5lcigp
LngoKSwgY2FyZXRSZWN0Lm1heFhNYXhZQ29ybmVyKCkueSgpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLCBzcGVsbENoZWNraW5nT3B0aW9uUmVxdWVzdC5zdGFydFRleHRQb3NpdGlvbiwg
c3BlbGxDaGVja2luZ09wdGlvblJlcXVlc3QuZW5kVGV4dFBvc2l0aW9uKTsKKyAgICBJbnB1dExv
ZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0
U3BlbGxpbmdDaGVja2luZ09wdGlvbnMgY2FyZXRSZWN0IHRvcExlZnQ9JXMsIGJvdHRvbVJpZ2h0
PSVzLCBzdGFydFRleHRQb3NpdGlvbj0lZCwgZW5kVGV4dFBvc2l0aW9uPSVkIiwKKyAgICAgICAg
UGxhdGZvcm06OkludFBvaW50KGNhcmV0UmVjdC5taW5YTWluWUNvcm5lcigpKS50b1N0cmluZygp
LmNfc3RyKCksCisgICAgICAgIFBsYXRmb3JtOjpJbnRQb2ludChjYXJldFJlY3QubWF4WE1heFlD
b3JuZXIoKSkudG9TdHJpbmcoKS5jX3N0cigpLAorICAgICAgICBzcGVsbENoZWNraW5nT3B0aW9u
UmVxdWVzdC5zdGFydFRleHRQb3NpdGlvbiwKKyAgICAgICAgc3BlbGxDaGVja2luZ09wdGlvblJl
cXVlc3QuZW5kVGV4dFBvc2l0aW9uKTsKIAogICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPnJlcXVl
c3RTcGVsbGluZ0NoZWNraW5nT3B0aW9ucyhzcGVsbENoZWNraW5nT3B0aW9uUmVxdWVzdCwgY2Fy
ZXRSZWN0LCBzY3JlZW5PZmZzZXQsIHNob3VsZE1vdmVEaWFsb2cpOwogfQpAQCAtODE2LDcgKzgy
NCw3IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1ZXN0U3BlbGxpbmdDaGVja2luZ09wdGlvbnMo
aW1mX3NwX3RleHRfdCYgc3BlbGxDaGVja2luZ09wCiB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxl
bWVudFVuZm9jdXNlZChib29sIHJlZm9jdXNPY2N1cmluZykKIHsKICAgICBpZiAoaXNBY3RpdmVU
ZXh0RWRpdCgpKSB7Ci0gICAgICAgIEZvY3VzTG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxl
cjo6c2V0RWxlbWVudFVuZm9jdXNlZCIpOworICAgICAgICBGb2N1c0xvZyhQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50VW5mb2N1c2VkIik7CiAKICAgICAg
ICAgLy8gUGFzcyBhbnkgdGV4dCBpbnRvIHRoZSBmaWVsZCB0byBJTUYgdG8gbGVhcm4uCiAgICAg
ICAgIGxlYXJuVGV4dCgpOwpAQCAtODQ4LDkgKzg1NiwxMCBAQCBib29sIElucHV0SGFuZGxlcjo6
aXNJbnB1dE1vZGVFbmFibGVkKCkgY29uc3QKIAogdm9pZCBJbnB1dEhhbmRsZXI6OnNldElucHV0
TW9kZUVuYWJsZWQoYm9vbCBhY3RpdmUpCiB7Ci0gICAgRm9jdXNMb2coTG9nTGV2ZWxJbmZvLCAi
SW5wdXRIYW5kbGVyOjpzZXRJbnB1dE1vZGVFbmFibGVkICclcycsIG92ZXJyaWRlIGlzICclcyci
Ci0gICAgICAgICAgICAgLCBhY3RpdmUgPyAidHJ1ZSIgOiAiZmFsc2UiCi0gICAgICAgICAgICAg
LCBtX3dlYlBhZ2UtPm1fZHVtcFJlbmRlclRyZWUgfHwgUGxhdGZvcm06OlNldHRpbmdzOjppbnN0
YW5jZSgpLT5hbHdheXNTaG93S2V5Ym9hcmRPbkZvY3VzKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
KyAgICBGb2N1c0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRIYW5k
bGVyOjpzZXRJbnB1dE1vZGVFbmFibGVkICclcycsIG92ZXJyaWRlIGlzICclcyciLAorICAgICAg
ICBhY3RpdmUgPyAidHJ1ZSIgOiAiZmFsc2UiLAorICAgICAgICBtX3dlYlBhZ2UtPm1fZHVtcFJl
bmRlclRyZWUgfHwgUGxhdGZvcm06OlNldHRpbmdzOjppbnN0YW5jZSgpLT5hbHdheXNTaG93S2V5
Ym9hcmRPbkZvY3VzKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAogICAgIG1faW5wdXRNb2RlRW5h
YmxlZCA9IGFjdGl2ZTsKIApAQCAtOTA3LDcgKzkxNiwxMCBAQCB2b2lkIElucHV0SGFuZGxlcjo6
c2V0RWxlbWVudEZvY3VzZWQoRWxlbWVudCogZWxlbWVudCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIEZvY3VzTG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3Vz
ZWQsIFR5cGU9JWQsIFN0eWxlPSVkLCBLZXlib2FyZCBUeXBlPSVkLCBFbnRlciBLZXk9JWQiLCB0
eXBlLCBtX2N1cnJlbnRGb2N1c0VsZW1lbnRUZXh0RWRpdE1hc2ssIGtleWJvYXJkVHlwZSwgZW50
ZXJLZXlUeXBlKTsKKyAgICBGb2N1c0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAg
ICAiSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50Rm9jdXNlZCwgVHlwZT0lZCwgU3R5bGU9JWxsZCwg
S2V5Ym9hcmQgVHlwZT0lZCwgRW50ZXIgS2V5PSVkIiwKKyAgICAgICAgdHlwZSwgbV9jdXJyZW50
Rm9jdXNFbGVtZW50VGV4dEVkaXRNYXNrLCBrZXlib2FyZFR5cGUsIGVudGVyS2V5VHlwZSk7CisK
ICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5pbnB1dEZvY3VzR2FpbmVkKG1fY3VycmVudEZvY3Vz
RWxlbWVudFRleHRFZGl0TWFzaywga2V5Ym9hcmRUeXBlLCBlbnRlcktleVR5cGUpOwogCiAgICAg
aGFuZGxlSW5wdXRMb2NhbGVDaGFuZ2VkKG1fd2ViUGFnZS0+bV93ZWJTZXR0aW5ncy0+aXNXcml0
aW5nRGlyZWN0aW9uUlRMKCkpOwpAQCAtOTE2LDcgKzkyOCw3IEBAIHZvaWQgSW5wdXRIYW5kbGVy
OjpzZXRFbGVtZW50Rm9jdXNlZChFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBub3RpZnlDbGll
bnRPZktleWJvYXJkVmlzaWJpbGl0eUNoYW5nZSh0cnVlLCB0cnVlIC8qIHRyaWdnZXJlZEJ5Rm9j
dXNDaGFuZ2UgKi8pOwogCiAjaWZkZWYgRU5BQkxFX1NQRUxMSU5HX0xPRwotICAgIFNwZWxsaW5n
TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQgRm9jdXNp
bmcgdGhlIGZpZWxkIHRvb2sgJWYgc2Vjb25kcy4iLCB0aW1lci5lbGFwc2VkKCkpOworICAgIFNw
ZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldEVsZW1l
bnRGb2N1c2VkIEZvY3VzaW5nIHRoZSBmaWVsZCB0b29rICVmIHNlY29uZHMuIiwgdGltZXIuZWxh
cHNlZCgpKTsKICNlbmRpZgogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkIHNob3VsZCBiZSBz
cGVsbGNoZWNrZWQuCkBAIC05MjgsNyArOTQwLDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNldEVs
ZW1lbnRGb2N1c2VkKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgc3BlbGxDaGVja0Jsb2NrKGZvY3Vz
ZWRCbG9jaywgVGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoKTsKIAogI2lmZGVmIEVOQUJMRV9TUEVM
TElOR19MT0cKLSAgICBTcGVsbGluZ0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNl
dEVsZW1lbnRGb2N1c2VkIFNwZWxsY2hlY2tpbmcgdGhlIGZpZWxkIGluY3JlYXNlZCB0aGUgdG90
YWwgdGltZSB0byBmb2N1cyB0byAlZiBzZWNvbmRzLiIsIHRpbWVyLmVsYXBzZWQoKSk7CisgICAg
U3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0RWxl
bWVudEZvY3VzZWQgU3BlbGxjaGVja2luZyB0aGUgZmllbGQgaW5jcmVhc2VkIHRoZSB0b3RhbCB0
aW1lIHRvIGZvY3VzIHRvICVmIHNlY29uZHMuIiwgdGltZXIuZWxhcHNlZCgpKTsKICNlbmRpZgog
fQogCkBAIC05NjksNyArOTgxLDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9j
ayhWaXNpYmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2sKIAogICAgIFNw
ZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gZ2V0U3BlbGxDaGVja2VyKCk7CiAgICAgaWYgKCFz
cGVsbENoZWNrZXIpIHsKLSAgICAgICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRI
YW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNwZWxsY2hlY2sgdGhlIGN1cnJlbnQg
Zm9jdXNlZCBlbGVtZW50LiIpOworICAgICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2
ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNwZWxsY2hl
Y2sgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50LiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05OTgsNyArMTAxMCw3IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxv
Y2soVmlzaWJsZVNlbGVjdGlvbiYgdmlzaWJsZVNlbGVjdGlvbiwgVGV4dENoZWNrCiAgICAgICAg
ICAgICAvLyBJdGVyYXRlIHRocm91Z2ggd29yZHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpbmUg
dG8gdGhlIGVuZC4KICAgICAgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IGdldFJhbmdl
Rm9yU3BlbGxDaGVja1dpdGhGaW5lR3JhbnVsYXJpdHkoc3RhcnRPZkN1cnJlbnRMaW5lLCBlbmRP
ZkN1cnJlbnRMaW5lKTsKICAgICAgICAgICAgIGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKSB7
Ci0gICAgICAgICAgICAgICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVy
OjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNldCB0ZXh0IHJhbmdlIGZvciBzcGVsbGNoZWNr
aW5nIik7CisgICAgICAgICAgICAgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsV2Fy
biwgIklucHV0SGFuZGxlcjo6c3BlbGxDaGVja0Jsb2NrIEZhaWxlZCB0byBzZXQgdGV4dCByYW5n
ZSBmb3Igc3BlbGxjaGVja2luZyIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50TGluZSA9IFZpc2libGVQb3NpdGlvbihy
YW5nZUZvclNwZWxsQ2hlY2tpbmctPmVuZFBvc2l0aW9uKCkpOwpAQCAtMTAwNiw3ICsxMDE4LDEw
IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2soVmlzaWJsZVNlbGVjdGlvbiYg
dmlzaWJsZVNlbGVjdGlvbiwgVGV4dENoZWNrCiAgICAgICAgICAgICByYW5nZUZvclNwZWxsQ2hl
Y2tpbmcgPSBET01TdXBwb3J0Ojp0cmltV2hpdGVzcGFjZUZyb21SYW5nZShWaXNpYmxlUG9zaXRp
b24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5zdGFydFBvc2l0aW9uKCkpLCBWaXNpYmxlUG9zaXRp
b24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5lbmRQb3NpdGlvbigpKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBTcGVsbGluZ0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hl
Y2tCbG9jayBTdWJzdHJpbmcgdGV4dCBpcyAnJXMnLCBvZiBzaXplICVkIiwgcmFuZ2VGb3JTcGVs
bENoZWNraW5nLT50ZXh0KCkubGF0aW4xKCkuZGF0YSgpLCByYW5nZUZvclNwZWxsQ2hlY2tpbmct
PnRleHQoKS5sZW5ndGgoKSk7CisgICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZl
bEluZm8sCisgICAgICAgICAgICAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgU3Vic3Ry
aW5nIHRleHQgaXMgJyVzJywgb2Ygc2l6ZSAlZCIsCisgICAgICAgICAgICByYW5nZUZvclNwZWxs
Q2hlY2tpbmctPnRleHQoKS5sYXRpbjEoKS5kYXRhKCksCisgICAgICAgICAgICByYW5nZUZvclNw
ZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gQ2FsbCBzcGVsbGNo
ZWNrIHdpdGggc3Vic3RyaW5nLgogICAgICAgICBzcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2lu
Z0ZvcihTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywg
VGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoLCByYW5nZUZvclNwZWxsQ2hlY2tpbmcsIHJhbmdlRm9y
U3BlbGxDaGVja2luZykpOwpAQCAtMTEwNCw3ICsxMTE5LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6
Om5vZGVUZXh0Q2hhbmdlZChjb25zdCBOb2RlKiBub2RlKQogICAgIGlmIChwcm9jZXNzaW5nQ2hh
bmdlKCkgfHwgIW5vZGUgfHwgbm9kZSAhPSBtX2N1cnJlbnRGb2N1c0VsZW1lbnQgfHwgbV9yZWNl
aXZlZEJhY2tzcGFjZUtleURvd24pCiAgICAgICAgIHJldHVybjsKIAotICAgIElucHV0TG9nKExv
Z0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6bm9kZVRleHRDaGFuZ2VkIik7CisgICAgSW5wdXRM
b2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6bm9kZVRleHRDaGFuZ2Vk
Iik7CiAKICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5pbnB1dFRleHRDaGFuZ2VkKCk7CiAKQEAg
LTEyNjQsNyArMTI3OSwxMCBAQCB2b2lkIElucHV0SGFuZGxlcjo6ZW5zdXJlRm9jdXNUZXh0RWxl
bWVudFZpc2libGUoQ2FyZXRTY3JvbGxUeXBlIHNjcm9sbFR5cGUpCiAgICAgfQogCiAgICAgaWYg
KGRlc3RpbmF0aW9uU2Nyb2xsTG9jYXRpb24gIT0gbWFpbkZyYW1lVmlldy0+c2Nyb2xsUG9zaXRp
b24oKSB8fCB6b29tU2NhbGVSZXF1aXJlZCAhPSBtX3dlYlBhZ2UtPmN1cnJlbnRTY2FsZSgpKSB7
Ci0gICAgICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6ZW5zdXJlRm9j
dXNUZXh0RWxlbWVudFZpc2libGUgem9vbWluZyBpbiB0byAlZiBhbmQgc2Nyb2xsaW5nIHRvIHBv
aW50ICVkLCAlZCIsIHpvb21TY2FsZVJlcXVpcmVkLCBkZXN0aW5hdGlvblNjcm9sbExvY2F0aW9u
LngoKSwgZGVzdGluYXRpb25TY3JvbGxMb2NhdGlvbi55KCkpOworICAgICAgICBJbnB1dExvZyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAgICAgIklucHV0SGFuZGxlcjo6ZW5zdXJl
Rm9jdXNUZXh0RWxlbWVudFZpc2libGUgem9vbWluZyBpbiB0byAlZiBhbmQgc2Nyb2xsaW5nIHRv
IHBvaW50ICVzIiwKKyAgICAgICAgICAgIHpvb21TY2FsZVJlcXVpcmVkLAorICAgICAgICAgICAg
UGxhdGZvcm06OkludFBvaW50KGRlc3RpbmF0aW9uU2Nyb2xsTG9jYXRpb24pLnRvU3RyaW5nKCku
Y19zdHIoKSk7CiAKICAgICAgICAgLy8gQW5pbWF0ZSB0byBnaXZlbiBzY3JvbGwgcG9zaXRpb24g
JiB6b29tIGxldmVsCiAgICAgICAgIG1fd2ViUGFnZS0+bV9maW5hbEJsb2NrUG9pbnQgPSBXZWJD
b3JlOjpGbG9hdFBvaW50KGRlc3RpbmF0aW9uU2Nyb2xsTG9jYXRpb24pOwpAQCAtMTM0OSw3ICsx
MzY3LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OmZyYW1lVW5sb2FkZWQoY29uc3QgRnJhbWUqIGZy
YW1lKQogICAgIGlmIChtX2N1cnJlbnRGb2N1c0VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkg
IT0gZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZvY3VzTG9nKExvZ0xldmVsSW5mbywg
IklucHV0SGFuZGxlcjo6ZnJhbWVVbmxvYWRlZCIpOworICAgIEZvY3VzTG9nKFBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OmZyYW1lVW5sb2FkZWQiKTsKIAogICAgIHNldEVs
ZW1lbnRVbmZvY3VzZWQoZmFsc2UgLypyZWZvY3VzT2NjdXJpbmcqLyk7CiB9CkBAIC0xNDgzLDcg
KzE1MDEsOSBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2VsZWN0aW9uQ2hhbmdlZCgpCiAgICAgaW50
IG5ld1NlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQoKTsKICAgICBpbnQgbmV3U2VsZWN0
aW9uRW5kID0gc2VsZWN0aW9uRW5kKCk7CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJ
bnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5nZWQgc2VsZWN0aW9uU3RhcnQ9JXUsIHNlbGVjdGlv
bkVuZD0ldSIsIG5ld1NlbGVjdGlvblN0YXJ0LCBuZXdTZWxlY3Rpb25FbmQpOworICAgIElucHV0
TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJJbnB1dEhhbmRsZXI6OnNlbGVj
dGlvbkNoYW5nZWQgc2VsZWN0aW9uU3RhcnQ9JXUsIHNlbGVjdGlvbkVuZD0ldSIsCisgICAgICAg
IG5ld1NlbGVjdGlvblN0YXJ0LCBuZXdTZWxlY3Rpb25FbmQpOwogCiAgICAgbV93ZWJQYWdlLT5t
X2NsaWVudC0+aW5wdXRTZWxlY3Rpb25DaGFuZ2VkKG5ld1NlbGVjdGlvblN0YXJ0LCBuZXdTZWxl
Y3Rpb25FbmQpOwogCkBAIC0xNTA5LDcgKzE1MjksOSBAQCBib29sIElucHV0SGFuZGxlcjo6c2V0
U2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCwgYm9vbCBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0
aQogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gRE9NU3VwcG9ydDo6dmlzaWJs
ZVNlbGVjdGlvbkZvclJhbmdlSW5wdXRFbGVtZW50KG1fY3VycmVudEZvY3VzRWxlbWVudC5nZXQo
KSwgc3RhcnQsIGVuZCk7CiAgICAgbV9jdXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5m
cmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgY2hhbmdlSXNQ
YXJ0T2ZDb21wb3NpdGlvbiA/IDAgOiBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFt
ZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSk7CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbElu
Zm8sICJJbnB1dEhhbmRsZXI6OnNldFNlbGVjdGlvbiBzZWxlY3Rpb25TdGFydD0ldSwgc2VsZWN0
aW9uRW5kPSV1Iiwgc3RhcnQsIGVuZCk7CisgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVs
SW5mbywKKyAgICAgICAgIklucHV0SGFuZGxlcjo6c2V0U2VsZWN0aW9uIHNlbGVjdGlvblN0YXJ0
PSV1LCBzZWxlY3Rpb25FbmQ9JXUiLAorICAgICAgICBzdGFydCwgZW5kKTsKIAogICAgIHJldHVy
biBzdGFydCA9PSBzZWxlY3Rpb25TdGFydCgpICYmIGVuZCA9PSBzZWxlY3Rpb25FbmQoKTsKIH0K
QEAgLTE1NDYsNyArMTU2OCw5IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpjYW5jZWxTZWxlY3Rpb24o
KQogCiBib29sIElucHV0SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRJbnB1dChjb25zdCBQbGF0Zm9y
bTo6S2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmVudCwgYm9vbCBjaGFuZ2VJc1BhcnRPZkNvbXBv
c2l0aW9uKQogewotICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6aGFu
ZGxlS2V5Ym9hcmRJbnB1dCByZWNlaXZlZCBjaGFyYWN0ZXI9JyVjJywgdHlwZT0lZCIsIGtleWJv
YXJkRXZlbnQuY2hhcmFjdGVyKCksIGtleWJvYXJkRXZlbnQudHlwZSgpKTsKKyAgICBJbnB1dExv
ZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpoYW5kbGVL
ZXlib2FyZElucHV0IHJlY2VpdmVkIGNoYXJhY3Rlcj0nJWMnLCB0eXBlPSVkIiwKKyAgICAgICAg
a2V5Ym9hcmRFdmVudC5jaGFyYWN0ZXIoKSwga2V5Ym9hcmRFdmVudC50eXBlKCkpOwogCiAgICAg
Ly8gQ2xlYXJpbmcgdGhlIG1fcmVjZWl2ZWRCYWNrc3BhY2VLZXlEb3duIHN0YXRlIG9uIGFueSBL
ZXlib2FyZEV2ZW50LgogICAgIG1fcmVjZWl2ZWRCYWNrc3BhY2VLZXlEb3duID0gZmFsc2U7CkBA
IC0xOTQzLDcgKzE5NjcsOSBAQCBib29sIElucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dFJlbGF0aXZl
VG9DdXJzb3IoaW50IGxlZnRPZmZzZXQsIGludCByaWdodE9mZnNldCkKIAogICAgIFByb2Nlc3Np
bmdDaGFuZ2VHdWFyZCBndWFyZCh0aGlzKTsKIAotICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywg
IklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dFJlbGF0aXZlVG9DdXJzb3IgbGVmdCAlZCByaWdodCAl
ZCIsIGxlZnRPZmZzZXQsIHJpZ2h0T2Zmc2V0KTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpkZWxldGVUZXh0UmVsYXRpdmVUb0N1
cnNvciBsZWZ0ICVkIHJpZ2h0ICVkIiwKKyAgICAgICAgbGVmdE9mZnNldCwgcmlnaHRPZmZzZXQp
OwogCiAgICAgaW50IGNhcmV0T2Zmc2V0ID0gY2FyZXRQb3NpdGlvbigpOwogICAgIGludCBzdGFy
dCA9IHJlbGF0aXZlTGVmdE9mZnNldChjYXJldE9mZnNldCwgbGVmdE9mZnNldCk7CkBAIC0xOTc2
LDcgKzIwMDIsNyBAQCBib29sIElucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dChpbnQgc3RhcnQsIGlu
dCBlbmQpCiAgICAgaWYgKCFzZXRTZWxlY3Rpb24oc3RhcnQsIGVuZCwgdHJ1ZSAvKmNoYW5nZUlz
UGFydE9mQ29tcG9zaXRpb24qLykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIElucHV0
TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dCBzdGFydCAlZCBlbmQg
JWQiLCBzdGFydCwgZW5kKTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAi
SW5wdXRIYW5kbGVyOjpkZWxldGVUZXh0IHN0YXJ0ICVkIGVuZCAlZCIsIHN0YXJ0LCBlbmQpOwog
CiAgICAgcmV0dXJuIGRlbGV0ZVNlbGVjdGlvbigpOwogfQpAQCAtMTk5OSwxNCArMjAyNSwxNCBA
QCBzcGFubmFibGVfc3RyaW5nX3QqIElucHV0SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2Uo
aW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQzMgogICAgIC8vIGNyYXNoIGltbWVkaWF0ZWx5IG9uIGZh
aWx1cmUuCiAgICAgcHN0LT5zdHIgPSAod2NoYXJfdCopbWFsbG9jKHNpemVvZih3Y2hhcl90KSAq
IChsZW5ndGggKyAxKSk7CiAgICAgaWYgKCFwc3QtPnN0cikgewotICAgICAgICBsb2dBbHdheXMo
TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2UgQ2Fu
bm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3RyaW5nLiIpOworICAgICAgICBQbGF0Zm9ybTo6bG9n
QWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpzcGFubmFi
bGVUZXh0SW5SYW5nZSBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuIik7CiAgICAg
ICAgIGZyZWUocHN0KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgaW50IHN0cmlu
Z0xlbmd0aCA9IDA7CiAgICAgaWYgKCFjb252ZXJ0U3RyaW5nVG9XY2hhcih0ZXh0U3RyaW5nLCBw
c3QtPnN0ciwgbGVuZ3RoICsgMSwgJnN0cmluZ0xlbmd0aCkpIHsKLSAgICAgICAgbG9nQWx3YXlz
KExvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OnNwYW5uYWJsZVRleHRJblJhbmdlIGZh
aWxlZCB0byBjb252ZXJ0IHN0cmluZy4iKTsKKyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dElu
UmFuZ2UgZmFpbGVkIHRvIGNvbnZlcnQgc3RyaW5nLiIpOwogICAgICAgICBmcmVlKHBzdC0+c3Ry
KTsKICAgICAgICAgZnJlZShwc3QpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIxNDQsNyArMjE3
MCw3IEBAIGludDMyX3QgSW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdSZWdpb24oaW50MzJfdCBz
dGFydCwgaW50MzJfdCBlbmQpCiAgICAgaWYgKGNvbXBvc2l0aW9uQWN0aXZlKCkpCiAgICAgICAg
IGFkZEF0dHJpYnV0ZWRUZXh0TWFya2VyKHN0YXJ0LCBlbmQsIGNvbXBvc2l0aW9uVGV4dFN0eWxl
KCkpOwogCi0gICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRDb21w
b3NpbmdSZWdpb24gc3RhcnQgJWQgZW5kICVkIiwgc3RhcnQsIGVuZCk7CisgICAgSW5wdXRMb2co
UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0Q29tcG9zaW5nUmVnaW9u
IHN0YXJ0ICVkIGVuZCAlZCIsIHN0YXJ0LCBlbmQpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0y
MTYxLDcgKzIxODcsNyBAQCBpbnQzMl90IElucHV0SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRpb24o
KQogICAgIC8vIFJlbW92ZSBhbGwgbWFya2Vycy4KICAgICByZW1vdmVBdHRyaWJ1dGVkVGV4dE1h
cmtlcigpOwogCi0gICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpmaW5p
c2hDb21wb3NpdGlvbiBjb21wbGV0ZWQiKTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2
ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpmaW5pc2hDb21wb3NpdGlvbiBjb21wbGV0ZWQiKTsKIAog
ICAgIHJldHVybiAwOwogfQpAQCAtMjIxNSw3ICsyMjQxLDkgQEAgYm9vbCBJbnB1dEhhbmRsZXI6
OnNldFRleHQoc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCiAgICAgV1RGOjpT
dHJpbmcgdGV4dFRvSW5zZXJ0ID0gY29udmVydFNwYW5uYWJsZVN0cmluZ1RvU3RyaW5nKHNwYW5u
YWJsZVN0cmluZyk7CiAgICAgaW50IHRleHRMZW5ndGggPSB0ZXh0VG9JbnNlcnQubGVuZ3RoKCk7
CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgc3Bh
bm5hYmxlU3RyaW5nIGlzICclcycsIG9mIGxlbmd0aCAlZCIsIHRleHRUb0luc2VydC5sYXRpbjEo
KS5kYXRhKCksIHRleHRMZW5ndGgpOworICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbElu
Zm8sCisgICAgICAgICJJbnB1dEhhbmRsZXI6OnNldFRleHQgc3Bhbm5hYmxlU3RyaW5nIGlzICcl
cycsIG9mIGxlbmd0aCAlZCIsCisgICAgICAgIHRleHRUb0luc2VydC5sYXRpbjEoKS5kYXRhKCks
IHRleHRMZW5ndGgpOwogCiAgICAgc3Bhbl90KiBjaGFuZ2VkU3BhbiA9IGZpcnN0U3BhbkluU3Ry
aW5nKHNwYW5uYWJsZVN0cmluZywgQ0hBTkdFRF9BVFRSSUIpOwogICAgIGludCBjb21wb3NpbmdU
ZXh0U3RhcnQgPSBtX2NvbXBvc2luZ1RleHRTdGFydDsKQEAgLTIyMjcsMTAgKzIyNTUsMTAgQEAg
Ym9vbCBJbnB1dEhhbmRsZXI6OnNldFRleHQoc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVT
dHJpbmcpCiAgICAgICAgIC8vIElmIHRoZSB0ZXh0IGlzIHVuY29udmVydGVkLCBkbyBub3QgYWxs
b3cgSlMgcHJvY2Vzc2luZyBhcyBpdCBpcyBub3QgYSAicmVhbCIKICAgICAgICAgLy8gY2hhcmFj
dGVyIGluIHRoZSBmaWVsZC4KICAgICAgICAgaWYgKGZpcnN0U3BhbkluU3RyaW5nKHNwYW5uYWJs
ZVN0cmluZywgVU5DT05WRVJURURfVEVYVF9BVFRSSUIpKSB7Ci0gICAgICAgICAgICBJbnB1dExv
ZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgU2luZ2xlIHRyYWlsaW5nIGNo
YXJhY3RlciBkZXRlY3RlZC4gIFRleHQgaXMgdW5jb252ZXJ0ZWQuIik7CisgICAgICAgICAgICBJ
bnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFNp
bmdsZSB0cmFpbGluZyBjaGFyYWN0ZXIgZGV0ZWN0ZWQuIFRleHQgaXMgdW5jb252ZXJ0ZWQuIik7
CiAgICAgICAgICAgICByZXR1cm4gZWRpdG9yLT5jb21tYW5kKCJJbnNlcnRUZXh0IikuZXhlY3V0
ZSh0ZXh0VG9JbnNlcnQucmlnaHQoMSkpOwogICAgICAgICB9Ci0gICAgICAgIElucHV0TG9nKExv
Z0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0VGV4dCBTaW5nbGUgdHJhaWxpbmcgY2hhcmFj
dGVyIGRldGVjdGVkLiIpOworICAgICAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZv
LCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFNpbmdsZSB0cmFpbGluZyBjaGFyYWN0ZXIgZGV0ZWN0
ZWQuIik7CiAgICAgICAgIHJldHVybiBoYW5kbGVLZXlib2FyZElucHV0KFBsYXRmb3JtOjpLZXli
b2FyZEV2ZW50KHRleHRUb0luc2VydFt0ZXh0TGVuZ3RoIC0gMV0sIFBsYXRmb3JtOjpLZXlib2Fy
ZEV2ZW50OjpLZXlEb3duLCAwKSwgZmFsc2UgLyogY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiAq
Lyk7CiAgICAgfQogCkBAIC0yMjM4LDEyICsyMjY2LDEyIEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpz
ZXRUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5nKQogICAgIGlmICghY2hh
bmdlZFNwYW4pIHsKICAgICAgICAgLy8gSWYgdGhlIGNvbXBvc2l0aW9uIGxlbmd0aCBpcyB0aGUg
c2FtZSBhcyBvdXIgc3RyaW5nIGxlbmd0aCwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRo
aW5nLgogICAgICAgICBpZiAoY29tcG9zaW5nVGV4dExlbmd0aCA9PSB0ZXh0TGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQg
Tm8gc3BhbnMgaGF2ZSBjaGFuZ2VkLiBOZXcgdGV4dCBpcyB0aGUgc2FtZSBsZW5ndGggYXMgdGhl
IG9sZC4gTm90aGluZyB0byBkby4iKTsKKyAgICAgICAgICAgIElucHV0TG9nKFBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgTm8gc3BhbnMgaGF2ZSBjaGFuZ2Vk
LiBOZXcgdGV4dCBpcyB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIG9sZC4gTm90aGluZyB0byBkby4i
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNv
bXBvc2luZ1RleHRMZW5ndGggLSB0ZXh0TGVuZ3RoID09IDEpIHsKLSAgICAgICAgICAgIElucHV0
TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0VGV4dCBObyBzcGFucyBoYXZlIGNo
YW5nZWQuIE5ldyB0ZXh0IGlzIG9uZSBjaGFyYWN0ZXIgc2hvcnRlciB0aGFuIHRoZSBvbGQuIFRy
ZWF0aW5nIGFzICdkZWxldGUnLiIpOworICAgICAgICAgICAgSW5wdXRMb2coUGxhdGZvcm06Okxv
Z0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0VGV4dCBObyBzcGFucyBoYXZlIGNoYW5nZWQu
IE5ldyB0ZXh0IGlzIG9uZSBjaGFyYWN0ZXIgc2hvcnRlciB0aGFuIHRoZSBvbGQuIFRyZWF0aW5n
IGFzICdkZWxldGUnLiIpOwogICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUtleWJvYXJkSW5wdXQo
UGxhdGZvcm06OktleWJvYXJkRXZlbnQoS0VZQ09ERV9CQUNLU1BBQ0UsIFBsYXRmb3JtOjpLZXli
b2FyZEV2ZW50OjpLZXlEb3duLCAwKSwgdHJ1ZSAvKiBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9u
ICovKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyNzEsMjUgKzIyOTksMzEgQEAgYm9vbCBJbnB1
dEhhbmRsZXI6OnNldFRleHQoc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCiAg
ICAgICAgIHRleHRUb0luc2VydC5yZW1vdmUodGV4dExlbmd0aCwgMSk7CiAgICAgfQogCi0gICAg
SW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFJlcXVlc3QgYmVp
bmcgcHJvY2Vzc2VkLiBUZXh0IGJlZm9yZSBwcm9jZXNzaW5nOiAnJXMnIiwgZWxlbWVudFRleHQo
KS5sYXRpbjEoKS5kYXRhKCkpOworICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8s
CisgICAgICAgICJJbnB1dEhhbmRsZXI6OnNldFRleHQgUmVxdWVzdCBiZWluZyBwcm9jZXNzZWQu
IFRleHQgYmVmb3JlIHByb2Nlc3Npbmc6ICclcyciLAorICAgICAgICBlbGVtZW50VGV4dCgpLmxh
dGluMSgpLmRhdGEoKSk7CiAKICAgICBpZiAodGV4dExlbmd0aCA9PSAxICYmICFzcGFubmFibGVT
dHJpbmctPnNwYW5zX2NvdW50KSB7CiAgICAgICAgIC8vIEhhbmRsZSBzaW5nbGUga2V5IG5vbi1h
dHRyaWJ1dGVkIGVudHJ5IGFzIGtleSBwcmVzcyByYXRoZXIgdGhhbiBpbnNlcnQgdG8gYWxsb3cK
ICAgICAgICAgLy8gdHJpZ2dlcmluZyBvZiBqYXZhc2NyaXB0IGV2ZW50cy4KLSAgICAgICAgSW5w
dXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFNpbmdsZSBjaGFyYWN0
ZXIgZW50cnkgdHJlYXRlZCBhcyBrZXktcHJlc3MgaW4gdGhlIGFic2Vuc2Ugb2Ygc3BhbnMuIik7
CisgICAgICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6
OnNldFRleHQgU2luZ2xlIGNoYXJhY3RlciBlbnRyeSB0cmVhdGVkIGFzIGtleS1wcmVzcyBpbiB0
aGUgYWJzZW5zZSBvZiBzcGFucy4iKTsKICAgICAgICAgcmV0dXJuIGhhbmRsZUtleWJvYXJkSW5w
dXQoUGxhdGZvcm06OktleWJvYXJkRXZlbnQodGV4dFRvSW5zZXJ0WzBdLCBQbGF0Zm9ybTo6S2V5
Ym9hcmRFdmVudDo6S2V5RG93biwgMCksIHRydWUgLyogY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlv
biAqLyk7CiAgICAgfQogCiAgICAgLy8gUGVyZm9ybSB0aGUgdGV4dCBjaGFuZ2UgYXMgYSBzaW5n
bGUgY29tbWFuZCBpZiB0aGVyZSBpcyBvbmUuCiAgICAgaWYgKCF0ZXh0VG9JbnNlcnQuaXNFbXB0
eSgpICYmICFlZGl0b3ItPmNvbW1hbmQoIkluc2VydFRleHQiKS5leGVjdXRlKHRleHRUb0luc2Vy
dCkpIHsKLSAgICAgICAgSW5wdXRMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzZXRU
ZXh0IEZhaWxlZCB0byBpbnNlcnQgdGV4dCAnJXMnIiwgdGV4dFRvSW5zZXJ0LmxhdGluMSgpLmRh
dGEoKSk7CisgICAgICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sCisgICAgICAg
ICAgICAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IEZhaWxlZCB0byBpbnNlcnQgdGV4dCAnJXMnIiwK
KyAgICAgICAgICAgIHRleHRUb0luc2VydC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHJlcXVpcmVzU3BhY2VLZXlQcmVzcykKICAgICAg
ICAgaGFuZGxlS2V5Ym9hcmRJbnB1dChQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudChLRVlDT0RFX1NQ
QUNFLCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5RG93biwgMCksIHRydWUgLyogY2hhbmdl
SXNQYXJ0T2ZDb21wb3NpdGlvbiAqLyk7CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJ
bnB1dEhhbmRsZXI6OnNldFRleHQgUmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuIFRleHQgYWZ0ZXIg
cHJvY2Vzc2luZyAnJXMnIiwgZWxlbWVudFRleHQoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIElu
cHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJJbnB1dEhhbmRsZXI6OnNl
dFRleHQgUmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuIFRleHQgYWZ0ZXIgcHJvY2Vzc2luZyAnJXMn
IiwKKyAgICAgICAgZWxlbWVudFRleHQoKS5sYXRpbjEoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CkBAIC0yMzE0LDEzICsyMzQ4LDE1IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpzZXRU
ZXh0QXR0cmlidXRlcyhpbnQgaW5zZXJ0aW9uUG9pbnQsIHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bh
CiAgICAgICAgIC8vIHVzZWQgYnkgSU1GLiBXaGVuIHRoZXkgYWRkIHN1cHBvcnQgZm9yIG9uIHRo
ZSBmbHkgc3BlbGwgY2hlY2tpbmcgd2UgY2FuCiAgICAgICAgIC8vIHVzZSBpdCB0byBhcHBseSBz
cGVsbGluZyBtYXJrZXJzIGFuZCBkaXNhYmxlIGNvbnRpbnVvdXMgc3BlbGwgY2hlY2tpbmcuCiAK
LSAgICAgICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0
cmlidXRlcyBhZGRpbmcgbWFya2VyICVkIHRvICVkIC0gJWxsdSIsIHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uLCBzcGFuLT5hdHRyaWJ1dGVzX21hc2spOworICAgICAgICBJbnB1dExvZyhQbGF0
Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAgICAgIklucHV0SGFuZGxlcjo6c2V0VGV4dEF0
dHJpYnV0ZXMgYWRkaW5nIG1hcmtlciAlZCB0byAlZCAtICVsbHUiLAorICAgICAgICAgICAgc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHNwYW4tPmF0dHJpYnV0ZXNfbWFzayk7CiAgICAgICAg
IGFkZEF0dHJpYnV0ZWRUZXh0TWFya2VyKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB0ZXh0
U3R5bGVGcm9tTWFzayhzcGFuLT5hdHRyaWJ1dGVzX21hc2spKTsKIAogICAgICAgICBzcGFuKys7
CiAgICAgfQogCi0gICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRU
ZXh0QXR0cmlidXRlcyBhdHRyaWJ1dGUgY291bnQgJWQiLCBzcGFubmFibGVTdHJpbmctPnNwYW5z
X2NvdW50KTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5k
bGVyOjpzZXRUZXh0QXR0cmlidXRlcyBhdHRyaWJ1dGUgY291bnQgJWQiLCBzcGFubmFibGVTdHJp
bmctPnNwYW5zX2NvdW50KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjM1MSwxNCArMjM4
NywxOSBAQCBib29sIElucHV0SGFuZGxlcjo6c2V0UmVsYXRpdmVDdXJzb3JQb3NpdGlvbihpbnQg
aW5zZXJ0aW9uUG9pbnQsIGludCByZWxhdGl2ZUN1cgogICAgIGlmIChjdXJzb3JQb3NpdGlvbiA8
IDAgfHwgY3Vyc29yUG9zaXRpb24gPiAoaW50KWVsZW1lbnRUZXh0KCkubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFu
ZGxlcjo6c2V0UmVsYXRpdmVDdXJzb3JQb3NpdGlvbiBjdXJzb3IgcG9zaXRpb24gJWQiLCBjdXJz
b3JQb3NpdGlvbik7CisgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAg
ICAgIklucHV0SGFuZGxlcjo6c2V0UmVsYXRpdmVDdXJzb3JQb3NpdGlvbiBjdXJzb3IgcG9zaXRp
b24gJWQiLAorICAgICAgICBjdXJzb3JQb3NpdGlvbik7CiAKICAgICByZXR1cm4gc2V0Q3Vyc29y
UG9zaXRpb24oY3Vyc29yUG9zaXRpb24pOwogfQogCiBib29sIElucHV0SGFuZGxlcjo6c2V0U3Bh
bm5hYmxlVGV4dEFuZFJlbGF0aXZlQ3Vyc29yKHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxl
U3RyaW5nLCBpbnQgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbiwgYm9vbCBtYXJrVGV4dEFzQ29tcG9z
aW5nKQogewotICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0U3Bh
bm5hYmxlVGV4dEFuZFJlbGF0aXZlQ3Vyc29yKCVkLCAlZCwgJWQpIiwgc3Bhbm5hYmxlU3RyaW5n
LT5sZW5ndGgsIHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24sIG1hcmtUZXh0QXNDb21wb3NpbmcpOwor
ICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJJbnB1dEhhbmRs
ZXI6OnNldFNwYW5uYWJsZVRleHRBbmRSZWxhdGl2ZUN1cnNvciglZCwgJWQsICVkKSIsCisgICAg
ICAgIHNwYW5uYWJsZVN0cmluZy0+bGVuZ3RoLCByZWxhdGl2ZUN1cnNvclBvc2l0aW9uLCBtYXJr
VGV4dEFzQ29tcG9zaW5nKTsKKwogICAgIGludCBpbnNlcnRpb25Qb2ludCA9IGNvbXBvc2l0aW9u
QWN0aXZlKCkgPyBtX2NvbXBvc2luZ1RleHRTdGFydCA6IHNlbGVjdGlvblN0YXJ0KCk7CiAKICAg
ICBQcm9jZXNzaW5nQ2hhbmdlR3VhcmQgZ3VhcmQodGhpcyk7CkBAIC0yMzg4LDcgKzI0MjksOSBA
QCBpbnQzMl90IElucHV0SGFuZGxlcjo6c2V0Q29tcG9zaW5nVGV4dChzcGFubmFibGVfc3RyaW5n
X3QqIHNwYW5uYWJsZVN0cmluZywgaW50MwogICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nKQogICAg
ICAgICByZXR1cm4gLTE7CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRs
ZXI6OnNldENvbXBvc2luZ1RleHQgYXQgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbjogJWQiLCByZWxh
dGl2ZUN1cnNvclBvc2l0aW9uKTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZv
LAorICAgICAgICAiSW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdUZXh0IGF0IHJlbGF0aXZlQ3Vy
c29yUG9zaXRpb246ICVkIiwKKyAgICAgICAgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbik7CiAKICAg
ICAvLyBFbmFibGUgaW5wdXQgbW9kZSBpZiB3ZSBhcmUgcHJvY2Vzc2luZyBhIGtleSBldmVudC4K
ICAgICBzZXRJbnB1dE1vZGVFbmFibGVkKCk7CkBAIC0yNDA0LDcgKzI0NDcsNyBAQCBpbnQzMl90
IElucHV0SGFuZGxlcjo6Y29tbWl0VGV4dChzcGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0
cmluZywgaW50MzJfdCByZQogICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nKQogICAgICAgICByZXR1
cm4gLTE7CiAKLSAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OmNvbW1p
dFRleHQiKTsKKyAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5k
bGVyOjpjb21taXRUZXh0Iik7CiAKICAgICByZXR1cm4gc2V0U3Bhbm5hYmxlVGV4dEFuZFJlbGF0
aXZlQ3Vyc29yKHNwYW5uYWJsZVN0cmluZywgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbiwgZmFsc2Ug
LyogbWFya1RleHRBc0NvbXBvc2luZyAqLykgPyAwIDogLTE7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAKaW5kZXgg
MmRhNmQ4ZTY4ZGY1NjFjNzM2OWMwNmE5MTE3YTc1ODlkNGE1ZWM5Ny4uNjE2NGE3OTg1YmIxZDNj
NDFhOGViYzk0MmNmYjYxYWI4NGFkMjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcApAQCAtMzYyLDggKzM2Miw5
IEBAIHZvaWQgUmVuZGVyUXVldWU6OmFkZFRvUmVndWxhclF1ZXVlKGNvbnN0IFBsYXRmb3JtOjpJ
bnRSZWN0JiByZWN0KQogewogI2lmIERFQlVHX1JFTkRFUl9RVUVVRQogICAgIGlmIChtX3JlZ3Vs
YXJSZW5kZXJKb2JzUmVnaW9uLmlzUmVjdEluUmVnaW9uKHJlY3QpICE9IFBsYXRmb3JtOjpJbnRS
ZWN0UmVnaW9uOjpDb250YWluZWRJblJlZ2lvbikgewotICAgICAgICBCQkxPRyhCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRlclF1ZXVlOjphZGRUb1JlZ3VsYXJR
dWV1ZSAlZCwlZCAlZHglZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC54
KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBQbGF0
Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAgICAg
IlJlbmRlclF1ZXVlOjphZGRUb1JlZ3VsYXJRdWV1ZSAlcyIsCisgICAgICAgICAgICByZWN0LnRv
U3RyaW5nKCkuY19zdHIoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM4Myw4ICszODQsOSBAQCB2
b2lkIFJlbmRlclF1ZXVlOjphZGRUb1Njcm9sbFpvb21RdWV1ZShjb25zdCBSZW5kZXJSZWN0JiBy
ZWN0LCBSZW5kZXJSZWN0TGlzdCogcgogICAgICAgICByZXR1cm47CiAKICNpZiBERUJVR19SRU5E
RVJfUVVFVUUKLSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNh
bCwgIlJlbmRlclF1ZXVlOjphZGRUb1Njcm9sbFpvb21RdWV1ZSAlZCwlZCAlZHglZCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2
ZWxDcml0aWNhbCwKKyAgICAgICAgIlJlbmRlclF1ZXVlOjphZGRUb1Njcm9sbFpvb21RdWV1ZSAl
cyIsCisgICAgICAgIHJlY3QudG9TdHJpbmcoKS5jX3N0cigpKTsKICNlbmRpZgogICAgIHJlY3RM
aXN0LT5wdXNoX2JhY2socmVjdCk7CiAKQEAgLTU2OSw3ICs1NzEsNyBAQCB2b2lkIFJlbmRlclF1
ZXVlOjpyZW5kZXIoYm9vbCBzaG91bGRQZXJmb3JtUmVndWxhclJlbmRlckpvYnMpCiAjaWYgREVC
VUdfUkVOREVSX1FVRVVFCiAgICAgZG91YmxlIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkg
LSB0aW1lOwogICAgIGlmIChlbGFwc2VkKQotICAgICAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRlclF1ZXVlOjpyZW5kZXIgbGF5b3V0IGVsYXBz
ZWQ9JWYiLCBlbGFwc2VkKTsKKyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6
TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRlclF1ZXVlOjpyZW5kZXIgbGF5b3V0IGVsYXBzZWQ9JWYi
LCBlbGFwc2VkKTsKICNlbmRpZgogCiAgICAgLy8gRW1wdHkgdGhlIHF1ZXVlcyBpbiBhIHByZWNp
c2Ugb3JkZXIgb2YgcHJpb3JpdHkuCkBAIC01OTksNyArNjAxLDcgQEAgdm9pZCBSZW5kZXJRdWV1
ZTo6cmVuZGVyQWxsQ3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzKCkKICNpZiBERUJVR19SRU5ERVJf
UVVFVUUKICAgICBkb3VibGUgZWxhcHNlZCA9IFdURjo6Y3VycmVudFRpbWUoKSAtIHRpbWU7CiAg
ICAgaWYgKGVsYXBzZWQpCi0gICAgICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVy
Sm9icyBsYXlvdXQgZWxhcHNlZD0lZiIsIGVsYXBzZWQpOworICAgICAgICBQbGF0Zm9ybTo6bG9n
QWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlckFs
bEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyBsYXlvdXQgZWxhcHNlZD0lZiIsIGVsYXBzZWQpOwog
I2VuZGlmCiAKICAgICAvLyBUaGUgc3RhdGUgb2YgcmVuZGVyIHF1ZXVlIG1heSBiZSBtb2RpZmll
ZCBmcm9tIGluc2lkZSByZXF1ZXN0TGF5b3V0SWZOZWVkZWQuCkBAIC02MjYsNyArNjI4LDcgQEAg
dm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyQWxsQ3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzKCkKIAog
I2lmIERFQlVHX1JFTkRFUl9RVUVVRQogICAgICAgICBpZiAoIXJlZ2lvbk5vdFJlbmRlcmVkLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZl
bENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9i
cyByZWdpb24gbm90IGNvbXBsZXRlbHkgcmVuZGVyZWQhIik7CisgICAgICAgICAgICBQbGF0Zm9y
bTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJl
bmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyByZWdpb24gbm90IGNvbXBsZXRlbHkgcmVu
ZGVyZWQhIik7CiAjZW5kaWYKIAogICAgICAgICAvLyBDbGlwIHRvIHRoZSB2aXNpYmxlIGNvbnRl
bnRzIHNvIHdlJ2xsIGJlIGZhc3Rlci4KQEAgLTY0MywxMCArNjQ1LDExIEBAIHZvaWQgUmVuZGVy
UXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icygpCiAjaWYgREVCVUdfUkVO
REVSX1FVRVVFCiAgICAgLy8gU3RvcCB0aGUgdGltZSBtZWFzdXJlbWVudC4KICAgICBlbGFwc2Vk
ID0gV1RGOjpjdXJyZW50VGltZSgpIC0gdGltZTsKLSAgICBQbGF0Zm9ybTo6SW50UmVjdCBleHRl
bnRzID0gbV9jdXJyZW50UmVndWxhclJlbmRlckpvYnNCYXRjaFJlZ2lvbi5leHRlbnRzKCk7Ci0g
ICAgaW50IG51bWJlck9mUmVjdHMgPSBtX2N1cnJlbnRSZWd1bGFyUmVuZGVySm9ic0JhdGNoUmVn
aW9uLnJlY3RzKCkuc2l6ZSgpOwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVy
Sm9icyBleHRlbnRzPSglZCwlZCAlZHglZCkgbnVtYmVyT2ZSZWN0cz0lZCBlbGFwc2VkPSVmIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVudHMueCgpLCBleHRlbnRzLnkoKSwgZXh0
ZW50cy53aWR0aCgpLCBleHRlbnRzLmhlaWdodCgpLCBudW1iZXJPZlJlY3RzLCBlbGFwc2VkKTsK
KyAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAg
ICAgICAiUmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyBleHRl
bnRzPSVzIG51bWJlck9mUmVjdHM9JWQgZWxhcHNlZD0lZiIsCisgICAgICAgIG1fY3VycmVudFJl
Z3VsYXJSZW5kZXJKb2JzQmF0Y2hSZWdpb24uZXh0ZW50cygpLnRvU3RyaW5nKCkuY19zdHIoKSwK
KyAgICAgICAgbV9jdXJyZW50UmVndWxhclJlbmRlckpvYnNCYXRjaFJlZ2lvbi5yZWN0cygpLnNp
emUoKSwKKyAgICAgICAgZWxhcHNlZCk7CiAjZW5kaWYKIAogICAgIC8vIENsZWFyIHRoZSByZWdp
b24gYW5kIGJsaXQgc2luY2UgdGhpcyBiYXRjaCBpcyBub3cgY29tcGxldGUuCkBAIC02ODEsNyAr
Njg0LDkgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6c3RhcnRSZWd1bGFyUmVuZGVySm9iQmF0Y2hJZk5l
ZWRlZCgpCiAgICAgbV9yZWd1bGFyUmVuZGVySm9ic1JlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0
UmVnaW9uKCk7CiAKICNpZiBERUJVR19SRU5ERVJfUVVFVUUKLSAgICBCQkxPRyhCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRlclF1ZXVlOjpzdGFydFJlZ3VsYXJS
ZW5kZXJKb2JCYXRjaElmTmVlZGVkIGJhdGNoIHNpemUgaXMgJWQhIiwgbV9jdXJyZW50UmVndWxh
clJlbmRlckpvYnNCYXRjaC5zaXplKCkpOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZv
cm06OkxvZ0xldmVsQ3JpdGljYWwsCisgICAgICAgICJSZW5kZXJRdWV1ZTo6c3RhcnRSZWd1bGFy
UmVuZGVySm9iQmF0Y2hJZk5lZWRlZCBiYXRjaCBzaXplIGlzICVkISIsCisgICAgICAgIG1fY3Vy
cmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2guc2l6ZSgpKTsKICNlbmRpZgogfQogCkBAIC03MDgs
OCArNzEzLDEwIEBAIHZvaWQgUmVuZGVyUXVldWU6OnJlbmRlclZpc2libGVab29tSm9iKCkKICNp
ZiBERUJVR19SRU5ERVJfUVVFVUUKICAgICAvLyBTdG9wIHRoZSB0aW1lIG1lYXN1cmVtZW50CiAg
ICAgZG91YmxlIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwotICAgIEJCTE9H
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJl
bmRlclZpc2libGVab29tSm9iIHJlY3Q9KCVkLCVkICVkeCVkKSBlbGFwc2VkPSVmIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1YlJlY3QueCgpLCBzdWJSZWN0LnkoKSwgc3ViUmVjdC53
aWR0aCgpLCBzdWJSZWN0LmhlaWdodCgpLCBlbGFwc2VkKTsKKyAgICBQbGF0Zm9ybTo6bG9nQWx3
YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAgICAiUmVuZGVyUXVldWU6OnJl
bmRlclZpc2libGVab29tSm9iIHJlY3Q9JXMgZWxhcHNlZD0lZiIsCisgICAgICAgIHN1YlJlY3Qu
dG9TdHJpbmcoKS5jX3N0cigpLAorICAgICAgICBlbGFwc2VkKTsKICNlbmRpZgogfQogCkBAIC03
MjAsMTQgKzcyNywxNSBAQCB2b2lkIFJlbmRlclF1ZXVlOjpyZW5kZXJWaXNpYmxlU2Nyb2xsSm9i
KCkKICNpZiBERUJVR19SRU5ERVJfUVVFVUUgfHwgREVCVUdfUkVOREVSX1FVRVVFX1NPUlQKICAg
ICAvLyBTdGFydCB0aGUgdGltZSBtZWFzdXJlbWVudC4KICAgICBkb3VibGUgdGltZSA9IFdURjo6
Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgZWxhcHNlZDsKICNlbmRpZgogCiAgICAgcXVpY2tT
b3J0KCZtX3Zpc2libGVTY3JvbGxKb2JzKTsKIAogI2lmIERFQlVHX1JFTkRFUl9RVUVVRV9TT1JU
CiAgICAgLy8gU3RvcCB0aGUgdGltZSBtZWFzdXJlbWVudAotICAgIGRvdWJsZSBlbGFwc2VkID0g
V1RGOjpjdXJyZW50VGltZSgpIC0gdGltZTsKLSAgICBCQkxPRyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TG9nTGV2ZWxDcml0aWNhbCwgIlJlbmRlclF1ZXVlOjpyZW5kZXJWaXNpYmxlU2Nyb2xsSm9i
IHNvcnQgZWxhcHNlZD0lZiIsIGVsYXBzZWQpOworICAgIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRU
aW1lKCkgLSB0aW1lOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVs
Q3JpdGljYWwsICJSZW5kZXJRdWV1ZTo6cmVuZGVyVmlzaWJsZVNjcm9sbEpvYiBzb3J0IGVsYXBz
ZWQ9JWYiLCBlbGFwc2VkKTsKICNlbmRpZgogCiAgICAgUmVuZGVyUmVjdCByZWN0ID0gbV92aXNp
YmxlU2Nyb2xsSm9ic1swXTsKQEAgLTc0Nyw5ICs3NTUsMTEgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6
cmVuZGVyVmlzaWJsZVNjcm9sbEpvYigpCiAKICNpZiBERUJVR19SRU5ERVJfUVVFVUUKICAgICAv
LyBTdG9wIHRoZSB0aW1lIG1lYXN1cmVtZW50Ci0gICAgZG91YmxlIGVsYXBzZWQgPSBXVEY6OmN1
cnJlbnRUaW1lKCkgLSB0aW1lOwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlclZpc2libGVTY3JvbGxKb2IgcmVjdD0o
JWQsJWQgJWR4JWQpIGVsYXBzZWQ9JWYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
UmVjdC54KCksIHN1YlJlY3QueSgpLCBzdWJSZWN0LndpZHRoKCksIHN1YlJlY3QuaGVpZ2h0KCks
IGVsYXBzZWQpOworICAgIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOworICAg
IFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCisgICAgICAg
ICJSZW5kZXJRdWV1ZTo6cmVuZGVyVmlzaWJsZVNjcm9sbEpvYiByZWN0PSVzIGVsYXBzZWQ9JWYi
LAorICAgICAgICBzdWJSZWN0LnRvU3RyaW5nKCkuY19zdHIoKSwKKyAgICAgICAgZWxhcHNlZCk7
CiAjZW5kaWYKIAogICAgIGlmIChtX3Zpc2libGVTY3JvbGxKb2JzLmVtcHR5KCkpCkBAIC03ODAs
OCArNzkwLDkgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYigpCiAK
ICNpZiBERUJVR19SRU5ERVJfUVVFVUUKICAgICAgICAgaWYgKCFyZWdpb25Ob3RSZW5kZXJlZC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlclJlZ3VsYXJSZW5kZXJKb2IgcmVjdCAo
JWQsJWQgJWR4JWQpIG5vdCBjb21wbGV0ZWx5IHJlbmRlcmVkISIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpOworICAgICAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9n
TGV2ZWxDcml0aWNhbCwKKyAgICAgICAgICAgICAgICAiUmVuZGVyUXVldWU6OnJlbmRlclJlZ3Vs
YXJSZW5kZXJKb2IgcmVjdCAlcyBub3QgY29tcGxldGVseSByZW5kZXJlZCEiLAorICAgICAgICAg
ICAgICAgIHJlY3QudG9TdHJpbmcoKS5jX3N0cigpKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAg
LTc5NSw4ICs4MDYsMTAgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpv
YigpCiAjaWYgREVCVUdfUkVOREVSX1FVRVVFCiAgICAgLy8gU3RvcCB0aGUgdGltZSBtZWFzdXJl
bWVudC4KICAgICBkb3VibGUgZWxhcHNlZCA9IFdURjo6Y3VycmVudFRpbWUoKSAtIHRpbWU7Ci0g
ICAgQkJMT0coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJSZW5kZXJR
dWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYiByZWN0PSglZCwlZCAlZHglZCkgZWxhcHNlZD0l
ZiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgZWxhcHNlZCk7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5
cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgIlJlbmRlclF1ZXVlOjpyZW5k
ZXJSZWd1bGFyUmVuZGVySm9iIHJlY3Q9JXMgZWxhcHNlZD0lZiIsCisgICAgICAgIHJlY3QudG9T
dHJpbmcoKS5jX3N0cigpLAorICAgICAgICBlbGFwc2VkKTsKICNlbmRpZgogCiAgICAgaWYgKG1f
Y3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2guZW1wdHkoKSkgewpAQCAtODIyLDE0ICs4MzUs
MTUgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyTm9uVmlzaWJsZVNjcm9sbEpvYigpCiAjaWYg
REVCVUdfUkVOREVSX1FVRVVFIHx8IERFQlVHX1JFTkRFUl9RVUVVRV9TT1JUCiAgICAgLy8gU3Rh
cnQgdGhlIHRpbWUgbWVhc3VyZW1lbnQuCiAgICAgZG91YmxlIHRpbWUgPSBXVEY6OmN1cnJlbnRU
aW1lKCk7CisgICAgZG91YmxlIGVsYXBzZWQ7CiAjZW5kaWYKIAogICAgIHF1aWNrU29ydCgmbV9u
b25WaXNpYmxlU2Nyb2xsSm9icyk7CiAKICNpZiBERUJVR19SRU5ERVJfUVVFVUVfU09SVAogICAg
IC8vIFN0b3AgdGhlIHRpbWUgbWVhc3VyZW1lbnQuCi0gICAgZG91YmxlIGVsYXBzZWQgPSBXVEY6
OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpM
b2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlck5vblZpc2libGVTY3JvbGxKb2Ig
c29ydCBlbGFwc2VkPSVmIiwgZWxhcHNlZCk7CisgICAgZWxhcHNlZCA9IFdURjo6Y3VycmVudFRp
bWUoKSAtIHRpbWU7CisgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxD
cml0aWNhbCwgIlJlbmRlclF1ZXVlOjpyZW5kZXJOb25WaXNpYmxlU2Nyb2xsSm9iIHNvcnQgZWxh
cHNlZD0lZiIsIGVsYXBzZWQpOwogI2VuZGlmCiAKICAgICBSZW5kZXJSZWN0IHJlY3QgPSBtX25v
blZpc2libGVTY3JvbGxKb2JzWzBdOwpAQCAtODUzLDkgKzg2NywxMCBAQCB2b2lkIFJlbmRlclF1
ZXVlOjpyZW5kZXJOb25WaXNpYmxlU2Nyb2xsSm9iKCkKIAogI2lmIERFQlVHX1JFTkRFUl9RVUVV
RQogICAgIC8vIFN0b3AgdGhlIHRpbWUgbWVhc3VyZW1lbnQuCi0gICAgZG91YmxlIGVsYXBzZWQg
PSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwotICAgIEJCTE9HKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUmVuZGVyUXVldWU6OnJlbmRlck5vblZpc2libGVTY3Jv
bGxKb2IgcmVjdD0oJWQsJWQgJWR4JWQpIGVsYXBzZWQ9JWYiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ViUmVjdC54KCksIHN1YlJlY3QueSgpLCBzdWJSZWN0LndpZHRoKCksIHN1YlJl
Y3QuaGVpZ2h0KCksIGVsYXBzZWQpOworICAgIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkg
LSB0aW1lOworICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGlj
YWwsCisgICAgICAgICJSZW5kZXJRdWV1ZTo6cmVuZGVyTm9uVmlzaWJsZVNjcm9sbEpvYiByZWN0
PSVzIGVsYXBzZWQ9JWYiLAorICAgICAgICBzdWJSZWN0LnRvU3RyaW5nKCkuY19zdHIoKSwgZWxh
cHNlZCk7CiAjZW5kaWYKIAogICAgIGlmIChtX25vblZpc2libGVTY3JvbGxKb2JzLmVtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxl
Y3Rpb25IYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L1NlbGVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGFhYmRhN2NlZjE0NzgwOWZlZWJhZjQwYzJiNjU1
ZjI2YTJhZTQ1MjQuLmJhOWY4NGZhZTBlMmRmNmU1MmI3NjkyZDkxNzQyNDE2MjBmZjg4MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L1NlbGVjdGlvbkhhbmRsZXIuY3BwCkBAIC01MSwxMyArNTEsMTMgQEAgdXNpbmcgbmFtZXNwYWNl
IEJsYWNrQmVycnk6OlBsYXRmb3JtOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBT
SE9XREVCVUdfU0VMRUNUSU9OSEFORExFUgotI2RlZmluZSBTZWxlY3Rpb25Mb2coc2V2ZXJpdHks
IGZvcm1hdCwgLi4uKSBsb2dBbHdheXMoc2V2ZXJpdHksIGZvcm1hdCwgIyMgX19WQV9BUkdTX18p
CisjZGVmaW5lIFNlbGVjdGlvbkxvZyhzZXZlcml0eSwgZm9ybWF0LCAuLi4pIFBsYXRmb3JtOjps
b2dBbHdheXMoc2V2ZXJpdHksIGZvcm1hdCwgIyMgX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmlu
ZSBTZWxlY3Rpb25Mb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKQogI2VuZGlmIC8vIFNIT1dERUJV
R19TRUxFQ1RJT05IQU5ETEVSCiAKICNpZiBTSE9XREVCVUdfU0VMRUNUSU9OSEFORExFUl9USU1J
TkcKLSNkZWZpbmUgU2VsZWN0aW9uVGltaW5nTG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikgbG9n
QWx3YXlzKHNldmVyaXR5LCBmb3JtYXQsICMjIF9fVkFfQVJHU19fKQorI2RlZmluZSBTZWxlY3Rp
b25UaW1pbmdMb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBQbGF0Zm9ybTo6bG9nQWx3YXlzKHNl
dmVyaXR5LCBmb3JtYXQsICMjIF9fVkFfQVJHU19fKQogI2Vsc2UKICNkZWZpbmUgU2VsZWN0aW9u
VGltaW5nTG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikKICNlbmRpZiAvLyBTSE9XREVCVUdfU0VM
RUNUSU9OSEFORExFUl9USU1JTkcKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5k
bGVyOjpjYW5jZWxTZWxlY3Rpb24oKQogICAgIGlmIChtX3dlYlBhZ2UtPm1fc2VsZWN0aW9uT3Zl
cmxheSkKICAgICAgICAgbV93ZWJQYWdlLT5tX3NlbGVjdGlvbk92ZXJsYXktPmhpZGUoKTsKIAot
ICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpjYW5jZWxT
ZWxlY3Rpb24iKTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlNl
bGVjdGlvbkhhbmRsZXI6OmNhbmNlbFNlbGVjdGlvbiIpOwogCiAgICAgaWYgKG1fd2ViUGFnZS0+
bV9pbnB1dEhhbmRsZXItPmlzSW5wdXRNb2RlKCkpCiAgICAgICAgIG1fd2ViUGFnZS0+bV9pbnB1
dEhhbmRsZXItPmNhbmNlbFNlbGVjdGlvbigpOwpAQCAtMjE2LDExICsyMTYsMTQgQEAgYm9vbCBT
ZWxlY3Rpb25IYW5kbGVyOjpzaG91bGRVcGRhdGVTZWxlY3Rpb25PckNhcmV0Rm9yUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG8KICAgICBib29sIGFib3ZlQ2FyZXQgPSBwb2ludC55KCkgPCBjYXJl
dFJlY3QueSgpOwogICAgIGJvb2wgYmVsb3dDYXJldCA9IHBvaW50LnkoKSA+PSBjYXJldFJlY3Qu
bWF4WSgpOwogCi0gICAgU2VsZWN0aW9uTG9nKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRs
ZXI6OnNob3VsZFVwZGF0ZVNlbGVjdGlvbk9yQ2FyZXRGb3JQb2ludCBtdWx0aWxpbmUgPSAlcyBh
Ym92ZSA9ICVzIGJlbG93ID0gJXMgZmlyc3QgbGluZSA9ICVzIGxhc3QgbGluZSA9ICVzIHN0YXJ0
ID0gJXMiCi0gICAgICAgICAgICAsIG1fd2ViUGFnZS0+bV9pbnB1dEhhbmRsZXItPmlzTXVsdGls
aW5lSW5wdXRNb2RlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCBhYm92ZUNhcmV0ID8gInRydWUiIDog
ImZhbHNlIiwgYmVsb3dDYXJldCA/ICJ0cnVlIiA6ICJmYWxzZSIKLSAgICAgICAgICAgICwgaW5T
YW1lTGluZShjdXJyZW50U2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBzdGFydE9mRWRpdGFibGVD
b250ZW50KGN1cnJlbnRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIKLSAgICAgICAgICAgICwgaW5TYW1lTGluZShjdXJyZW50U2VsZWN0aW9uLnZpc2libGVFbmQo
KSwgZW5kT2ZFZGl0YWJsZUNvbnRlbnQoY3VycmVudFNlbGVjdGlvbi52aXNpYmxlRW5kKCkpKSA/
ICJ0cnVlIiA6ICJmYWxzZSIKLSAgICAgICAgICAgICwgc3RhcnRDYXJldCA/ICJ0cnVlIiA6ICJm
YWxzZSIpOworICAgIFNlbGVjdGlvbkxvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAg
ICAiU2VsZWN0aW9uSGFuZGxlcjo6c2hvdWxkVXBkYXRlU2VsZWN0aW9uT3JDYXJldEZvclBvaW50
IG11bHRpbGluZSA9ICVzIGFib3ZlID0gJXMgYmVsb3cgPSAlcyBmaXJzdCBsaW5lID0gJXMgbGFz
dCBsaW5lID0gJXMgc3RhcnQgPSAlcyIsCisgICAgICAgIG1fd2ViUGFnZS0+bV9pbnB1dEhhbmRs
ZXItPmlzTXVsdGlsaW5lSW5wdXRNb2RlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLAorICAgICAgICBh
Ym92ZUNhcmV0ID8gInRydWUiIDogImZhbHNlIiwKKyAgICAgICAgYmVsb3dDYXJldCA/ICJ0cnVl
IiA6ICJmYWxzZSIsCisgICAgICAgIGluU2FtZUxpbmUoY3VycmVudFNlbGVjdGlvbi52aXNpYmxl
U3RhcnQoKSwgc3RhcnRPZkVkaXRhYmxlQ29udGVudChjdXJyZW50U2VsZWN0aW9uLnZpc2libGVT
dGFydCgpKSkgPyAidHJ1ZSIgOiAiZmFsc2UiLAorICAgICAgICBpblNhbWVMaW5lKGN1cnJlbnRT
ZWxlY3Rpb24udmlzaWJsZUVuZCgpLCBlbmRPZkVkaXRhYmxlQ29udGVudChjdXJyZW50U2VsZWN0
aW9uLnZpc2libGVFbmQoKSkpID8gInRydWUiIDogImZhbHNlIiwKKyAgICAgICAgc3RhcnRDYXJl
dCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCiAgICAgaWYgKCFtX3dlYlBhZ2UtPm1faW5wdXRIYW5k
bGVyLT5pc011bHRpbGluZUlucHV0TW9kZSgpICYmIChhYm92ZUNhcmV0IHx8IGJlbG93Q2FyZXQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzIsMTQgKzIzNSwxNiBAQCBib29sIFNlbGVj
dGlvbkhhbmRsZXI6OnNob3VsZFVwZGF0ZVNlbGVjdGlvbk9yQ2FyZXRGb3JQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNlbGVjdGlvbkhhbmRs
ZXI6OnNldENhcmV0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgJnBvc2l0aW9uKQor
dm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJldFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBpZiAoIW1fd2ViUGFnZS0+bV9pbnB1dEhhbmRsZXIt
PmlzSW5wdXRNb2RlKCkgfHwgIW1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmRvY3Vt
ZW50KCktPmZvY3VzZWROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2FyZXRBY3Rp
dmUgPSB0cnVlOwogCi0gICAgU2VsZWN0aW9uTG9nKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhh
bmRsZXI6OnNldENhcmV0UG9zaXRpb24gcmVxdWVzdGVkIHBvaW50ICVkLCAlZCIsIHBvc2l0aW9u
LngoKSwgcG9zaXRpb24ueSgpKTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVs
SW5mbywKKyAgICAgICAgIlNlbGVjdGlvbkhhbmRsZXI6OnNldENhcmV0UG9zaXRpb24gcmVxdWVz
dGVkIHBvaW50ICVzIiwKKyAgICAgICAgUGxhdGZvcm06OkludFBvaW50KHBvc2l0aW9uKS50b1N0
cmluZygpLmNfc3RyKCkpOwogCiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSA9IG1fd2ViUGFnZS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgRnJhbWVTZWxlY3Rpb24qIGNvbnRyb2xsZXIgPSBm
b2N1c2VkRnJhbWUtPnNlbGVjdGlvbigpOwpAQCAtMjc0LDcgKzI3OSw3IEBAIHZvaWQgU2VsZWN0
aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCAmcG9z
aXRpb24pCiAKICAgICBjb250cm9sbGVyLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKIAot
ICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZXRDYXJl
dFBvc2l0aW9uIHBvaW50IHZhbGlkLCBjdXJzb3IgdXBkYXRlZCIpOworICAgIFNlbGVjdGlvbkxv
ZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0Q2FyZXRQb3Np
dGlvbiBwb2ludCB2YWxpZCwgY3Vyc29yIHVwZGF0ZWQiKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25I
YW5kbGVyOjppbnB1dEhhbmRsZXJEaWRGaW5pc2hQcm9jZXNzaW5nQ2hhbmdlKCkKQEAgLTQ0OCw3
ICs0NTMsOSBAQCBib29sIFNlbGVjdGlvbkhhbmRsZXI6OnVwZGF0ZU9ySGFuZGxlSW5wdXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aQogICAgIGlmICghY2hhcmFjdGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTZWxlY3Rpb25Mb2coTG9nTGV2ZWxJbmZvLCAi
U2VsZWN0aW9uSGFuZGxlcjo6dXBkYXRlT3JIYW5kbGVJbnB1dFNlbGVjdGlvbiBtYWtpbmcgc2Vs
ZWN0aW9uIGNoYW5nZSBhdHRlbXB0IHVzaW5nIGtleSBldmVudCAlZCIsIGNoYXJhY3Rlcik7Cisg
ICAgU2VsZWN0aW9uTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJTZWxlY3Rp
b25IYW5kbGVyOjp1cGRhdGVPckhhbmRsZUlucHV0U2VsZWN0aW9uIG1ha2luZyBzZWxlY3Rpb24g
Y2hhbmdlIGF0dGVtcHQgdXNpbmcga2V5IGV2ZW50ICVkIiwKKyAgICAgICAgY2hhcmFjdGVyKTsK
IAogICAgIGlmIChzaG91bGRFeHRlbmRTZWxlY3Rpb25JbkRpcmVjdGlvbihjb250cm9sbGVyLT5z
ZWxlY3Rpb24oKSwgY2hhcmFjdGVyKSkKICAgICAgICAgbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxl
ci0+aGFuZGxlS2V5Ym9hcmRJbnB1dChQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudChjaGFyYWN0ZXIs
IFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlEb3duLCBLRVlNT0RfU0hJRlQpKTsKQEAgLTQ3
NCw3ICs0ODEsMTAgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHN0YXJ0LCBjb25zdCBXZWJDb3IKICAgICBtX3RpbWVyLnN0YXJ0
KCk7CiAjZW5kaWYKIAotICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25I
YW5kbGVyOjpzZXRTZWxlY3Rpb24gYWRqdXN0ZWQgcG9pbnRzICVkLCAlZCwgJWQsICVkIiwgc3Rh
cnQueCgpLCBzdGFydC55KCksIGVuZC54KCksIGVuZC55KCkpOworICAgIFNlbGVjdGlvbkxvZyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2Vs
ZWN0aW9uIGFkanVzdGVkIHBvaW50cyAlcywgJXMiLAorICAgICAgICBQbGF0Zm9ybTo6SW50UG9p
bnQoc3RhcnQpLnRvU3RyaW5nKCkuY19zdHIoKSwKKyAgICAgICAgUGxhdGZvcm06OkludFBvaW50
KGVuZCkudG9TdHJpbmcoKS5jX3N0cigpKTsKIAogICAgIC8vIE5vdGUgdGhhdCBJbnRQb2ludCgt
MSwgLTEpIGlzIGJlaW5nIG91ciBzZW50aW5lbCBzbyBmYXIgZm9yCiAgICAgLy8gY2xpcHBlZCBv
dXQgc2VsZWN0aW9uIHN0YXJ0aW5nIG9yIGVuZGluZyBsb2NhdGlvbi4KQEAgLTU0NSw3ICs1NTUs
NyBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNldFNlbGVjdGlvbihjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgc3RhcnQsIGNvbnN0IFdlYkNvcgogICAgICAgICAvLyBSZXF1ZXN0ZWQgc2VsZWN0
aW9uIHJlc3VsdHMgaW4gYW4gZW1wdHkgc2VsZWN0aW9uLCBza2lwIHRoaXMgY2hhbmdlLgogICAg
ICAgICBzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQodHJ1ZSAvKiBmb3JjZVVwZGF0ZVdpdGhvdXRD
aGFuZ2UgKi8pOwogCi0gICAgICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbFdhcm4sICJTZWxlY3Rp
b25IYW5kbGVyOjpzZXRTZWxlY3Rpb24gc2VsZWN0aW9uIHBvaW50cyBpbnZhbGlkLCBzZWxlY3Rp
b24gbm90IHVwZGF0ZWQuIik7CisgICAgICAgIFNlbGVjdGlvbkxvZyhQbGF0Zm9ybTo6TG9nTGV2
ZWxXYXJuLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uIHNlbGVjdGlvbiBwb2ludHMg
aW52YWxpZCwgc2VsZWN0aW9uIG5vdCB1cGRhdGVkLiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC01NTQsNyArNTY0LDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZXRTZWxlY3Rp
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHN0YXJ0LCBjb25zdCBXZWJDb3IKICAgICAgICAg
bV93ZWJQYWdlLT5tX2NsaWVudC0+bm90aWZ5U2VsZWN0aW9uSGFuZGxlc1JldmVyc2VkKCk7CiAK
ICAgICBjb250cm9sbGVyLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKLSAgICBTZWxlY3Rp
b25Mb2coTG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9uIHNlbGVj
dGlvbiBwb2ludHMgdmFsaWQsIHNlbGVjdGlvbiB1cGRhdGVkLiIpOworICAgIFNlbGVjdGlvbkxv
ZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2V0U2VsZWN0aW9u
IHNlbGVjdGlvbiBwb2ludHMgdmFsaWQsIHNlbGVjdGlvbiB1cGRhdGVkLiIpOwogfQogCiAvLyBG
SVhNRSByZS11c2UgdGhpcyBpbiBjb250ZXh0LiBNdXN0IGJlIHVwZGF0ZWQgdG8gaW5jbHVkZSBh
biBvcHRpb24gdG8gcmV0dXJuIHRoZSBocmVmLgpAQCAtNjMzLDcgKzY0Myw5IEBAIHZvaWQgU2Vs
ZWN0aW9uSGFuZGxlcjo6c2VsZWN0T2JqZWN0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2Nh
dGlvbiwgVGV4dEdyYW51CiAgICAgQVNTRVJUKG1fd2ViUGFnZSAmJiBtX3dlYlBhZ2UtPmZvY3Vz
ZWRPck1haW5GcmFtZSgpICYmIG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPnNlbGVj
dGlvbigpKTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gbV93ZWJQYWdlLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIAotICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25I
YW5kbGVyOjpzZWxlY3RPYmplY3QgYWRqdXN0ZWQgcG9pbnRzICVkLCAlZCIsIGxvY2F0aW9uLngo
KSwgbG9jYXRpb24ueSgpKTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywKKyAgICAgICAgIlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdCBhZGp1c3RlZCBwb2lu
dHMgJXMiLAorICAgICAgICBQbGF0Zm9ybTo6SW50UG9pbnQobG9jYXRpb24pLnRvU3RyaW5nKCku
Y19zdHIoKSk7CiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCByZWxhdGl2ZVBvaW50ID0gRE9NU3Vw
cG9ydDo6Y29udmVydFBvaW50VG9GcmFtZShtX3dlYlBhZ2UtPm1haW5GcmFtZSgpLCBmb2N1c2Vk
RnJhbWUsIGxvY2F0aW9uKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9pbnRMb2NhdGlvbihmb2N1
c2VkRnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHJlbGF0aXZlUG9pbnQpKTsKQEAgLTY1
Miw3ICs2NjQsNyBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdE9iamVjdChUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgQVNTRVJUKG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCkgJiYgbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+c2VsZWN0aW9uKCkp
OwogICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogCi0gICAgU2VsZWN0aW9uTG9nKExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6
OnNlbGVjdE9iamVjdCB1c2luZyBjdXJyZW50IHNlbGVjdGlvbiIpOworICAgIFNlbGVjdGlvbkxv
ZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0T2JqZWN0
IHVzaW5nIGN1cnJlbnQgc2VsZWN0aW9uIik7CiAKICAgICBBU1NFUlQoZm9jdXNlZEZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uVHlwZSgpICE9IFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0
aW9uKTsKIApAQCAtNjgwLDcgKzY5Miw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0
T2JqZWN0KE5vZGUqIG5vZGUpCiAgICAgQVNTRVJUKG1fd2ViUGFnZSAmJiBtX3dlYlBhZ2UtPmZv
Y3VzZWRPck1haW5GcmFtZSgpICYmIG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPnNl
bGVjdGlvbigpKTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gbV93ZWJQYWdlLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKIAotICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rp
b25IYW5kbGVyOjpzZWxlY3ROb2RlIik7CisgICAgU2VsZWN0aW9uTG9nKFBsYXRmb3JtOjpMb2dM
ZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3ROb2RlIik7CiAKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250
ZW50c09mTm9kZShub2RlKTsKICAgICBmb2N1c2VkRnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxl
Y3Rpb24oc2VsZWN0aW9uKTsKQEAgLTg2Nyw3ICs4NzksOSBAQCBib29sIFNlbGVjdGlvbkhhbmRs
ZXI6OmlucHV0Tm9kZU92ZXJyaWRlc1RvdWNoKCkgY29uc3QKIC8vIHN5c3RlbSBpcyBub3QgZW50
aXJlbHkgV2ViS2l0Lgogdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNo
YW5nZWQoYm9vbCBmb3JjZVVwZGF0ZVdpdGhvdXRDaGFuZ2UpCiB7Ci0gICAgU2VsZWN0aW9uTG9n
KExvZ0xldmVsSW5mbywgIlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0aW9uQ2hhbmdl
ZCBmb3JjZVVwZGF0ZVdpdGhvdXRDaGFuZ2UgPSAlcyIsIGZvcmNlVXBkYXRlV2l0aG91dENoYW5n
ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIFNlbGVjdGlvbkxvZyhQbGF0Zm9ybTo6TG9nTGV2
ZWxJbmZvLAorICAgICAgICAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb25DaGFu
Z2VkIGZvcmNlVXBkYXRlV2l0aG91dENoYW5nZSA9ICVzIiwKKyAgICAgICAgZm9yY2VVcGRhdGVX
aXRob3V0Q2hhbmdlID8gInRydWUiIDogImZhbHNlIik7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBj
YW4gZ2V0IGNhbGxlZCBkdXJpbmcgV2ViUGFnZSBzaHV0ZG93biBwcm9jZXNzLgogICAgIC8vIElm
IHRoYXQgaXMgdGhlIGNhc2UsIGp1c3QgYmFpbCBvdXQgc2luY2UgdGhlIGNsaWVudCBpcyBub3QK
QEAgLTkwMyw3ICs5MTcsOSBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGlvblBvc2l0
aW9uQ2hhbmdlZChib29sIGZvcmNlVXBkYXRlV2l0aG91dENoYW5nZSkKICAgICBlbHNlIGlmICgh
bV9zZWxlY3Rpb25BY3RpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNlbGVjdGlvblRpbWlu
Z0xvZyhMb2dMZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNo
YW5nZWQgc3RhcnRpbmcgYXQgJWYiLCBtX3RpbWVyLmVsYXBzZWQoKSk7CisgICAgU2VsZWN0aW9u
VGltaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJTZWxlY3Rpb25IYW5k
bGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQgc3RhcnRpbmcgYXQgJWYiLAorICAgICAgICBt
X3RpbWVyLmVsYXBzZWQoKSk7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHN0YXJ0Q2FyZXQoRE9N
U3VwcG9ydDo6SW52YWxpZFBvaW50LCBXZWJDb3JlOjpJbnRTaXplKCkpOwogICAgIFdlYkNvcmU6
OkludFJlY3QgZW5kQ2FyZXQoRE9NU3VwcG9ydDo6SW52YWxpZFBvaW50LCBXZWJDb3JlOjpJbnRT
aXplKCkpOwpAQCAtOTM3LDEwICs5NTMsMTggQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpzZWxl
Y3Rpb25Qb3NpdGlvbkNoYW5nZWQoYm9vbCBmb3JjZVVwZGF0ZVdpdGhvdXRDaGFuZ2UpCiAgICAg
ICAgIHJlZ2lvbkZvclRleHRRdWFkcyhxdWFkcywgdmlzaWJsZVNlbGVjdGlvblJlZ2lvbik7CiAK
ICNpZiBTSE9XREVCVUdfU0VMRUNUSU9OSEFORExFUiAvLyBEb24ndCByZWx5IGp1c3Qgb24gU2Vs
ZWN0aW9uTG9nIHRvIGF2b2lkIGxvb3AuCi0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgdW5jbGlwcGVkUmVnaW9uLm51bVJlY3RzKCk7IGkrKykKLSAgICAgICAgICAgIFNlbGVj
dGlvbkxvZyhMb2dMZXZlbEluZm8sICJSZWN0IGxpc3QgLSBVbm1vZGlmaWVkICMlZCwgKCVkLCAl
ZCkgKCVkIHggJWQpIiwgaSwgdW5jbGlwcGVkUmVnaW9uLnJlY3RzKClbaV0ueCgpLCB1bmNsaXBw
ZWRSZWdpb24ucmVjdHMoKVtpXS55KCksIHVuY2xpcHBlZFJlZ2lvbi5yZWN0cygpW2ldLndpZHRo
KCksIHVuY2xpcHBlZFJlZ2lvbi5yZWN0cygpW2ldLmhlaWdodCgpKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2aXNpYmxlU2VsZWN0aW9uUmVnaW9uLm51bVJlY3RzKCk7
IGkrKykKLSAgICAgICAgICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbEluZm8sICJSZWN0IGxpc3Qg
IC0gQ2xpcHBlZCB0byBWaXNpYmxlICMlZCwgKCVkLCAlZCkgKCVkIHggJWQpIiwgaSwgdmlzaWJs
ZVNlbGVjdGlvblJlZ2lvbi5yZWN0cygpW2ldLngoKSwgdmlzaWJsZVNlbGVjdGlvblJlZ2lvbi5y
ZWN0cygpW2ldLnkoKSwgdmlzaWJsZVNlbGVjdGlvblJlZ2lvbi5yZWN0cygpW2ldLndpZHRoKCks
IHZpc2libGVTZWxlY3Rpb25SZWdpb24ucmVjdHMoKVtpXS5oZWlnaHQoKSk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmNsaXBwZWRSZWdpb24ubnVtUmVjdHMoKTsgaSsrKSB7
CisgICAgICAgICAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAg
ICAgICAgICAgICAiUmVjdCBsaXN0IC0gVW5tb2RpZmllZCAjJWQsICVzIiwKKyAgICAgICAgICAg
ICAgICBpLAorICAgICAgICAgICAgICAgIHVuY2xpcHBlZFJlZ2lvbi5yZWN0cygpW2ldLnRvU3Ry
aW5nKCkuY19zdHIoKSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHZpc2libGVTZWxlY3Rpb25SZWdpb24ubnVtUmVjdHMoKTsgaSsrKSB7CisgICAgICAgICAg
ICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgICAgICAgICAi
UmVjdCBsaXN0ICAtIENsaXBwZWQgdG8gVmlzaWJsZSAjJWQsICVzIiwKKyAgICAgICAgICAgICAg
ICBpLAorICAgICAgICAgICAgICAgIHZpc2libGVTZWxlY3Rpb25SZWdpb24ucmVjdHMoKVtpXS50
b1N0cmluZygpLmNfc3RyKCkpOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBib29sIHNo
b3VsZENhcmVBYm91dFBvc3NpYmxlQ2xpcHBlZE91dFNlbGVjdGlvbiA9IGZyYW1lICE9IG1fd2Vi
UGFnZS0+bWFpbkZyYW1lKCkgfHwgbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+aXNJbnB1dE1v
ZGUoKTsKQEAgLTk1OCwxNCArOTgyLDE4IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0
aW9uUG9zaXRpb25DaGFuZ2VkKGJvb2wgZm9yY2VVcGRhdGVXaXRob3V0Q2hhbmdlKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgU2VsZWN0aW9uTG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbEluZm8sICJTZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQgU3Rh
cnQgUmVjdD0oJWQsICVkKSAoJWQgeCAlZCkgRW5kIFJlY3Q9KCVkLCAlZCkgKCVkIHggJWQpIiwK
LSAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldC54KCksIHN0YXJ0Q2FyZXQueSgpLCBzdGFy
dENhcmV0LndpZHRoKCksIHN0YXJ0Q2FyZXQuaGVpZ2h0KCksIGVuZENhcmV0LngoKSwgZW5kQ2Fy
ZXQueSgpLCBlbmRDYXJldC53aWR0aCgpLCBlbmRDYXJldC5oZWlnaHQoKSk7CisgICAgU2VsZWN0
aW9uTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICJTZWxlY3Rpb25IYW5kbGVy
OjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQgU3RhcnQgUmVjdD0lcyBFbmQgUmVjdD0lcyIsCisg
ICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0KHN0YXJ0Q2FyZXQpLnRvU3RyaW5nKCkuY19zdHIoKSwK
KyAgICAgICAgUGxhdGZvcm06OkludFJlY3QoZW5kQ2FyZXQpLnRvU3RyaW5nKCkuY19zdHIoKSk7
CiAKICAgICBpZiAobV93ZWJQYWdlLT5tX3NlbGVjdGlvbk92ZXJsYXkpCiAgICAgICAgIG1fd2Vi
UGFnZS0+bV9zZWxlY3Rpb25PdmVybGF5LT5kcmF3KHZpc2libGVTZWxlY3Rpb25SZWdpb24pOwog
CiAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+bm90aWZ5U2VsZWN0aW9uRGV0YWlsc0NoYW5nZWQo
c3RhcnRDYXJldCwgZW5kQ2FyZXQsIHZpc2libGVTZWxlY3Rpb25SZWdpb24sIGlucHV0Tm9kZU92
ZXJyaWRlc1RvdWNoKCkpOwotICAgIFNlbGVjdGlvblRpbWluZ0xvZyhMb2dMZXZlbEluZm8sICJT
ZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3Rpb25Qb3NpdGlvbkNoYW5nZWQgY29tcGxldGVkIGF0ICVm
IiwgbV90aW1lci5lbGFwc2VkKCkpOworICAgIFNlbGVjdGlvblRpbWluZ0xvZyhQbGF0Zm9ybTo6
TG9nTGV2ZWxJbmZvLAorICAgICAgICAiU2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRp
b25DaGFuZ2VkIGNvbXBsZXRlZCBhdCAlZiIsCisgICAgICAgIG1fdGltZXIuZWxhcHNlZCgpKTsK
IH0KIAogCkBAIC05ODEsNyArMTAwOSw3IEBAIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6bm90aWZ5
Q2FyZXRQb3NpdGlvbkNoYW5nZWRJZk5lZWRlZCgpCiAKIHZvaWQgU2VsZWN0aW9uSGFuZGxlcjo6
Y2FyZXRQb3NpdGlvbkNoYW5nZWQoKQogewotICAgIFNlbGVjdGlvbkxvZyhMb2dMZXZlbEluZm8s
ICJTZWxlY3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZCIpOworICAgIFNlbGVjdGlv
bkxvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU2VsZWN0aW9uSGFuZGxlcjo6Y2FyZXRQb3Np
dGlvbkNoYW5nZWQiKTsKIAogICAgIFdlYkNvcmU6OkludFJlY3QgY2FyZXRMb2NhdGlvbjsKICAg
ICAvLyBJZiB0aGUgaW5wdXQgZmllbGQgaXMgbm90IGFjdGl2ZSwgd2UgbXVzdCBiZSB0dXJuaW5n
IG9mZiB0aGUgY2FyZXQuCkBAIC0xMDA5LDggKzEwMzcsOSBAQCB2b2lkIFNlbGVjdGlvbkhhbmRs
ZXI6OmNhcmV0UG9zaXRpb25DaGFuZ2VkKCkKIAogICAgIG1fY2FyZXRBY3RpdmUgPSAhY2FyZXRM
b2NhdGlvbi5pc0VtcHR5KCk7CiAKLSAgICBTZWxlY3Rpb25Mb2coTG9nTGV2ZWxJbmZvLCAiU2Vs
ZWN0aW9uSGFuZGxlcjo6Y2FyZXRQb3NpdGlvbkNoYW5nZWQgY2FyZXQgUmVjdCAlZCwgJWQsICVk
eCVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhcmV0TG9jYXRpb24ueCgpLCBjYXJldExv
Y2F0aW9uLnkoKSwgY2FyZXRMb2NhdGlvbi53aWR0aCgpLCBjYXJldExvY2F0aW9uLmhlaWdodCgp
KTsKKyAgICBTZWxlY3Rpb25Mb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIlNl
bGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRpb25DaGFuZ2VkIGNhcmV0IFJlY3QgJXMiLAorICAg
ICAgICBQbGF0Zm9ybTo6SW50UmVjdChjYXJldExvY2F0aW9uKS50b1N0cmluZygpLmNfc3RyKCkp
OwogCiAgICAgYm9vbCBpc1NpbmdsZUxpbmVJbnB1dCA9ICFtX3dlYlBhZ2UtPm1faW5wdXRIYW5k
bGVyLT5pc011bHRpbGluZUlucHV0TW9kZSgpOwogICAgIFdlYkNvcmU6OkludFJlY3Qgbm9kZUJv
dW5kaW5nQm94ID0gaXNTaW5nbGVMaW5lSW5wdXQgPyBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVy
LT5ib3VuZGluZ0JveEZvcklucHV0RmllbGQoKSA6IFdlYkNvcmU6OkludFJlY3QoKTsKQEAgLTEw
MjIsOCArMTA1MSwxMCBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6OmNhcmV0UG9zaXRpb25DaGFu
Z2VkKCkKICAgICAgICAgbm9kZUJvdW5kaW5nQm94LmludGVyc2VjdChjbGlwcGluZ1JlY3RGb3JD
b250ZW50KTsKICAgICB9CiAKLSAgICBTZWxlY3Rpb25Mb2coTG9nTGV2ZWxJbmZvLCAiU2VsZWN0
aW9uSGFuZGxlcjo6Y2FyZXRQb3NpdGlvbkNoYW5nZWQ6ICVzIGxpbmUgaW5wdXQsIHNpbmdsZSBs
aW5lIGJvdW5kaW5nIGJveCAoJWQsICVkKSAlZHglZCVzIiwKLSAgICAgICAgaXNTaW5nbGVMaW5l
SW5wdXQgPyAic2luZ2xlIiA6ICJtdWx0aSIsIG5vZGVCb3VuZGluZ0JveC54KCksIG5vZGVCb3Vu
ZGluZ0JveC55KCksIG5vZGVCb3VuZGluZ0JveC53aWR0aCgpLCBub2RlQm91bmRpbmdCb3guaGVp
Z2h0KCksCisgICAgU2VsZWN0aW9uTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAg
ICJTZWxlY3Rpb25IYW5kbGVyOjpjYXJldFBvc2l0aW9uQ2hhbmdlZDogJXMgbGluZSBpbnB1dCwg
c2luZ2xlIGxpbmUgYm91bmRpbmcgYm94ICVzJXMiLAorICAgICAgICBpc1NpbmdsZUxpbmVJbnB1
dCA/ICJzaW5nbGUiIDogIm11bHRpIiwKKyAgICAgICAgUGxhdGZvcm06OkludFJlY3Qobm9kZUJv
dW5kaW5nQm94KS50b1N0cmluZygpLmNfc3RyKCksCiAgICAgICAgIG1fd2ViUGFnZS0+bV9pbnB1
dEhhbmRsZXItPmVsZW1lbnRUZXh0KCkuaXNFbXB0eSgpID8gIiwgZW1wdHkgdGV4dCBmaWVsZCIg
OiAiIik7CiAKICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5ub3RpZnlDYXJldENoYW5nZWQoY2Fy
ZXRMb2NhdGlvbiwgbV93ZWJQYWdlLT5tX3RvdWNoRXZlbnRIYW5kbGVyLT5sYXN0RmF0RmluZ2Vy
c1Jlc3VsdCgpLmlzVGV4dElucHV0KCkgLyogdXNlclRvdWNoVHJpZ2dlcmVkICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wu
Y3BwCmluZGV4IDkyYmZlMjkzYjU1ZjQxZDA3ZTg5MDMyY2YxNDBmODc4ODQyZjcxY2YuLmExNzE3
YmUxZDI5NmNjOTg1YTFlMWJkNWY5MzBkM2RiYTAyYmNmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TdXJmYWNlUG9vbC5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgdm9pZCBTdXJmYWNlUG9vbDo6aW5pdGlhbGl6ZShjb25zdCBQbGF0Zm9ybTo6
SW50U2l6ZSYgdGlsZVNpemUpCiAgICAgICAgIGJ5dGVMaW1pdCArPSBzY3JlZW5TaXplLndpZHRo
KCkgKiBzY3JlZW5TaXplLmhlaWdodCgpICogNDsgLy8gdmlzaWJsZSB0aWxlIGJ1ZmZlciAtIEZJ
WE1FLCBmcmFnaWxlIGZvciBmdXJ0aGVyIG1haW50ZW5hbmNlIGFzIGl0cyBzaXplIGRvZXNuJ3Qg
c3luYyB1cCB3aXRoIHRoZSByZXN0CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IFBsYXRmb3JtOjpH
cmFwaGljczo6Y3JlYXRlUGl4bWFwR3JvdXAoU0hBUkVEX1BJWE1BUF9HUk9VUCwgYnl0ZUxpbWl0
KTsKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICBCQkxPRyhQbGF0Zm9ybTo6
TG9nTGV2ZWxXYXJuLAorICAgICAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6
TG9nTGV2ZWxXYXJuLAogICAgICAgICAgICAgICAgICJTaGFyZWQgYnVmZmVyIHBvb2wgY291bGQg
bm90IGJlIHNldCB1cCwgdXNpbmcgcmVndWxhciBtZW1vcnkgYWxsb2NhdGlvbiBpbnN0ZWFkLiIp
OwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>