<?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>222351</bug_id>
          
          <creation_ts>2021-02-24 03:39:53 -0800</creation_ts>
          <short_desc>[WASM-Function-References] Extend wasm type with type index</short_desc>
          <delta_ts>2022-11-02 17:08:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebAssembly</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>247393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry">dbezhetskov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732821</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-02-24 03:39:53 -0800</bug_when>
    <thetext>[WASM-Function-References] Extend wasm type with type index</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732822</commentid>
    <comment_count>1</comment_count>
      <attachid>421394</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-02-24 03:42:21 -0800</bug_when>
    <thetext>Created attachment 421394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733811</commentid>
    <comment_count>2</comment_count>
      <attachid>421394</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-26 09:37:58 -0800</bug_when>
    <thetext>Comment on attachment 421394
Patch

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

r=me.

&gt; Source/JavaScriptCore/wasm/generateWasmOpsHeader.py:219
&gt; +    bool operator==(const Type&amp; other) const

Seems like it&apos;d be reasonable to have an implicit TypeKind constructor so you can just use the enum literals as Types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734330</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-02-28 21:13:44 -0800</bug_when>
    <thetext>There are two reason why we may want not to introduce any user-defined constructors:
1) Now Wasm::Type is a POD type and it is a good property to have, any user-defined constructor breaks this.
2) In the near future not all TypeKind values can represent Wasm::Type, for example - TypeKind::Reference can&apos;t represent Type without specifying type_idx

wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735226</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-03 03:40:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74978305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735237</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-03 04:20:05 -0800</bug_when>
    <thetext>Committed r273813: &lt;https://commits.webkit.org/r273813&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421394.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421394</attachid>
            <date>2021-02-24 03:42:21 -0800</date>
            <delta_ts>2021-03-03 04:20:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222351-20210224184217.patch</filename>
            <type>text/plain</type>
            <size>182822</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NzNmODQ1ZThhNjM0ZDRjZDJiYWIxMzJlZDNiYWU0YmM0MmExOGY3Li5lYTUyMmM2NThjNDY1NDY4
YTQwMjYyOTg3ZWFkZmJkOWU3YWY0MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMjEtMDItMjQgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZA
aWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1GdW5jdGlvbi1SZWZlcmVuY2VzXSBFeHRlbmQg
d2FzbSB0eXBlIHdpdGggdHlwZSBpbmRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRXh0ZW5kIHdhc20gdHlwZSB3aXRoIHR5cGUgaW5kZXggdG8gcmVw
cmVzZW50CisgICAgICAgIG5ldyByZWZlcmVuY2UgdHlwZXMgZnJvbSB0eXBlZCBmdW5jdGlvbiBy
ZWZlcmVuY2VzCisgICAgICAgIHByb3Bvc2FsOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1i
bHkvZnVuY3Rpb24tcmVmZXJlbmNlcy9ibG9iL21hc3Rlci9wcm9wb3NhbHMvZnVuY3Rpb24tcmVm
ZXJlbmNlcy9PdmVydmlldy5tZC4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBDb25zdGFudHMp
OgorICAgICAgICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6Zm9ybWF0Q29uc3RhbnQgY29u
c3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6CisgICAgICAgICogd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpUeXBlZFRtcDo6
VHlwZWRUbXApOgorICAgICAgICAoSlNDOjpXYXNtOjpUeXBlZFRtcDo6ZHVtcCBjb25zdCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpnMzIpOgorICAgICAgICAoSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6ZzY0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5l
cmF0b3I6OmdFeHRlcm5yZWYpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
Z0Z1bmNyZWYpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZjMyKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmY2NCk6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjp0bXBGb3JUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWly
SVJHZW5lcmF0b3I6OmVtaXRDQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJh
dG9yOjptb3ZlT3BGb3JWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVy
YXRvcjo6QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6YWRkTG9jYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxs
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmMpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVJbml0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QWlySVJHZW5lcmF0b3I6OmFkZEVsZW1Ecm9wKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJH
ZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJh
dG9yOjphZGRUYWJsZUdyb3cpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
YWRkVGFibGVGaWxsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRh
YmxlQ29weSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRHcm93TWVt
b3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1v
cnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkTWVtb3J5RmlsbCk6
CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRNZW1vcnlDb3B5KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE1lbW9yeUluaXQpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkRGF0YURyb3ApOgorICAgICAgICAoSlND
OjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6c2FuaXRpemVBdG9taWNSZXN1bHQpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YXBwZW5kR2VuZXJhbEF0b21pYyk6
CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphcHBlbmRTdHJvbmdDQVMpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0xvYWRPcCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphdG9taWNMb2FkKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNTdG9yZU9wKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNCaW5hcnlSTVdPcCk6CisgICAg
ICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphdG9taWNCaW5hcnlSTVcpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0NvbXBhcmVFeGNoYW5nZSk6
CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphdG9taWNDb21wYXJlRXhjaGFu
Z2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YXRvbWljV2FpdCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphdG9taWNOb3RpZnkpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6dHJ1bmNTYXR1cmF0ZWQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OmFkZFN3aXRjaCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklS
R2VuZXJhdG9yOjplbWl0TW9kT3JEaXYpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVy
YXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1NGNjQ+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNTRjMyPik6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jVUY2ND4pOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVu
Y1VGMzI+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlw
ZTo6STY0VHJ1bmNTRjY0Pik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjph
ZGRPcDxPcFR5cGU6Okk2NFRydW5jVUY2ND4pOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdl
bmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1NGMzI+KToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjMyPik6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRTaGlmdCk6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjphZGRGbG9hdGluZ1BvaW50QmluT3ApOgorICAgICAgICAoSlND
OjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJNaW4+KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZEZsb2F0aW5nUG9pbnRNaW5Pck1heCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMk1heD4p
OgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGNjRN
dWw+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6
RjMyRGl2Pik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5
cGU6OkY2NERpdj4pOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8
T3BUeXBlOjpGMzJOZWc+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFk
ZE9wPE9wVHlwZTo6STY0Um90cj4pOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6YWRkT3A8T3BUeXBlOjpJNjRSb3RsPik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlNoclU+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWly
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyU2hyUz4pOgorICAgICAgICAoSlNDOjpXYXNt
OjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJTaGw+KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjY0TWluPik6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkY2NFN1Yj4pOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRTaHJTPik6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFNoclU+
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0
U2hsPik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6
OkkzMlJvdGw+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9w
VHlwZTo6STMyUm90cj4pOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRk
T3A8T3BUeXBlOjpGNjROZWc+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6
OmFkZE9wPE9wVHlwZTo6RjY0TWF4Pik6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6CisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlSW5pdCk6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR3Jvdyk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJH
ZW5lcmF0b3I6OmFkZFRhYmxlRmlsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmFkZFRhYmxlQ29weSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFk
ZE1lbW9yeUZpbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRNZW1v
cnlJbml0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkTWVtb3J5Q29w
eSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnNhbml0aXplQXRvbWljUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YXRvbWljTG9hZCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRBdG9taWNTdG9yZU9wKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0JpbmFyeVJNV09wKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YXRvbWljQmluYXJ5Uk1XKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0NvbXBhcmVFeGNoYW5n
ZSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmF0b21pY0NvbXBhcmVFeGNo
YW5nZSk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6V2FzbUNhbGxpbmdDb252ZW50aW9uOjptYXJzaGFsbExvY2F0aW9uIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6V2FzbUNhbGxpbmdDb252ZW50aW9uOjpjYWxsSW5mb3Jt
YXRpb25Gb3IgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpKU0NhbGxpbmdDb252ZW50aW9u
OjptYXJzaGFsbExvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6aXNWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpp
c1JlZlR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZUluZm9ybWF0aW9uOjp3YXNtVHlw
ZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2suaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5j
dGlvblBhcnNlcjo6VHlwZWRFeHByZXNzaW9uOjpUeXBlZEV4cHJlc3Npb24pOgorICAgICAgICAo
SlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6bG9hZCk6CisgICAgICAgIChKU0M6
Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpzdG9yZSk6CisgICAgICAgIChKU0M6Oldh
c206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjphdG9taWNMb2FkKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OmF0b21pY1N0b3JlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OmF0b21pY0JpbmFyeVJNVyk6CisgICAg
ICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjphdG9taWNDb21wYXJlRXhj
aGFuZ2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6YXRv
bWljV2FpdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojph
dG9taWNOb3RpZnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6Y2hlY2tCcmFuY2hUYXJnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6dW5pZnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21HbG9iYWwuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpHbG9iYWw6OmdldCBjb25zdCk6CisgICAgICAgIChKU0M6
Oldhc206Okdsb2JhbDo6c2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6R2xvYmFsOjp2aXNpdEFn
Z3JlZ2F0ZUltcGwpOgorICAgICAgICAqIHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmpzTnVsbENvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6Onplcm9Db25zdGFudCk6CisgICAgICAgIChK
U0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRMb2NhbCk6CisgICAgICAgICog
d2FzbS9XYXNtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkpTQ19ERUZJTkVf
SklUX09QRVJBVElPTik6CisgICAgICAgICogd2FzbS9XYXNtUGFyc2VyLmg6CisgICAgICAgIChK
U0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlQmxvY2tTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZSk6Cisg
ICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OlNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25Q
YXJzZXI6OnBhcnNlVGFibGVIZWxwZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFy
c2VyOjpwYXJzZUdsb2JhbCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBh
cnNlRWxlbWVudCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlSW5p
dEV4cHIpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRF
eHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50U2Vn
bWVudFZlY3Rvck9mRXhwcmVzc2lvbnMpOgorICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZS5j
cHA6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZTo6ZHVtcCBjb25zdCk6CisgICAgICAg
IChKU0M6Oldhc206OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJl
SW5mb3JtYXRpb246OlNpZ25hdHVyZUluZm9ybWF0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21T
aWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OnRo
dW5rRm9yIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OlRhYmxlOjp3YXNtVHlwZSBjb25zdCk6CisgICAgICAgICogd2FzbS9nZW5lcmF0
ZVdhc21PcHNIZWFkZXIucHk6CisgICAgICAgIChUeXBlS2luZCk6CisgICAgICAgICogd2FzbS9q
cy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Om1hcnNoYWxsSlNSZXN1bHQpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6ZGVmYXVsdFZhbHVl
Rm9yUmVmZXJlbmNlVHlwZSk6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206Ondhc21Ub0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdyk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ6OmxpbmtJbXBsKToKKwogMjAyMS0wMi0yNCAgUm9iIEJ1aXMgIDxyYnVpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIE51bGwgY2hlY2sgQXJyYXlCdWZmZXJWaWV3IFJlZlB0cgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
aW5kZXggYjcwMDJlNGI3NGU5Mzc4Yjg3MzBjNmNmYTZkYThhZjVmZTgyNjJlZi4uZTg3NmY1Y2Jk
ZTdlZTA5MmJhODY4NDc1ZTZlZWVlY2UyMWQ2MTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAj
aW5jbHVkZSAiV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2FzbUdlbmVyYXRv
clRyYWl0cy5oIgogI2luY2x1ZGUgIldhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIgotI2luY2x1ZGUg
Ildhc21PcHMuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTM2Miw3ICszNjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyOjpkdW1wQ29u
c3RhbnRzKCkKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgY29uc3RhbnQgOiBibG9jay0+Y29uc3RhbnRzKCkpIHsKICAgICAgICAgICAgIFR5cGUgdHlw
ZSA9IGJsb2NrLT5jb25zdGFudFR5cGVzKClbaV07Ci0gICAgICAgICAgICB0aGlzLT5tX291dC5w
cmludCgiICAgY29uc3QiLCBpLCAiIDogIiwgdHlwZSwgIiA9ICIsIGZvcm1hdENvbnN0YW50KHR5
cGUsIGNvbnN0YW50KSwgIlxuIik7CisgICAgICAgICAgICB0aGlzLT5tX291dC5wcmludCgiICAg
Y29uc3QiLCBpLCAiIDogIiwgdHlwZS5raW5kLCAiID0gIiwgZm9ybWF0Q29uc3RhbnQodHlwZSwg
Y29uc3RhbnQpLCAiXG4iKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfQogICAgIH0KQEAg
LTM3NywxOSArMzc2LDE5IEBAIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6OmNvbnN0YW50TmFtZShW
aXJ0dWFsUmVnaXN0ZXIgaW5kZXgpIGNvbnN0CiAKIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6OmZv
cm1hdENvbnN0YW50KFR5cGUgdHlwZSwgdWludDY0X3QgY29uc3RhbnQpIGNvbnN0CiB7Ci0gICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBUeXBlOjpJMzI6CisgICAgc3dpdGNoICh0eXBlLmtp
bmQpIHsKKyAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CiAgICAgICAgIHJldHVybiB0b0NTdHJpbmco
c3RhdGljX2Nhc3Q8aW50MzJfdD4oY29uc3RhbnQpKTsKLSAgICBjYXNlIFR5cGU6Okk2NDoKKyAg
ICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgIHJldHVybiB0b0NTdHJpbmcoY29uc3RhbnQp
OwotICAgIGNhc2UgVHlwZTo6RjMyOgorICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAgICAg
cmV0dXJuIHRvQ1N0cmluZyhiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KHN0YXRpY19jYXN0PGludDMyX3Q+
KGNvbnN0YW50KSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGU6OkY2NDoKKyAgICBj
YXNlIFR5cGVLaW5kOjpGNjQ6CiAgICAgICAgIHJldHVybiB0b0NTdHJpbmcoYml0d2lzZV9jYXN0
PGRvdWJsZT4oY29uc3RhbnQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpFeHRl
cm5yZWY6Ci0gICAgY2FzZSBUeXBlOjpGdW5jcmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVy
bnJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAgICBpZiAoSlNWYWx1ZTo6
ZGVjb2RlKGNvbnN0YW50KSA9PSBqc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiAibnVsbCI7
CiAgICAgICAgIHJldHVybiB0b0NTdHJpbmcoUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KGNvbnN0YW50KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVEdW1wZXIuaAppbmRleCA4YTA0NTZmNGY5OWM2ODM5YjM2YjhjNzNhNzkwNTVjOGFjOTlkZTQ5
Li41YTRlMjJlNDQ0NDhmOWQ2NzJkYjU5NmFlZGEwZDY4YjVmODczMmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb25TdHJl
YW0uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgIldhc21PcHMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEzMCw3ICsxMzEsNiBAQCBuYW1lc3BhY2UgV2Fz
bSB7CiAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogc3RydWN0IE1vZHVsZUluZm9ybWF0aW9u
OwotZW51bSBUeXBlIDogaW50OF90OwogCiBjbGFzcyBCeXRlY29kZUR1bXBlciBmaW5hbCA6IHB1
YmxpYyBKU0M6OkJ5dGVjb2RlRHVtcGVyPEZ1bmN0aW9uQ29kZUJsb2NrPiB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApp
bmRleCA0ZWUwMDc0YWY2NzRhNTJkMzJlNDQ3OWY2ZmM5YjVlNTdkMWRmNTQ0Li40MWQyMmMyZWVl
YzQ3ZjQ0N2ZhMzBjNDMyYTdkM2I1MDY3MGEyODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTg1LDggKzg1LDkgQEAgY2xh
c3MgVHlwZWRUbXAgewogcHVibGljOgogICAgIGNvbnN0ZXhwciBUeXBlZFRtcCgpCiAgICAgICAg
IDogbV90bXAoKQotICAgICAgICAsIG1fdHlwZShUeXBlOjpWb2lkKQotICAgIHsgfQorICAgICAg
ICAsIG1fdHlwZShUeXBlczo6Vm9pZCkKKyAgICB7CisgICAgfQogCiAgICAgVHlwZWRUbXAoVG1w
IHRtcCwgVHlwZSB0eXBlKQogICAgICAgICA6IG1fdG1wKHRtcCkKQEAgLTExNiw3ICsxMTcsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB7
Ci0gICAgICAgIG91dC5wcmludCgiKCIsIG1fdG1wLCAiLCAiLCBtX3R5cGUsICIpIik7CisgICAg
ICAgIG91dC5wcmludCgiKCIsIG1fdG1wLCAiLCAiLCBtX3R5cGUua2luZCwgIiwgIiwgbV90eXBl
LmluZGV4LCAiKSIpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTQwNiwyOSArNDA3LDI5IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX2NvZGUubmV3VG1wKGJhbmspOwogICAgIH0KIAotICAg
IFR5cGVkVG1wIGczMigpIHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpHUCksIFR5cGU6OkkzMiB9OyB9
Ci0gICAgVHlwZWRUbXAgZzY0KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkdQKSwgVHlwZTo6STY0
IH07IH0KLSAgICBUeXBlZFRtcCBnRXh0ZXJucmVmKCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkdQ
KSwgVHlwZTo6RXh0ZXJucmVmIH07IH0KLSAgICBUeXBlZFRtcCBnRnVuY3JlZigpIHsgcmV0dXJu
IHsgbmV3VG1wKEIzOjpHUCksIFR5cGU6OkZ1bmNyZWYgfTsgfQotICAgIFR5cGVkVG1wIGYzMigp
IHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpGUCksIFR5cGU6OkYzMiB9OyB9Ci0gICAgVHlwZWRUbXAg
ZjY0KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwgVHlwZTo6RjY0IH07IH0KKyAgICBUeXBl
ZFRtcCBnMzIoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6R1ApLCBUeXBlczo6STMyIH07IH0KKyAg
ICBUeXBlZFRtcCBnNjQoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6R1ApLCBUeXBlczo6STY0IH07
IH0KKyAgICBUeXBlZFRtcCBnRXh0ZXJucmVmKCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkdQKSwg
VHlwZXM6OkV4dGVybnJlZiB9OyB9CisgICAgVHlwZWRUbXAgZ0Z1bmNyZWYoKSB7IHJldHVybiB7
IG5ld1RtcChCMzo6R1ApLCBUeXBlczo6RnVuY3JlZiB9OyB9CisgICAgVHlwZWRUbXAgZjMyKCkg
eyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwgVHlwZXM6OkYzMiB9OyB9CisgICAgVHlwZWRUbXAg
ZjY0KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwgVHlwZXM6OkY2NCB9OyB9CiAKICAgICBU
eXBlZFRtcCB0bXBGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAodHlw
ZSkgewotICAgICAgICBjYXNlIFR5cGU6OkkzMjoKKyAgICAgICAgc3dpdGNoICh0eXBlLmtpbmQp
IHsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgogICAgICAgICAgICAgcmV0dXJuIGczMigp
OwotICAgICAgICBjYXNlIFR5cGU6Okk2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0Ogog
ICAgICAgICAgICAgcmV0dXJuIGc2NCgpOwotICAgICAgICBjYXNlIFR5cGU6OkZ1bmNyZWY6Cisg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgICAgICByZXR1cm4gZ0Z1bmNy
ZWYoKTsKLSAgICAgICAgY2FzZSBUeXBlOjpFeHRlcm5yZWY6CisgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkV4dGVybnJlZjoKICAgICAgICAgICAgIHJldHVybiBnRXh0ZXJucmVmKCk7Ci0gICAgICAg
IGNhc2UgVHlwZTo6RjMyOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAgICAgICAg
ICByZXR1cm4gZjMyKCk7Ci0gICAgICAgIGNhc2UgVHlwZTo6RjY0OgorICAgICAgICBjYXNlIFR5
cGVLaW5kOjpGNjQ6CiAgICAgICAgICAgICByZXR1cm4gZjY0KCk7Ci0gICAgICAgIGNhc2UgVHlw
ZTo6Vm9pZDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNTkxLDE5ICs1OTIsMTkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IEIzOjpUeXBlIHJlc3VsdFR5cGUgPSBCMzo6Vm9pZDsKICAgICAgICAgaWYgKHJlc3VsdCkgewot
ICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQudHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFR5
cGU6OkkzMjoKKyAgICAgICAgICAgIHN3aXRjaCAocmVzdWx0LnR5cGUoKS5raW5kKSB7CisgICAg
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CiAgICAgICAgICAgICAgICAgcmVzdWx0VHlwZSA9
IEIzOjpJbnQzMjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlw
ZTo6STY0OgotICAgICAgICAgICAgY2FzZSBUeXBlOjpFeHRlcm5yZWY6Ci0gICAgICAgICAgICBj
YXNlIFR5cGU6OkZ1bmNyZWY6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CisgICAg
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgICAgICAgICBjYXNlIFR5cGVL
aW5kOjpGdW5jcmVmOgogICAgICAgICAgICAgICAgIHJlc3VsdFR5cGUgPSBCMzo6SW50NjQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkYzMjoKKyAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAgICAgICAgICAgICByZXN1bHRUeXBlID0g
QjM6OkZsb2F0OwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBUeXBl
OjpGNjQ6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CiAgICAgICAgICAgICAgICAg
cmVzdWx0VHlwZSA9IEIzOjpEb3VibGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgpAQCAtNjQxLDE2ICs2NDIsMTYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRp
YyBCMzo6QWlyOjpPcGNvZGUgbW92ZU9wRm9yVmFsdWVUeXBlKFR5cGUgdHlwZSkKICAgICB7Ci0g
ICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OkkzMjoKKyAgICAgICAg
c3dpdGNoICh0eXBlLmtpbmQpIHsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgogICAgICAg
ICAgICAgcmV0dXJuIE1vdmUzMjsKLSAgICAgICAgY2FzZSBUeXBlOjpJNjQ6Ci0gICAgICAgIGNh
c2UgVHlwZTo6RXh0ZXJucmVmOgotICAgICAgICBjYXNlIFR5cGU6OkZ1bmNyZWY6CisgICAgICAg
IGNhc2UgVHlwZUtpbmQ6Okk2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgor
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAgICAgICAgcmV0dXJuIE1vdmU7
Ci0gICAgICAgIGNhc2UgVHlwZTo6RjMyOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAg
ICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OwotICAgICAgICBjYXNlIFR5cGU6OkY2NDoKKyAg
ICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgogICAgICAgICAgICAgcmV0dXJuIE1vdmVEb3VibGU7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtODgzLDcgKzg4NCw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihj
b25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAg
IC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIG9ubHkgZG8gdGhpcyBpZiB3ZSB1c2UgaW5zdGFu
Y2UgdmFsdWUuCiAgICAgICAgIGFwcGVuZChNb3ZlLCBUbXAoY29udGV4dEluc3RhbmNlKSwgbV9p
bnN0YW5jZVZhbHVlKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9pbnN0YW5jZVZhbHVlID0geyBU
bXAoY29udGV4dEluc3RhbmNlKSwgVHlwZTo6STY0IH07CisgICAgICAgIG1faW5zdGFuY2VWYWx1
ZSA9IHsgVG1wKGNvbnRleHRJbnN0YW5jZSksIFR5cGVzOjpJNjQgfTsKIAogICAgIEFTU0VSVCgh
bV9sb2NhbHMuc2l6ZSgpKTsKICAgICBtX2xvY2Fscy5ncm93KHNpZ25hdHVyZS5hcmd1bWVudENv
dW50KCkpOwpAQCAtODk3LDE5ICs4OTgsMTkgQEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJh
dG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2FzbUNhbGxJbmZvLnBhcmFtcy5zaXplKCk7ICsr
aSkgewogICAgICAgICBCMzo6VmFsdWVSZXAgbG9jYXRpb24gPSB3YXNtQ2FsbEluZm8ucGFyYW1z
W2ldOwogICAgICAgICBBcmcgYXJnID0gbG9jYXRpb24uaXNSZWcoKSA/IEFyZyhUbXAobG9jYXRp
b24ucmVnKCkpKSA6IEFyZzo6YWRkcihUbXAoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpLCBs
b2NhdGlvbi5vZmZzZXRGcm9tRlAoKSk7Ci0gICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3Vt
ZW50KGkpKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6STMyOgorICAgICAgICBzd2l0Y2ggKHNpZ25h
dHVyZS5hcmd1bWVudChpKS5raW5kKSB7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKICAg
ICAgICAgICAgIGFwcGVuZChNb3ZlMzIsIGFyZywgbV9sb2NhbHNbaV0pOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6STY0OgotICAgICAgICBjYXNlIFR5cGU6OkV4dGVy
bnJlZjoKLSAgICAgICAgY2FzZSBUeXBlOjpGdW5jcmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5k
OjpJNjQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAgICAgY2FzZSBU
eXBlS2luZDo6RnVuY3JlZjoKICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBhcmcsIG1fbG9jYWxz
W2ldKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGU6OkYzMjoKKyAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICAgICAgYXBwZW5kKE1vdmVGbG9hdCwgYXJn
LCBtX2xvY2Fsc1tpXSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpG
NjQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKICAgICAgICAgICAgIGFwcGVuZChNb3Zl
RG91YmxlLCBhcmcsIG1fbG9jYWxzW2ldKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgpAQCAtMTAwNCwyMiArMTAwNSwyMiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRM
b2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgYXV0byBsb2NhbCA9
IHRtcEZvclR5cGUodHlwZSk7CiAgICAgICAgIG1fbG9jYWxzLnVuY2hlY2tlZEFwcGVuZChsb2Nh
bCk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OkV4dGVybnJl
ZjoKLSAgICAgICAgY2FzZSBUeXBlOjpGdW5jcmVmOgorICAgICAgICBzd2l0Y2ggKHR5cGUua2lu
ZCkgeworICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjppbW0oSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVsbCgpKSksIGxvY2FsKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFR5cGU6OkkzMjoKLSAgICAgICAgY2FzZSBUeXBlOjpJNjQ6IHsKKyAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6STMyOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6IHsKICAgICAgICAg
ICAgIGFwcGVuZChYb3I2NCwgbG9jYWwsIGxvY2FsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgVHlwZTo6RjMyOgotICAgICAgICBjYXNlIFR5cGU6OkY2NDog
eworICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2
NDogewogICAgICAgICAgICAgYXV0byB0ZW1wID0gZzY0KCk7CiAgICAgICAgICAgICAvLyBJRUVF
IDc1NCAiMCIgaXMganVzdCBpbnQzMi82NCB6ZXJvLgogICAgICAgICAgICAgYXBwZW5kKFhvcjY0
LCB0ZW1wLCB0ZW1wKTsKLSAgICAgICAgICAgIGFwcGVuZCh0eXBlID09IFR5cGU6OkYzMiA/IE1v
dmUzMlRvRmxvYXQgOiBNb3ZlNjRUb0RvdWJsZSwgdGVtcCwgbG9jYWwpOworICAgICAgICAgICAg
YXBwZW5kKHR5cGUuaXNGMzIoKSA/IE1vdmUzMlRvRmxvYXQgOiBNb3ZlNjRUb0RvdWJsZSwgdGVt
cCwgbG9jYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVs
dDoKQEAgLTEwMzcsMTggKzEwMzgsMTggQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnQoVHlwZSB0eXBlLCB1aW50NjRfdCB2YWx1ZSkgLT4gRXhwcmVzc2lvblR5cGUKIGF1dG8gQWly
SVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KEJhc2ljQmxvY2sqIGJsb2NrLCBUeXBlIHR5cGUsIHVp
bnQ2NF90IHZhbHVlKSAtPiBFeHByZXNzaW9uVHlwZQogewogICAgIGF1dG8gcmVzdWx0ID0gdG1w
Rm9yVHlwZSh0eXBlKTsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFR5cGU6OkkzMjoK
LSAgICBjYXNlIFR5cGU6Okk2NDoKLSAgICBjYXNlIFR5cGU6OkV4dGVybnJlZjoKLSAgICBjYXNl
IFR5cGU6OkZ1bmNyZWY6CisgICAgc3dpdGNoICh0eXBlLmtpbmQpIHsKKyAgICBjYXNlIFR5cGVL
aW5kOjpJMzI6CisgICAgY2FzZSBUeXBlS2luZDo6STY0OgorICAgIGNhc2UgVHlwZUtpbmQ6OkV4
dGVybnJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAgICBhcHBlbmQoYmxv
Y2ssIE1vdmUsIEFyZzo6YmlnSW1tKHZhbHVlKSwgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUeXBlOjpGMzI6Ci0gICAgY2FzZSBUeXBlOjpGNjQ6IHsKKyAgICBjYXNlIFR5cGVL
aW5kOjpGMzI6CisgICAgY2FzZSBUeXBlS2luZDo6RjY0OiB7CiAgICAgICAgIGF1dG8gdG1wID0g
ZzY0KCk7CiAgICAgICAgIGFwcGVuZChibG9jaywgTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUpLCB0
bXApOwotICAgICAgICBhcHBlbmQoYmxvY2ssIHR5cGUgPT0gVHlwZTo6RjMyID8gTW92ZTMyVG9G
bG9hdCA6IE1vdmU2NFRvRG91YmxlLCB0bXAsIHJlc3VsdCk7CisgICAgICAgIGFwcGVuZChibG9j
aywgdHlwZS5pc0YzMigpID8gTW92ZTMyVG9GbG9hdCA6IE1vdmU2NFRvRG91YmxlLCB0bXAsIHJl
c3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTA3NCw3ICsxMDc1LDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
KSAtPiBQYXJ0aWFsUmVzdWx0CiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhw
cmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKICAgICBBU1NFUlQodmFsdWUudG1wKCkpOwotICAgIHJlc3VsdCA9IHRtcEZvclR5cGUo
VHlwZTo6STMyKTsKKyAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGVzOjpJMzIpOwogICAgIGF1
dG8gdG1wID0gZzY0KCk7CiAKICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0oSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKSksIHRtcCk7CkBAIC0xMDg2LDggKzEwODcsOCBAQCBhdXRvIEFpcklS
R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpCiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8g
RklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTg1MDY+LgotICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6RnVuY3JlZik7
Ci0gICAgZW1pdENDYWxsKCZvcGVyYXRpb25XYXNtUmVmRnVuYywgcmVzdWx0LCBpbnN0YW5jZVZh
bHVlKCksIGFkZENvbnN0YW50KFR5cGU6OkkzMiwgaW5kZXgpKTsKKyAgICByZXN1bHQgPSB0bXBG
b3JUeXBlKFR5cGVzOjpGdW5jcmVmKTsKKyAgICBlbWl0Q0NhbGwoJm9wZXJhdGlvbldhc21SZWZG
dW5jLCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgaW5k
ZXgpKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMDk2LDEwICsxMDk3LDExIEBAIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Np
b25UeXBlIGluZGV4LCBFeHByCiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgogICAgIEFTU0VS
VChpbmRleC50bXAoKSk7Ci0gICAgQVNTRVJUKGluZGV4LnR5cGUoKSA9PSBUeXBlOjpJMzIpOwor
CisgICAgQVNTRVJUKGluZGV4LnR5cGUoKS5pc0kzMigpKTsKICAgICByZXN1bHQgPSB0bXBGb3JU
eXBlKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5cGUoKSk7CiAKLSAgICBlbWl0Q0Nh
bGwoJm9wZXJhdGlvbkdldFdhc21UYWJsZUVsZW1lbnQsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgp
LCBhZGRDb25zdGFudChUeXBlOjpJMzIsIHRhYmxlSW5kZXgpLCBpbmRleCk7CisgICAgZW1pdEND
YWxsKCZvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50LCByZXN1bHQsIGluc3RhbmNlVmFsdWUo
KSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgdGFibGVJbmRleCksIGluZGV4KTsKICAgICBlbWl0
Q2hlY2soWyZdIHsKICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBB
cmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCByZXN1bHQsIHJlc3VsdCk7CiAgICAg
fSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKQEAgLTExMTMsMTEgKzExMTUsMTEgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRk
VGFibGVTZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHIK
IHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAgICAgQVNTRVJUKGluZGV4LnRtcCgpKTsKLSAg
ICBBU1NFUlQoaW5kZXgudHlwZSgpID09IFR5cGU6OkkzMik7CisgICAgQVNTRVJUKGluZGV4LnR5
cGUoKS5pc0kzMigpKTsKICAgICBBU1NFUlQodmFsdWUudG1wKCkpOwogCiAgICAgYXV0byBzaG91
bGRUaHJvdyA9IGczMigpOwotICAgIGVtaXRDQ2FsbCgmb3BlcmF0aW9uU2V0V2FzbVRhYmxlRWxl
bWVudCwgc2hvdWxkVGhyb3csIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMy
LCB0YWJsZUluZGV4KSwgaW5kZXgsIHZhbHVlKTsKKyAgICBlbWl0Q0NhbGwoJm9wZXJhdGlvblNl
dFdhc21UYWJsZUVsZW1lbnQsIHNob3VsZFRocm93LCBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0
YW50KFR5cGVzOjpJMzIsIHRhYmxlSW5kZXgpLCBpbmRleCwgdmFsdWUpOwogCiAgICAgZW1pdENo
ZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJn
OjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc2hvdWxkVGhyb3csIHNob3VsZFRocm93
KTsKQEAgLTExMzEsMTkgKzExMzMsMTkgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVT
ZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHIKIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlSW5pdCh1bnNpZ25lZCBlbGVtZW50SW5kZXgsIHVuc2ln
bmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGRzdE9mZnNldCwgRXhwcmVzc2lvblR5cGUg
c3JjT2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBsZW5ndGgpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICBBU1NFUlQoZHN0T2Zmc2V0LnRtcCgpKTsKLSAgICBBU1NFUlQoZHN0T2Zmc2V0LnR5cGUoKSA9
PSBUeXBlOjpJMzIpOworICAgIEFTU0VSVChkc3RPZmZzZXQudHlwZSgpLmlzSTMyKCkpOwogCiAg
ICAgQVNTRVJUKHNyY09mZnNldC50bXAoKSk7Ci0gICAgQVNTRVJUKHNyY09mZnNldC50eXBlKCkg
PT0gVHlwZTo6STMyKTsKKyAgICBBU1NFUlQoc3JjT2Zmc2V0LnR5cGUoKS5pc0kzMigpKTsKIAog
ICAgIEFTU0VSVChsZW5ndGgudG1wKCkpOwotICAgIEFTU0VSVChsZW5ndGgudHlwZSgpID09IFR5
cGU6OkkzMik7CisgICAgQVNTRVJUKGxlbmd0aC50eXBlKCkuaXNJMzIoKSk7CiAKLSAgICBhdXRv
IHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6STMyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHRtcEZv
clR5cGUoVHlwZXM6OkkzMik7CiAgICAgZW1pdENDYWxsKAogICAgICAgICAmb3BlcmF0aW9uV2Fz
bVRhYmxlSW5pdCwgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksCi0gICAgICAgIGFkZENvbnN0YW50
KFR5cGU6OkkzMiwgZWxlbWVudEluZGV4KSwKLSAgICAgICAgYWRkQ29uc3RhbnQoVHlwZTo6STMy
LCB0YWJsZUluZGV4KSwKKyAgICAgICAgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgZWxlbWVudElu
ZGV4KSwKKyAgICAgICAgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgdGFibGVJbmRleCksCiAgICAg
ICAgIGRzdE9mZnNldCwgc3JjT2Zmc2V0LCBsZW5ndGgpOwogCiAgICAgZW1pdENoZWNrKFsmXSB7
CkBAIC0xMTU3LDE2ICsxMTU5LDE2IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlSW5p
dCh1bnNpZ25lZCBlbGVtZW50SW5kZXgsIHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4CiAKIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZEVsZW1Ecm9wKHVuc2lnbmVkIGVsZW1lbnRJbmRleCkgLT4gUGFy
dGlhbFJlc3VsdAogewotICAgIGVtaXRDQ2FsbCgmb3BlcmF0aW9uV2FzbUVsZW1Ecm9wLCBUeXBl
ZFRtcCgpLCBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0YW50KFR5cGU6OkkzMiwgZWxlbWVudElu
ZGV4KSk7CisgICAgZW1pdENDYWxsKCZvcGVyYXRpb25XYXNtRWxlbURyb3AsIFR5cGVkVG1wKCks
IGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgZWxlbWVudEluZGV4KSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVTaXpl
KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCi0gICAgcmVzdWx0ID0gdG1wRm9yVHlw
ZShUeXBlOjpJMzIpOworICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkkzMik7CiAKLSAg
ICBlbWl0Q0NhbGwoJm9wZXJhdGlvbkdldFdhc21UYWJsZVNpemUsIHJlc3VsdCwgaW5zdGFuY2VW
YWx1ZSgpLCBhZGRDb25zdGFudChUeXBlOjpJMzIsIHRhYmxlSW5kZXgpKTsKKyAgICBlbWl0Q0Nh
bGwoJm9wZXJhdGlvbkdldFdhc21UYWJsZVNpemUsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBh
ZGRDb25zdGFudChUeXBlczo6STMyLCB0YWJsZUluZGV4KSk7CiAKICAgICByZXR1cm4geyB9Owog
fQpAQCAtMTE3NiwxMCArMTE3OCwxMCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdy
b3codW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgZmlsbCwgRXhwcgogICAgIEFT
U0VSVChmaWxsLnRtcCgpKTsKICAgICBBU1NFUlQoZmlsbC50eXBlKCkgPT0gbV9pbmZvLnRhYmxl
c1t0YWJsZUluZGV4XS53YXNtVHlwZSgpKTsKICAgICBBU1NFUlQoZGVsdGEudG1wKCkpOwotICAg
IEFTU0VSVChkZWx0YS50eXBlKCkgPT0gVHlwZTo6STMyKTsKLSAgICByZXN1bHQgPSB0bXBGb3JU
eXBlKFR5cGU6OkkzMik7CisgICAgQVNTRVJUKGRlbHRhLnR5cGUoKS5pc0kzMigpKTsKKyAgICBy
ZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGVzOjpJMzIpOwogCi0gICAgZW1pdENDYWxsKCZvcGVyYXRp
b25XYXNtVGFibGVHcm93LCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlw
ZTo6STMyLCB0YWJsZUluZGV4KSwgZmlsbCwgZGVsdGEpOworICAgIGVtaXRDQ2FsbCgmb3BlcmF0
aW9uV2FzbVRhYmxlR3JvdywgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0YW50KFR5
cGVzOjpJMzIsIHRhYmxlSW5kZXgpLCBmaWxsLCBkZWx0YSk7CiAKICAgICByZXR1cm4geyB9Owog
fQpAQCAtMTE4OSwxMiArMTE5MSwxMiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUZp
bGwodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgb2Zmc2V0LCBFeAogICAgIEFT
U0VSVChmaWxsLnRtcCgpKTsKICAgICBBU1NFUlQoZmlsbC50eXBlKCkgPT0gbV9pbmZvLnRhYmxl
c1t0YWJsZUluZGV4XS53YXNtVHlwZSgpKTsKICAgICBBU1NFUlQob2Zmc2V0LnRtcCgpKTsKLSAg
ICBBU1NFUlQob2Zmc2V0LnR5cGUoKSA9PSBUeXBlOjpJMzIpOworICAgIEFTU0VSVChvZmZzZXQu
dHlwZSgpLmlzSTMyKCkpOwogICAgIEFTU0VSVChjb3VudC50bXAoKSk7Ci0gICAgQVNTRVJUKGNv
dW50LnR5cGUoKSA9PSBUeXBlOjpJMzIpOworICAgIEFTU0VSVChjb3VudC50eXBlKCkuaXNJMzIo
KSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6STMyKTsKLSAgICBlbWl0
Q0NhbGwoJm9wZXJhdGlvbldhc21UYWJsZUZpbGwsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBh
ZGRDb25zdGFudChUeXBlOjpJMzIsIHRhYmxlSW5kZXgpLCBvZmZzZXQsIGZpbGwsIGNvdW50KTsK
KyAgICBhdXRvIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkkzMik7CisgICAgZW1pdENDYWxs
KCZvcGVyYXRpb25XYXNtVGFibGVGaWxsLCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29u
c3RhbnQoVHlwZXM6OkkzMiwgdGFibGVJbmRleCksIG9mZnNldCwgZmlsbCwgY291bnQpOwogCiAg
ICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVs
bHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgcmVzdWx0LCByZXN1bHQp
OwpAQCAtMTIwOCwxOSArMTIxMCwxOSBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUZp
bGwodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgb2Zmc2V0LCBFeAogYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkVGFibGVDb3B5KHVuc2lnbmVkIGRzdFRhYmxlSW5kZXgsIHVuc2ln
bmVkIHNyY1RhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGRzdE9mZnNldCwgRXhwcmVzc2lvblR5
cGUgc3JjT2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBsZW5ndGgpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
ICAgICBBU1NFUlQoZHN0T2Zmc2V0LnRtcCgpKTsKLSAgICBBU1NFUlQoZHN0T2Zmc2V0LnR5cGUo
KSA9PSBUeXBlOjpJMzIpOworICAgIEFTU0VSVChkc3RPZmZzZXQudHlwZSgpLmlzSTMyKCkpOwog
CiAgICAgQVNTRVJUKHNyY09mZnNldC50bXAoKSk7Ci0gICAgQVNTRVJUKHNyY09mZnNldC50eXBl
KCkgPT0gVHlwZTo6STMyKTsKKyAgICBBU1NFUlQoc3JjT2Zmc2V0LnR5cGUoKS5pc0kzMigpKTsK
IAogICAgIEFTU0VSVChsZW5ndGgudG1wKCkpOwotICAgIEFTU0VSVChsZW5ndGgudHlwZSgpID09
IFR5cGU6OkkzMik7CisgICAgQVNTRVJUKGxlbmd0aC50eXBlKCkuaXNJMzIoKSk7CiAKLSAgICBh
dXRvIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6STMyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHRt
cEZvclR5cGUoVHlwZXM6OkkzMik7CiAgICAgZW1pdENDYWxsKAogICAgICAgICAmb3BlcmF0aW9u
V2FzbVRhYmxlQ29weSwgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksCi0gICAgICAgIGFkZENvbnN0
YW50KFR5cGU6OkkzMiwgZHN0VGFibGVJbmRleCksCi0gICAgICAgIGFkZENvbnN0YW50KFR5cGU6
OkkzMiwgc3JjVGFibGVJbmRleCksCisgICAgICAgIGFkZENvbnN0YW50KFR5cGVzOjpJMzIsIGRz
dFRhYmxlSW5kZXgpLAorICAgICAgICBhZGRDb25zdGFudChUeXBlczo6STMyLCBzcmNUYWJsZUlu
ZGV4KSwKICAgICAgICAgZHN0T2Zmc2V0LCBzcmNPZmZzZXQsIGxlbmd0aCk7CiAKICAgICBlbWl0
Q2hlY2soWyZdIHsKQEAgLTEyNTQsNyArMTI1Niw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFVucmVhY2hhYmxlKCkgLT4gUGFydGlhbFJlc3VsdAogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRk
R3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IGczMigpOwotICAgIGVtaXRDQ2FsbCgm
b3BlcmF0aW9uR3Jvd01lbW9yeSwgcmVzdWx0LCBUeXBlZFRtcCB7IFRtcChHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciksIFR5cGU6Okk2NCB9LCBpbnN0YW5jZVZhbHVlKCksIGRlbHRhKTsKKyAg
ICBlbWl0Q0NhbGwoJm9wZXJhdGlvbkdyb3dNZW1vcnksIHJlc3VsdCwgVHlwZWRUbXAgeyBUbXAo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpLCBUeXBlczo6STY0IH0sIGluc3RhbmNlVmFsdWUo
KSwgZGVsdGEpOwogICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNo
ZWRTdGFja0xpbWl0OjpObywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJl
bnRCbG9jayk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTI3Niw3ICsxMjc4LDcgQEAgYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkQ3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAt
PiBQYXJ0aWFsUmVzdWx0CiAgICAgY29uc3RleHByIHVpbnQzMl90IHNoaWZ0VmFsdWUgPSAxNjsK
ICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNpemUgPT0gMXVsbCA8PCBzaGlmdFZh
bHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJlbG93IHRvIGJlIGNvcnJlY3QuIik7
CiAgICAgYXBwZW5kKE1vdmUsIEFyZzo6aW1tKDE2KSwgdGVtcDIpOwotICAgIGFkZFNoaWZ0KFR5
cGU6OkkzMiwgVXJzaGlmdDY0LCB0ZW1wMSwgdGVtcDIsIHJlc3VsdCk7CisgICAgYWRkU2hpZnQo
VHlwZXM6OkkzMiwgVXJzaGlmdDY0LCB0ZW1wMSwgdGVtcDIsIHJlc3VsdCk7CiAgICAgYXBwZW5k
KE1vdmUzMiwgcmVzdWx0LCByZXN1bHQpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTEyODUsMTUg
KzEyODcsMTUgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ3VycmVudE1lbW9yeShFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRNZW1vcnlGaWxsKEV4cHJlc3Npb25UeXBlIGRzdEFkZHJlc3MsIEV4cHJlc3Npb25UeXBlIHRh
cmdldFZhbHVlLCBFeHByZXNzaW9uVHlwZSBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogewogICAg
IEFTU0VSVChkc3RBZGRyZXNzLnRtcCgpKTsKLSAgICBBU1NFUlQoZHN0QWRkcmVzcy50eXBlKCkg
PT0gVHlwZTo6STMyKTsKKyAgICBBU1NFUlQoZHN0QWRkcmVzcy50eXBlKCkuaXNJMzIoKSk7CiAK
ICAgICBBU1NFUlQodGFyZ2V0VmFsdWUudG1wKCkpOwotICAgIEFTU0VSVCh0YXJnZXRWYWx1ZS50
eXBlKCkgPT0gVHlwZTo6STMyKTsKKyAgICBBU1NFUlQodGFyZ2V0VmFsdWUudHlwZSgpLmlzSTMy
KCkpOwogCiAgICAgQVNTRVJUKGNvdW50LnRtcCgpKTsKLSAgICBBU1NFUlQoY291bnQudHlwZSgp
ID09IFR5cGU6OkkzMik7CisgICAgQVNTRVJUKGNvdW50LnR5cGUoKS5pc0kzMigpKTsKIAotICAg
IGF1dG8gcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlOjpJMzIpOworICAgIGF1dG8gcmVzdWx0ID0g
dG1wRm9yVHlwZShUeXBlczo6STMyKTsKICAgICBlbWl0Q0NhbGwoCiAgICAgICAgICZvcGVyYXRp
b25XYXNtTWVtb3J5RmlsbCwgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksCiAgICAgICAgIGRzdEFk
ZHJlc3MsIHRhcmdldFZhbHVlLCBjb3VudCk7CkBAIC0xMzEwLDE1ICsxMzEyLDE1IEBAIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZE1lbW9yeUZpbGwoRXhwcmVzc2lvblR5cGUgZHN0QWRkcmVzcywg
RXhwcmVzc2lvblR5cGUgdGFyCiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRNZW1vcnlDb3B5KEV4
cHJlc3Npb25UeXBlIGRzdEFkZHJlc3MsIEV4cHJlc3Npb25UeXBlIHNyY0FkZHJlc3MsIEV4cHJl
c3Npb25UeXBlIGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKGRzdEFkZHJl
c3MudG1wKCkpOwotICAgIEFTU0VSVChkc3RBZGRyZXNzLnR5cGUoKSA9PSBUeXBlOjpJMzIpOwor
ICAgIEFTU0VSVChkc3RBZGRyZXNzLnR5cGUoKS5pc0kzMigpKTsKIAogICAgIEFTU0VSVChzcmNB
ZGRyZXNzLnRtcCgpKTsKLSAgICBBU1NFUlQoc3JjQWRkcmVzcy50eXBlKCkgPT0gVHlwZTo6STMy
KTsKKyAgICBBU1NFUlQoc3JjQWRkcmVzcy50eXBlKCkuaXNJMzIoKSk7CiAKICAgICBBU1NFUlQo
Y291bnQudG1wKCkpOwotICAgIEFTU0VSVChjb3VudC50eXBlKCkgPT0gVHlwZTo6STMyKTsKKyAg
ICBBU1NFUlQoY291bnQudHlwZSgpLmlzSTMyKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSB0bXBG
b3JUeXBlKFR5cGU6OkkzMik7CisgICAgYXV0byByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGVzOjpJ
MzIpOwogICAgIGVtaXRDQ2FsbCgKICAgICAgICAgJm9wZXJhdGlvbldhc21NZW1vcnlDb3B5LCBy
ZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwKICAgICAgICAgZHN0QWRkcmVzcywgc3JjQWRkcmVzcywg
Y291bnQpOwpAQCAtMTMzNSwxOCArMTMzNywxOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRN
ZW1vcnlDb3B5KEV4cHJlc3Npb25UeXBlIGRzdEFkZHJlc3MsIEV4cHJlc3Npb25UeXBlIHNyYwog
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTWVtb3J5SW5pdCh1bnNpZ25lZCBkYXRhU2VnbWVudElu
ZGV4LCBFeHByZXNzaW9uVHlwZSBkc3RBZGRyZXNzLCBFeHByZXNzaW9uVHlwZSBzcmNBZGRyZXNz
LCBFeHByZXNzaW9uVHlwZSBsZW5ndGgpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBBU1NFUlQo
ZHN0QWRkcmVzcy50bXAoKSk7Ci0gICAgQVNTRVJUKGRzdEFkZHJlc3MudHlwZSgpID09IFR5cGU6
OkkzMik7CisgICAgQVNTRVJUKGRzdEFkZHJlc3MudHlwZSgpLmlzSTMyKCkpOwogCiAgICAgQVNT
RVJUKHNyY0FkZHJlc3MudG1wKCkpOwotICAgIEFTU0VSVChzcmNBZGRyZXNzLnR5cGUoKSA9PSBU
eXBlOjpJMzIpOworICAgIEFTU0VSVChzcmNBZGRyZXNzLnR5cGUoKS5pc0kzMigpKTsKIAogICAg
IEFTU0VSVChsZW5ndGgudG1wKCkpOwotICAgIEFTU0VSVChsZW5ndGgudHlwZSgpID09IFR5cGU6
OkkzMik7CisgICAgQVNTRVJUKGxlbmd0aC50eXBlKCkuaXNJMzIoKSk7CiAKLSAgICBhdXRvIHJl
c3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6STMyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHRtcEZvclR5
cGUoVHlwZXM6OkkzMik7CiAgICAgZW1pdENDYWxsKAogICAgICAgICAmb3BlcmF0aW9uV2FzbU1l
bW9yeUluaXQsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLAotICAgICAgICBhZGRDb25zdGFudChU
eXBlOjpJMzIsIGRhdGFTZWdtZW50SW5kZXgpLAorICAgICAgICBhZGRDb25zdGFudChUeXBlczo6
STMyLCBkYXRhU2VnbWVudEluZGV4KSwKICAgICAgICAgZHN0QWRkcmVzcywgc3JjQWRkcmVzcywg
bGVuZ3RoKTsKIAogICAgIGVtaXRDaGVjayhbJl0gewpAQCAtMTM2MCw3ICsxMzYyLDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkTWVtb3J5SW5pdCh1bnNpZ25lZCBkYXRhU2VnbWVudEluZGV4
LCBFeHByZXNzaW9uVHlwZSBkc3QKIAogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkRGF0YURyb3Ao
dW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGVtaXRD
Q2FsbCgmb3BlcmF0aW9uV2FzbURhdGFEcm9wLCBUeXBlZFRtcCgpLCBpbnN0YW5jZVZhbHVlKCks
IGFkZENvbnN0YW50KFR5cGU6OkkzMiwgZGF0YVNlZ21lbnRJbmRleCkpOworICAgIGVtaXRDQ2Fs
bCgmb3BlcmF0aW9uV2FzbURhdGFEcm9wLCBUeXBlZFRtcCgpLCBpbnN0YW5jZVZhbHVlKCksIGFk
ZENvbnN0YW50KFR5cGVzOjpJMzIsIGRhdGFTZWdtZW50SW5kZXgpKTsKICAgICByZXR1cm4geyB9
OwogfQogCkBAIC0xNTgwLDcgKzE1ODIsNyBAQCBpbmxpbmUgQWlySVJHZW5lcmF0b3I6OkV4cHJl
c3Npb25UeXBlIEFpcklSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcgogICAg
ICAgICAgICAgYXV0byB0ZW1wID0gZzY0KCk7CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJn
OjpiaWdJbW0oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemVPZk9wZXJhdGlvbikgKyBvZmZzZXQg
LSAxKSwgdGVtcCk7CiAgICAgICAgICAgICBhcHBlbmQoQWRkNjQsIHJlc3VsdCwgdGVtcCk7Ci0g
ICAgICAgICAgICBhdXRvIHNpemVNYXggPSBhZGRDb25zdGFudChUeXBlOjpJNjQsIG1heGltdW0p
OworICAgICAgICAgICAgYXV0byBzaXplTWF4ID0gYWRkQ29uc3RhbnQoVHlwZXM6Okk2NCwgbWF4
aW11bSk7CiAKICAgICAgICAgICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICAgICAgICAgIHJl
dHVybiBJbnN0KEJyYW5jaDY0LCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCksIHRlbXAsIHNpemVNYXgpOwpAQCAtMTkwMCw4ICsxOTAyLDggQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6Zml4dXBQb2ludGVyUGx1c09mZnNldEZvckF0b21pY09wcyhFeHRB
dG9taWNPcFR5cGUgb3AsIEV4cHIKIAogdm9pZCBBaXJJUkdlbmVyYXRvcjo6c2FuaXRpemVBdG9t
aWNSZXN1bHQoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZSwgVG1wIHNvdXJjZSwg
VG1wIGRlc3QpCiB7Ci0gICAgc3dpdGNoICh2YWx1ZVR5cGUpIHsKLSAgICBjYXNlIFR5cGU6Okk2
NDogeworICAgIHN3aXRjaCAodmFsdWVUeXBlLmtpbmQpIHsKKyAgICBjYXNlIFR5cGVLaW5kOjpJ
NjQ6IHsKICAgICAgICAgc3dpdGNoIChhY2Nlc3NXaWR0aChvcCkpIHsKICAgICAgICAgY2FzZSBC
Mzo6V2lkdGg4OgogICAgICAgICAgICAgYXBwZW5kKFplcm9FeHRlbmQ4VG8zMiwgc291cmNlLCBk
ZXN0KTsKQEAgLTE5MjAsNyArMTkyMiw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnNhbml0aXpl
QXRvbWljUmVzdWx0KEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5cGUsIFRtCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIFR5cGU6OkkzMjoKKyAgICBj
YXNlIFR5cGVLaW5kOjpJMzI6CiAgICAgICAgIHN3aXRjaCAoYWNjZXNzV2lkdGgob3ApKSB7CiAg
ICAgICAgIGNhc2UgQjM6OldpZHRoODoKICAgICAgICAgICAgIGFwcGVuZChaZXJvRXh0ZW5kOFRv
MzIsIHNvdXJjZSwgZGVzdCk7CkBAIC0xOTU5LDcgKzE5NjEsNyBAQCBUeXBlZFRtcCBBaXJJUkdl
bmVyYXRvcjo6YXBwZW5kR2VuZXJhbEF0b21pYyhFeHRBdG9taWNPcFR5cGUgb3AsIEIzOjpBaXI6
Ok9wY29kZQogCiAgICAgYXV0byB0bXAgPSBbJl0oQXJnIGFyZykgLT4gVHlwZWRUbXAgewogICAg
ICAgICBpZiAoYXJnLmlzVG1wKCkpCi0gICAgICAgICAgICByZXR1cm4gVHlwZWRUbXAoYXJnLnRt
cCgpLCBhY2Nlc3NXaWR0aCA9PSBCMzo6V2lkdGg2NCA/IFR5cGU6Okk2NCA6IFR5cGU6OkkzMik7
CisgICAgICAgICAgICByZXR1cm4gVHlwZWRUbXAoYXJnLnRtcCgpLCBhY2Nlc3NXaWR0aCA9PSBC
Mzo6V2lkdGg2NCA/IFR5cGVzOjpJNjQgOiBUeXBlczo6STMyKTsKICAgICAgICAgVHlwZWRUbXAg
cmVzdWx0ID0gbmV3VG1wKCk7CiAgICAgICAgIGFwcGVuZChNb3ZlLCBhcmcsIHJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMDcwLDcgKzIwNzIsNyBAQCBUeXBlZFRtcCBBaXJJ
UkdlbmVyYXRvcjo6YXBwZW5kU3Ryb25nQ0FTKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZWRUbXAg
ZXhwZWN0ZWQsCiAKICAgICBhdXRvIHRtcCA9IFsmXShBcmcgYXJnKSAtPiBUeXBlZFRtcCB7CiAg
ICAgICAgIGlmIChhcmcuaXNUbXAoKSkKLSAgICAgICAgICAgIHJldHVybiBUeXBlZFRtcChhcmcu
dG1wKCksIGFjY2Vzc1dpZHRoID09IEIzOjpXaWR0aDY0ID8gVHlwZTo6STY0IDogVHlwZTo6STMy
KTsKKyAgICAgICAgICAgIHJldHVybiBUeXBlZFRtcChhcmcudG1wKCksIGFjY2Vzc1dpZHRoID09
IEIzOjpXaWR0aDY0ID8gVHlwZXM6Okk2NCA6IFR5cGVzOjpJMzIpOwogICAgICAgICBUeXBlZFRt
cCByZXN1bHQgPSBuZXdUbXAoKTsKICAgICAgICAgYXBwZW5kKE1vdmUsIGFyZywgcmVzdWx0KTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIxNjUsNyArMjE2Nyw3IEBAIGlubGluZSBUeXBl
ZFRtcCBBaXJJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0xvYWRPcChFeHRBdG9taWNPcFR5cGUgb3As
IFR5cGUgdmFsdWVUCiAgICAgICAgIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNo
Z0FkZCwgYWNjZXNzV2lkdGgob3ApKTsKICAgICBCMzo6QWlyOjpPcGNvZGUgbm9uQXRvbWljT3Bj
b2RlID0gT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQWRkLCBhY2Nlc3NXaWR0aChvcCkpOwog
Ci0gICAgVHlwZWRUbXAgcmVzdWx0ID0gdmFsdWVUeXBlID09IFR5cGU6Okk2NCA/IGc2NCgpIDog
ZzMyKCk7CisgICAgVHlwZWRUbXAgcmVzdWx0ID0gdmFsdWVUeXBlLmlzSTY0KCkgPyBnNjQoKSA6
IGczMigpOwogCiAgICAgaWYgKG9wY29kZSkgewogICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bj
b2RlLnZhbHVlKCksIEFyZzo6VG1wLCBhZGRyQXJnLmtpbmQoKSwgQXJnOjpUbXApKSB7CkBAIC0y
MjAyLDExICsyMjA0LDExIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmF0b21pY0xvYWQoRXh0QXRv
bWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZSwgRXhwcmVzc2lvblR5CiAgICAgICAgIGVtaXRQ
YXRjaHBvaW50KHBhdGNoLCBUbXAoKSk7CiAKICAgICAgICAgLy8gV2Ugd29uJ3QgcmVhY2ggaGVy
ZSwgc28gd2UganVzdCBwaWNrIGEgcmFuZG9tIHJlZy4KLSAgICAgICAgc3dpdGNoICh2YWx1ZVR5
cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlOjpJMzI6CisgICAgICAgIHN3aXRjaCAodmFsdWVUeXBl
LmtpbmQpIHsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgogICAgICAgICAgICAgcmVzdWx0
ID0gZzMyKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpJNjQ6Cisg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKICAgICAgICAgICAgIHJlc3VsdCA9IGc2NCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMjM5LDIwICsyMjQxLDIw
IEBAIGlubGluZSB2b2lkIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljU3RvcmVPcChFeHRBdG9t
aWNPcFR5cGUgb3AsIFR5cGUgdmFsdWVUeXBlCiAKICAgICBpZiAob3Bjb2RlKSB7CiAgICAgICAg
IGlmIChpc1ZhbGlkRm9ybShvcGNvZGUudmFsdWUoKSwgQXJnOjpUbXAsIGFkZHJBcmcua2luZCgp
LCBBcmc6OlRtcCkpIHsKLSAgICAgICAgICAgIFR5cGVkVG1wIHJlc3VsdCA9IHZhbHVlVHlwZSA9
PSBUeXBlOjpJNjQgPyBnNjQoKSA6IGczMigpOworICAgICAgICAgICAgVHlwZWRUbXAgcmVzdWx0
ID0gdmFsdWVUeXBlLmlzSTY0KCkgPyBnNjQoKSA6IGczMigpOwogICAgICAgICAgICAgYXBwZW5k
RWZmZWN0ZnVsKG9wY29kZS52YWx1ZSgpLCB2YWx1ZSwgYWRkckFyZywgcmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNv
ZGUudmFsdWUoKSwgQXJnOjpUbXAsIGFkZHJBcmcua2luZCgpKSkgewotICAgICAgICAgICAgVHlw
ZWRUbXAgcmVzdWx0ID0gdmFsdWVUeXBlID09IFR5cGU6Okk2NCA/IGc2NCgpIDogZzMyKCk7Cisg
ICAgICAgICAgICBUeXBlZFRtcCByZXN1bHQgPSB2YWx1ZVR5cGUuaXNJNjQoKSA/IGc2NCgpIDog
ZzMyKCk7CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgdmFsdWUsIHJlc3VsdCk7CiAgICAgICAg
ICAgICBhcHBlbmRFZmZlY3RmdWwob3Bjb2RlLnZhbHVlKCksIHJlc3VsdCwgYWRkckFyZyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhcHBlbmRHZW5lcmFs
QXRvbWljKG9wLCBub25BdG9taWNPcGNvZGUsIEIzOjpDb21tdXRhdGl2ZSwgdmFsdWUsIGFkZHJB
cmcsIHZhbHVlVHlwZSA9PSBUeXBlOjpJNjQgPyBnNjQoKSA6IGczMigpKTsKKyAgICBhcHBlbmRH
ZW5lcmFsQXRvbWljKG9wLCBub25BdG9taWNPcGNvZGUsIEIzOjpDb21tdXRhdGl2ZSwgdmFsdWUs
IGFkZHJBcmcsIHZhbHVlVHlwZS5pc0k2NCgpID8gZzY0KCkgOiBnMzIoKSk7CiB9CiAKIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmF0b21pY1N0b3JlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1
ZVR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50
MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKQEAgLTIzMTEsNyArMjMxMyw3IEBAIFR5cGVk
VG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQmluYXJ5Uk1XT3AoRXh0QXRvbWljT3BUeXBl
IG9wLCBUeXBlIHZhbHVlVHlwCiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1Jt
d1N1YjoKICAgICAgICAgaWYgKGlzWDg2KCkgfHwgaXNBUk02NEUoKSkgewogICAgICAgICAgICAg
VHlwZWRUbXAgbmV3VmFsdWU7Ci0gICAgICAgICAgICBpZiAodmFsdWVUeXBlID09IFR5cGU6Okk2
NCkgeworICAgICAgICAgICAgaWYgKHZhbHVlVHlwZS5pc0k2NCgpKSB7CiAgICAgICAgICAgICAg
ICAgbmV3VmFsdWUgPSBnNjQoKTsKICAgICAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgdmFsdWUs
IG5ld1ZhbHVlKTsKICAgICAgICAgICAgICAgICBhcHBlbmQoTmVnNjQsIG5ld1ZhbHVlKTsKQEAg
LTIzMzgsNyArMjM0MCw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQmlu
YXJ5Uk1XT3AoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwCiAgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6Okk2NEF0b21pY1Jtd0FuZDoKICAgICAgICAgaWYgKGlzQVJNNjRFKCkpIHsK
ICAgICAgICAgICAgIFR5cGVkVG1wIG5ld1ZhbHVlOwotICAgICAgICAgICAgaWYgKHZhbHVlVHlw
ZSA9PSBUeXBlOjpJNjQpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZVR5cGUuaXNJNjQoKSkgewog
ICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gZzY0KCk7CiAgICAgICAgICAgICAgICAgYXBwZW5k
KE5vdDY0LCB2YWx1ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTIzOTEs
NyArMjM5Myw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQmluYXJ5Uk1X
T3AoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAotICAgIFR5cGVkVG1wIHJlc3VsdCA9IHZhbHVlVHlwZSA9PSBUeXBlOjpJNjQgPyBnNjQo
KSA6IGczMigpOworICAgIFR5cGVkVG1wIHJlc3VsdCA9IHZhbHVlVHlwZS5pc0k2NCgpID8gZzY0
KCkgOiBnMzIoKTsKIAogICAgIGlmIChvcGNvZGUpIHsKICAgICAgICAgaWYgKGlzVmFsaWRGb3Jt
KG9wY29kZS52YWx1ZSgpLCBBcmc6OlRtcCwgYWRkckFyZy5raW5kKCksIEFyZzo6VG1wKSkgewpA
QCAtMjQyNiwxMSArMjQyOCwxMSBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphdG9taWNCaW5hcnlS
TVcoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZSwgRXhwcmVzcwogICAgICAgICB9
KTsKICAgICAgICAgZW1pdFBhdGNocG9pbnQocGF0Y2gsIFRtcCgpKTsKIAotICAgICAgICBzd2l0
Y2ggKHZhbHVlVHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OkkzMjoKKyAgICAgICAgc3dpdGNo
ICh2YWx1ZVR5cGUua2luZCkgeworICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CiAgICAgICAg
ICAgICByZXN1bHQgPSBnMzIoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5
cGU6Okk2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0OgogICAgICAgICAgICAgcmVzdWx0
ID0gZzY0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTI0NTgs
NyArMjQ2MCw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFyZUV4
Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1CiAgICAgICAgIH0pOwogICAgIH0K
IAotICAgIFR5cGVkVG1wIHJlc3VsdCA9IHZhbHVlVHlwZSA9PSBUeXBlOjpJNjQgPyBnNjQoKSA6
IGczMigpOworICAgIFR5cGVkVG1wIHJlc3VsdCA9IHZhbHVlVHlwZS5pc0k2NCgpID8gZzY0KCkg
OiBnMzIoKTsKIAogICAgIGlmICh2YWx1ZVdpZHRoID09IGFjY2Vzc1dpZHRoKSB7CiAgICAgICAg
IGFwcGVuZFN0cm9uZ0NBUyhvcCwgZXhwZWN0ZWQsIHZhbHVlLCBhZGRyQXJnLCByZXN1bHQpOwpA
QCAtMjQ3MCw3ICsyNDcyLDcgQEAgVHlwZWRUbXAgQWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWND
b21wYXJlRXhjaGFuZ2UoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHUKICAgICBCYXNpY0Js
b2NrKiBzdWNjZXNzQ2FzZSA9IG1fY29kZS5hZGRCbG9jaygpOwogICAgIEJhc2ljQmxvY2sqIGNv
bnRpbnVhdGlvbiA9IG1fY29kZS5hZGRCbG9jaygpOwogCi0gICAgVHlwZWRUbXAgdHJ1bmNhdGVk
RXhwZWN0ZWQgPSB2YWx1ZVR5cGUgPT0gVHlwZTo6STY0ID8gZzY0KCkgOiBnMzIoKTsKKyAgICBU
eXBlZFRtcCB0cnVuY2F0ZWRFeHBlY3RlZCA9IHZhbHVlVHlwZS5pc0k2NCgpID8gZzY0KCkgOiBn
MzIoKTsKICAgICBzYW5pdGl6ZUF0b21pY1Jlc3VsdChvcCwgdmFsdWVUeXBlLCBleHBlY3RlZCwg
dHJ1bmNhdGVkRXhwZWN0ZWQpOwogCiAgICAgYXBwZW5kKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJ
RFRIKEJyYW5jaCwgdmFsdWVXaWR0aCksIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwpLCBleHBlY3RlZCwgdHJ1bmNhdGVkRXhwZWN0ZWQpOwpAQCAtMjUyNSwxMSArMjUyNywx
MSBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphdG9taWNDb21wYXJlRXhjaGFuZ2UoRXh0QXRvbWlj
T3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZSwgRQogICAgICAgICBlbWl0UGF0Y2hwb2ludChwYXRj
aCwgVG1wKCkpOwogCiAgICAgICAgIC8vIFdlIHdvbid0IHJlYWNoIGhlcmUsIHNvIHdlIGp1c3Qg
cGljayBhIHJhbmRvbSByZWcuCi0gICAgICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7Ci0gICAgICAg
IGNhc2UgVHlwZTo6STMyOgorICAgICAgICBzd2l0Y2ggKHZhbHVlVHlwZS5raW5kKSB7CisgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKICAgICAgICAgICAgIHJlc3VsdCA9IGczMigpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6STY0OgorICAgICAgICBjYXNlIFR5
cGVLaW5kOjpJNjQ6CiAgICAgICAgICAgICByZXN1bHQgPSBnNjQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjU0Niw5ICsyNTQ4LDkgQEAgYXV0byBBaXJJUkdl
bmVyYXRvcjo6YXRvbWljV2FpdChFeHRBdG9taWNPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBv
aW50ZXIsIEV4cHIKICAgICByZXN1bHQgPSBnMzIoKTsKIAogICAgIGlmIChvcCA9PSBFeHRBdG9t
aWNPcFR5cGU6Ok1lbW9yeUF0b21pY1dhaXQzMikKLSAgICAgICAgZW1pdENDYWxsKCZvcGVyYXRp
b25NZW1vcnlBdG9taWNXYWl0MzIsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBwb2ludGVyLCBh
ZGRDb25zdGFudChUeXBlOjpJMzIsIG9mZnNldCksIHZhbHVlLCB0aW1lb3V0KTsKKyAgICAgICAg
ZW1pdENDYWxsKCZvcGVyYXRpb25NZW1vcnlBdG9taWNXYWl0MzIsIHJlc3VsdCwgaW5zdGFuY2VW
YWx1ZSgpLCBwb2ludGVyLCBhZGRDb25zdGFudChUeXBlczo6STMyLCBvZmZzZXQpLCB2YWx1ZSwg
dGltZW91dCk7CiAgICAgZWxzZQotICAgICAgICBlbWl0Q0NhbGwoJm9wZXJhdGlvbk1lbW9yeUF0
b21pY1dhaXQ2NCwgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksIHBvaW50ZXIsIGFkZENvbnN0YW50
KFR5cGU6OkkzMiwgb2Zmc2V0KSwgdmFsdWUsIHRpbWVvdXQpOworICAgICAgICBlbWl0Q0NhbGwo
Jm9wZXJhdGlvbk1lbW9yeUF0b21pY1dhaXQ2NCwgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksIHBv
aW50ZXIsIGFkZENvbnN0YW50KFR5cGVzOjpJMzIsIG9mZnNldCksIHZhbHVlLCB0aW1lb3V0KTsK
ICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoMzIsIG51bGxw
dHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4pLCByZXN1bHQsIEFyZzo6
aW1tKDApKTsKICAgICB9LCBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgewpAQCAtMjU2Miw3ICsyNTY0LDcgQEAgYXV0byBBaXJJUkdl
bmVyYXRvcjo6YXRvbWljTm90aWZ5KEV4dEF0b21pY09wVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9p
bnRlciwgRXhwcmUKIHsKICAgICByZXN1bHQgPSBnMzIoKTsKIAotICAgIGVtaXRDQ2FsbCgmb3Bl
cmF0aW9uTWVtb3J5QXRvbWljTm90aWZ5LCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgcG9pbnRl
ciwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCBvZmZzZXQpLCBjb3VudCk7CisgICAgZW1pdENDYWxs
KCZvcGVyYXRpb25NZW1vcnlBdG9taWNOb3RpZnksIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBw
b2ludGVyLCBhZGRDb25zdGFudChUeXBlczo6STMyLCBvZmZzZXQpLCBjb3VudCk7CiAgICAgZW1p
dENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaDMyLCBudWxscHRyLCBBcmc6
OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuKSwgcmVzdWx0LCBBcmc6OmltbSgwKSk7
CiAgICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKQEAgLTI1ODYsNDEgKzI1ODgsNDEgQEAgYXV0byBBaXJJUkdlbmVyYXRv
cjo6dHJ1bmNTYXR1cmF0ZWQoRXh0MU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHBy
ZXNzaW8KICAgICBib29sIHJlcXVpcmVzTWFjcm9TY3JhdGNoUmVnaXN0ZXJzID0gZmFsc2U7CiAg
ICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0MU9wVHlwZTo6STMyVHJ1bmNTYXRGMzJTOgot
ICAgICAgICBtYXhGbG9hdCA9IGFkZENvbnN0YW50KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVp
bnQzMl90Pigtc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1pbigpKSkpOwotICAgICAgICBtaW5GbG9hdCA9IGFkZENvbnN0YW50KFR5cGU6OkYzMiwgYml0
d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWluKCkpKSk7CisgICAgICAgIG1heEZsb2F0ID0gYWRkQ29uc3RhbnQoVHlw
ZXM6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90Pigtc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSkpOworICAgICAgICBtaW5GbG9hdCA9IGFk
ZENvbnN0YW50KFR5cGVzOjpGMzIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEV4dDFPcFR5cGU6OkkzMlRydW5jU2F0RjMyVToKLSAgICAgICAgbWF4
RmxvYXQgPSBhZGRDb25zdGFudChUeXBlOjpGMzIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSAqIHN0
YXRpY19jYXN0PGZsb2F0PigtMi4wKSkpOwotICAgICAgICBtaW5GbG9hdCA9IGFkZENvbnN0YW50
KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oLTEu
MCkpKTsKKyAgICAgICAgbWF4RmxvYXQgPSBhZGRDb25zdGFudChUeXBlczo6RjMyLCBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptaW4oKSkgKiBzdGF0aWNfY2FzdDxmbG9hdD4oLTIuMCkpKTsKKyAgICAgICAgbWlu
RmxvYXQgPSBhZGRDb25zdGFudChUeXBlczo6RjMyLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHN0
YXRpY19jYXN0PGZsb2F0PigtMS4wKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEV4dDFP
cFR5cGU6OkkzMlRydW5jU2F0RjY0UzoKLSAgICAgICAgbWF4RmxvYXQgPSBhZGRDb25zdGFudChU
eXBlOjpGNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oLXN0YXRpY19jYXN0PGRvdWJsZT4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKSk7Ci0gICAgICAgIG1pbkZsb2F0ID0g
YWRkQ29uc3RhbnQoVHlwZTo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0
PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpIC0gMS4wKSk7Cisg
ICAgICAgIG1heEZsb2F0ID0gYWRkQ29uc3RhbnQoVHlwZXM6OkY2NCwgYml0d2lzZV9jYXN0PHVp
bnQ2NF90Pigtc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptaW4oKSkpKTsKKyAgICAgICAgbWluRmxvYXQgPSBhZGRDb25zdGFudChUeXBlczo6RjY0LCBi
aXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWluKCkpIC0gMS4wKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RXh0MU9wVHlwZTo6STMyVHJ1bmNTYXRGNjRVOgotICAgICAgICBtYXhGbG9hdCA9IGFkZENvbnN0
YW50KFR5cGU6OkY2NCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxkb3VibGU+
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSAqIC0yLjApKTsKLSAgICAgICAg
bWluRmxvYXQgPSBhZGRDb25zdGFudChUeXBlOjpGNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4o
LTEuMCkpOworICAgICAgICBtYXhGbG9hdCA9IGFkZENvbnN0YW50KFR5cGVzOjpGNjQsIGJpdHdp
c2VfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptaW4oKSkgKiAtMi4wKSk7CisgICAgICAgIG1pbkZsb2F0ID0gYWRkQ29uc3Rh
bnQoVHlwZXM6OkY2NCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PigtMS4wKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGMzJTOgotICAgICAgICBtYXhG
bG9hdCA9IGFkZENvbnN0YW50KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90Pigtc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSkpOwot
ICAgICAgICBtaW5GbG9hdCA9IGFkZENvbnN0YW50KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVp
bnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6
bWluKCkpKSk7CisgICAgICAgIG1heEZsb2F0ID0gYWRkQ29uc3RhbnQoVHlwZXM6OkYzMiwgYml0
d2lzZV9jYXN0PHVpbnQzMl90Pigtc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1pbigpKSkpOworICAgICAgICBtaW5GbG9hdCA9IGFkZENvbnN0YW50KFR5
cGVzOjpGMzIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEV4dDFPcFR5cGU6Okk2NFRydW5jU2F0RjMyVToKLSAgICAgICAgbWF4RmxvYXQgPSBhZGRD
b25zdGFudChUeXBlOjpGMzIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSAqIHN0YXRpY19jYXN0PGZs
b2F0PigtMi4wKSkpOwotICAgICAgICBtaW5GbG9hdCA9IGFkZENvbnN0YW50KFR5cGU6OkYzMiwg
Yml0d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oLTEuMCkpKTsKKyAgICAg
ICAgbWF4RmxvYXQgPSBhZGRDb25zdGFudChUeXBlczo6RjMyLCBiaXR3aXNlX2Nhc3Q8dWludDMy
X3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4o
KSkgKiBzdGF0aWNfY2FzdDxmbG9hdD4oLTIuMCkpKTsKKyAgICAgICAgbWluRmxvYXQgPSBhZGRD
b25zdGFudChUeXBlczo6RjMyLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHN0YXRpY19jYXN0PGZs
b2F0PigtMS4wKSkpOwogICAgICAgICBpZiAoaXNYODYoKSkKLSAgICAgICAgICAgIHNpZ25CaXRD
b25zdGFudCA9IGFkZENvbnN0YW50KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90Pihz
dGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICBzaWdu
Qml0Q29uc3RhbnQgPSBhZGRDb25zdGFudChUeXBlczo6RjMyLCBiaXR3aXNlX2Nhc3Q8dWludDMy
X3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCkgLSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkpKTsKICAgICAgICAgcmVx
dWlyZXNNYWNyb1NjcmF0Y2hSZWdpc3RlcnMgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEV4dDFPcFR5cGU6Okk2NFRydW5jU2F0RjY0UzoKLSAgICAgICAgbWF4RmxvYXQgPSBhZGRD
b25zdGFudChUeXBlOjpGNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oLXN0YXRpY19jYXN0PGRv
dWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKSk7Ci0gICAgICAgIG1p
bkZsb2F0ID0gYWRkQ29uc3RhbnQoVHlwZTo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0
YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKSk7
CisgICAgICAgIG1heEZsb2F0ID0gYWRkQ29uc3RhbnQoVHlwZXM6OkY2NCwgYml0d2lzZV9jYXN0
PHVpbnQ2NF90Pigtc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0
X3Q+OjptaW4oKSkpKTsKKyAgICAgICAgbWluRmxvYXQgPSBhZGRDb25zdGFudChUeXBlczo6RjY0
LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXh0
MU9wVHlwZTo6STY0VHJ1bmNTYXRGNjRVOgotICAgICAgICBtYXhGbG9hdCA9IGFkZENvbnN0YW50
KFR5cGU6OkY2NCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxkb3VibGU+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSAqIC0yLjApKTsKLSAgICAgICAgbWlu
RmxvYXQgPSBhZGRDb25zdGFudChUeXBlOjpGNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oLTEu
MCkpOworICAgICAgICBtYXhGbG9hdCA9IGFkZENvbnN0YW50KFR5cGVzOjpGNjQsIGJpdHdpc2Vf
Y2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4oKSkgKiAtMi4wKSk7CisgICAgICAgIG1pbkZsb2F0ID0gYWRkQ29uc3RhbnQo
VHlwZXM6OkY2NCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PigtMS4wKSk7CiAgICAgICAgIGlmIChp
c1g4NigpKQotICAgICAgICAgICAgc2lnbkJpdENvbnN0YW50ID0gYWRkQ29uc3RhbnQoVHlwZTo6
RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCkpKSk7CisgICAgICAgICAgICBzaWduQml0Q29uc3RhbnQgPSBhZGRDb25zdGFudChU
eXBlczo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWF4KCkpKSk7CiAgICAgICAgIHJlcXVpcmVzTWFjcm9TY3JhdGNoUmVnaXN0ZXJz
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTI2NjQsNyArMjY2Niw3
IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OnRydW5jU2F0dXJhdGVkKEV4dDFPcFR5cGUgb3AsIEV4
cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvCiAgICAgQmFzaWNCbG9jayogaW5Cb3VuZHNDYXNl
ID0gbV9jb2RlLmFkZEJsb2NrKCk7CiAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gbV9j
b2RlLmFkZEJsb2NrKCk7CiAKLSAgICBhdXRvIGJyYW5jaE9wID0gb3BlcmFuZFR5cGUgPT0gVHlw
ZTo6RjMyID8gQnJhbmNoRmxvYXQgOiBCcmFuY2hEb3VibGU7CisgICAgYXV0byBicmFuY2hPcCA9
IG9wZXJhbmRUeXBlID09IFR5cGVzOjpGMzIgPyBCcmFuY2hGbG9hdCA6IEJyYW5jaERvdWJsZTsK
ICAgICBhcHBlbmQobV9jdXJyZW50QmxvY2ssIGJyYW5jaE9wLCBBcmc6OmRvdWJsZUNvbmQoTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKSwgYXJnLCBtaW5G
bG9hdCk7CiAgICAgbV9jdXJyZW50QmxvY2stPnNldFN1Y2Nlc3NvcnMobWluQ2FzZSwgbWF4Q2hl
Y2tDYXNlKTsKIApAQCAtMzAwMCw3ICszMDAyLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRk
UmV0dXJuKGNvbnN0IENvbnRyb2xEYXRhJiBkYXRhLCBjb25zdCBTdGFjayYgcmV0dXJuVmFsdWUK
ICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChyZXAuaXNSZWcoKSk7Ci0gICAgICAgIGlmIChk
YXRhLnNpZ25hdHVyZSgpLT5yZXR1cm5UeXBlKGkpID09IEkzMikKKyAgICAgICAgaWYgKGRhdGEu
c2lnbmF0dXJlKCktPnJldHVyblR5cGUoaSkuaXNJMzIoKSkKICAgICAgICAgICAgIGFwcGVuZChN
b3ZlMzIsIHRtcCwgdG1wKTsKICAgICAgICAgcmV0dXJuQ29uc3RyYWludHMuYXBwZW5kKENvbnN0
cmFpbmVkVG1wKHRtcCwgd2FzbUNhbGxJbmZvLnJlc3VsdHNbaV0pKTsKICAgICB9CkBAIC0zMDQw
LDcgKzMwNDIsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRTd2l0Y2goRXhwcmVzc2lvblR5
cGUgY29uZGl0aW9uLCBjb25zdCBWZWN0b3I8Q29udHJvbERhdAogICAgIHVuaWZ5VmFsdWVzV2l0
aEJsb2NrKGV4cHJlc3Npb25TdGFjaywgZGVmYXVsdFRhcmdldC5yZXN1bHRzKTsKICAgICBzdWNj
ZXNzb3JzLmFwcGVuZChkZWZhdWx0VGFyZ2V0LnRhcmdldEJsb2NrRm9yQnJhbmNoKCkpOwogCi0g
ICAgQVNTRVJUKGNvbmRpdGlvbi50eXBlKCkgPT0gVHlwZTo6STMyKTsKKyAgICBBU1NFUlQoY29u
ZGl0aW9uLnR5cGUoKS5pc0kzMigpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lk
ZXIgZHluYW1pY2FsbHkgc3dpdGNoaW5nIGJldHdlZW4gYSBqdW1wIHRhYmxlCiAgICAgLy8gYW5k
IGEgYmluYXJ5IHN3aXRjaCBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZiBzdWNjZXNzb3JzLgpA
QCAtMzYxNCw3ICszNjE2LDcgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1pdE1vZE9yRGl2KGJv
b2wgaXNEaXYsIEV4cHJlc3Npb25UeXBlIGxocywgRXhwcmVzc2lvblR5cGUKICAgICAgICAgQmFz
aWNCbG9jayogY29udGludWF0aW9uID0gbV9jb2RlLmFkZEJsb2NrKCk7CiAKICAgICAgICAgYXV0
byB0ZW1wID0gc2l6ZW9mKEludFR5cGUpID09IDQgPyBnMzIoKSA6IGc2NCgpOwotICAgICAgICBh
dXRvIG9uZSA9IGFkZENvbnN0YW50KHNpemVvZihJbnRUeXBlKSA9PSA0ID8gVHlwZTo6STMyIDog
VHlwZTo6STY0LCAxKTsKKyAgICAgICAgYXV0byBvbmUgPSBhZGRDb25zdGFudChzaXplb2YoSW50
VHlwZSkgPT0gNCA/IFR5cGVzOjpJMzIgOiBUeXBlczo6STY0LCAxKTsKIAogICAgICAgICBhcHBl
bmQoc2l6ZW9mKEludFR5cGUpID09IDQgPyBBZGQzMiA6IEFkZDY0LCByaHMsIG9uZSwgdGVtcCk7
CiAgICAgICAgIGFwcGVuZChzaXplb2YoSW50VHlwZSkgPT0gNCA/IEJyYW5jaDMyIDogQnJhbmNo
NjQsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUpLCB0ZW1wLCBvbmUpOwpAQCAt
MzYyNCw3ICszNjI2LDcgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1pdE1vZE9yRGl2KGJvb2wg
aXNEaXYsIEV4cHJlc3Npb25UeXBlIGxocywgRXhwcmVzc2lvblR5cGUKICAgICAgICAgYXBwZW5k
KGRlbk1heUJlQmFkLCBzaXplb2YoSW50VHlwZSkgPT0gNCA/IEJyYW5jaFRlc3QzMiA6IEJyYW5j
aFRlc3Q2NCwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgcmhzLCByaHMpOwog
ICAgICAgICBkZW5NYXlCZUJhZC0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24sIGRlbk5vdFpl
cm8pOwogCi0gICAgICAgIGF1dG8gbWluID0gYWRkQ29uc3RhbnQoZGVuTm90WmVybywgc2l6ZW9m
KEludFR5cGUpID09IDQgPyBUeXBlOjpJMzIgOiBUeXBlOjpJNjQsIHN0ZDo6bnVtZXJpY19saW1p
dHM8SW50VHlwZT46Om1pbigpKTsKKyAgICAgICAgYXV0byBtaW4gPSBhZGRDb25zdGFudChkZW5O
b3RaZXJvLCBzaXplb2YoSW50VHlwZSkgPT0gNCA/IFR5cGVzOjpJMzIgOiBUeXBlczo6STY0LCBz
dGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjptaW4oKSk7CiAgICAgICAgIGlmIChpc0RpdikK
ICAgICAgICAgICAgIGFwcGVuZChkZW5Ob3RaZXJvLCBzaXplb2YoSW50VHlwZSkgPT0gNCA/IE1v
dmUzMiA6IE1vdmUsIG1pbiwgcmVzdWx0KTsKICAgICAgICAgZWxzZSB7CkBAIC0zODg3LDggKzM4
ODksOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMlRydW5jPihFeHBy
ZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJgogdGVtcGxhdGU8PgogYXV0byBBaXJJUkdl
bmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1NGNjQ+KEV4cHJlc3Npb25UeXBlIGFyZywg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGF1dG8gbWF4
ID0gYWRkQ29uc3RhbnQoVHlwZTo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KC1zdGF0aWNf
Y2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSkpOwotICAg
IGF1dG8gbWluID0gYWRkQ29uc3RhbnQoVHlwZTo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+
KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkp
IC0gMS4wKSk7CisgICAgYXV0byBtYXggPSBhZGRDb25zdGFudChUeXBlczo6RjY0LCBiaXR3aXNl
X2Nhc3Q8dWludDY0X3Q+KC1zdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1pbigpKSkpOworICAgIGF1dG8gbWluID0gYWRkQ29uc3RhbnQoVHlwZXM6OkY2
NCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1pbigpKSAtIDEuMCkpOwogCiAgICAgYXV0byB0ZW1wMSA9IGcz
MigpOwogICAgIGF1dG8gdGVtcDIgPSBnMzIoKTsKQEAgLTM5MTYsOCArMzkxOCw4IEBAIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNTRjY0PihFeHByZXNzaW9uVHlw
ZSBhcmcsIEV4cHJlc3Npb25UCiB0ZW1wbGF0ZTw+CiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRP
cDxPcFR5cGU6OkkzMlRydW5jU0YzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgYXV0byBtYXggPSBhZGRDb25zdGFu
dChUeXBlOjpGMzIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oLXN0YXRpY19jYXN0PGZsb2F0Pihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpKTsKLSAgICBhdXRvIG1pbiA9IGFk
ZENvbnN0YW50KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDxm
bG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKSk7CisgICAgYXV0byBt
YXggPSBhZGRDb25zdGFudChUeXBlczo6RjMyLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KC1zdGF0
aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKSk7Cisg
ICAgYXV0byBtaW4gPSBhZGRDb25zdGFudChUeXBlczo6RjMyLCBiaXR3aXNlX2Nhc3Q8dWludDMy
X3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4o
KSkpKTsKIAogICAgIGF1dG8gdGVtcDEgPSBnMzIoKTsKICAgICBhdXRvIHRlbXAyID0gZzMyKCk7
CkBAIC0zOTQ1LDggKzM5NDcsOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6
OkkzMlRydW5jU0YzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogdGVtcGxhdGU8
PgogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1VGNjQ+KEV4cHJl
c3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAog
ewotICAgIGF1dG8gbWF4ID0gYWRkQ29uc3RhbnQoVHlwZTo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWlu
dDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWluKCkpICogLTIuMCkpOwotICAgIGF1dG8gbWluID0gYWRkQ29uc3RhbnQoVHlwZTo6RjY0LCBi
aXR3aXNlX2Nhc3Q8dWludDY0X3Q+KC0xLjApKTsKKyAgICBhdXRvIG1heCA9IGFkZENvbnN0YW50
KFR5cGVzOjpGNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkgKiAtMi4wKSk7CisgICAgYXV0byBt
aW4gPSBhZGRDb25zdGFudChUeXBlczo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KC0xLjAp
KTsKIAogICAgIGF1dG8gdGVtcDEgPSBnMzIoKTsKICAgICBhdXRvIHRlbXAyID0gZzMyKCk7CkBA
IC0zOTczLDggKzM5NzUsOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okkz
MlRydW5jVUY2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogdGVtcGxhdGU8Pgog
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1VGMzI+KEV4cHJlc3Np
b25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewot
ICAgIGF1dG8gbWF4ID0gYWRkQ29uc3RhbnQoVHlwZTo6RjMyLCBiaXR3aXNlX2Nhc3Q8dWludDMy
X3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4o
KSkgKiBzdGF0aWNfY2FzdDxmbG9hdD4oLTIuMCkpKTsKLSAgICBhdXRvIG1pbiA9IGFkZENvbnN0
YW50KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4o
LTEuMCkpKTsKKyAgICBhdXRvIG1heCA9IGFkZENvbnN0YW50KFR5cGVzOjpGMzIsIGJpdHdpc2Vf
Y2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1pbigpKSAqIHN0YXRpY19jYXN0PGZsb2F0PigtMi4wKSkpOworICAgIGF1dG8gbWlu
ID0gYWRkQ29uc3RhbnQoVHlwZXM6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oLTEuMCkpKTsKIAogICAgIGF1dG8gdGVtcDEgPSBnMzIoKTsKICAgICBhdXRv
IHRlbXAyID0gZzMyKCk7CkBAIC00MDAxLDggKzQwMDMsOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9y
OjphZGRPcDxPcFR5cGU6OkkzMlRydW5jVUYzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNz
aW9uVAogdGVtcGxhdGU8PgogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRU
cnVuY1NGNjQ+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIGF1dG8gbWF4ID0gYWRkQ29uc3RhbnQoVHlwZTo6RjY0LCBi
aXR3aXNlX2Nhc3Q8dWludDY0X3Q+KC1zdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1pbigpKSkpOwotICAgIGF1dG8gbWluID0gYWRkQ29uc3RhbnQoVHlw
ZTo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKSk7CisgICAgYXV0byBtYXggPSBhZGRDb25z
dGFudChUeXBlczo6RjY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KC1zdGF0aWNfY2FzdDxkb3Vi
bGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSkpOworICAgIGF1dG8gbWlu
ID0gYWRkQ29uc3RhbnQoVHlwZXM6OkY2NCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PihzdGF0aWNf
Y2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSkpOwogCiAg
ICAgYXV0byB0ZW1wMSA9IGczMigpOwogICAgIGF1dG8gdGVtcDIgPSBnMzIoKTsKQEAgLTQwMzAs
OCArNDAzMiw4IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNT
RjY0PihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UCiB0ZW1wbGF0ZTw+CiBhdXRvIEFp
cklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jVUY2ND4oRXhwcmVzc2lvblR5cGUg
YXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgYXV0
byBtYXggPSBhZGRDb25zdGFudChUeXBlOjpGNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkgKiAt
Mi4wKSk7Ci0gICAgYXV0byBtaW4gPSBhZGRDb25zdGFudChUeXBlOjpGNjQsIGJpdHdpc2VfY2Fz
dDx1aW50NjRfdD4oLTEuMCkpOworICAgIGF1dG8gbWF4ID0gYWRkQ29uc3RhbnQoVHlwZXM6OkY2
NCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1pbigpKSAqIC0yLjApKTsKKyAgICBhdXRvIG1pbiA9IGFkZENv
bnN0YW50KFR5cGVzOjpGNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oLTEuMCkpOwogICAgIAog
ICAgIGF1dG8gdGVtcDEgPSBnMzIoKTsKICAgICBhdXRvIHRlbXAyID0gZzMyKCk7CkBAIC00MDQ3
LDcgKzQwNDksNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5j
VUY2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgVHlwZWRUbXAgc2ln
bkJpdENvbnN0YW50OwogICAgIGlmIChpc1g4NigpKQotICAgICAgICBzaWduQml0Q29uc3RhbnQg
PSBhZGRDb25zdGFudChUeXBlOjpGNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nh
c3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgLSBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkpKTsKKyAgICAgICAgc2lnbkJpdENvbnN0YW50
ID0gYWRkQ29uc3RhbnQoVHlwZXM6OkY2NCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PihzdGF0aWNf
Y2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSAtIHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKSkpOwogCiAgICAgVmVjdG9yPENvbnN0cmFp
bmVkVG1wPiBhcmdzOwogICAgIGF1dG8qIHBhdGNocG9pbnQgPSBhZGRQYXRjaHBvaW50KEIzOjpJ
bnQ2NCk7CkBAIC00MDc3LDggKzQwNzksOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxP
cFR5cGU6Okk2NFRydW5jVUY2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogdGVt
cGxhdGU8PgogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1NGMzI+
KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJl
c3VsdAogewotICAgIGF1dG8gbWF4ID0gYWRkQ29uc3RhbnQoVHlwZTo6RjMyLCBiaXR3aXNlX2Nh
c3Q8dWludDMyX3Q+KC1zdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWluKCkpKSk7Ci0gICAgYXV0byBtaW4gPSBhZGRDb25zdGFudChUeXBlOjpGMzIsIGJp
dHdpc2VfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50NjRfdD46Om1pbigpKSkpOworICAgIGF1dG8gbWF4ID0gYWRkQ29uc3RhbnQoVHlwZXM6
OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90Pigtc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSkpOworICAgIGF1dG8gbWluID0gYWRkQ29uc3Rh
bnQoVHlwZXM6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4o
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKSk7CiAKICAgICBhdXRvIHRlbXAx
ID0gZzMyKCk7CiAgICAgYXV0byB0ZW1wMiA9IGczMigpOwpAQCAtNDEwNSw4ICs0MTA3LDggQEAg
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1NGMzI+KEV4cHJlc3Np
b25UeXBlIGFyZywgRXhwcmVzc2lvblQKIHRlbXBsYXRlPD4KIGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRvIG1heCA9IGFkZENv
bnN0YW50KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9h
dD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpICogc3RhdGljX2Nhc3Q8Zmxv
YXQ+KC0yLjApKSk7Ci0gICAgYXV0byBtaW4gPSBhZGRDb25zdGFudChUeXBlOjpGMzIsIGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KC0xLjApKSk7CisgICAgYXV0byBt
YXggPSBhZGRDb25zdGFudChUeXBlczo6RjMyLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHN0YXRp
Y19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkgKiBzdGF0
aWNfY2FzdDxmbG9hdD4oLTIuMCkpKTsKKyAgICBhdXRvIG1pbiA9IGFkZENvbnN0YW50KFR5cGVz
OjpGMzIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KC0xLjApKSk7
CiAgICAgCiAgICAgYXV0byB0ZW1wMSA9IGczMigpOwogICAgIGF1dG8gdGVtcDIgPSBnMzIoKTsK
QEAgLTQxMjIsNyArNDEyNCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6
STY0VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UCiAKICAgICBUeXBl
ZFRtcCBzaWduQml0Q29uc3RhbnQ7CiAgICAgaWYgKGlzWDg2KCkpCi0gICAgICAgIHNpZ25CaXRD
b25zdGFudCA9IGFkZENvbnN0YW50KFR5cGU6OkYzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90Pihz
dGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKSk7CisgICAgICAgIHNpZ25CaXRD
b25zdGFudCA9IGFkZENvbnN0YW50KFR5cGVzOjpGMzIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSAt
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKSkpOwogCiAgICAgYXV0byogcGF0
Y2hwb2ludCA9IGFkZFBhdGNocG9pbnQoQjM6OkludDY0KTsKICAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzID0gQjM6OkVmZmVjdHM6Om5vbmUoKTsKQEAgLTQxNTIsNyArNDE1NCw3IEBAIGF1dG8gQWly
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlwZSBh
cmcsIEV4cHJlc3Npb25UCiAKIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFNoaWZ0KFR5cGUgdHlw
ZSwgQjM6OkFpcjo6T3Bjb2RlIG9wLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5
cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAg
ICBBU1NFUlQodHlwZSA9PSBUeXBlOjpJNjQgfHwgdHlwZSA9PSBUeXBlOjpJMzIpOworICAgIEFT
U0VSVCh0eXBlLmlzSTY0KCkgfHwgdHlwZS5pc0kzMigpKTsKICAgICByZXN1bHQgPSB0bXBGb3JU
eXBlKHR5cGUpOwogCiAgICAgaWYgKGlzVmFsaWRGb3JtKG9wLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6VG1wKSkgewpAQCAtNDIyMCw3ICs0MjIyLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkRmxvYXRpbmdQb2ludEFicyhCMzo6QWlyOjpPcGNvZGUgb3AsIEV4cHJlc3Npb25UeXBlIHZh
bHUKIAogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkRmxvYXRpbmdQb2ludEJpbk9wKFR5cGUgdHlw
ZSwgQjM6OkFpcjo6T3Bjb2RlIG9wLCBFeHByZXNzaW9uVHlwZSBsaHMsIEV4cHJlc3Npb25UeXBl
IHJocywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIEFT
U0VSVCh0eXBlID09IFR5cGU6OkYzMiB8fCB0eXBlID09IFR5cGU6OkY2NCk7CisgICAgQVNTRVJU
KHR5cGUuaXNGMzIoKSB8fCB0eXBlLmlzRjY0KCkpOwogICAgIHJlc3VsdCA9IHRtcEZvclR5cGUo
dHlwZSk7CiAKICAgICBpZiAoaXNWYWxpZEZvcm0ob3AsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJn
OjpUbXApKSB7CkBAIC00MjczLDcgKzQyNzUsNyBAQCB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5l
cmF0b3I6OmFkZE9wPE9wVHlwZTo6RjMyRGVtb3RlRjY0PihFeHByZXNzaW9uVHlwZSBhcmcwLAog
CiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjMyTWluPihF
eHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmV0dXJuIGFkZEZsb2F0aW5nUG9pbnRN
aW5Pck1heChGMzIsIE1pbk9yTWF4OjpNaW4sIGFyZzAsIGFyZzEsIHJlc3VsdCk7CisgICAgcmV0
dXJuIGFkZEZsb2F0aW5nUG9pbnRNaW5Pck1heChUeXBlczo6RjMyLCBNaW5Pck1heDo6TWluLCBh
cmcwLCBhcmcxLCByZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZE9wPE9wVHlwZTo6RjY0TmU+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBl
IGFyZzEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKQEAgLTQyOTIs
NyArNDI5NCw3IEBAIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBl
OjpGNjRMdD4oRXhwcmVzc2lvblR5cGUgYXJnMCwgRXhwcmVzCiAKIGF1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZEZsb2F0aW5nUG9pbnRNaW5Pck1heChUeXBlIGZsb2F0VHlwZSwgTWluT3JNYXggbWlu
T3JNYXgsIEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFyZzEsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBBU1NFUlQoZmxvYXRUeXBl
ID09IEYzMiB8fCBmbG9hdFR5cGUgPT0gRjY0KTsKKyAgICBBU1NFUlQoZmxvYXRUeXBlLmlzRjMy
KCkgfHwgZmxvYXRUeXBlLmlzRjY0KCkpOwogICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoZmxvYXRU
eXBlKTsKIAogICAgIEJhc2ljQmxvY2sqIGlzRXF1YWwgPSBtX2NvZGUuYWRkQmxvY2soKTsKQEAg
LTQzMDMsNyArNDMwNSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZEZsb2F0aW5nUG9pbnRN
aW5Pck1heChUeXBlIGZsb2F0VHlwZSwgTWluT3JNYXggbWluT3JNYXgsCiAgICAgQmFzaWNCbG9j
ayogaXNOYU4gPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRp
b24gPSBtX2NvZGUuYWRkQmxvY2soKTsKIAotICAgIGF1dG8gYnJhbmNoT3AgPSBmbG9hdFR5cGUg
PT0gRjMyID8gQnJhbmNoRmxvYXQgOiBCcmFuY2hEb3VibGU7CisgICAgYXV0byBicmFuY2hPcCA9
IGZsb2F0VHlwZS5pc0YzMigpID8gQnJhbmNoRmxvYXQgOiBCcmFuY2hEb3VibGU7CiAgICAgYXBw
ZW5kKG1fY3VycmVudEJsb2NrLCBicmFuY2hPcCwgQXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVFcXVhbEFuZE9yZGVyZWQpLCBhcmcwLCBhcmcxKTsKICAgICBtX2N1cnJlbnRC
bG9jay0+c2V0U3VjY2Vzc29ycyhpc0VxdWFsLCBub3RFcXVhbCk7CiAKQEAgLTQzMTMsOCArNDMx
NSw4IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZEZsb2F0aW5nUG9pbnRNaW5Pck1heChUeXBl
IGZsb2F0VHlwZSwgTWluT3JNYXggbWluT3JNYXgsCiAgICAgYXBwZW5kKG5vdExlc3NUaGFuLCBi
cmFuY2hPcCwgQXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhh
bkFuZE9yZGVyZWQpLCBhcmcwLCBhcmcxKTsKICAgICBub3RMZXNzVGhhbi0+c2V0U3VjY2Vzc29y
cyhpc0dyZWF0ZXJUaGFuLCBpc05hTik7CiAKLSAgICBhdXRvIGFuZE9wID0gZmxvYXRUeXBlID09
IEYzMiA/IEFuZEZsb2F0IDogQW5kRG91YmxlOwotICAgIGF1dG8gb3JPcCA9IGZsb2F0VHlwZSA9
PSBGMzIgPyBPckZsb2F0IDogT3JEb3VibGU7CisgICAgYXV0byBhbmRPcCA9IGZsb2F0VHlwZS5p
c0YzMigpID8gQW5kRmxvYXQgOiBBbmREb3VibGU7CisgICAgYXV0byBvck9wID0gZmxvYXRUeXBl
LmlzRjMyKCkgPyBPckZsb2F0IDogT3JEb3VibGU7CiAgICAgYXBwZW5kKGlzRXF1YWwsIG1pbk9y
TWF4ID09IE1pbk9yTWF4OjpNYXggPyBhbmRPcCA6IG9yT3AsIGFyZzAsIGFyZzEsIHJlc3VsdCk7
CiAgICAgYXBwZW5kKGlzRXF1YWwsIEp1bXApOwogICAgIGlzRXF1YWwtPnNldFN1Y2Nlc3NvcnMo
Y29udGludWF0aW9uKTsKQEAgLTQzMjksNyArNDMzMSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZEZsb2F0aW5nUG9pbnRNaW5Pck1heChUeXBlIGZsb2F0VHlwZSwgTWluT3JNYXggbWluT3JN
YXgsCiAgICAgYXBwZW5kKGlzR3JlYXRlclRoYW4sIEp1bXApOwogICAgIGlzR3JlYXRlclRoYW4t
PnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9uKTsKIAotICAgIGF1dG8gYWRkT3AgPSBmbG9hdFR5
cGUgPT0gRjMyID8gQWRkRmxvYXQgOiBBZGREb3VibGU7CisgICAgYXV0byBhZGRPcCA9IGZsb2F0
VHlwZS5pc0YzMigpID8gQWRkRmxvYXQgOiBBZGREb3VibGU7CiAgICAgYXBwZW5kKGlzTmFOLCBh
ZGRPcCwgYXJnMCwgYXJnMSwgcmVzdWx0KTsKICAgICBhcHBlbmQoaXNOYU4sIEp1bXApOwogICAg
IGlzTmFOLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7CkBAIC00MzQxLDE3ICs0MzQzLDE3
IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZEZsb2F0aW5nUG9pbnRNaW5Pck1heChUeXBlIGZs
b2F0VHlwZSwgTWluT3JNYXggbWluT3JNYXgsCiAKIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJNYXg+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Np
b25UeXBlIGFyZzEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
LSAgICByZXR1cm4gYWRkRmxvYXRpbmdQb2ludE1pbk9yTWF4KEYzMiwgTWluT3JNYXg6Ok1heCwg
YXJnMCwgYXJnMSwgcmVzdWx0KTsKKyAgICByZXR1cm4gYWRkRmxvYXRpbmdQb2ludE1pbk9yTWF4
KFR5cGVzOjpGMzIsIE1pbk9yTWF4OjpNYXgsIGFyZzAsIGFyZzEsIHJlc3VsdCk7CiB9CiAKIHRl
bXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGNjRNdWw+KEV4cHJl
c3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFyZzEsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXR1cm4gYWRkRmxvYXRpbmdQb2ludEJpbk9w
KFR5cGU6OkY2NCwgTXVsRG91YmxlLCBhcmcwLCBhcmcxLCByZXN1bHQpOworICAgIHJldHVybiBh
ZGRGbG9hdGluZ1BvaW50QmluT3AoVHlwZXM6OkY2NCwgTXVsRG91YmxlLCBhcmcwLCBhcmcxLCBy
ZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlw
ZTo6RjMyRGl2PihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmV0dXJuIGFkZEZs
b2F0aW5nUG9pbnRCaW5PcChUeXBlOjpGMzIsIERpdkZsb2F0LCBhcmcwLCBhcmcxLCByZXN1bHQp
OworICAgIHJldHVybiBhZGRGbG9hdGluZ1BvaW50QmluT3AoVHlwZXM6OkYzMiwgRGl2RmxvYXQs
IGFyZzAsIGFyZzEsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkT3A8T3BUeXBlOjpJMzJDbHo+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKQEAgLTQ0NjAsNyArNDQ2Miw3IEBAIHRlbXBs
YXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRFcXo+KEV4cHJlc3Np
b25UeXBlIGFyZzAsIEV4cHJlCiAKIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRk
T3A8T3BUeXBlOjpGNjREaXY+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFy
ZzEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXR1
cm4gYWRkRmxvYXRpbmdQb2ludEJpbk9wKFR5cGU6OkY2NCwgRGl2RG91YmxlLCBhcmcwLCBhcmcx
LCByZXN1bHQpOworICAgIHJldHVybiBhZGRGbG9hdGluZ1BvaW50QmluT3AoVHlwZXM6OkY2NCwg
RGl2RG91YmxlLCBhcmcwLCBhcmcxLCByZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWly
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjMyQWRkPihFeHByZXNzaW9uVHlwZSBhcmcwLCBF
eHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CkBAIC00NTExLDcgKzQ1MTMsNyBAQCB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZE9wPE9wVHlwZTo6RjMyTmVnPihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZQogICAgIGlm
IChpc1ZhbGlkRm9ybShOZWdhdGVGbG9hdCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKICAgICAgICAg
YXBwZW5kKE5lZ2F0ZUZsb2F0LCBhcmcwLCByZXN1bHQpOwogICAgIGVsc2UgewotICAgICAgICBh
dXRvIGNvbnN0YW50ID0gYWRkQ29uc3RhbnQoVHlwZTo6STMyLCBiaXR3aXNlX2Nhc3Q8dWludDMy
X3Q+KHN0YXRpY19jYXN0PGZsb2F0PigtMC4wKSkpOworICAgICAgICBhdXRvIGNvbnN0YW50ID0g
YWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2Fz
dDxmbG9hdD4oLTAuMCkpKTsKICAgICAgICAgYXV0byB0ZW1wID0gZzMyKCk7CiAgICAgICAgIGFw
cGVuZChNb3ZlRmxvYXRUbzMyLCBhcmcwLCB0ZW1wKTsKICAgICAgICAgYXBwZW5kKFhvcjMyLCBj
b25zdGFudCwgdGVtcCk7CkBAIC00NTM2LDcgKzQ1MzgsNyBAQCB0ZW1wbGF0ZTw+IGF1dG8gQWly
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyTHRVPihFeHByZXNzaW9uVHlwZSBhcmcwLCBF
eHByZQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0
Um90cj4oRXhwcmVzc2lvblR5cGUgYXJnMCwgRXhwcmVzc2lvblR5cGUgYXJnMSwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJldHVybiBhZGRTaGlmdChU
eXBlOjpJNjQsIFJvdGF0ZVJpZ2h0NjQsIGFyZzAsIGFyZzEsIHJlc3VsdCk7CisgICAgcmV0dXJu
IGFkZFNoaWZ0KFR5cGVzOjpJNjQsIFJvdGF0ZVJpZ2h0NjQsIGFyZzAsIGFyZzEsIHJlc3VsdCk7
CiB9CiAKIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGNjRB
YnM+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKQEAgLTQ1OTUsOSArNDU5Nyw5IEBAIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRSb3RsPihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByCiAg
ICAgICAgIGF1dG8gbmV3U2hpZnQgPSBnNjQoKTsKICAgICAgICAgYXBwZW5kKE1vdmUsIGFyZzEs
IG5ld1NoaWZ0KTsKICAgICAgICAgYXBwZW5kKE5lZzY0LCBuZXdTaGlmdCk7Ci0gICAgICAgIHJl
dHVybiBhZGRTaGlmdChUeXBlOjpJNjQsIFJvdGF0ZVJpZ2h0NjQsIGFyZzAsIG5ld1NoaWZ0LCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYWRkU2hpZnQoVHlwZXM6Okk2NCwgUm90YXRlUmlnaHQ2
NCwgYXJnMCwgbmV3U2hpZnQsIHJlc3VsdCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBh
ZGRTaGlmdChUeXBlOjpJNjQsIFJvdGF0ZUxlZnQ2NCwgYXJnMCwgYXJnMSwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFkZFNoaWZ0KFR5cGVzOjpJNjQsIFJvdGF0ZUxlZnQ2NCwgYXJnMCwgYXJn
MSwgcmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxP
cFR5cGU6OkYzMkx0PihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CkBAIC00NjM3LDcgKzQ2Mzks
NyBAQCB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjMyR2U+
KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlcwogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5l
cmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyU2hyVT4oRXhwcmVzc2lvblR5cGUgYXJnMCwgRXhwcmVz
c2lvblR5cGUgYXJnMSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAog
ewotICAgIHJldHVybiBhZGRTaGlmdChUeXBlOjpJMzIsIFVyc2hpZnQzMiwgYXJnMCwgYXJnMSwg
cmVzdWx0KTsKKyAgICByZXR1cm4gYWRkU2hpZnQoVHlwZXM6OkkzMiwgVXJzaGlmdDMyLCBhcmcw
LCBhcmcxLCByZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZE9wPE9wVHlwZTo6RjMyQ29udmVydFVJMzI+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKQEAgLTQ2NTEsNyArNDY1Myw3IEBAIHRl
bXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJDb252ZXJ0VUkz
Mj4oRXhwcmVzc2lvblR5cGUgYXJnCiAKIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkT3A8T3BUeXBlOjpJMzJTaHJTPihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlw
ZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAg
cmV0dXJuIGFkZFNoaWZ0KFR5cGU6OkkzMiwgUnNoaWZ0MzIsIGFyZzAsIGFyZzEsIHJlc3VsdCk7
CisgICAgcmV0dXJuIGFkZFNoaWZ0KFR5cGVzOjpJMzIsIFJzaGlmdDMyLCBhcmcwLCBhcmcxLCBy
ZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlw
ZTo6STMyR2VVPihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CkBAIC00Njc3LDcgKzQ2NzksNyBA
QCB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyR2VTPihF
eHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZE9wPE9wVHlwZTo6STMyU2hsPihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9u
VHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0g
ICAgcmV0dXJuIGFkZFNoaWZ0KFR5cGU6OkkzMiwgTHNoaWZ0MzIsIGFyZzAsIGFyZzEsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIGFkZFNoaWZ0KFR5cGVzOjpJMzIsIExzaGlmdDMyLCBhcmcwLCBhcmcx
LCByZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9w
VHlwZTo6RjY0Rmxvb3I+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKQEAgLTQ3MDEsNyArNDcwMyw3IEBAIHRlbXBsYXRlPD4gYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJBYnM+KEV4cHJlc3Npb25UeXBlIGFy
ZzAsIEV4cHJlCiAKIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBl
OjpGNjRNaW4+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFyZzEsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXR1cm4gYWRkRmxv
YXRpbmdQb2ludE1pbk9yTWF4KEY2NCwgTWluT3JNYXg6Ok1pbiwgYXJnMCwgYXJnMSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gYWRkRmxvYXRpbmdQb2ludE1pbk9yTWF4KFR5cGVzOjpGNjQsIE1pbk9y
TWF4OjpNaW4sIGFyZzAsIGFyZzEsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPD4gYXV0byBBaXJJ
UkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJNdWw+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4
cHJlc3Npb25UeXBlIGFyZzEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1
bHQKQEAgLTQ3MzIsNyArNDczNCw3IEBAIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkT3A8T3BUeXBlOjpJMzJBZGQ+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlCiAKIHRlbXBs
YXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGNjRTdWI+KEV4cHJlc3Np
b25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFyZzEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXR1cm4gYWRkRmxvYXRpbmdQb2ludEJpbk9wKFR5
cGU6OkY2NCwgU3ViRG91YmxlLCBhcmcwLCBhcmcxLCByZXN1bHQpOworICAgIHJldHVybiBhZGRG
bG9hdGluZ1BvaW50QmluT3AoVHlwZXM6OkY2NCwgU3ViRG91YmxlLCBhcmcwLCBhcmcxLCByZXN1
bHQpOwogfQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6
STMyT3I+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFyZzEsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKQEAgLTQ4ODQsMTIgKzQ4ODYsMTIgQEAg
dGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFJlaW50ZXJw
cmV0RjY0PihFeHByZXNzaW9uVHlwZQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZE9wPE9wVHlwZTo6STY0U2hyUz4oRXhwcmVzc2lvblR5cGUgYXJnMCwgRXhwcmVzc2lvblR5
cGUgYXJnMSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAg
IHJldHVybiBhZGRTaGlmdChUeXBlOjpJNjQsIFJzaGlmdDY0LCBhcmcwLCBhcmcxLCByZXN1bHQp
OworICAgIHJldHVybiBhZGRTaGlmdChUeXBlczo6STY0LCBSc2hpZnQ2NCwgYXJnMCwgYXJnMSwg
cmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5
cGU6Okk2NFNoclU+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFyZzEsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXR1cm4gYWRk
U2hpZnQoVHlwZTo6STY0LCBVcnNoaWZ0NjQsIGFyZzAsIGFyZzEsIHJlc3VsdCk7CisgICAgcmV0
dXJuIGFkZFNoaWZ0KFR5cGVzOjpJNjQsIFVyc2hpZnQ2NCwgYXJnMCwgYXJnMSwgcmVzdWx0KTsK
IH0KIAogdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkY2NFNx
cnQ+KEV4cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKQEAgLTQ5MDEsNyArNDkwMyw3IEBAIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkT3A8T3BUeXBlOjpGNjRTcXJ0PihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByCiAK
IHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRTaGw+KEV4
cHJlc3Npb25UeXBlIGFyZzAsIEV4cHJlc3Npb25UeXBlIGFyZzEsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXR1cm4gYWRkU2hpZnQoVHlwZTo6STY0
LCBMc2hpZnQ2NCwgYXJnMCwgYXJnMSwgcmVzdWx0KTsKKyAgICByZXR1cm4gYWRkU2hpZnQoVHlw
ZXM6Okk2NCwgTHNoaWZ0NjQsIGFyZzAsIGFyZzEsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPD4g
YXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJHdD4oRXhwcmVzc2lvblR5cGUg
YXJnMCwgRXhwcmVzc2lvblR5cGUgYXJnMSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFy
dGlhbFJlc3VsdApAQCAtNDkyNSwxNCArNDkyNywxNCBAQCB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJH
ZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyUm90bD4oRXhwcmVzc2lvblR5cGUgYXJnMCwgRXhw
cgogICAgICAgICBhdXRvIG5ld1NoaWZ0ID0gZzY0KCk7CiAgICAgICAgIGFwcGVuZChNb3ZlLCBh
cmcxLCBuZXdTaGlmdCk7CiAgICAgICAgIGFwcGVuZChOZWc2NCwgbmV3U2hpZnQpOwotICAgICAg
ICByZXR1cm4gYWRkU2hpZnQoVHlwZTo6STMyLCBSb3RhdGVSaWdodDMyLCBhcmcwLCBuZXdTaGlm
dCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFkZFNoaWZ0KFR5cGVzOjpJMzIsIFJvdGF0ZVJp
Z2h0MzIsIGFyZzAsIG5ld1NoaWZ0LCByZXN1bHQpOwogICAgIH0gZWxzZQotICAgICAgICByZXR1
cm4gYWRkU2hpZnQoVHlwZTo6STMyLCBSb3RhdGVMZWZ0MzIsIGFyZzAsIGFyZzEsIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhZGRTaGlmdChUeXBlczo6STMyLCBSb3RhdGVMZWZ0MzIsIGFyZzAs
IGFyZzEsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPD4gYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRk
T3A8T3BUeXBlOjpJMzJSb3RyPihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBh
cmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmV0
dXJuIGFkZFNoaWZ0KFR5cGU6OkkzMiwgUm90YXRlUmlnaHQzMiwgYXJnMCwgYXJnMSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gYWRkU2hpZnQoVHlwZXM6OkkzMiwgUm90YXRlUmlnaHQzMiwgYXJnMCwg
YXJnMSwgcmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRP
cDxPcFR5cGU6OkkzMkd0VT4oRXhwcmVzc2lvblR5cGUgYXJnMCwgRXhwcmVzc2lvblR5cGUgYXJn
MSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdApAQCAtNTAwNSw3ICs1
MDA3LDcgQEAgdGVtcGxhdGU8PiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkY2
NE5lZz4oRXhwcmVzc2lvblR5cGUgYXJnMCwgRXhwcmUKICAgICBpZiAoaXNWYWxpZEZvcm0oTmVn
YXRlRG91YmxlLCBBcmc6OlRtcCwgQXJnOjpUbXApKQogICAgICAgICBhcHBlbmQoTmVnYXRlRG91
YmxlLCBhcmcwLCByZXN1bHQpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvIGNvbnN0YW50ID0g
YWRkQ29uc3RhbnQoVHlwZTo6STY0LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0
PGRvdWJsZT4oLTAuMCkpKTsKKyAgICAgICAgYXV0byBjb25zdGFudCA9IGFkZENvbnN0YW50KFR5
cGVzOjpJNjQsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPigtMC4w
KSkpOwogICAgICAgICBhdXRvIHRlbXAgPSBnNjQoKTsKICAgICAgICAgYXBwZW5kKE1vdmVEb3Vi
bGVUbzY0LCBhcmcwLCB0ZW1wKTsKICAgICAgICAgYXBwZW5kKFhvcjY0LCBjb25zdGFudCwgdGVt
cCk7CkBAIC01MDE2LDcgKzUwMTgsNyBAQCB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZE9wPE9wVHlwZTo6RjY0TmVnPihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZQogCiB0ZW1w
bGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjY0TWF4PihFeHByZXNz
aW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcxLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmV0dXJuIGFkZEZsb2F0aW5nUG9pbnRNaW5Pck1h
eChGNjQsIE1pbk9yTWF4OjpNYXgsIGFyZzAsIGFyZzEsIHJlc3VsdCk7CisgICAgcmV0dXJuIGFk
ZEZsb2F0aW5nUG9pbnRNaW5Pck1heChUeXBlczo6RjY0LCBNaW5Pck1heDo6TWF4LCBhcmcwLCBh
cmcxLCByZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTw+IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9w
PE9wVHlwZTo6STY0TGVVPihFeHByZXNzaW9uVHlwZSBhcmcwLCBFeHByZXNzaW9uVHlwZSBhcmcx
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2FjNGY0Njhk
MzIxMDI2ODBmZDZlYzU5ODc5MDJmYjFhMTUzYjk1OS4uODAwOTJkOWM3MTM5M2Q0MmUzNmQ2M2Q2
NzkwZDdiYWY0YWM1NWFkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcApAQCAtNzEyLDcgKzcxMiw3IEBAIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KSAtCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5k
ZXgsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0
aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgotICAgIHJlc3VsdCA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShFeHRlcm5y
ZWYpLCBvcmlnaW4oKSwKKyAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEND
YWxsVmFsdWU+KG1fcHJvYywgdG9CM1R5cGUoVHlwZXM6OkV4dGVybnJlZiksIG9yaWdpbigpLAog
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkdldFdhc21U
YWJsZUVsZW1lbnQpKSwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJbmRleCksIGlu
ZGV4KTsKIApAQCAtNzUzLDcgKzc1Myw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmRnVu
Yyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhCiAKICAg
ICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywg
QjM6OkludDY0LCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25XYXNtUmVmRnVuYykpLAotICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGFk
ZENvbnN0YW50KFR5cGU6OkkzMiwgaW5kZXgpKTsKKyAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBh
ZGRDb25zdGFudChUeXBlczo6STMyLCBpbmRleCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAg
LTc2MSw3ICs3NjEsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmModWludDMyX3Qg
aW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYQogYXV0byBCM0lSR2VuZXJh
dG9yOjphZGRUYWJsZUluaXQodW5zaWduZWQgZWxlbWVudEluZGV4LCB1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBFeHByZXNzaW9uVHlwZSBkc3RPZmZzZXQsIEV4cHJlc3Npb25UeXBlIHNyY09mZnNldCwg
RXhwcmVzc2lvblR5cGUgbGVuZ3RoKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgYXV0byByZXN1
bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICBtX3By
b2MsIHRvQjNUeXBlKEkzMiksIG9yaWdpbigpLAorICAgICAgICBtX3Byb2MsIHRvQjNUeXBlKFR5
cGVzOjpJMzIpLCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25XYXNtVGFibGVJbml0KSksCiAgICAgICAgIGluc3RhbmNlVmFsdWUoKSwK
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIGVsZW1lbnRJbmRleCksCkBAIC03OTQsNyArNzk0LDcgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRFbGVtRHJvcCh1bnNpZ25lZCBlbGVtZW50SW5kZXgpIC0+IFBhcnRpYWxSZXN1
bHQKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTaXplKHVuc2lnbmVkIHRhYmxlSW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhN
RTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODUwNj4uCi0gICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2Fs
bFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKEkzMiksIG9yaWdpbigpLAorICAgIHJlc3VsdCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShUeXBl
czo6STMyKSwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uR2V0V2FzbVRhYmxlU2l6ZSkpLAogICAgICAgICBpbnN0YW5jZVZhbHVlKCks
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigp
LCB0YWJsZUluZGV4KSk7CiAKQEAgLTgwMyw3ICs4MDMsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZFRhYmxlU2l6ZSh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPgogCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR3Jvdyh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBFeHByZXNzaW9uVHlwZSBmaWxsLCBFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShJMzIpLCBvcmln
aW4oKSwKKyAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KG1fcHJvYywgdG9CM1R5cGUoVHlwZXM6OkkzMiksIG9yaWdpbigpLAogICAgICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NG
dW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbldhc21UYWJsZUdyb3cpKSwKICAgICAg
ICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJbmRleCksIGZpbGwsIGRlbHRhKTsKIApAQCAtODEy
LDcgKzgxMiw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHcm93KHVuc2lnbmVkIHRh
YmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGZpbGwsIEV4cHJlCiAKIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkVGFibGVGaWxsKHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIG9mZnNl
dCwgRXhwcmVzc2lvblR5cGUgZmlsbCwgRXhwcmVzc2lvblR5cGUgY291bnQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0Nh
bGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShJMzIpLCBvcmlnaW4oKSwKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlw
ZShUeXBlczo6STMyKSwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uV2FzbVRhYmxlRmlsbCkpLAogICAgICAgICBpbnN0YW5jZVZhbHVl
KCksIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCB0YWJsZUluZGV4KSwgb2Zmc2V0LCBmaWxsLCBjb3VudCk7CiAKQEAgLTgzMSw3ICs4MzEs
NyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlRmlsbCh1bnNpZ25lZCB0YWJsZUluZGV4
LCBFeHByZXNzaW9uVHlwZSBvZmZzZXQsIEV4cAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJs
ZUNvcHkodW5zaWduZWQgZHN0VGFibGVJbmRleCwgdW5zaWduZWQgc3JjVGFibGVJbmRleCwgRXhw
cmVzc2lvblR5cGUgZHN0T2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBzcmNPZmZzZXQsIEV4cHJlc3Np
b25UeXBlIGxlbmd0aCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgbV9wcm9jLCB0b0Iz
VHlwZShJMzIpLCBvcmlnaW4oKSwKKyAgICAgICAgbV9wcm9jLCB0b0IzVHlwZShUeXBlczo6STMy
KSwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uV2FzbVRhYmxlQ29weSkpLAogICAgICAgICBpbnN0YW5jZVZhbHVlKCksCiAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigp
LCBkc3RUYWJsZUluZGV4KSwKQEAgLTg5OCw3ICs4OTgsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3Vs
dAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRNZW1vcnlGaWxsKEV4cHJlc3Npb25UeXBlIGRzdEFk
ZHJlc3MsIEV4cHJlc3Npb25UeXBlIHRhcmdldFZhbHVlLCBFeHByZXNzaW9uVHlwZSBjb3VudCkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgbV9wcm9jLCB0b0IzVHlwZShJMzIpLCBvcmln
aW4oKSwKKyAgICAgICAgbV9wcm9jLCB0b0IzVHlwZShUeXBlczo6STMyKSwgb3JpZ2luKCksCiAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBv
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV2FzbU1lbW9y
eUZpbGwpKSwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLAogICAgICAgICBkc3RBZGRyZXNzLCB0
YXJnZXRWYWx1ZSwgY291bnQpOwpAQCAtOTE4LDcgKzkxOCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkTWVtb3J5RmlsbChFeHByZXNzaW9uVHlwZSBkc3RBZGRyZXNzLCBFeHByZXNzaW9uVHlw
ZSB0YXJnCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE1lbW9yeUluaXQodW5zaWduZWQgZGF0YVNl
Z21lbnRJbmRleCwgRXhwcmVzc2lvblR5cGUgZHN0QWRkcmVzcywgRXhwcmVzc2lvblR5cGUgc3Jj
QWRkcmVzcywgRXhwcmVzc2lvblR5cGUgbGVuZ3RoKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAg
YXV0byByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAg
ICAgICBtX3Byb2MsIHRvQjNUeXBlKEkzMiksIG9yaWdpbigpLAorICAgICAgICBtX3Byb2MsIHRv
QjNUeXBlKFR5cGVzOjpJMzIpLCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtTWVtb3J5SW5pdCkpLAogICAgICAgICBpbnN0YW5j
ZVZhbHVlKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
PihtX3Byb2MsIG9yaWdpbigpLCBkYXRhU2VnbWVudEluZGV4KSwKQEAgLTkzOSw3ICs5MzksNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE1lbW9yeUluaXQodW5zaWduZWQgZGF0YVNlZ21lbnRJ
bmRleCwgRXhwcmVzc2lvblR5cGUgZHN0QQogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRNZW1vcnlD
b3B5KEV4cHJlc3Npb25UeXBlIGRzdEFkZHJlc3MsIEV4cHJlc3Npb25UeXBlIHNyY0FkZHJlc3Ms
IEV4cHJlc3Npb25UeXBlIGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgYXV0byByZXN1
bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICBtX3By
b2MsIHRvQjNUeXBlKEkzMiksIG9yaWdpbigpLAorICAgICAgICBtX3Byb2MsIHRvQjNUeXBlKFR5
cGVzOjpJMzIpLCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25XYXNtTWVtb3J5Q29weSkpLAogICAgICAgICBpbnN0YW5jZVZhbHVlKCks
CiAgICAgICAgIGRzdEFkZHJlc3MsIHNyY0FkZHJlc3MsIGNvdW50KTsKQEAgLTEzODcsMTMgKzEz
ODcsMTMgQEAgaW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjpzYW5pdGl6ZUF0b21pY1Jlc3Vs
dChFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUgdmFsdWUKICAgICAgICAgfQogICAgIH07CiAKLSAg
ICBzd2l0Y2ggKHZhbHVlVHlwZSkgewotICAgIGNhc2UgVHlwZTo6STY0OiB7CisgICAgc3dpdGNo
ICh2YWx1ZVR5cGUua2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDogewogICAgICAgICBp
ZiAoYWNjZXNzV2lkdGgob3ApID09IEIzOjpXaWR0aDY0KQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1f
cHJvYywgWkV4dDMyLCBvcmlnaW4oKSwgc2FuaXRpemUzMihyZXN1bHQpKTsKICAgICB9Ci0gICAg
Y2FzZSBUeXBlOjpJMzI6CisgICAgY2FzZSBUeXBlS2luZDo6STMyOgogICAgICAgICByZXR1cm4g
c2FuaXRpemUzMihyZXN1bHQpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0xNDQ1LDExICsxNDQ1LDExIEBAIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YXRvbWljTG9hZChFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUgdmFsdWVUeXBlLCBFeHByZXNz
aW9uVHlwCiAgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRp
b25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwogCi0gICAgICAg
IHN3aXRjaCAodmFsdWVUeXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6STMyOgorICAgICAgICBz
d2l0Y2ggKHZhbHVlVHlwZS5raW5kKSB7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKICAg
ICAgICAgICAgIHJlc3VsdCA9IGNvbnN0YW50KEludDMyLCAwKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFR5cGU6Okk2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0Ogog
ICAgICAgICAgICAgcmVzdWx0ID0gY29uc3RhbnQoSW50NjQsIDApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNDY2LDcgKzE0NjYsNyBAQCBpbmxpbmUgdm9pZCBC
M0lSR2VuZXJhdG9yOjplbWl0QXRvbWljU3RvcmVPcChFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUg
dmFsdWVUeXBlLAogewogICAgIHBvaW50ZXIgPSBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0Rm9yQXRv
bWljT3BzKG9wLCBwb2ludGVyLCB1b2Zmc2V0KTsKIAotICAgIGlmICh2YWx1ZVR5cGUgPT0gVHlw
ZTo6STY0ICYmIGFjY2Vzc1dpZHRoKG9wKSAhPSBCMzo6V2lkdGg2NCkKKyAgICBpZiAodmFsdWVU
eXBlLmlzSTY0KCkgJiYgYWNjZXNzV2lkdGgob3ApICE9IEIzOjpXaWR0aDY0KQogICAgICAgICB2
YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpU
cnVuYywgT3JpZ2luKCksIHZhbHVlKTsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPihtX3Byb2MsIG1lbW9yeUtpbmQoQXRvbWljWGNoZyksIG9yaWdpbigpLCBhY2Nl
c3NXaWR0aChvcCksIHZhbHVlLCBwb2ludGVyKTsKIH0KQEAgLTE1NTMsNyArMTU1Myw3IEBAIGlu
bGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0JpbmFyeVJNV09wKEV4dEF0b21p
Y09wVHlwZSBvcCwgVHlwZSB2YWx1CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICh2
YWx1ZVR5cGUgPT0gVHlwZTo6STY0ICYmIGFjY2Vzc1dpZHRoKG9wKSAhPSBCMzo6V2lkdGg2NCkK
KyAgICBpZiAodmFsdWVUeXBlLmlzSTY0KCkgJiYgYWNjZXNzV2lkdGgob3ApICE9IEIzOjpXaWR0
aDY0KQogICAgICAgICB2YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVl
PihtX3Byb2MsIEIzOjpUcnVuYywgT3JpZ2luKCksIHZhbHVlKTsKIAogICAgIHJldHVybiBzYW5p
dGl6ZUF0b21pY1Jlc3VsdChvcCwgdmFsdWVUeXBlLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PEF0b21pY1ZhbHVlPihtX3Byb2MsIG1lbW9yeUtpbmQob3Bjb2RlKSwgb3JpZ2luKCksIGFjY2Vz
c1dpZHRoKG9wKSwgdmFsdWUsIHBvaW50ZXIpKTsKQEAgLTE1NzEsMTEgKzE1NzEsMTEgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphdG9taWNCaW5hcnlSTVcoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBl
IHZhbHVlVHlwZSwgRXhwcmVzc2kKICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVj
ayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAg
fSk7CiAKLSAgICAgICAgc3dpdGNoICh2YWx1ZVR5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlOjpJ
MzI6CisgICAgICAgIHN3aXRjaCAodmFsdWVUeXBlLmtpbmQpIHsKKyAgICAgICAgY2FzZSBUeXBl
S2luZDo6STMyOgogICAgICAgICAgICAgcmVzdWx0ID0gY29uc3RhbnQoSW50MzIsIDApOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6STY0OgorICAgICAgICBjYXNlIFR5
cGVLaW5kOjpJNjQ6CiAgICAgICAgICAgICByZXN1bHQgPSBjb25zdGFudChJbnQ2NCwgMCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTE1OTgsOCArMTU5OCw4IEBA
IFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21p
Y09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5CiAgICAgICAgIHJldHVybiBzYW5pdGl6ZUF0b21pY1Jl
c3VsdChvcCwgdmFsdWVUeXBlLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PihtX3Byb2MsIG1lbW9yeUtpbmQoQXRvbWljU3Ryb25nQ0FTKSwgb3JpZ2luKCksIGFjY2Vzc1dp
ZHRoLCBleHBlY3RlZCwgdmFsdWUsIHBvaW50ZXIpKTsKIAogICAgIFZhbHVlKiBtYXhpbXVtID0g
bnVsbHB0cjsKLSAgICBzd2l0Y2ggKHZhbHVlVHlwZSkgewotICAgIGNhc2UgVHlwZTo6STY0OiB7
CisgICAgc3dpdGNoICh2YWx1ZVR5cGUua2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDog
ewogICAgICAgICBzd2l0Y2ggKGFjY2Vzc1dpZHRoKSB7CiAgICAgICAgIGNhc2UgQjM6OldpZHRo
ODoKICAgICAgICAgICAgIG1heGltdW0gPSBjb25zdGFudChJbnQ2NCwgVUlOVDhfTUFYKTsKQEAg
LTE2MTUsNyArMTYxNSw3IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFy
ZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgVHlwZTo6STMyOgorICAgIGNhc2UgVHlwZUtp
bmQ6OkkzMjoKICAgICAgICAgc3dpdGNoIChhY2Nlc3NXaWR0aCkgewogICAgICAgICBjYXNlIEIz
OjpXaWR0aDg6CiAgICAgICAgICAgICBtYXhpbXVtID0gY29uc3RhbnQoSW50MzIsIFVJTlQ4X01B
WCk7CkBAIC0xNjQ2LDcgKzE2NDYsNyBAQCBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdEF0b21p
Y0NvbXBhcmVFeGNoYW5nZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUgdmFsdWVUeQogICAgIHsK
ICAgICAgICAgYXV0byB0cnVuY2F0ZWRFeHBlY3RlZCA9IGV4cGVjdGVkOwogICAgICAgICBhdXRv
IHRydW5jYXRlZFZhbHVlID0gdmFsdWU7Ci0gICAgICAgIGlmICh2YWx1ZVR5cGUgPT0gVHlwZTo6
STY0KSB7CisgICAgICAgIGlmICh2YWx1ZVR5cGUuaXNJNjQoKSkgewogICAgICAgICAgICAgdHJ1
bmNhdGVkRXhwZWN0ZWQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6VHJ1bmMsIE9yaWdpbigpLCBleHBlY3RlZCk7CiAgICAgICAgICAgICB0cnVuY2F0
ZWRWYWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpUcnVuYywgT3JpZ2luKCksIHZhbHVlKTsKICAgICAgICAgfQpAQCAtMTY5NiwxMSArMTY5Niwx
MSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmF0b21pY0NvbXBhcmVFeGNoYW5nZShFeHRBdG9taWNP
cFR5cGUgb3AsIFR5cGUgdmFsdWVUeXBlLCBFeAogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2Vw
dGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBzd2l0Y2ggKHZhbHVlVHlwZSkgewotICAgICAgICBjYXNl
IFR5cGU6OkkzMjoKKyAgICAgICAgc3dpdGNoICh2YWx1ZVR5cGUua2luZCkgeworICAgICAgICBj
YXNlIFR5cGVLaW5kOjpJMzI6CiAgICAgICAgICAgICByZXN1bHQgPSBjb25zdGFudChJbnQzMiwg
MCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpJNjQ6CisgICAgICAg
IGNhc2UgVHlwZUtpbmQ6Okk2NDoKICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0YW50KEludDY0
LCAwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA4OGNh
MmY3MDMyOTViYjIwNzE5OTJiNGEwZGNmODI0N2UzZjNjMWJjLi44ODBlNDQ2YmRjOGJkMGU4ZTlh
ZWU5ZjkwMzYwMzk1MzQ0OGE1ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtMTAyLDE0ICsxMDIsMTQgQEAgcHJpdmF0
ZToKICAgICBBcmd1bWVudExvY2F0aW9uIG1hcnNoYWxsTG9jYXRpb24oQ2FsbFJvbGUgcm9sZSwg
VHlwZSB2YWx1ZVR5cGUsIHNpemVfdCYgZ3BBcmd1bWVudENvdW50LCBzaXplX3QmIGZwQXJndW1l
bnRDb3VudCwgc2l6ZV90JiBzdGFja09mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc1ZhbHVlVHlwZSh2YWx1ZVR5cGUpKTsKLSAgICAgICAgc3dpdGNoICh2YWx1ZVR5cGUpIHsK
LSAgICAgICAgY2FzZSBJMzI6Ci0gICAgICAgIGNhc2UgSTY0OgotICAgICAgICBjYXNlIEZ1bmNy
ZWY6Ci0gICAgICAgIGNhc2UgRXh0ZXJucmVmOgorICAgICAgICBzd2l0Y2ggKHZhbHVlVHlwZS5r
aW5kKSB7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6STY0OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICBjYXNlIFR5
cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAgICAgICAgICByZXR1cm4gbWFyc2hhbGxMb2NhdGlvbklt
cGwocm9sZSwgZ3ByQXJncywgZ3BBcmd1bWVudENvdW50LCBzdGFja09mZnNldCk7Ci0gICAgICAg
IGNhc2UgRjMyOgotICAgICAgICBjYXNlIEY2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMy
OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CiAgICAgICAgICAgICByZXR1cm4gbWFyc2hh
bGxMb2NhdGlvbkltcGwocm9sZSwgZnByQXJncywgZnBBcmd1bWVudENvdW50LCBzdGFja09mZnNl
dCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgVmVjdG9yPEFyZ3VtZW50TG9jYXRpb24+IHBhcmFtcyhz
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgIGFyZ3VtZW50
c0luY2x1ZGVJNjQgfD0gc2lnbmF0dXJlLmFyZ3VtZW50KGkpID09IEk2NDsKKyAgICAgICAgICAg
IGFyZ3VtZW50c0luY2x1ZGVJNjQgfD0gc2lnbmF0dXJlLmFyZ3VtZW50KGkpLmlzSTY0KCk7CiAg
ICAgICAgICAgICBwYXJhbXNbaV0gPSBtYXJzaGFsbExvY2F0aW9uKHJvbGUsIHNpZ25hdHVyZS5h
cmd1bWVudChpKSwgZ3BBcmd1bWVudENvdW50LCBmcEFyZ3VtZW50Q291bnQsIGFyZ1N0YWNrT2Zm
c2V0KTsKICAgICAgICAgfQogICAgICAgICBncEFyZ3VtZW50Q291bnQgPSAwOwpAQCAtMTQxLDcg
KzE0MSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBWZWN0b3I8QXJndW1lbnRMb2NhdGlvbiwgMT4g
cmVzdWx0cyhzaWduYXR1cmUucmV0dXJuQ291bnQoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgewotICAgICAgICAgICAgcmVz
dWx0c0luY2x1ZGVJNjQgfD0gc2lnbmF0dXJlLnJldHVyblR5cGUoaSkgPT0gSTY0OworICAgICAg
ICAgICAgcmVzdWx0c0luY2x1ZGVJNjQgfD0gc2lnbmF0dXJlLnJldHVyblR5cGUoaSkuaXNJNjQo
KTsKICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSBtYXJzaGFsbExvY2F0aW9uKHJvbGUsIHNpZ25h
dHVyZS5yZXR1cm5UeXBlKGkpLCBncEFyZ3VtZW50Q291bnQsIGZwQXJndW1lbnRDb3VudCwgcmVz
dWx0U3RhY2tPZmZzZXQpOwogICAgICAgICB9CiAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIHByaXZh
dGU6CiAgICAgQXJndW1lbnRMb2NhdGlvbiBtYXJzaGFsbExvY2F0aW9uKENhbGxSb2xlIHJvbGUs
IFR5cGUgdmFsdWVUeXBlLCBzaXplX3QmIGdwQXJndW1lbnRDb3VudCwgc2l6ZV90JiBmcEFyZ3Vt
ZW50Q291bnQsIHNpemVfdCYgc3RhY2tPZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoaXNWYWx1ZVR5cGUodmFsdWVUeXBlKSk7Ci0gICAgICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7
Ci0gICAgICAgIGNhc2UgSTMyOgotICAgICAgICBjYXNlIEk2NDoKLSAgICAgICAgY2FzZSBGdW5j
cmVmOgotICAgICAgICBjYXNlIEV4dGVybnJlZjoKKyAgICAgICAgc3dpdGNoICh2YWx1ZVR5cGUu
a2luZCkgeworICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgICAgIGNhc2UgVHlwZUtp
bmQ6Okk2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICAgICAgY2FzZSBU
eXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAgICAgICAgcmV0dXJuIG1hcnNoYWxsTG9jYXRpb25J
bXBsKHJvbGUsIGdwckFyZ3MsIGdwQXJndW1lbnRDb3VudCwgc3RhY2tPZmZzZXQpOwotICAgICAg
ICBjYXNlIEYzMjoKLSAgICAgICAgY2FzZSBGNjQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYz
MjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgogICAgICAgICAgICAgcmV0dXJuIG1hcnNo
YWxsTG9jYXRpb25JbXBsKHJvbGUsIGZwckFyZ3MsIGZwQXJndW1lbnRDb3VudCwgc3RhY2tPZmZz
ZXQpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggNTYzZTMyNjc1MWMyNGVkODk1Njc5MDgyMWM5
MzNhNTJlYWE5YjRkOS4uMzk4ZTk0MGJkMjM2MzRkOWNhNjkwYWUyZDRlNGQ4ODM2OTYxMjdjNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtNjEsMTQgKzYxLDE0
IEBAIGVudW0gY2xhc3MgVGFibGVFbGVtZW50VHlwZSA6IHVpbnQ4X3QgewogCiBpbmxpbmUgYm9v
bCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiB7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBJMzI6Ci0gICAgY2FzZSBJNjQ6Ci0gICAgY2FzZSBGMzI6Ci0gICAgY2FzZSBGNjQ6CisgICAg
c3dpdGNoICh0eXBlLmtpbmQpIHsKKyAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgY2FzZSBU
eXBlS2luZDo6STY0OgorICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKKyAgICBjYXNlIFR5cGVLaW5k
OjpGNjQ6CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRXh0ZXJucmVmOgotICAgIGNh
c2UgRnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgY2FzZSBUeXBl
S2luZDo6RnVuY3JlZjoKICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVm
ZXJlbmNlcygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNzgsNyArNzgsNyBA
QCBpbmxpbmUgYm9vbCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAKIGlubGluZSBib29sIGlzUmVm
VHlwZShUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHR5cGUgPT0gRXh0ZXJucmVmIHx8IHR5cGUg
PT0gRnVuY3JlZjsKKyAgICByZXR1cm4gdHlwZS5pc0Z1bmNyZWYoKSB8fCB0eXBlLmlzRXh0ZXJu
cmVmKCk7CiB9CiAgICAgCiBlbnVtIGNsYXNzIEV4dGVybmFsS2luZCA6IHVpbnQ4X3QgewpAQCAt
Mjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBpbml0aWFsKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbml0aWFsOyB9CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0oKSBjb25z
dCB7IHJldHVybiBtX21heGltdW07IH0KICAgICBUYWJsZUVsZW1lbnRUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBXYXNtOjpUeXBlIHdhc21UeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYgPyBUeXBlOjpGdW5jcmVm
IDogVHlwZTo6RXh0ZXJucmVmOyB9CisgICAgVHlwZSB3YXNtVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmID8gVHlwZXM6OkZ1bmNyZWYgOiBU
eXBlczo6RXh0ZXJucmVmOyB9CiAKIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9pbml0aWFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2su
aAppbmRleCA3ZjE1ZTYxNzRkMGQwZGRhNWQ2MjkzOGEwZjhkN2VhOWYzZDM4M2IxLi43ZDY3Y2Ux
OWMzNTdjNmIzOWQzOWQxNjRjMDUwMDEwZGFiMzM1MjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2suaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiV2FzbUxMSW50VGllclVwQ291bnRlci5oIgorI2luY2x1
ZGUgIldhc21PcHMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNDYsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIFNp
Z25hdHVyZTsKIHN0cnVjdCBHZW5lcmF0b3JUcmFpdHM7Ci1lbnVtIFR5cGUgOiBpbnQ4X3Q7CiAK
IC8vIEZJWE1FOiBDb25zaWRlciBtZXJnaW5nIHRoaXMgd2l0aCBMTEludENhbGxlZQogLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzY5MQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCA1OWIyMTFlYWZj
MGM2MmRlMmRhOWY5NjdhYjJlNTVmZWIzZThjODU0Li5hMDZhZDgwMTZhZWFmNmNhODJjZTZlNGEx
ZTkyNGVlMzc3NjU1OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaApAQCAtNjEsNyArNjEsMTAgQEAgcHVibGljOgogCiAgICAgY2xhc3Mg
VHlwZWRFeHByZXNzaW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFR5cGVkRXhwcmVzc2lvbigp
ID0gZGVmYXVsdDsKKyAgICAgICAgVHlwZWRFeHByZXNzaW9uKCkKKyAgICAgICAgICAgIDogbV90
eXBlKFR5cGVzOjpWb2lkKQorICAgICAgICB7CisgICAgICAgIH0KIAogICAgICAgICBUeXBlZEV4
cHJlc3Npb24oVHlwZSB0eXBlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkKICAgICAgICAgICAgIDog
bV90eXBlKHR5cGUpCkBAIC0zMzIsNyArMzM1LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6bG9hZChUeXBlIG1lbW9yeVR5cGUpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihvZmZzZXQpLCAiY2FuJ3QgZ2V0IGxvYWQgb2Zm
c2V0Iik7CiAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhwb2ludGVyLCAi
bG9hZCBwb2ludGVyIik7CiAKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHBvaW50ZXIudHlw
ZSgpICE9IEkzMiwgbV9jdXJyZW50T3Bjb2RlLCAiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOwor
ICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIXBvaW50ZXIudHlwZSgpLmlzSTMyKCksIG1fY3Vy
cmVudE9wY29kZSwgIiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsKIAogICAgIEV4cHJlc3Npb25U
eXBlIHJlc3VsdDsKICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChsb2FkKHN0YXRpY19jYXN0
PExvYWRPcFR5cGU+KG1fY3VycmVudE9wY29kZSksIHBvaW50ZXIsIHJlc3VsdCwgb2Zmc2V0KSk7
CkBAIC0zNTUsNyArMzU4LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6c3RvcmUo
VHlwZSBtZW1vcnlUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgV0FTTV9UUllfUE9QX0VYUFJF
U1NJT05fU1RBQ0tfSU5UTyh2YWx1ZSwgInN0b3JlIHZhbHVlIik7CiAgICAgV0FTTV9UUllfUE9Q
X0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhwb2ludGVyLCAic3RvcmUgcG9pbnRlciIpOwogCi0gICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRihwb2ludGVyLnR5cGUoKSAhPSBJMzIsIG1fY3VycmVudE9w
Y29kZSwgIiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlM
X0lGKCFwb2ludGVyLnR5cGUoKS5pc0kzMigpLCBtX2N1cnJlbnRPcGNvZGUsICIgcG9pbnRlciB0
eXBlIG1pc21hdGNoIik7CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih2YWx1ZS50eXBlKCkg
IT0gbWVtb3J5VHlwZSwgbV9jdXJyZW50T3Bjb2RlLCAiIHZhbHVlIHR5cGUgbWlzbWF0Y2giKTsK
IAogICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKHN0b3JlKHN0YXRpY19jYXN0PFN0b3JlT3BU
eXBlPihtX2N1cnJlbnRPcGNvZGUpLCBwb2ludGVyLCB2YWx1ZSwgb2Zmc2V0KSk7CkBAIC0zODks
NyArMzkyLDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6YXRvbWljTG9hZChFeHRB
dG9taWNPcFR5cGUgb3AsIFR5cGUgbWVtb3J5VHlwZSkgLT4KICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhclVJbnQzMihvZmZzZXQpLCAiY2FuJ3QgZ2V0IGxvYWQgb2Zmc2V0Iik7CiAg
ICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhwb2ludGVyLCAibG9hZCBwb2lu
dGVyIik7CiAKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHBvaW50ZXIudHlwZSgpICE9IEkz
Miwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9wKSwgIiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsK
KyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFwb2ludGVyLnR5cGUoKS5pc0kzMigpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ob3ApLCAiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAg
RXhwcmVzc2lvblR5cGUgcmVzdWx0OwogICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGF0b21p
Y0xvYWQob3AsIG1lbW9yeVR5cGUsIHBvaW50ZXIsIHJlc3VsdCwgb2Zmc2V0KSk7CkBAIC00MTIs
NyArNDE1LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6YXRvbWljU3RvcmUoRXh0
QXRvbWljT3BUeXBlIG9wLCBUeXBlIG1lbW9yeVR5cGUpIC0KICAgICBXQVNNX1RSWV9QT1BfRVhQ
UkVTU0lPTl9TVEFDS19JTlRPKHZhbHVlLCAic3RvcmUgdmFsdWUiKTsKICAgICBXQVNNX1RSWV9Q
T1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHBvaW50ZXIsICJzdG9yZSBwb2ludGVyIik7CiAKLSAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHBvaW50ZXIudHlwZSgpICE9IEkzMiwgbV9jdXJyZW50
T3Bjb2RlLCAiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOworICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoIXBvaW50ZXIudHlwZSgpLmlzSTMyKCksIG1fY3VycmVudE9wY29kZSwgIiBwb2ludGVy
IHR5cGUgbWlzbWF0Y2giKTsKICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHZhbHVlLnR5cGUo
KSAhPSBtZW1vcnlUeXBlLCBtX2N1cnJlbnRPcGNvZGUsICIgdmFsdWUgdHlwZSBtaXNtYXRjaCIp
OwogCiAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYXRvbWljU3RvcmUob3AsIG1lbW9yeVR5
cGUsIHBvaW50ZXIsIHZhbHVlLCBvZmZzZXQpKTsKQEAgLTQzNCw3ICs0MzcsNyBAQCBhdXRvIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjphdG9taWNCaW5hcnlSTVcoRXh0QXRvbWljT3BUeXBlIG9w
LCBUeXBlIG1lbW9yeVR5cAogICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8o
dmFsdWUsICJ2YWx1ZSIpOwogICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8o
cG9pbnRlciwgInBvaW50ZXIiKTsKIAotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYocG9pbnRl
ci50eXBlKCkgIT0gSTMyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3ApLCAiIHBvaW50ZXIgdHlw
ZSBtaXNtYXRjaCIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIXBvaW50ZXIudHlwZSgp
LmlzSTMyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcCksICIgcG9pbnRlciB0eXBlIG1pc21h
dGNoIik7CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih2YWx1ZS50eXBlKCkgIT0gbWVtb3J5
VHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9wKSwgIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7
CiAKICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CkBAIC00NjAsNyArNDYzLDcgQEAgYXV0byBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6YXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09w
VHlwZSBvcCwgVHlwZSBtZW0KICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRP
KGV4cGVjdGVkLCAiZXhwZWN0ZWQiKTsKICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFD
S19JTlRPKHBvaW50ZXIsICJwb2ludGVyIik7CiAKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lG
KHBvaW50ZXIudHlwZSgpICE9IEkzMiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9wKSwgIiBwb2lu
dGVyIHR5cGUgbWlzbWF0Y2giKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFwb2ludGVy
LnR5cGUoKS5pc0kzMigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3ApLCAiIHBvaW50ZXIgdHlw
ZSBtaXNtYXRjaCIpOwogICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoZXhwZWN0ZWQudHlwZSgp
ICE9IG1lbW9yeVR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcCksICIgZXhwZWN0ZWQgdHlw
ZSBtaXNtYXRjaCIpOwogICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodmFsdWUudHlwZSgpICE9
IG1lbW9yeVR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcCksICIgdmFsdWUgdHlwZSBtaXNt
YXRjaCIpOwogCkBAIC00ODcsMTMgKzQ5MCwxMyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRl
eHQ+OjphdG9taWNXYWl0KEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSBtZW1vcnlUeXBlKSAtPgog
ICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFsdWUsICJ2YWx1ZSIpOwog
ICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8ocG9pbnRlciwgInBvaW50ZXIi
KTsKIAotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYocG9pbnRlci50eXBlKCkgIT0gSTMyLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ob3ApLCAiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOworICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIXBvaW50ZXIudHlwZSgpLmlzSTMyKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihvcCksICIgcG9pbnRlciB0eXBlIG1pc21hdGNoIik7CiAgICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRih2YWx1ZS50eXBlKCkgIT0gbWVtb3J5VHlwZSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG9wKSwgIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7Ci0gICAgV0FTTV9WQUxJREFU
T1JfRkFJTF9JRih0aW1lb3V0LnR5cGUoKSAhPSBJNjQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihv
cCksICIgdGltZW91dCB0eXBlIG1pc21hdGNoIik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9J
RighdGltZW91dC50eXBlKCkuaXNJNjQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9wKSwgIiB0
aW1lb3V0IHR5cGUgbWlzbWF0Y2giKTsKIAogICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKICAg
ICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhdG9taWNXYWl0KG9wLCBwb2ludGVyLCB2YWx1ZSwg
dGltZW91dCwgcmVzdWx0LCBvZmZzZXQpKTsKLSAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1
Y3RBbmRBcHBlbmQoSTMyLCByZXN1bHQpOworICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVj
dEFuZEFwcGVuZChUeXBlczo6STMyLCByZXN1bHQpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAg
LTUxMiwxMiArNTE1LDEyIEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OmF0b21pY05v
dGlmeShFeHRBdG9taWNPcFR5cGUgb3ApIC0+IFBhcnRpYWxSZXN1bHQKICAgICBXQVNNX1RSWV9Q
T1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGNvdW50LCAiY291bnQiKTsKICAgICBXQVNNX1RSWV9Q
T1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHBvaW50ZXIsICJwb2ludGVyIik7CiAKLSAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKHBvaW50ZXIudHlwZSgpICE9IEkzMiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG9wKSwgIiBwb2ludGVyIHR5cGUgbWlzbWF0Y2giKTsKLSAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKGNvdW50LnR5cGUoKSAhPSBJMzIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcCks
ICIgY291bnQgdHlwZSBtaXNtYXRjaCIpOyAvLyBUaGUgc3BlYydzIGRlZmluaXRpb24gaXMgc2F5
aW5nIGk2NCwgYnV0IGFsbCBpbXBsZW1lbnRhdGlvbnMgKGluY2x1ZGluZyB0ZXN0cykgYXJlIHVz
aW5nIGkzMi4gU28gbG9va3MgbGlrZSB0aGUgc3BlYyBpcyB3cm9uZy4KKyAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKCFwb2ludGVyLnR5cGUoKS5pc0kzMigpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ob3ApLCAiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOworICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoIWNvdW50LnR5cGUoKS5pc0kzMigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3ApLCAi
IGNvdW50IHR5cGUgbWlzbWF0Y2giKTsgLy8gVGhlIHNwZWMncyBkZWZpbml0aW9uIGlzIHNheWlu
ZyBpNjQsIGJ1dCBhbGwgaW1wbGVtZW50YXRpb25zIChpbmNsdWRpbmcgdGVzdHMpIGFyZSB1c2lu
ZyBpMzIuIFNvIGxvb2tzIGxpa2UgdGhlIHNwZWMgaXMgd3JvbmcuCiAKICAgICBFeHByZXNzaW9u
VHlwZSByZXN1bHQ7CiAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYXRvbWljTm90aWZ5KG9w
LCBwb2ludGVyLCBjb3VudCwgcmVzdWx0LCBvZmZzZXQpKTsKLSAgICBtX2V4cHJlc3Npb25TdGFj
ay5jb25zdHJ1Y3RBbmRBcHBlbmQoSTMyLCByZXN1bHQpOworICAgIG1fZXhwcmVzc2lvblN0YWNr
LmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6STMyLCByZXN1bHQpOwogICAgIHJldHVybiB7IH07
CiB9CiAKQEAgLTY5Niw3ICs2OTksNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpj
aGVja0JyYW5jaFRhcmdldChjb25zdCBDb250cm9sVHlwZSYgdGFyZ2V0KSAtPiBQYQogCiAgICAg
dW5zaWduZWQgb2Zmc2V0ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gdGFyZ2V0LmJyYW5j
aFRhcmdldEFyaXR5KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhcmdldC5icmFu
Y2hUYXJnZXRBcml0eSgpOyArK2kpCi0gICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodGFy
Z2V0LmJyYW5jaFRhcmdldFR5cGUoaSkgIT0gbV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0u
dHlwZSgpLCAiYnJhbmNoJ3Mgc3RhY2sgdHlwZSBpcyBub3QgYSBibG9jaydzIHR5cGUgYnJhbmNo
IHRhcmdldCB0eXBlLiBTdGFjayB2YWx1ZSBoYXMgdHlwZSIsIG1fZXhwcmVzc2lvblN0YWNrW29m
ZnNldCArIGldLnR5cGUoKSwgIiBidXQgYnJhbmNoIHRhcmdldCBleHBlY3RzIGEgdmFsdWUgb2Yg
IiwgdGFyZ2V0LmJyYW5jaFRhcmdldFR5cGUoaSksICIgYXQgaW5kZXggIiwgaSk7CisgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodGFyZ2V0LmJyYW5jaFRhcmdldFR5cGUoaSkgIT0gbV9l
eHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlwZSgpLCAiYnJhbmNoJ3Mgc3RhY2sgdHlwZSBp
cyBub3QgYSBibG9jaydzIHR5cGUgYnJhbmNoIHRhcmdldCB0eXBlLiBTdGFjayB2YWx1ZSBoYXMg
dHlwZSIsIG1fZXhwcmVzc2lvblN0YWNrW29mZnNldCArIGldLnR5cGUoKS5raW5kLCAiIGJ1dCBi
cmFuY2ggdGFyZ2V0IGV4cGVjdHMgYSB2YWx1ZSBvZiAiLCB0YXJnZXQuYnJhbmNoVGFyZ2V0VHlw
ZShpKS5raW5kLCAiIGF0IGluZGV4ICIsIGkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTcw
Niw3ICs3MDksNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojp1bmlmeShjb25zdCBD
b250cm9sVHlwZSYgY29udHJvbERhdGEpIC0+IFBhcnRpYWxSZQogewogICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoY29udHJvbERhdGEuc2lnbmF0dXJlKCktPnJldHVybkNvdW50KCkgIT0gbV9l
eHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIGJsb2NrIHdpdGggdHlwZTogIiwgY29udHJvbERhdGEu
c2lnbmF0dXJlKCktPnRvU3RyaW5nKCksICIgcmV0dXJuczogIiwgY29udHJvbERhdGEuc2lnbmF0
dXJlKCktPnJldHVybkNvdW50KCksICIgYnV0IHN0YWNrIGhhczogIiwgbV9leHByZXNzaW9uU3Rh
Y2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250
cm9sRGF0YS5zaWduYXR1cmUoKS0+cmV0dXJuQ291bnQoKTsgKytpKQotICAgICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrW2ldLnR5cGUoKSAhPSBjb250cm9sRGF0
YS5zaWduYXR1cmUoKS0+cmV0dXJuVHlwZShpKSwgImNvbnRyb2wgZmxvdyByZXR1cm5zIHdpdGgg
dW5leHBlY3RlZCB0eXBlLiAiLCBtX2V4cHJlc3Npb25TdGFja1tpXS50eXBlKCksICIgaXMgbm90
IGEgIiwgY29udHJvbERhdGEuc2lnbmF0dXJlKCktPnJldHVyblR5cGUoaSkpOworICAgICAgICBX
QVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrW2ldLnR5cGUoKSAhPSBjb250
cm9sRGF0YS5zaWduYXR1cmUoKS0+cmV0dXJuVHlwZShpKSwgImNvbnRyb2wgZmxvdyByZXR1cm5z
IHdpdGggdW5leHBlY3RlZCB0eXBlLiAiLCBtX2V4cHJlc3Npb25TdGFja1tpXS50eXBlKCkua2lu
ZCwgIiBpcyBub3QgYSAiLCBjb250cm9sRGF0YS5zaWduYXR1cmUoKS0+cmV0dXJuVHlwZShpKS5r
aW5kKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC03MTUsMTEgKzcxOCwxMSBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb250ZXh0PgogYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VF
eHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHN3aXRjaCAobV9jdXJyZW50T3Bj
b2RlKSB7Ci0jZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM29wLCBpbmMsIGxoc1R5cGUs
IHJoc1R5cGUsIHJldHVyblR5cGUpIGNhc2UgT3BUeXBlOjpuYW1lOiByZXR1cm4gYmluYXJ5Q2Fz
ZTxPcFR5cGU6Om5hbWU+KHJldHVyblR5cGUsIGxoc1R5cGUsIHJoc1R5cGUpOworI2RlZmluZSBD
UkVBVEVfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCBsaHNUeXBlLCByaHNUeXBlLCByZXR1cm5U
eXBlKSBjYXNlIE9wVHlwZTo6bmFtZTogcmV0dXJuIGJpbmFyeUNhc2U8T3BUeXBlOjpuYW1lPihU
eXBlczo6cmV0dXJuVHlwZSwgVHlwZXM6Omxoc1R5cGUsIFR5cGVzOjpyaHNUeXBlKTsKICAgICBG
T1JfRUFDSF9XQVNNX0JJTkFSWV9PUChDUkVBVEVfQ0FTRSkKICN1bmRlZiBDUkVBVEVfQ0FTRQog
Ci0jZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM29wLCBpbmMsIG9wZXJhbmRUeXBlLCBy
ZXR1cm5UeXBlKSBjYXNlIE9wVHlwZTo6bmFtZTogcmV0dXJuIHVuYXJ5Q2FzZTxPcFR5cGU6Om5h
bWU+KHJldHVyblR5cGUsIG9wZXJhbmRUeXBlKTsKKyNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwg
aWQsIGIzb3AsIGluYywgb3BlcmFuZFR5cGUsIHJldHVyblR5cGUpIGNhc2UgT3BUeXBlOjpuYW1l
OiByZXR1cm4gdW5hcnlDYXNlPE9wVHlwZTo6bmFtZT4oVHlwZXM6OnJldHVyblR5cGUsIFR5cGVz
OjpvcGVyYW5kVHlwZSk7CiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfQ0FTRSkK
ICN1bmRlZiBDUkVBVEVfQ0FTRQogCkBAIC03MzUsOCArNzM4LDggQEAgYXV0byBGdW5jdGlvblBh
cnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCkpCiAgICAgICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKGlzUmVmVHlwZShub25aZXJvLnR5cGUoKSkgfHwgaXNSZWZUeXBl
KG5vblplcm8udHlwZSgpKSwgImNhbid0IHVzZSByZWYtdHlwZXMgd2l0aCB1bmFubm90YXRlZCBz
ZWxlY3QiKTsKIAotICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGNvbmRpdGlvbi50eXBl
KCkgIT0gSTMyLCAic2VsZWN0IGNvbmRpdGlvbiBtdXN0IGJlIGkzMiwgZ290ICIsIGNvbmRpdGlv
bi50eXBlKCkpOwotICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG5vblplcm8udHlwZSgp
ICE9IHplcm8udHlwZSgpLCAic2VsZWN0IHJlc3VsdCB0eXBlcyBtdXN0IG1hdGNoLCBnb3QgIiwg
bm9uWmVyby50eXBlKCksICIgYW5kICIsIHplcm8udHlwZSgpKTsKKyAgICAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRighY29uZGl0aW9uLnR5cGUoKS5pc0kzMigpLCAic2VsZWN0IGNvbmRpdGlv
biBtdXN0IGJlIGkzMiwgZ290ICIsIGNvbmRpdGlvbi50eXBlKCkua2luZCk7CisgICAgICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYobm9uWmVyby50eXBlKCkgIT0gemVyby50eXBlKCksICJzZWxl
Y3QgcmVzdWx0IHR5cGVzIG11c3QgbWF0Y2gsIGdvdCAiLCBub25aZXJvLnR5cGUoKS5raW5kLCAi
IGFuZCAiLCB6ZXJvLnR5cGUoKS5raW5kKTsKIAogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1
bHQ7CiAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFNlbGVjdChjb25kaXRpb24s
IG5vblplcm8sIHplcm8sIHJlc3VsdCkpOwpAQCAtNzU5LDkgKzc2Miw5IEBAIGF1dG8gRnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAg
ICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyh6ZXJvLCAic2VsZWN0IHpl
cm8iKTsKICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhub25aZXJv
LCAic2VsZWN0IG5vbi16ZXJvIik7CiAKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihj
b25kaXRpb24udHlwZSgpICE9IEkzMiwgInNlbGVjdCBjb25kaXRpb24gbXVzdCBiZSBpMzIsIGdv
dCAiLCBjb25kaXRpb24udHlwZSgpKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihu
b25aZXJvLnR5cGUoKSAhPSBpbW1lZGlhdGVzLnRhcmdldFR5cGUsICJzZWxlY3QgcmVzdWx0IHR5
cGVzIG11c3QgbWF0Y2gsIGdvdCAiLCBub25aZXJvLnR5cGUoKSwgIiBhbmQgIiwgaW1tZWRpYXRl
cy50YXJnZXRUeXBlKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih6ZXJvLnR5cGUo
KSAhPSBpbW1lZGlhdGVzLnRhcmdldFR5cGUsICJzZWxlY3QgcmVzdWx0IHR5cGVzIG11c3QgbWF0
Y2gsIGdvdCAiLCB6ZXJvLnR5cGUoKSwgIiBhbmQgIiwgaW1tZWRpYXRlcy50YXJnZXRUeXBlKTsK
KyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighY29uZGl0aW9uLnR5cGUoKS5pc0kzMigp
LCAic2VsZWN0IGNvbmRpdGlvbiBtdXN0IGJlIGkzMiwgZ290ICIsIGNvbmRpdGlvbi50eXBlKCku
a2luZCk7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobm9uWmVyby50eXBlKCkgIT0g
aW1tZWRpYXRlcy50YXJnZXRUeXBlLCAic2VsZWN0IHJlc3VsdCB0eXBlcyBtdXN0IG1hdGNoLCBn
b3QgIiwgbm9uWmVyby50eXBlKCkua2luZCwgIiBhbmQgIiwgaW1tZWRpYXRlcy50YXJnZXRUeXBl
LmtpbmQpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHplcm8udHlwZSgpICE9IGlt
bWVkaWF0ZXMudGFyZ2V0VHlwZSwgInNlbGVjdCByZXN1bHQgdHlwZXMgbXVzdCBtYXRjaCwgZ290
ICIsIHplcm8udHlwZSgpLmtpbmQsICIgYW5kICIsIGltbWVkaWF0ZXMudGFyZ2V0VHlwZS5raW5k
KTsKIAogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CiAgICAgICAgIFdBU01fVFJZX0FE
RF9UT19DT05URVhUKGFkZFNlbGVjdChjb25kaXRpb24sIG5vblplcm8sIHplcm8sIHJlc3VsdCkp
OwpAQCAtNzcwLDM5ICs3NzMsMzkgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIAotI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCBtZW1vcnlUeXBl
KSBjYXNlIE9wVHlwZTo6bmFtZTogcmV0dXJuIGxvYWQobWVtb3J5VHlwZSk7CisjZGVmaW5lIENS
RUFURV9DQVNFKG5hbWUsIGlkLCBiM29wLCBpbmMsIG1lbW9yeVR5cGUpIGNhc2UgT3BUeXBlOjpu
YW1lOiByZXR1cm4gbG9hZChUeXBlczo6bWVtb3J5VHlwZSk7CiBGT1JfRUFDSF9XQVNNX01FTU9S
WV9MT0FEX09QKENSRUFURV9DQVNFKQogI3VuZGVmIENSRUFURV9DQVNFCiAKLSNkZWZpbmUgQ1JF
QVRFX0NBU0UobmFtZSwgaWQsIGIzb3AsIGluYywgbWVtb3J5VHlwZSkgY2FzZSBPcFR5cGU6Om5h
bWU6IHJldHVybiBzdG9yZShtZW1vcnlUeXBlKTsKKyNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwg
aWQsIGIzb3AsIGluYywgbWVtb3J5VHlwZSkgY2FzZSBPcFR5cGU6Om5hbWU6IHJldHVybiBzdG9y
ZShUeXBlczo6bWVtb3J5VHlwZSk7CiBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVB
VEVfQ0FTRSkKICN1bmRlZiBDUkVBVEVfQ0FTRQogCiAgICAgY2FzZSBGMzJDb25zdDogewogICAg
ICAgICB1aW50MzJfdCBjb25zdGFudDsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VVSW50MzIoY29uc3RhbnQpLCAiY2FuJ3QgcGFyc2UgMzItYml0IGZsb2F0aW5nLXBvaW50IGNv
bnN0YW50Iik7Ci0gICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChG
MzIsIG1fY29udGV4dC5hZGRDb25zdGFudChGMzIsIGNvbnN0YW50KSk7CisgICAgICAgIG1fZXhw
cmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6RjMyLCBtX2NvbnRleHQuYWRk
Q29uc3RhbnQoVHlwZXM6OkYzMiwgY29uc3RhbnQpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKICAgICBjYXNlIEkzMkNvbnN0OiB7CiAgICAgICAgIGludDMyX3QgY29uc3RhbnQ7CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFySW50MzIoY29uc3RhbnQpLCAiY2Fu
J3QgcGFyc2UgMzItYml0IGNvbnN0YW50Iik7Ci0gICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNv
bnN0cnVjdEFuZEFwcGVuZChJMzIsIG1fY29udGV4dC5hZGRDb25zdGFudChJMzIsIGNvbnN0YW50
KSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6
STMyLCBtX2NvbnRleHQuYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgY29uc3RhbnQpKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBjYXNlIEY2NENvbnN0OiB7CiAgICAgICAgIHVp
bnQ2NF90IGNvbnN0YW50OwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ2
NChjb25zdGFudCksICJjYW4ndCBwYXJzZSA2NC1iaXQgZmxvYXRpbmctcG9pbnQgY29uc3RhbnQi
KTsKLSAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKEY2NCwgbV9j
b250ZXh0LmFkZENvbnN0YW50KEY2NCwgY29uc3RhbnQpKTsKKyAgICAgICAgbV9leHByZXNzaW9u
U3RhY2suY29uc3RydWN0QW5kQXBwZW5kKFR5cGVzOjpGNjQsIG1fY29udGV4dC5hZGRDb25zdGFu
dChUeXBlczo6RjY0LCBjb25zdGFudCkpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAog
ICAgIGNhc2UgSTY0Q29uc3Q6IHsKICAgICAgICAgaW50NjRfdCBjb25zdGFudDsKICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJJbnQ2NChjb25zdGFudCksICJjYW4ndCBwYXJz
ZSA2NC1iaXQgY29uc3RhbnQiKTsKLSAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0
QW5kQXBwZW5kKEk2NCwgbV9jb250ZXh0LmFkZENvbnN0YW50KEk2NCwgY29uc3RhbnQpKTsKKyAg
ICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKFR5cGVzOjpJNjQsIG1f
Y29udGV4dC5hZGRDb25zdGFudChUeXBlczo6STY0LCBjb25zdGFudCkpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIApAQCAtODE0LDcgKzgxNyw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZ
X1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBpbmRleDsK
ICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhpbmRleCwgInRhYmxl
LmdldCIpOwotICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKEkzMiAhPSBpbmRleC50eXBl
KCksICJ0YWJsZS5nZXQgaW5kZXggdG8gdHlwZSAiLCBpbmRleC50eXBlKCksICIgZXhwZWN0ZWQg
IiwgSTMyKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9
IGluZGV4LnR5cGUoKS5raW5kLCAidGFibGUuZ2V0IGluZGV4IHRvIHR5cGUgIiwgaW5kZXgudHlw
ZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgVHlwZUtpbmQ6OkkzMik7CiAKICAgICAgICAgRXhwcmVz
c2lvblR5cGUgcmVzdWx0OwogICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJs
ZUdldCh0YWJsZUluZGV4LCBpbmRleCwgcmVzdWx0KSk7CkBAIC04MzEsOSArODM0LDkgQEAgRk9S
X0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFR5cGVkRXhw
cmVzc2lvbiB2YWx1ZSwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NU
QUNLX0lOVE8odmFsdWUsICJ0YWJsZS5zZXQiKTsKICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJF
U1NJT05fU1RBQ0tfSU5UTyhpbmRleCwgInRhYmxlLnNldCIpOwotICAgICAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKEkzMiAhPSBpbmRleC50eXBlKCksICJ0YWJsZS5zZXQgaW5kZXggdG8gdHlw
ZSAiLCBpbmRleC50eXBlKCksICIgZXhwZWN0ZWQgIiwgSTMyKTsKKyAgICAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9IGluZGV4LnR5cGUoKS5raW5kLCAidGFibGUu
c2V0IGluZGV4IHRvIHR5cGUgIiwgaW5kZXgudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgVHlw
ZUtpbmQ6OkkzMik7CiAgICAgICAgIFR5cGUgdHlwZSA9IG1faW5mby50YWJsZXNbdGFibGVJbmRl
eF0ud2FzbVR5cGUoKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih2YWx1ZS50eXBl
KCkgIT0gdHlwZSwgInRhYmxlLnNldCB2YWx1ZSB0byB0eXBlICIsIHZhbHVlLnR5cGUoKSwgIiBl
eHBlY3RlZCAiLCB0eXBlKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih2YWx1ZS50
eXBlKCkgIT0gdHlwZSwgInRhYmxlLnNldCB2YWx1ZSB0byB0eXBlICIsIHZhbHVlLnR5cGUoKS5r
aW5kLCAiIGV4cGVjdGVkICIsIHR5cGUua2luZCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
aW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09IFRhYmxlRWxlbWVudFR5cGU6OkV4dGVy
bnJlZiB8fCBtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRU
eXBlOjpGdW5jcmVmKTsKICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVT
ZXQodGFibGVJbmRleCwgaW5kZXgsIHZhbHVlKSk7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC04
NTgsOSArODYxLDkgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
CiAgICAgICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHNyY09mZnNl
dCwgInRhYmxlLmluaXQiKTsKICAgICAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NU
QUNLX0lOVE8oZHN0T2Zmc2V0LCAidGFibGUuaW5pdCIpOwogCi0gICAgICAgICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKEkzMiAhPSBkc3RPZmZzZXQudHlwZSgpLCAidGFibGUuaW5pdCBkc3Rf
b2Zmc2V0IHRvIHR5cGUgIiwgZHN0T2Zmc2V0LnR5cGUoKSwgIiBleHBlY3RlZCAiLCBJMzIpOwot
ICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihJMzIgIT0gc3JjT2Zmc2V0LnR5cGUo
KSwgInRhYmxlLmluaXQgc3JjX29mZnNldCB0byB0eXBlICIsIHNyY09mZnNldC50eXBlKCksICIg
ZXhwZWN0ZWQgIiwgSTMyKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoSTMy
ICE9IGxlbmdodC50eXBlKCksICJ0YWJsZS5pbml0IGxlbmd0aCB0byB0eXBlICIsIGxlbmdodC50
eXBlKCksICIgZXhwZWN0ZWQgIiwgSTMyKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoVHlwZUtpbmQ6OkkzMiAhPSBkc3RPZmZzZXQudHlwZSgpLmtpbmQsICJ0YWJsZS5pbml0
IGRzdF9vZmZzZXQgdG8gdHlwZSAiLCBkc3RPZmZzZXQudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQg
IiwgVHlwZUtpbmQ6OkkzMik7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5
cGVLaW5kOjpJMzIgIT0gc3JjT2Zmc2V0LnR5cGUoKS5raW5kLCAidGFibGUuaW5pdCBzcmNfb2Zm
c2V0IHRvIHR5cGUgIiwgc3JjT2Zmc2V0LnR5cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIFR5cGVL
aW5kOjpJMzIpOworICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlS2luZDo6
STMyICE9IGxlbmdodC50eXBlKCkua2luZCwgInRhYmxlLmluaXQgbGVuZ3RoIHRvIHR5cGUgIiwg
bGVuZ2h0LnR5cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIFR5cGVLaW5kOjpJMzIpOwogCiAgICAg
ICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUluaXQoaW1tZWRpYXRlcy5l
bGVtZW50SW5kZXgsIGltbWVkaWF0ZXMudGFibGVJbmRleCwgZHN0T2Zmc2V0LCBzcmNPZmZzZXQs
IGxlbmdodCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04ODIsNyArODg1LDcgQEAgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAKICAgICAgICAgICAgIEV4cHJl
c3Npb25UeXBlIHJlc3VsdDsKICAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFk
ZFRhYmxlU2l6ZSh0YWJsZUluZGV4LCByZXN1bHQpKTsKLSAgICAgICAgICAgIG1fZXhwcmVzc2lv
blN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChJMzIsIHJlc3VsdCk7CisgICAgICAgICAgICBtX2V4
cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoVHlwZXM6OkkzMiwgcmVzdWx0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRXh0MU9wVHlwZTo6VGFi
bGVHcm93OiB7CkBAIC04OTYsMTIgKzg5OSwxMiBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9S
RV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NU
QUNLX0lOVE8oZGVsdGEsICJ0YWJsZS5ncm93Iik7CiAgICAgICAgICAgICBXQVNNX1RSWV9QT1Bf
RVhQUkVTU0lPTl9TVEFDS19JTlRPKGZpbGwsICJ0YWJsZS5ncm93Iik7CiAKLSAgICAgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoZmlsbC50eXBlKCkgIT0gbV9pbmZvLnRhYmxlc1t0YWJs
ZUluZGV4XS53YXNtVHlwZSgpLCAidGFibGUuZ3JvdyBleHBlY3RzIGZpbGwgdmFsdWUgb2YgdHlw
ZSAiLCBtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCksICIgZ290ICIsIGZpbGwu
dHlwZSgpKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoSTMyICE9IGRlbHRh
LnR5cGUoKSwgInRhYmxlLmdyb3cgZXhwZWN0cyBhbiBpMzIgZGVsdGEgdmFsdWUsIGdvdCAiLCBk
ZWx0YS50eXBlKCkpOworICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihmaWxsLnR5
cGUoKSAhPSBtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCksICJ0YWJsZS5ncm93
IGV4cGVjdHMgZmlsbCB2YWx1ZSBvZiB0eXBlICIsIG1faW5mby50YWJsZXNbdGFibGVJbmRleF0u
d2FzbVR5cGUoKS5raW5kLCAiIGdvdCAiLCBmaWxsLnR5cGUoKS5raW5kKTsKKyAgICAgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6OkkzMiAhPSBkZWx0YS50eXBlKCkua2lu
ZCwgInRhYmxlLmdyb3cgZXhwZWN0cyBhbiBpMzIgZGVsdGEgdmFsdWUsIGdvdCAiLCBkZWx0YS50
eXBlKCkua2luZCk7CiAKICAgICAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKICAgICAg
ICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxlR3Jvdyh0YWJsZUluZGV4LCBm
aWxsLCBkZWx0YSwgcmVzdWx0KSk7Ci0gICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25z
dHJ1Y3RBbmRBcHBlbmQoSTMyLCByZXN1bHQpOworICAgICAgICAgICAgbV9leHByZXNzaW9uU3Rh
Y2suY29uc3RydWN0QW5kQXBwZW5kKFR5cGVzOjpJMzIsIHJlc3VsdCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEV4dDFPcFR5cGU6OlRhYmxlRmlsbDogewpA
QCAtOTE1LDkgKzkxOCw5IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9D
QVNFKQogICAgICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhmaWxs
LCAidGFibGUuZmlsbCIpOwogICAgICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RB
Q0tfSU5UTyhvZmZzZXQsICJ0YWJsZS5maWxsIik7CiAKLSAgICAgICAgICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoZmlsbC50eXBlKCkgIT0gbV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS53YXNt
VHlwZSgpLCAidGFibGUuZmlsbCBleHBlY3RzIGZpbGwgdmFsdWUgb2YgdHlwZSAiLCBtX2luZm8u
dGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCksICIgZ290ICIsIGZpbGwudHlwZSgpKTsKLSAg
ICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoSTMyICE9IG9mZnNldC50eXBlKCksICJ0
YWJsZS5maWxsIGV4cGVjdHMgYW4gaTMyIG9mZnNldCB2YWx1ZSwgZ290ICIsIG9mZnNldC50eXBl
KCkpOwotICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihJMzIgIT0gY291bnQudHlw
ZSgpLCAidGFibGUuZmlsbCBleHBlY3RzIGFuIGkzMiBjb3VudCB2YWx1ZSwgZ290ICIsIGNvdW50
LnR5cGUoKSk7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGZpbGwudHlwZSgp
ICE9IG1faW5mby50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5cGUoKSwgInRhYmxlLmZpbGwgZXhw
ZWN0cyBmaWxsIHZhbHVlIG9mIHR5cGUgIiwgbV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS53YXNt
VHlwZSgpLmtpbmQsICIgZ290ICIsIGZpbGwudHlwZSgpLmtpbmQpOworICAgICAgICAgICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9IG9mZnNldC50eXBlKCkua2luZCwg
InRhYmxlLmZpbGwgZXhwZWN0cyBhbiBpMzIgb2Zmc2V0IHZhbHVlLCBnb3QgIiwgb2Zmc2V0LnR5
cGUoKS5raW5kKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6
OkkzMiAhPSBjb3VudC50eXBlKCkua2luZCwgInRhYmxlLmZpbGwgZXhwZWN0cyBhbiBpMzIgY291
bnQgdmFsdWUsIGdvdCAiLCBjb3VudC50eXBlKCkua2luZCk7CiAKICAgICAgICAgICAgIFdBU01f
VFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxlRmlsbCh0YWJsZUluZGV4LCBvZmZzZXQsIGZpbGws
IGNvdW50KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTkzMCw3ICs5MzMsNyBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICAgICAgY29uc3Qg
YXV0byBzcmNUeXBlID0gbV9pbmZvLnRhYmxlKGltbWVkaWF0ZXMuc3JjVGFibGVJbmRleCkud2Fz
bVR5cGUoKTsKICAgICAgICAgICAgIGNvbnN0IGF1dG8gZHN0VHlwZSA9IG1faW5mby50YWJsZShp
bW1lZGlhdGVzLmRzdFRhYmxlSW5kZXgpLndhc21UeXBlKCk7Ci0gICAgICAgICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKHNyY1R5cGUgIT0gZHN0VHlwZSwgInR5cGUgbWlzbWF0Y2ggYXQgdGFi
bGUuY29weS4gZ290ICIsIHNyY1R5cGUsICIgYW5kICIsIGRzdFR5cGUpOworICAgICAgICAgICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRihzcmNUeXBlICE9IGRzdFR5cGUsICJ0eXBlIG1pc21hdGNo
IGF0IHRhYmxlLmNvcHkuIGdvdCAiLCBzcmNUeXBlLmtpbmQsICIgYW5kICIsIGRzdFR5cGUua2lu
ZCk7CiAKICAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBkc3RPZmZzZXQ7CiAgICAgICAgICAg
ICBUeXBlZEV4cHJlc3Npb24gc3JjT2Zmc2V0OwpAQCAtOTM5LDkgKzk0Miw5IEBAIEZPUl9FQUNI
X1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICAgICAgV0FTTV9UUllf
UE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhzcmNPZmZzZXQsICJ0YWJsZS5jb3B5Iik7CiAgICAg
ICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGRzdE9mZnNldCwgInRh
YmxlLmNvcHkiKTsKIAotICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihJMzIgIT0g
ZHN0T2Zmc2V0LnR5cGUoKSwgInRhYmxlLmNvcHkgZHN0X29mZnNldCB0byB0eXBlICIsIGRzdE9m
ZnNldC50eXBlKCksICIgZXhwZWN0ZWQgIiwgSTMyKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoSTMyICE9IHNyY09mZnNldC50eXBlKCksICJ0YWJsZS5jb3B5IHNyY19vZmZz
ZXQgdG8gdHlwZSAiLCBzcmNPZmZzZXQudHlwZSgpLCAiIGV4cGVjdGVkICIsIEkzMik7Ci0gICAg
ICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKEkzMiAhPSBsZW5ndGgudHlwZSgpLCAidGFi
bGUuY29weSBsZW5ndGggdG8gdHlwZSAiLCBsZW5ndGgudHlwZSgpLCAiIGV4cGVjdGVkICIsIEkz
Mik7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGVLaW5kOjpJMzIgIT0g
ZHN0T2Zmc2V0LnR5cGUoKS5raW5kLCAidGFibGUuY29weSBkc3Rfb2Zmc2V0IHRvIHR5cGUgIiwg
ZHN0T2Zmc2V0LnR5cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIFR5cGVLaW5kOjpJMzIpOworICAg
ICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9IHNyY09mZnNl
dC50eXBlKCkua2luZCwgInRhYmxlLmNvcHkgc3JjX29mZnNldCB0byB0eXBlICIsIHNyY09mZnNl
dC50eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCBUeXBlS2luZDo6STMyKTsKKyAgICAgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6OkkzMiAhPSBsZW5ndGgudHlwZSgpLmtp
bmQsICJ0YWJsZS5jb3B5IGxlbmd0aCB0byB0eXBlICIsIGxlbmd0aC50eXBlKCkua2luZCwgIiBl
eHBlY3RlZCAiLCBUeXBlS2luZDo6STMyKTsKIAogICAgICAgICAgICAgV0FTTV9UUllfQUREX1RP
X0NPTlRFWFQoYWRkVGFibGVDb3B5KGltbWVkaWF0ZXMuZHN0VGFibGVJbmRleCwgaW1tZWRpYXRl
cy5zcmNUYWJsZUluZGV4LCBkc3RPZmZzZXQsIHNyY09mZnNldCwgbGVuZ3RoKSk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTk2MSw5ICs5NjQsOSBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9S
RV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NU
QUNLX0lOVE8odGFyZ2V0VmFsdWUsICJtZW1vcnkuZmlsbCIpOwogICAgICAgICAgICAgV0FTTV9U
UllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhkc3RBZGRyZXNzLCAibWVtb3J5LmZpbGwiKTsK
IAotICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihJMzIgIT0gZHN0QWRkcmVzcy50
eXBlKCksICJtZW1vcnkuZmlsbCBkc3RBZGRyZXNzIHRvIHR5cGUgIiwgZHN0QWRkcmVzcy50eXBl
KCksICIgZXhwZWN0ZWQgIiwgSTMyKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxf
SUYoSTMyICE9IHRhcmdldFZhbHVlLnR5cGUoKSwgIm1lbW9yeS5maWxsIHRhcmdldFZhbHVlIHRv
IHR5cGUgIiwgdGFyZ2V0VmFsdWUudHlwZSgpLCAiIGV4cGVjdGVkICIsIEkzMik7Ci0gICAgICAg
ICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKEkzMiAhPSBjb3VudC50eXBlKCksICJtZW1vcnku
ZmlsbCBzaXplIHRvIHR5cGUgIiwgY291bnQudHlwZSgpLCAiIGV4cGVjdGVkICIsIEkzMik7Cisg
ICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGVLaW5kOjpJMzIgIT0gZHN0QWRk
cmVzcy50eXBlKCkua2luZCwgIm1lbW9yeS5maWxsIGRzdEFkZHJlc3MgdG8gdHlwZSAiLCBkc3RB
ZGRyZXNzLnR5cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIFR5cGVLaW5kOjpJMzIpOworICAgICAg
ICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9IHRhcmdldFZhbHVl
LnR5cGUoKS5raW5kLCAibWVtb3J5LmZpbGwgdGFyZ2V0VmFsdWUgdG8gdHlwZSAiLCB0YXJnZXRW
YWx1ZS50eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCBUeXBlS2luZDo6STMyKTsKKyAgICAgICAg
ICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6OkkzMiAhPSBjb3VudC50eXBlKCku
a2luZCwgIm1lbW9yeS5maWxsIHNpemUgdG8gdHlwZSAiLCBjb3VudC50eXBlKCkua2luZCwgIiBl
eHBlY3RlZCAiLCBUeXBlS2luZDo6STMyKTsKIAogICAgICAgICAgICAgV0FTTV9UUllfQUREX1RP
X0NPTlRFWFQoYWRkTWVtb3J5RmlsbChkc3RBZGRyZXNzLCB0YXJnZXRWYWx1ZSwgY291bnQpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTgzLDkgKzk4Niw5IEBAIEZPUl9FQUNIX1dBU01fTUVN
T1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJF
U1NJT05fU1RBQ0tfSU5UTyhzcmNBZGRyZXNzLCAibWVtb3J5LmNvcHkiKTsKICAgICAgICAgICAg
IFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oZHN0QWRkcmVzcywgIm1lbW9yeS5j
b3B5Iik7CiAKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoSTMyICE9IGRzdEFk
ZHJlc3MudHlwZSgpLCAibWVtb3J5LmNvcHkgZHN0QWRkcmVzcyB0byB0eXBlICIsIGRzdEFkZHJl
c3MudHlwZSgpLCAiIGV4cGVjdGVkICIsIEkzMik7Ci0gICAgICAgICAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKEkzMiAhPSBzcmNBZGRyZXNzLnR5cGUoKSwgIm1lbW9yeS5jb3B5IHRhcmdldFZh
bHVlIHRvIHR5cGUgIiwgc3JjQWRkcmVzcy50eXBlKCksICIgZXhwZWN0ZWQgIiwgSTMyKTsKLSAg
ICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoSTMyICE9IGNvdW50LnR5cGUoKSwgIm1l
bW9yeS5jb3B5IHNpemUgdG8gdHlwZSAiLCBjb3VudC50eXBlKCksICIgZXhwZWN0ZWQgIiwgSTMy
KTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6OkkzMiAhPSBk
c3RBZGRyZXNzLnR5cGUoKS5raW5kLCAibWVtb3J5LmNvcHkgZHN0QWRkcmVzcyB0byB0eXBlICIs
IGRzdEFkZHJlc3MudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgVHlwZUtpbmQ6OkkzMik7Cisg
ICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGVLaW5kOjpJMzIgIT0gc3JjQWRk
cmVzcy50eXBlKCkua2luZCwgIm1lbW9yeS5jb3B5IHRhcmdldFZhbHVlIHRvIHR5cGUgIiwgc3Jj
QWRkcmVzcy50eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCBUeXBlS2luZDo6STMyKTsKKyAgICAg
ICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6OkkzMiAhPSBjb3VudC50eXBl
KCkua2luZCwgIm1lbW9yeS5jb3B5IHNpemUgdG8gdHlwZSAiLCBjb3VudC50eXBlKCkua2luZCwg
IiBleHBlY3RlZCAiLCBUeXBlS2luZDo6STMyKTsKIAogICAgICAgICAgICAgV0FTTV9UUllfQURE
X1RPX0NPTlRFWFQoYWRkTWVtb3J5Q29weShkc3RBZGRyZXNzLCBzcmNBZGRyZXNzLCBjb3VudCkp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDAzLDkgKzEwMDYsOSBAQCBGT1JfRUFDSF9XQVNN
X01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgICAgIFdBU01fVFJZX1BPUF9F
WFBSRVNTSU9OX1NUQUNLX0lOVE8oc3JjQWRkcmVzcywgIm1lbW9yeS5pbml0Iik7CiAgICAgICAg
ICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGRzdEFkZHJlc3MsICJtZW1v
cnkuaW5pdCIpOwogCi0gICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKEkzMiAhPSBk
c3RBZGRyZXNzLnR5cGUoKSwgIm1lbW9yeS5pbml0IGRzdCBhZGRyZXNzIHRvIHR5cGUgIiwgZHN0
QWRkcmVzcy50eXBlKCksICIgZXhwZWN0ZWQgIiwgSTMyKTsKLSAgICAgICAgICAgIFdBU01fVkFM
SURBVE9SX0ZBSUxfSUYoSTMyICE9IHNyY0FkZHJlc3MudHlwZSgpLCAibWVtb3J5LmluaXQgc3Jj
IGFkZHJlc3MgdG8gdHlwZSAiLCBzcmNBZGRyZXNzLnR5cGUoKSwgIiBleHBlY3RlZCAiLCBJMzIp
OwotICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihJMzIgIT0gbGVuZ3RoLnR5cGUo
KSwgIm1lbW9yeS5pbml0IGxlbmd0aCB0byB0eXBlICIsIGxlbmd0aC50eXBlKCksICIgZXhwZWN0
ZWQgIiwgSTMyKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6
OkkzMiAhPSBkc3RBZGRyZXNzLnR5cGUoKS5raW5kLCAibWVtb3J5LmluaXQgZHN0IGFkZHJlc3Mg
dG8gdHlwZSAiLCBkc3RBZGRyZXNzLnR5cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIFR5cGVLaW5k
OjpJMzIpOworICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMy
ICE9IHNyY0FkZHJlc3MudHlwZSgpLmtpbmQsICJtZW1vcnkuaW5pdCBzcmMgYWRkcmVzcyB0byB0
eXBlICIsIHNyY0FkZHJlc3MudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgVHlwZUtpbmQ6Okkz
Mik7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGVLaW5kOjpJMzIgIT0g
bGVuZ3RoLnR5cGUoKS5raW5kLCAibWVtb3J5LmluaXQgbGVuZ3RoIHRvIHR5cGUgIiwgbGVuZ3Ro
LnR5cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIFR5cGVLaW5kOjpJMzIpOwogCiAgICAgICAgICAg
ICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRNZW1vcnlJbml0KGltbWVkaWF0ZXMuZGF0YVNl
Z21lbnRJbmRleCwgZHN0QWRkcmVzcywgc3JjQWRkcmVzcywgbGVuZ3RoKSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTEwMjAsNyArMTAyMyw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JF
X09QKENSRUFURV9DQVNFKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotI2RlZmlu
ZSBDUkVBVEVfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCBvcGVyYW5kVHlwZSwgcmV0dXJuVHlw
ZSkgY2FzZSBFeHQxT3BUeXBlOjpuYW1lOiByZXR1cm4gdHJ1bmNTYXR1cmF0ZWQob3AsIHJldHVy
blR5cGUsIG9wZXJhbmRUeXBlKTsKKyNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgaWQsIGIzb3As
IGluYywgb3BlcmFuZFR5cGUsIHJldHVyblR5cGUpIGNhc2UgRXh0MU9wVHlwZTo6bmFtZTogcmV0
dXJuIHRydW5jU2F0dXJhdGVkKG9wLCBUeXBlczo6cmV0dXJuVHlwZSwgVHlwZXM6Om9wZXJhbmRU
eXBlKTsKICAgICAgICAgRk9SX0VBQ0hfV0FTTV9UUlVOQ19TQVRVUkFURURfT1AoQ1JFQVRFX0NB
U0UpCiAjdW5kZWYgQ1JFQVRFX0NBU0UKIApAQCAtMTAzOCwxOSArMTA0MSwxOSBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICBFeHRBdG9taWNP
cFR5cGUgb3AgPSBzdGF0aWNfY2FzdDxFeHRBdG9taWNPcFR5cGU+KGV4dE9wKTsKICAgICAgICAg
c3dpdGNoIChvcCkgewotI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCBt
ZW1vcnlUeXBlKSBjYXNlIEV4dEF0b21pY09wVHlwZTo6bmFtZTogcmV0dXJuIGF0b21pY0xvYWQo
b3AsIG1lbW9yeVR5cGUpOworI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5j
LCBtZW1vcnlUeXBlKSBjYXNlIEV4dEF0b21pY09wVHlwZTo6bmFtZTogcmV0dXJuIGF0b21pY0xv
YWQob3AsIFR5cGVzOjptZW1vcnlUeXBlKTsKICAgICAgICAgRk9SX0VBQ0hfV0FTTV9FWFRfQVRP
TUlDX0xPQURfT1AoQ1JFQVRFX0NBU0UpCiAjdW5kZWYgQ1JFQVRFX0NBU0UKLSNkZWZpbmUgQ1JF
QVRFX0NBU0UobmFtZSwgaWQsIGIzb3AsIGluYywgbWVtb3J5VHlwZSkgY2FzZSBFeHRBdG9taWNP
cFR5cGU6Om5hbWU6IHJldHVybiBhdG9taWNTdG9yZShvcCwgbWVtb3J5VHlwZSk7CisjZGVmaW5l
IENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM29wLCBpbmMsIG1lbW9yeVR5cGUpIGNhc2UgRXh0QXRv
bWljT3BUeXBlOjpuYW1lOiByZXR1cm4gYXRvbWljU3RvcmUob3AsIFR5cGVzOjptZW1vcnlUeXBl
KTsKICAgICAgICAgRk9SX0VBQ0hfV0FTTV9FWFRfQVRPTUlDX1NUT1JFX09QKENSRUFURV9DQVNF
KQogI3VuZGVmIENSRUFURV9DQVNFCi0jZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM29w
LCBpbmMsIG1lbW9yeVR5cGUpIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpuYW1lOiByZXR1cm4gYXRv
bWljQmluYXJ5Uk1XKG9wLCBtZW1vcnlUeXBlKTsKKyNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwg
aWQsIGIzb3AsIGluYywgbWVtb3J5VHlwZSkgY2FzZSBFeHRBdG9taWNPcFR5cGU6Om5hbWU6IHJl
dHVybiBhdG9taWNCaW5hcnlSTVcob3AsIFR5cGVzOjptZW1vcnlUeXBlKTsKICAgICAgICAgRk9S
X0VBQ0hfV0FTTV9FWFRfQVRPTUlDX0JJTkFSWV9STVdfT1AoQ1JFQVRFX0NBU0UpCiAjdW5kZWYg
Q1JFQVRFX0NBU0UKICAgICAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Ok1lbW9yeUF0b21pY1dh
aXQ2NDoKLSAgICAgICAgICAgIHJldHVybiBhdG9taWNXYWl0KG9wLCBJNjQpOworICAgICAgICAg
ICAgcmV0dXJuIGF0b21pY1dhaXQob3AsIFR5cGVzOjpJNjQpOwogICAgICAgICBjYXNlIEV4dEF0
b21pY09wVHlwZTo6TWVtb3J5QXRvbWljV2FpdDMyOgotICAgICAgICAgICAgcmV0dXJuIGF0b21p
Y1dhaXQob3AsIEkzMik7CisgICAgICAgICAgICByZXR1cm4gYXRvbWljV2FpdChvcCwgVHlwZXM6
OkkzMik7CiAgICAgICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpNZW1vcnlBdG9taWNOb3RpZnk6
CiAgICAgICAgICAgICByZXR1cm4gYXRvbWljTm90aWZ5KG9wKTsKICAgICAgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6OkF0b21pY0ZlbmNlOgpAQCAtMTA1OCwxMiArMTA2MSwxMiBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6OkkzMkF0b21pY1JtdzhDbXB4Y2hnVToKICAgICAgICAgY2FzZSBFeHRBdG9taWNP
cFR5cGU6OkkzMkF0b21pY1JtdzE2Q21weGNoZ1U6CiAgICAgICAgIGNhc2UgRXh0QXRvbWljT3BU
eXBlOjpJMzJBdG9taWNSbXdDbXB4Y2hnOgotICAgICAgICAgICAgcmV0dXJuIGF0b21pY0NvbXBh
cmVFeGNoYW5nZShvcCwgSTMyKTsKKyAgICAgICAgICAgIHJldHVybiBhdG9taWNDb21wYXJlRXhj
aGFuZ2Uob3AsIFR5cGVzOjpJMzIpOwogICAgICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0
QXRvbWljUm13OENtcHhjaGdVOgogICAgICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRv
bWljUm13MTZDbXB4Y2hnVToKICAgICAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21p
Y1JtdzMyQ21weGNoZ1U6CiAgICAgICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNS
bXdDbXB4Y2hnOgotICAgICAgICAgICAgcmV0dXJuIGF0b21pY0NvbXBhcmVFeGNoYW5nZShvcCwg
STY0KTsKKyAgICAgICAgICAgIHJldHVybiBhdG9taWNDb21wYXJlRXhjaGFuZ2Uob3AsIFR5cGVz
OjpJNjQpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rih0cnVlLCAiaW52YWxpZCBleHRlbmRlZCBhdG9taWMgb3AgIiwgZXh0T3ApOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xMDgzLDEwICsxMDg2LDEwIEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NU
T1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVk
Iik7CiAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiB2YWx1ZTsKICAgICAgICAgV0FTTV9UUllfUE9Q
X0VYUFJFU1NJT05fU1RBQ0tfSU5UTyh2YWx1ZSwgInJlZi5pc19udWxsIik7Ci0gICAgICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzUmVmVHlwZSh2YWx1ZS50eXBlKCkpLCAicmVmLmlzX251
bGwgdG8gdHlwZSAiLCB2YWx1ZS50eXBlKCksICIgZXhwZWN0ZWQgYSByZWZlcmVuY2UgdHlwZSIp
OworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1JlZlR5cGUodmFsdWUudHlwZSgp
KSwgInJlZi5pc19udWxsIHRvIHR5cGUgIiwgdmFsdWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQg
YSByZWZlcmVuY2UgdHlwZSIpOwogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CiAgICAg
ICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFJlZklzTnVsbCh2YWx1ZSwgcmVzdWx0KSk7
Ci0gICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChJMzIsIHJlc3Vs
dCk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6
STMyLCByZXN1bHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTEwMSw3ICsx
MTA0LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAKICAg
ICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwogICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09O
VEVYVChhZGRSZWZGdW5jKGluZGV4LCByZXN1bHQpKTsKLSAgICAgICAgbV9leHByZXNzaW9uU3Rh
Y2suY29uc3RydWN0QW5kQXBwZW5kKEZ1bmNyZWYsIHJlc3VsdCk7CisgICAgICAgIG1fZXhwcmVz
c2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6RnVuY3JlZiwgcmVzdWx0KTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTExMjIsNyArMTEyNSw3IEBAIEZPUl9FQUNI
X1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBUeXBlZEV4cHJlc3Np
b24gdmFsdWU7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFs
dWUsICJzZXRfbG9jYWwiKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihpbmRleCA+
PSBtX2xvY2Fscy5zaXplKCksICJhdHRlbXB0IHRvIHNldCB1bmtub3duIGxvY2FsICIsIGluZGV4
LCAiIGxhc3Qgb25lIGlzICIsIG1fbG9jYWxzLnNpemUoKSk7Ci0gICAgICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYodmFsdWUudHlwZSgpICE9IG1fbG9jYWxzW2luZGV4XSwgInNldF9sb2NhbCB0
byB0eXBlICIsIHZhbHVlLnR5cGUoKSwgIiBleHBlY3RlZCAiLCBtX2xvY2Fsc1tpbmRleF0pOwor
ICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHZhbHVlLnR5cGUoKSAhPSBtX2xvY2Fsc1tp
bmRleF0sICJzZXRfbG9jYWwgdG8gdHlwZSAiLCB2YWx1ZS50eXBlKCkua2luZCwgIiBleHBlY3Rl
ZCAiLCBtX2xvY2Fsc1tpbmRleF0ua2luZCk7CiAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKHNldExvY2FsKGluZGV4LCB2YWx1ZSkpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
QEAgLTExMzQsNyArMTEzNyw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFU
RV9DQVNFKQogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLmlz
RW1wdHkoKSwgImNhbid0IHRlZV9sb2NhbCBvbiBlbXB0eSBleHByZXNzaW9uIHN0YWNrIik7CiAg
ICAgICAgIFR5cGVkRXhwcmVzc2lvbiB2YWx1ZSA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKTsK
ICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihpbmRleCA+PSBtX2xvY2Fscy5zaXplKCks
ICJhdHRlbXB0IHRvIHRlZSB1bmtub3duIGxvY2FsICIsIGluZGV4LCAiIGxhc3Qgb25lIGlzICIs
IG1fbG9jYWxzLnNpemUoKSk7Ci0gICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodmFsdWUu
dHlwZSgpICE9IG1fbG9jYWxzW2luZGV4XSwgInNldF9sb2NhbCB0byB0eXBlICIsIHZhbHVlLnR5
cGUoKSwgIiBleHBlY3RlZCAiLCBtX2xvY2Fsc1tpbmRleF0pOworICAgICAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKHZhbHVlLnR5cGUoKSAhPSBtX2xvY2Fsc1tpbmRleF0sICJzZXRfbG9jYWwg
dG8gdHlwZSAiLCB2YWx1ZS50eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCBtX2xvY2Fsc1tpbmRl
eF0ua2luZCk7CiAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKHNldExvY2FsKGluZGV4
LCB2YWx1ZSkpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTExNjIsNyArMTE2NSw3
IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAg
IFR5cGUgZ2xvYmFsVHlwZSA9IG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBlOwogICAgICAgICBB
U1NFUlQoaXNWYWx1ZVR5cGUoZ2xvYmFsVHlwZSkpOwotICAgICAgICBXQVNNX1ZBTElEQVRPUl9G
QUlMX0lGKGdsb2JhbFR5cGUgIT0gdmFsdWUudHlwZSgpLCAic2V0X2dsb2JhbCAiLCBpbmRleCwg
IiB3aXRoIHR5cGUgIiwgZ2xvYmFsVHlwZSwgIiB3aXRoIGEgdmFyaWFibGUgb2YgdHlwZSAiLCB2
YWx1ZS50eXBlKCkpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGdsb2JhbFR5cGUg
IT0gdmFsdWUudHlwZSgpLCAic2V0X2dsb2JhbCAiLCBpbmRleCwgIiB3aXRoIHR5cGUgIiwgZ2xv
YmFsVHlwZS5raW5kLCAiIHdpdGggYSB2YXJpYWJsZSBvZiB0eXBlICIsIHZhbHVlLnR5cGUoKS5r
aW5kKTsKIAogICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRHbG9iYWwoaW5kZXgs
IHZhbHVlKSk7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMTgxLDcgKzExODQsNyBAQCBGT1Jf
RUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighYXJncy50cnlSZXNlcnZlQ2FwYWNpdHkoY2FsbGVlU2lnbmF0dXJlLmFyZ3Vt
ZW50Q291bnQoKSksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBjYWxsJ3MgIiwg
Y2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgIiBhcmd1bWVudHMiKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IGZpcnN0QXJndW1lbnRJbmRleDsgaSA8IG1fZXhwcmVzc2lvblN0YWNr
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBUeXBlZEV4cHJlc3Npb24gYXJnID0gbV9leHBy
ZXNzaW9uU3RhY2suYXQoaSk7Ci0gICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFy
Zy50eXBlKCkgIT0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5k
ZXgpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsLCBnb3QgIiwgYXJnLnR5cGUoKSwg
IiwgZXhwZWN0ZWQgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50
SW5kZXgpKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnLnR5cGUoKSAh
PSBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCksICJhcmd1
bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4
cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4
KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7CiAgICAgICAg
ICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKICAgICAgICAgfQpAQCAtMTIx
NCw3ICsxMjE3LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
CiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50
Q291bnQoKSArIDE7IC8vIEFkZCB0aGUgY2FsbGVlJ3MgaW5kZXguCiAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNh
bGxfaW5kaXJlY3QgZXhwZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRo
ZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5z
aXplKCksICIgdmFsdWVzIik7CiAKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2V4
cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpICE9IEkzMiwgIm5vbi1pMzIgY2FsbF9pbmRpcmVj
dCBpbmRleCAiLCBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpKTsKKyAgICAgICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRighbV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5pc0kz
MigpLCAibm9uLWkzMiBjYWxsX2luZGlyZWN0IGluZGV4ICIsIG1fZXhwcmVzc2lvblN0YWNrLmxh
c3QoKS50eXBlKCkua2luZCk7CiAKICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiBhcmdz
OwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFhcmdzLnRyeVJlc2VydmVDYXBhY2l0eShh
cmd1bWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yICIsIGFyZ3Vt
ZW50Q291bnQsICIgY2FsbF9pbmRpcmVjdCBhcmd1bWVudHMiKTsKQEAgLTEyMjIsNyArMTIyNSw3
IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBm
b3IgKHNpemVfdCBpID0gZmlyc3RBcmd1bWVudEluZGV4OyBpIDwgbV9leHByZXNzaW9uU3RhY2su
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJl
c3Npb25TdGFjay5hdChpKTsKICAgICAgICAgICAgIGlmIChpIDwgbV9leHByZXNzaW9uU3RhY2su
c2l6ZSgpIC0gMSkKLSAgICAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZy50
eXBlKCkgIT0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgp
LCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJnLnR5
cGUoKSwgIiwgZXhwZWN0ZWQgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFy
Z3VtZW50SW5kZXgpKTsKKyAgICAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFy
Zy50eXBlKCkgIT0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5k
ZXgpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJn
LnR5cGUoKS5raW5kLCAiLCBleHBlY3RlZCAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAt
IGZpcnN0QXJndW1lbnRJbmRleCkua2luZCk7CiAgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFw
cGVuZChhcmcpOwogICAgICAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7
CiAgICAgICAgIH0KQEAgLTEyMzYsNyArMTIzOSw2IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NU
T1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAg
Y2FzZSBCbG9jazogewogICAgICAgICBCbG9ja1NpZ25hdHVyZSBpbmxpbmVTaWduYXR1cmU7CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlQmxvY2tTaWduYXR1cmUobV9pbmZvLCBp
bmxpbmVTaWduYXR1cmUpLCAiY2FuJ3QgZ2V0IGJsb2NrJ3Mgc2lnbmF0dXJlIik7CkBAIC0xMjQ1
LDcgKzEyNDcsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkK
ICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gaW5s
aW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAg
ICAgICBUeXBlIHR5cGUgPSBtX2V4cHJlc3Npb25TdGFjay5hdChvZmZzZXQgKyBpKS50eXBlKCk7
Ci0gICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHR5cGUgIT0gaW5saW5lU2lnbmF0
dXJlLT5hcmd1bWVudChpKSwgIkJsb2NrIGV4cGVjdHMgdGhlIGFyZ3VtZW50IGF0IGluZGV4Iiwg
aSwgIiB0byBiZSAiLCBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50KGkpLCAiIGJ1dCBhcmd1bWVu
dCBoYXMgdHlwZSAiLCB0eXBlKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYo
dHlwZSAhPSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50KGkpLCAiQmxvY2sgZXhwZWN0cyB0aGUg
YXJndW1lbnQgYXQgaW5kZXgiLCBpLCAiIHRvIGJlICIsIGlubGluZVNpZ25hdHVyZS0+YXJndW1l
bnQoaSkua2luZCwgIiBidXQgYXJndW1lbnQgaGFzIHR5cGUgIiwgdHlwZS5raW5kKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGludDY0X3Qgb2xkU2l6ZSA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUo
KTsKQEAgLTEyNjgsNyArMTI3MCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENS
RUFURV9DQVNFKQogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5z
aXplKCkgLSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpOyArK2kp
IHsKICAgICAgICAgICAgIFR5cGUgdHlwZSA9IG1fZXhwcmVzc2lvblN0YWNrLmF0KG9mZnNldCAr
IGkpLnR5cGUoKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodHlwZSAhPSBp
bmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50KGkpLCAiTG9vcCBleHBlY3RzIHRoZSBhcmd1bWVudCBh
dCBpbmRleCIsIGksICIgdG8gYmUgIiwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudChpKSwgIiBi
dXQgYXJndW1lbnQgaGFzIHR5cGUgIiwgdHlwZSk7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKHR5cGUgIT0gaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudChpKSwgIkxvb3AgZXhw
ZWN0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXgiLCBpLCAiIHRvIGJlICIsIGlubGluZVNpZ25hdHVy
ZS0+YXJndW1lbnQoaSkua2luZCwgIiBidXQgYXJndW1lbnQgaGFzIHR5cGUgIiwgdHlwZS5raW5k
KTsKICAgICAgICAgfQogCiAgICAgICAgIGludDY0X3Qgb2xkU2l6ZSA9IG1fZXhwcmVzc2lvblN0
YWNrLnNpemUoKTsKQEAgLTEyODksMTEgKzEyOTEsMTEgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllf
U1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNl
QmxvY2tTaWduYXR1cmUobV9pbmZvLCBpbmxpbmVTaWduYXR1cmUpLCAiY2FuJ3QgZ2V0IGlmJ3Mg
c2lnbmF0dXJlIik7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8o
Y29uZGl0aW9uLCAiaWYgY29uZGl0aW9uIik7CiAKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRihjb25kaXRpb24udHlwZSgpICE9IEkzMiwgImlmIGNvbmRpdGlvbiBtdXN0IGJlIGkzMiwg
Z290ICIsIGNvbmRpdGlvbi50eXBlKCkpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lG
KCFjb25kaXRpb24udHlwZSgpLmlzSTMyKCksICJpZiBjb25kaXRpb24gbXVzdCBiZSBpMzIsIGdv
dCAiLCBjb25kaXRpb24udHlwZSgpLmtpbmQpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlM
X0lGKG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRD
b3VudCgpLCAiVG9vIGZldyBhcmd1bWVudHMgb24gc3RhY2sgZm9yIGlmIGJsb2NrLiBJZiBleHBl
Y3RzICIsIGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiLCBidXQgb25seSAiLCBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50LiBJZiBibG9jayBoYXMgc2ln
bmF0dXJlOiAiLCBpbmxpbmVTaWduYXR1cmUtPnRvU3RyaW5nKCkpOwogICAgICAgICB1bnNpZ25l
ZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBpbmxpbmVTaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlubGluZVNp
Z25hdHVyZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgICAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrW29mZnNldCArIGldLnR5cGUoKSAhPSBpbmxpbmVT
aWduYXR1cmUtPmFyZ3VtZW50KGkpLCAiTG9vcCBleHBlY3RzIHRoZSBhcmd1bWVudCBhdCBpbmRl
eCIsIGksICIgdG8gYmUgIiwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudChpKSwgIiBidXQgYXJn
dW1lbnQgaGFzIHR5cGUgIiwgbV9leHByZXNzaW9uU3RhY2tbaV0udHlwZSgpKTsKKyAgICAgICAg
ICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0u
dHlwZSgpICE9IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnQoaSksICJMb29wIGV4cGVjdHMgdGhl
IGFyZ3VtZW50IGF0IGluZGV4IiwgaSwgIiB0byBiZSAiLCBpbmxpbmVTaWduYXR1cmUtPmFyZ3Vt
ZW50KGkpLmtpbmQsICIgYnV0IGFyZ3VtZW50IGhhcyB0eXBlICIsIG1fZXhwcmVzc2lvblN0YWNr
W2ldLnR5cGUoKS5raW5kKTsKIAogICAgICAgICBpbnQ2NF90IG9sZFNpemUgPSBtX2V4cHJlc3Np
b25TdGFjay5zaXplKCk7CiAgICAgICAgIFN0YWNrIG5ld1N0YWNrOwpAQCAtMTMyNywxMCArMTMy
OSwxMCBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAg
ICAgVHlwZWRFeHByZXNzaW9uIGNvbmRpdGlvbjsKICAgICAgICAgaWYgKG1fY3VycmVudE9wY29k
ZSA9PSBCcklmKSB7CiAgICAgICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19J
TlRPKGNvbmRpdGlvbiwgImJyIC8gYnJfaWYgY29uZGl0aW9uIik7Ci0gICAgICAgICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKGNvbmRpdGlvbi50eXBlKCkgIT0gSTMyLCAiY29uZGl0aW9uYWwg
YnJhbmNoIHdpdGggbm9uLWkzMiBjb25kaXRpb24gIiwgY29uZGl0aW9uLnR5cGUoKSk7CisgICAg
ICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFjb25kaXRpb24udHlwZSgpLmlzSTMyKCks
ICJjb25kaXRpb25hbCBicmFuY2ggd2l0aCBub24taTMyIGNvbmRpdGlvbiAiLCBjb25kaXRpb24u
dHlwZSgpLmtpbmQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV91bnJlYWNoYWJs
ZUJsb2NrcyA9IDE7Ci0gICAgICAgICAgICBjb25kaXRpb24gPSBUeXBlZEV4cHJlc3Npb24geyBW
b2lkLCBDb250ZXh0OjplbXB0eUV4cHJlc3Npb24oKSB9OworICAgICAgICAgICAgY29uZGl0aW9u
ID0gVHlwZWRFeHByZXNzaW9uIHsgVHlwZXM6OlZvaWQsIENvbnRleHQ6OmVtcHR5RXhwcmVzc2lv
bigpIH07CiAgICAgICAgIH0KIAogICAgICAgICBDb250cm9sVHlwZSYgZGF0YSA9IG1fY29udHJv
bFN0YWNrW21fY29udHJvbFN0YWNrLnNpemUoKSAtIDEgLSB0YXJnZXRdLmNvbnRyb2xEYXRhOwpA
QCAtMTM2MSwxMyArMTM2MywxMyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVB
VEVfQ0FTRSkKICAgICAgICAgQ29udHJvbFR5cGUmIGRlZmF1bHRUYXJnZXQgPSBtX2NvbnRyb2xT
dGFja1ttX2NvbnRyb2xTdGFjay5zaXplKCkgLSAxIC0gZGVmYXVsdFRhcmdldEluZGV4XS5jb250
cm9sRGF0YTsKIAogICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGNv
bmRpdGlvbiwgImJyX3RhYmxlIGNvbmRpdGlvbiIpOwotICAgICAgICBXQVNNX1ZBTElEQVRPUl9G
QUlMX0lGKGNvbmRpdGlvbi50eXBlKCkgIT0gSTMyLCAiYnJfdGFibGUgd2l0aCBub24taTMyIGNv
bmRpdGlvbiAiLCBjb25kaXRpb24udHlwZSgpKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighY29uZGl0aW9uLnR5cGUoKS5pc0kzMigpLCAiYnJfdGFibGUgd2l0aCBub24taTMyIGNv
bmRpdGlvbiAiLCBjb25kaXRpb24udHlwZSgpLmtpbmQpOwogCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0YXJnZXRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBDb250cm9s
VHlwZSogdGFyZ2V0ID0gdGFyZ2V0c1tpXTsKICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoZGVmYXVsdFRhcmdldC5icmFuY2hUYXJnZXRBcml0eSgpICE9IHRhcmdldC0+YnJhbmNo
VGFyZ2V0QXJpdHkoKSwgImJyX3RhYmxlIHRhcmdldCB0eXBlIHNpemUgbWlzbWF0Y2guIERlZmF1
bHQgaGFzIHNpemU6ICIsIGRlZmF1bHRUYXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKSwgImJ1dCB0
YXJnZXQ6ICIsIGksICIgaGFzIHNpemU6ICIsIHRhcmdldC0+YnJhbmNoVGFyZ2V0QXJpdHkoKSk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHR5cGUgPSAwOyB0eXBlIDwgZGVmYXVsdFRhcmdl
dC5icmFuY2hUYXJnZXRBcml0eSgpOyArK3R5cGUpCi0gICAgICAgICAgICAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRihkZWZhdWx0VGFyZ2V0LmJyYW5jaFRhcmdldFR5cGUodHlwZSkgIT0gdGFy
Z2V0LT5icmFuY2hUYXJnZXRUeXBlKHR5cGUpLCAiYnJfdGFibGUgdGFyZ2V0IHR5cGUgbWlzbWF0
Y2ggYXQgb2Zmc2V0ICIsIHR5cGUsICIgZXhwZWN0ZWQ6ICIsIGRlZmF1bHRUYXJnZXQuYnJhbmNo
VGFyZ2V0VHlwZSh0eXBlKSwgIiBidXQgc2F3OiAiLCB0YXJnZXQtPmJyYW5jaFRhcmdldFR5cGUo
dHlwZSksICIgd2hlbiB0YXJnZXRpbmcgYmxvY2s6ICIsIHRhcmdldC0+c2lnbmF0dXJlKCktPnRv
U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoZGVmYXVs
dFRhcmdldC5icmFuY2hUYXJnZXRUeXBlKHR5cGUpICE9IHRhcmdldC0+YnJhbmNoVGFyZ2V0VHlw
ZSh0eXBlKSwgImJyX3RhYmxlIHRhcmdldCB0eXBlIG1pc21hdGNoIGF0IG9mZnNldCAiLCB0eXBl
LCAiIGV4cGVjdGVkOiAiLCBkZWZhdWx0VGFyZ2V0LmJyYW5jaFRhcmdldFR5cGUodHlwZSkua2lu
ZCwgIiBidXQgc2F3OiAiLCB0YXJnZXQtPmJyYW5jaFRhcmdldFR5cGUodHlwZSkua2luZCwgIiB3
aGVuIHRhcmdldGluZyBibG9jazogIiwgdGFyZ2V0LT5zaWduYXR1cmUoKS0+dG9TdHJpbmcoKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKGNoZWNrQnJh
bmNoVGFyZ2V0KGRlZmF1bHRUYXJnZXQpKTsKQEAgLTE0MjYsMTEgKzE0MjgsMTEgQEAgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAKICAgICAgICAgVHlwZWRFeHBy
ZXNzaW9uIGRlbHRhOwogICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRP
KGRlbHRhLCAiZXhwZWN0IGFuIGkzMiBhcmd1bWVudCB0byBncm93X21lbW9yeSBvbiB0aGUgc3Rh
Y2siKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihkZWx0YS50eXBlKCkgIT0gSTMy
LCAiZ3Jvd19tZW1vcnkgd2l0aCBub24taTMyIGRlbHRhIGFyZ3VtZW50IGhhcyB0eXBlOiAiLCBk
ZWx0YS50eXBlKCkpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFkZWx0YS50eXBl
KCkuaXNJMzIoKSwgImdyb3dfbWVtb3J5IHdpdGggbm9uLWkzMiBkZWx0YSBhcmd1bWVudCBoYXMg
dHlwZTogIiwgZGVsdGEudHlwZSgpLmtpbmQpOwogCiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJl
c3VsdDsKICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkR3Jvd01lbW9yeShkZWx0
YSwgcmVzdWx0KSk7Ci0gICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVu
ZChJMzIsIHJlc3VsdCk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFw
cGVuZChUeXBlczo6STMyLCByZXN1bHQpOwogCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpA
QCAtMTQ0NCw3ICsxNDQ2LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRF
X0NBU0UpCiAKICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwogICAgICAgICBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRDdXJyZW50TWVtb3J5KHJlc3VsdCkpOwotICAgICAgICBtX2V4
cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoSTMyLCByZXN1bHQpOworICAgICAgICBt
X2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoVHlwZXM6OkkzMiwgcmVzdWx0KTsK
IAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUdsb2JhbC5jcHAKaW5kZXggMjgxOWZhNGU3Mjg2N2Y0ZjFiNmM5NWFiODQyNGJkZTBhZjZh
M2NjOC4uOWJlMWZmZTgyNDRhNWY3MWVmMTNmYzdkM2RhODE2MmVlMmJlMjk5NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKQEAgLTM3LDE3ICszNywxNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBKU1ZhbHVlIEdsb2JhbDo6Z2V0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChtX3R5cGUp
IHsKLSAgICBjYXNlIFdhc206OlR5cGU6OkkzMjoKKyAgICBzd2l0Y2ggKG1fdHlwZS5raW5kKSB7
CisgICAgY2FzZSBUeXBlS2luZDo6STMyOgogICAgICAgICByZXR1cm4ganNOdW1iZXIoYml0d2lz
ZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlLm1fcHJpbWl0aXZl
KSkpOwotICAgIGNhc2UgV2FzbTo6VHlwZTo6STY0OgorICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoK
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3ZhbHVlLm1fcHJpbWl0aXZlKSk7Ci0gICAg
Y2FzZSBXYXNtOjpUeXBlOjpGMzI6CisgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBy
ZXR1cm4ganNOdW1iZXIocHVyaWZ5TmFOKHN0YXRpY19jYXN0PGRvdWJsZT4oYml0d2lzZV9jYXN0
PGZsb2F0PihzdGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZS5tX3ByaW1pdGl2ZSkpKSkpOwot
ICAgIGNhc2UgV2FzbTo6VHlwZTo6RjY0OgorICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKICAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKHB1cmlmeU5hTihiaXR3aXNlX2Nhc3Q8ZG91YmxlPihtX3ZhbHVl
Lm1fcHJpbWl0aXZlKSkpOwotICAgIGNhc2UgV2FzbTo6RXh0ZXJucmVmOgotICAgIGNhc2UgV2Fz
bTo6RnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgY2FzZSBUeXBl
S2luZDo6RnVuY3JlZjoKICAgICAgICAgcmV0dXJuIG1fdmFsdWUubV9leHRlcm5yZWYuZ2V0KCk7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC01OSwzNyAr
NTksMzcgQEAgdm9pZCBHbG9iYWw6OnNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGFyZ3VtZW50KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQobV9t
dXRhYmlsaXR5ICE9IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpJbW11dGFibGUpOwotICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBXYXNtOjpUeXBlOjpJMzI6IHsKKyAgICBzd2l0Y2gg
KG1fdHlwZS5raW5kKSB7CisgICAgY2FzZSBUeXBlS2luZDo6STMyOiB7CiAgICAgICAgIGludDMy
X3QgdmFsdWUgPSBhcmd1bWVudC50b0ludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdm9pZCgpKTsKICAgICAgICAgbV92YWx1ZS5tX3By
aW1pdGl2ZSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFs
dWUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgV2FzbTo6VHlwZTo6STY0OiB7
CisgICAgY2FzZSBUeXBlS2luZDo6STY0OiB7CiAgICAgICAgIGludDY0X3QgdmFsdWUgPSBhcmd1
bWVudC50b0JpZ0ludDY0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgdm9pZCgpKTsKICAgICAgICAgbV92YWx1ZS5tX3ByaW1pdGl2ZSA9IHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBj
YXNlIFdhc206OlR5cGU6OkYzMjogeworICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjogewogICAgICAg
ICBmbG9hdCB2YWx1ZSA9IGFyZ3VtZW50LnRvRmxvYXQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwogICAgICAgICBtX3ZhbHVl
Lm1fcHJpbWl0aXZlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50MzJf
dD4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgV2FzbTo6VHlwZTo6
RjY0OiB7CisgICAgY2FzZSBUeXBlS2luZDo6RjY0OiB7CiAgICAgICAgIGRvdWJsZSB2YWx1ZSA9
IGFyZ3VtZW50LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdm9pZCgpKTsKICAgICAgICAgbV92YWx1ZS5tX3ByaW1pdGl2ZSA9
IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4odmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgY2FzZSBXYXNtOjpFeHRlcm5yZWY6IHsKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vd25lcik7CiAgICAgICAgIG1fdmFsdWUubV9l
eHRlcm5yZWYuc2V0KG1fb3duZXItPnZtKCksIG1fb3duZXIsIGFyZ3VtZW50KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIGNhc2UgV2FzbTo6RnVuY3JlZjogeworICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmNyZWY6IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vd25lcik7CiAgICAgICAg
IGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJndW1lbnQpICYmICFhcmd1bWVu
dC5pc051bGwoKSkgewogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKGdsb2JhbE9iamVjdCwg
dm0sICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIpKTsKQEAgLTEw
Niw5ICsxMDYsOSBAQCB2b2lkIEdsb2JhbDo6c2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgYXJndW1lbnQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgogdm9pZCBH
bG9iYWw6OnZpc2l0QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHN3aXRj
aCAobV90eXBlKSB7Ci0gICAgY2FzZSBXYXNtOjpUeXBlOjpFeHRlcm5yZWY6Ci0gICAgY2FzZSBX
YXNtOjpUeXBlOjpGdW5jcmVmOiB7CisgICAgc3dpdGNoIChtX3R5cGUua2luZCkgeworICAgIGNh
c2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOiB7CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb3duZXIpOwogICAgICAgICB2aXNpdG9yLmFwcGVuZCht
X3ZhbHVlLm1fZXh0ZXJucmVmKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCAwOTQ0NzdkOTY2OTAz
YzI1NzBhNjNjMTcxMDdhODhlY2Q0MDA5OGQ1Li5hNGM2ODY1M2NlNmUwYTY5MzUzMWVmNDk0NzE5
NTBjNmY1MmQ2MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludEdlbmVyYXRvci5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgbV9qc051bGxDb25zdGFudCA9IFZpcnR1YWxSZWdpc3RlcihGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCArIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5zaXplKCkpOwogICAgICAgICAgICAg
bV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLmFwcGVuZChKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkp
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wR2VuZXJhdGVkV2FzbUJ5
dGVjb2RlcygpKSkKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25zdGFudFR5cGVz
LmFwcGVuZChUeXBlOjpFeHRlcm5yZWYpOworICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5t
X2NvbnN0YW50VHlwZXMuYXBwZW5kKFR5cGVzOjpFeHRlcm5yZWYpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBtX2pzTnVsbENvbnN0YW50OwogICAgIH0KQEAgLTMwNiw3ICszMDYsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV96ZXJvQ29uc3RhbnQgPSBWaXJ0dWFsUmVnaXN0ZXIoRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX2NvZGVCbG9jay0+bV9jb25zdGFudHMuc2l6ZSgp
KTsKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5hcHBlbmQoMCk7CiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEdlbmVyYXRlZFdhc21CeXRlY29kZXMo
KSkpCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRUeXBlcy5hcHBlbmQo
VHlwZTo6STMyKTsKKyAgICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25zdGFudFR5cGVz
LmFwcGVuZChUeXBlczo6STMyKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV96ZXJvQ29u
c3RhbnQ7CiAgICAgfQpAQCAtNTM0LDI1ICs1MzQsMjUgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6
Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBM
TEkKICAgICB1aW50MzJfdCBzdGFja0luZGV4ID0gMDsKIAogICAgIGF1dG8gYWxsb2NhdGVTdGFj
a1JlZ2lzdGVyID0gWyZdKFR5cGUgdHlwZSkgewotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICAgICAgY2FzZSBUeXBlOjpJMzI6Ci0gICAgICAgIGNhc2UgVHlwZTo6STY0OgotICAgICAgICBj
YXNlIFR5cGU6OkV4dGVybnJlZjoKLSAgICAgICAgY2FzZSBUeXBlOjpGdW5jcmVmOgorICAgICAg
ICBzd2l0Y2ggKHR5cGUua2luZCkgeworICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVm
OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAgICAgICAgaWYgKGdwcklu
ZGV4IDwgZ3ByQ291bnQpCiAgICAgICAgICAgICAgICAgKytncHJJbmRleDsKICAgICAgICAgICAg
IGVsc2UgaWYgKHN0YWNrSW5kZXgrKyA+PSBzdGFja0NvdW50KQogICAgICAgICAgICAgICAgICsr
c3RhY2tDb3VudDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGU6OkYzMjoK
LSAgICAgICAgY2FzZSBUeXBlOjpGNjQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKKyAg
ICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgogICAgICAgICAgICAgaWYgKGZwckluZGV4IDwgZnBy
Q291bnQpCiAgICAgICAgICAgICAgICAgKytmcHJJbmRleDsKICAgICAgICAgICAgIGVsc2UgaWYg
KHN0YWNrSW5kZXgrKyA+PSBzdGFja0NvdW50KQogICAgICAgICAgICAgICAgICsrc3RhY2tDb3Vu
dDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZvaWQ6Ci0gICAgICAgIGNhc2Ug
RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6RnVuYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KICAgICB9OwpAQCAtNTg5LDI1ICs1ODksMjUgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6
Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBM
TEkKICAgICBncHJJbmRleCA9IGJhc2UgLSBzdGFja0NvdW50OwogICAgIGZwckluZGV4ID0gZ3By
SW5kZXggLSBncHJDb3VudDsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJl
LmFyZ3VtZW50Q291bnQoKTsgaSsrKSB7Ci0gICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3Vt
ZW50KGkpKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6STMyOgotICAgICAgICBjYXNlIFR5cGU6Okk2
NDoKLSAgICAgICAgY2FzZSBUeXBlOjpFeHRlcm5yZWY6Ci0gICAgICAgIGNhc2UgVHlwZTo6RnVu
Y3JlZjoKKyAgICAgICAgc3dpdGNoIChzaWduYXR1cmUuYXJndW1lbnQoaSkua2luZCkgeworICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKKyAg
ICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
dW5jcmVmOgogICAgICAgICAgICAgaWYgKGdwckluZGV4ID4gZ3ByTGltaXQpCiAgICAgICAgICAg
ICAgICAgYXJndW1lbnRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoLS1ncHJJbmRleCk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoLS1zdGFja0luZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFR5cGU6OkYzMjoKLSAgICAgICAgY2FzZSBUeXBlOjpGNjQ6CisgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OkYzMjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgogICAgICAgICAg
ICAgaWYgKGZwckluZGV4ID4gZnByTGltaXQpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzW2ld
ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoLS1mcHJJbmRleCk7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
LS1zdGFja0luZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZvaWQ6Ci0g
ICAgICAgIGNhc2UgRnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKKyAgICAgICAg
Y2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTYsMjUgKzYxNiwyNSBAQCBhdXRvIExMSW50
R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUpIC0+IExMSQogICAgIGdwckluZGV4ID0gYmFzZSAtIHN0YWNrQ291bnQ7CiAgICAgZnBy
SW5kZXggPSBncHJJbmRleCAtIGdwckNvdW50OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsrKSB7Ci0gICAgICAgIHN3aXRjaCAoc2lnbmF0
dXJlLnJldHVyblR5cGUoaSkpIHsKLSAgICAgICAgY2FzZSBUeXBlOjpJMzI6Ci0gICAgICAgIGNh
c2UgVHlwZTo6STY0OgotICAgICAgICBjYXNlIFR5cGU6OkV4dGVybnJlZjoKLSAgICAgICAgY2Fz
ZSBUeXBlOjpGdW5jcmVmOgorICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkp
LmtpbmQpIHsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgorICAgICAgICBjYXNlIFR5cGVL
aW5kOjpJNjQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuY3JlZjoKICAgICAgICAgICAgIGlmIChncHJJbmRleCA+IGdwckxpbWl0
KQogICAgICAgICAgICAgICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbCgtLWdwckluZGV4KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0
ZW1wb3JhcnlSZXN1bHRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoLS1zdGFja0luZGV4
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGU6OkYzMjoKLSAgICAgICAg
Y2FzZSBUeXBlOjpGNjQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKKyAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RjY0OgogICAgICAgICAgICAgaWYgKGZwckluZGV4ID4gZnByTGltaXQpCiAg
ICAgICAgICAgICAgICAgdGVtcG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKC0tZnBySW5kZXgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRlbXBv
cmFyeVJlc3VsdHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVm9pZDoKLSAgICAgICAgY2FzZSBGdW5j
OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
dW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTY3MSwyNSArNjcxLDI1IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJ
bmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gVmVjCiAg
ICAgY29uc3QgdWludDMyX3QgbWF4RlBSSW5kZXggPSBtYXhHUFJJbmRleCArIGZwckNvdW50Owog
CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyBp
KyspIHsKLSAgICAgICAgc3dpdGNoIChzaWduYXR1cmUucmV0dXJuVHlwZShpKSkgewotICAgICAg
ICBjYXNlIFR5cGU6OkkzMjoKLSAgICAgICAgY2FzZSBUeXBlOjpJNjQ6Ci0gICAgICAgIGNhc2Ug
VHlwZTo6RXh0ZXJucmVmOgotICAgICAgICBjYXNlIFR5cGU6OkZ1bmNyZWY6CisgICAgICAgIHN3
aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoaSkua2luZCkgeworICAgICAgICBjYXNlIFR5cGVL
aW5kOjpJMzI6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKKyAgICAgICAgY2FzZSBUeXBl
S2luZDo6RXh0ZXJucmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAg
ICAgICAgaWYgKGdwckluZGV4IDwgbWF4R1BSSW5kZXgpCiAgICAgICAgICAgICAgICAgbV9yZXN1
bHRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChudW1iZXJPZkxMSW50Q2FsbGVlU2F2
ZVJlZ2lzdGVycyArIGdwckluZGV4KyspKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBtX3Jlc3VsdHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5n
VGhpcyhzdGFja0luZGV4KyspKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5
cGU6OkYzMjoKLSAgICAgICAgY2FzZSBUeXBlOjpGNjQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkYzMjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgogICAgICAgICAgICAgaWYgKGZwcklu
ZGV4IDwgbWF4RlBSSW5kZXgpCiAgICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCh2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVycyArIGZw
ckluZGV4KyspKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtX3Jlc3VsdHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4
KyspKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZvaWQ6Ci0gICAgICAgIGNh
c2UgRnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKKyAgICAgICAgY2FzZSBUeXBl
S2luZDo6RnVuYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03MjUsMTkgKzcyNSwxOSBAQCBhdXRvIExMSW50R2VuZXJhdG9y
OjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFBhcnRpYWxSZXN1
bHQKICAgICB9OwogCiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5hcmd1
bWVudENvdW50KCk7IGkrKykgewotICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5hcmd1bWVudChp
KSkgewotICAgICAgICBjYXNlIFR5cGU6OkkzMjoKLSAgICAgICAgY2FzZSBUeXBlOjpJNjQ6Ci0g
ICAgICAgIGNhc2UgVHlwZTo6RXh0ZXJucmVmOgotICAgICAgICBjYXNlIFR5cGU6OkZ1bmNyZWY6
CisgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpLmtpbmQpIHsKKyAgICAgICAg
Y2FzZSBUeXBlS2luZDo6STMyOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CisgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3Jl
ZjoKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGksIGdwckluZGV4LCBtYXhHUFJJbmRleCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpGMzI6Ci0gICAgICAgIGNhc2Ug
VHlwZTo6RjY0OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CisgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkY2NDoKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGksIGZwckluZGV4LCBtYXhGUFJJ
bmRleCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWb2lkOgotICAgICAgICBj
YXNlIEZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CisgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkZ1bmM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNzUyLDkgKzc1Miw5IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6
OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKICAgICBtX2NvZGVCbG9jay0+bV9udW1WYXJzICs9IGNv
dW50OwotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgVHlwZTo6RXh0ZXJucmVmOgotICAg
IGNhc2UgVHlwZTo6RnVuY3JlZjoKKyAgICBzd2l0Y2ggKHR5cGUua2luZCkgeworICAgIGNhc2Ug
VHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAg
ICB3aGlsZSAoY291bnQtLSkKICAgICAgICAgICAgIG1fdW5pdGlhbGl6ZWRMb2NhbHMuYXBwZW5k
KHB1c2goTm9Db25zaXN0ZW5jeUNoZWNrKSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCmluZGV4IGYwNjJkNjQxNjA2ZjBi
N2U3OGVlNTE0YTE1MDVmYzVlMmY3NjZhN2UuLjNiNTBjNmFhYTc1NDJhNmZiZmUwY2JiZDNiNWQ5
Y2NiZDgwYzA2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0
aW9ucy5jcHAKQEAgLTU0OCwyNiArNTQ4LDI2IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JdGVyYXRlUmVzdWx0cywgdm9pZCwgKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJCiAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBidWZmZXIuYXQoaW5kZXgpOwogCiAgICAgICAgIHVpbnQ2
NF90IHVuYm94ZWRWYWx1ZSA9IDA7Ci0gICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5yZXR1cm5U
eXBlKGluZGV4KSkgewotICAgICAgICBjYXNlIEkzMjoKKyAgICAgICAgc3dpdGNoIChzaWduYXR1
cmUtPnJldHVyblR5cGUoaW5kZXgpLmtpbmQpIHsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STMy
OgogICAgICAgICAgICAgdW5ib3hlZFZhbHVlID0gdmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3Qp
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSTY0OgorICAgICAgICBjYXNlIFR5
cGVLaW5kOjpJNjQ6CiAgICAgICAgICAgICB1bmJveGVkVmFsdWUgPSB2YWx1ZS50b0JpZ0ludDY0
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGMzI6Cisg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAgICAgICAgIHVuYm94ZWRWYWx1ZSA9IGJp
dHdpc2VfY2FzdDx1aW50MzJfdD4odmFsdWUudG9GbG9hdChnbG9iYWxPYmplY3QpKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEY2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6
RjY0OgogICAgICAgICAgICAgdW5ib3hlZFZhbHVlID0gYml0d2lzZV9jYXN0PHVpbnQ2NF90Pih2
YWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEZ1bmNyZWY6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAg
ICAgICBpZiAoIXZhbHVlLmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZ1bmNyZWYgdmFsdWUgaXMgbm90IGEgZnVu
Y3Rpb24iX3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIEV4dGVybnJlZjoKKyAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAgICAgICAgdW5ib3hlZFZhbHVlID0gYml0d2lz
ZV9jYXN0PHVpbnQ2NF90Pih2YWx1ZSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRp
b25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSk7CiAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAppbmRleCBlYzlkZTMwYmRkZWZhZjU4
OWNiNmUyM2VkM2QwNDljNDYzZTUwZjlmLi4yODY4NmI1M2Q0YzljYmYyZTQ4N2E4ODcyNTViNjFh
NzgyMTk5MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFy
c2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC0y
NzUsMTAgKzI3NSwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6
cGFyc2VWYXJVSW50MSh1aW50OF90JiByZXN1bHQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNz
VHlwZT4KIEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlh
bFJlc3VsdCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUJsb2NrU2lnbmF0dXJlKGNvbnN0IE1v
ZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCbG9ja1NpZ25hdHVyZSYgcmVzdWx0KQogewotICAgIGlu
dDhfdCB2YWx1ZTsKLSAgICBpZiAocGVla0ludDcodmFsdWUpICYmIGlzVmFsaWRUeXBlKHZhbHVl
KSkgewotICAgICAgICBUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7Ci0gICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIShpc1ZhbHVlVHlwZSh0eXBlKSB8fCB0eXBlID09IFZv
aWQpLCAicmVzdWx0IHR5cGUgb2YgYmxvY2s6ICIsIG1ha2VTdHJpbmcodHlwZSksICIgaXMgbm90
IGEgdmFsdWUgdHlwZSBvciBWb2lkIik7CisgICAgaW50OF90IHR5cGVLaW5kOworICAgIGlmIChw
ZWVrSW50Nyh0eXBlS2luZCkgJiYgaXNWYWxpZFR5cGVLaW5kKHR5cGVLaW5kKSkgeworICAgICAg
ICBUeXBlIHR5cGUgPSB7c3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KHR5cGVLaW5kKSwgMH07CisgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIShpc1ZhbHVlVHlwZSh0eXBlKSB8fCB0eXBlLmlzVm9p
ZCgpKSwgInJlc3VsdCB0eXBlIG9mIGJsb2NrOiAiLCBtYWtlU3RyaW5nKHR5cGUua2luZCksICIg
aXMgbm90IGEgdmFsdWUgdHlwZSBvciBWb2lkIik7CiAgICAgICAgIHJlc3VsdCA9IG1fc2lnbmF0
dXJlSW5mb3JtYXRpb24udGh1bmtGb3IodHlwZSk7CiAgICAgICAgIG1fb2Zmc2V0Kys7CiAgICAg
ICAgIHJldHVybiB7IH07CkBAIC0yOTgsMTIgKzI5OCwxMyBAQCBBTFdBWVNfSU5MSU5FIHR5cGVu
YW1lIFBhcnNlcjxTdWNjZXNzVHlwZT46OlBhcnRpYWxSZXN1bHQgUGFyc2VyPFN1Y2Nlc3NUeXBl
Pjo6cAogdGVtcGxhdGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+CiBBTFdBWVNfSU5MSU5FIGJvb2wg
UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoVHlwZSYgcmVzdWx0KQogewotICAg
IGludDhfdCB2YWx1ZTsKLSAgICBpZiAoIXBhcnNlSW50Nyh2YWx1ZSkpCisgICAgaW50OF90IGtp
bmQ7CisgICAgaWYgKCFwYXJzZUludDcoa2luZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWlzVmFsaWRUeXBlKHZhbHVlKSB8fCAhaXNWYWx1ZVR5cGUoc3RhdGljX2Nhc3Q8VHlw
ZT4odmFsdWUpKSkKKyAgICBUeXBlIHR5cGUgPSB7c3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KGtpbmQp
LCAwfTsKKyAgICBpZiAoIWlzVmFsaWRUeXBlS2luZChraW5kKSB8fCAhaXNWYWx1ZVR5cGUodHlw
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxUeXBl
Pih2YWx1ZSk7CisgICAgcmVzdWx0ID0gdHlwZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4
IDMzNTQ4NTQ5MzI1Y2E3OTk1Y2MwMmNkMjQzMzg2NWJkMjMxMTgyMzYuLjI4Yzk4MjAyMjIzZGVi
NzY1MTUwZjA1MTNkMWQwOGYzMGRmMTNhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYXV0byBTZWN0
aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIFZlY3RvcjxU
eXBlPiBhcmd1bWVudFR5cGVzOwogCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNl
SW50Nyh0eXBlKSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHR5cGUiKTsKLSAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRih0eXBlICE9IEZ1bmMsIGksICJ0aCBUeXBlIGlzIG5vbi1GdW5j
ICIsIHR5cGUpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGUgIT0gc3RhdGljX2Nh
c3Q8aW50OF90PihUeXBlS2luZDo6RnVuYyksIGksICJ0aCBUeXBlIGlzIG5vbi1GdW5jICIsIHR5
cGUpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihhcmd1bWVu
dENvdW50KSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIGFyZ3VtZW50IGNvdW50Iik7CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+IG1heEZ1bmN0aW9uUGFy
YW1zLCBpLCAidGggYXJndW1lbnQgY291bnQgaXMgdG9vIGJpZyAiLCBhcmd1bWVudENvdW50LCAi
IG1heGltdW0gIiwgbWF4RnVuY3Rpb25QYXJhbXMpOwogICAgICAgICBWZWN0b3I8VHlwZT4gYXJn
dW1lbnRzOwpAQCAtMjA2LDcgKzIwNiw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJs
ZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICBpbnQ4X3QgdHlw
ZTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUludDcodHlwZSksICJjYW4ndCBwYXJz
ZSBUYWJsZSB0eXBlIik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0eXBlICE9IFdhc206OkZ1
bmNyZWYgJiYgdHlwZSAhPSBXYXNtOjpFeHRlcm5yZWYsICJUYWJsZSB0eXBlIHNob3VsZCBiZSBm
dW5jcmVmIG9yIGFueXJlZiwgZ290ICIsIHR5cGUpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
dHlwZSAhPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KFR5cGVLaW5kOjpGdW5jcmVmKSAmJiB0eXBlICE9
IHN0YXRpY19jYXN0PGludDhfdD4oVHlwZUtpbmQ6OkV4dGVybnJlZiksICJUYWJsZSB0eXBlIHNo
b3VsZCBiZSBmdW5jcmVmIG9yIGFueXJlZiwgZ290ICIsIHR5cGUpOwogCiAgICAgdWludDMyX3Qg
aW5pdGlhbDsKICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bTsKQEAgLTIxOCw3ICsyMTgs
NyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIoYm9vbCBpc0ltcG9ydCkg
LT4gUGFydGlhbFJlc3VsdAogCiAgICAgQVNTRVJUKCFtYXhpbXVtIHx8ICptYXhpbXVtID49IGlu
aXRpYWwpOwogCi0gICAgVGFibGVFbGVtZW50VHlwZSB0YWJsZVR5cGUgPSB0eXBlID09IFdhc206
OkZ1bmNyZWYgPyBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmIDogVGFibGVFbGVtZW50VHlwZTo6
RXh0ZXJucmVmOworICAgIFRhYmxlRWxlbWVudFR5cGUgdGFibGVUeXBlID0gdHlwZSA9PSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KFR5cGVLaW5kOjpGdW5jcmVmKSA/IFRhYmxlRWxlbWVudFR5cGU6OkZ1
bmNyZWYgOiBUYWJsZUVsZW1lbnRUeXBlOjpFeHRlcm5yZWY7CiAgICAgbV9pbmZvLT50YWJsZXMu
YXBwZW5kKFRhYmxlSW5mb3JtYXRpb24oaW5pdGlhbCwgbWF4aW11bSwgaXNJbXBvcnQsIHRhYmxl
VHlwZSkpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTMwNCw3ICszMDQsNyBAQCBhdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlR2xvYmFsKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgZ2xv
YmFsLmluaXRpYWxpemF0aW9uVHlwZSA9IEdsb2JhbEluZm9ybWF0aW9uOjpGcm9tUmVmRnVuYzsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ2xvYmFsLmluaXRpYWxpemF0aW9uVHlwZSA9IEds
b2JhbEluZm9ybWF0aW9uOjpGcm9tRXhwcmVzc2lvbjsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRih0eXBlRm9ySW5pdE9wY29kZSAhPSBnbG9iYWwudHlwZSwgIkdsb2JhbCBpbml0X2V4cHIg
b3Bjb2RlIG9mIHR5cGUgIiwgdHlwZUZvckluaXRPcGNvZGUsICIgZG9lc24ndCBtYXRjaCBnbG9i
YWwncyB0eXBlICIsIGdsb2JhbC50eXBlKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0
eXBlRm9ySW5pdE9wY29kZSAhPSBnbG9iYWwudHlwZSwgIkdsb2JhbCBpbml0X2V4cHIgb3Bjb2Rl
IG9mIHR5cGUgIiwgdHlwZUZvckluaXRPcGNvZGUua2luZCwgIiBkb2Vzbid0IG1hdGNoIGdsb2Jh
bCdzIHR5cGUgIiwgZ2xvYmFsLnR5cGUua2luZCk7CiAKICAgICAgICAgaWYgKGluaXRPcGNvZGUg
PT0gUmVmRnVuYykKICAgICAgICAgICAgIG1faW5mby0+YWRkRGVjbGFyZWRGdW5jdGlvbihnbG9i
YWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlcik7CkBAIC00ODUsNyArNDg1LDcgQEAgYXV0byBT
ZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMo
KSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CiAgICAgICAgICAgICBUeXBlIHJlZlR5
cGU7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUocmVmVHlw
ZSksICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0gc2VjdGlvbiIpOwotICAgICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRihyZWZUeXBlICE9IEZ1bmNyZWYsICJyZWZ0eXBlIGluIGVsZW1l
bnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcmVmVHlwZS5pc0Z1bmNyZWYoKSwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9u
IHNob3VsZCBiZSBmdW5jcmVmIik7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7
CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZv
ckVsZW1lbnRTZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKQEAgLTUwOSw3ICs1MDks
NyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQK
IAogICAgICAgICAgICAgVHlwZSByZWZUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighcGFyc2VSZWZUeXBlKHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVt
IHNlY3Rpb24iKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYocmVmVHlwZSAhPSBG
dW5jcmVmLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsK
KyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJy
ZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOwogCiAgICAgICAg
ICAgICB1aW50MzJfdCBpbmRleENvdW50OwogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBF
Ul9GQUlMUyhwYXJzZUluZGV4Q291bnRGb3JFbGVtZW50U2VjdGlvbihpbmRleENvdW50LCBlbGVt
ZW50TnVtKSk7CkBAIC01MjcsNyArNTI3LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVs
ZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKICAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNh
bid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7Ci0gICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKHJlZlR5cGUgIT0gRnVuY3JlZiwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0
aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFyZWZUeXBlLmlzRnVuY3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxk
IGJlIGZ1bmNyZWYiKTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKICAgICAg
ICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleENvdW50Rm9yRWxlbWVu
dFNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90
JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAgICAgICAgIGludDMyX3QgY29uc3RhbnQ7CiAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFySW50MzIoY29uc3RhbnQpLCAiY2FuJ3QgZ2V0
IGNvbnN0YW50IHZhbHVlIGZvciBpbml0X2V4cHIncyBpMzIuY29uc3QiKTsKICAgICAgICAgYml0
c09ySW1wb3J0TnVtYmVyID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnN0YW50KTsKLSAgICAg
ICAgcmVzdWx0VHlwZSA9IEkzMjsKKyAgICAgICAgcmVzdWx0VHlwZSA9IFR5cGVzOjpJMzI7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTcxLDcgKzU3MSw3IEBAIGF1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBv
cnROdW1iZXIsCiAgICAgICAgIGludDY0X3QgY29uc3RhbnQ7CiAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFySW50NjQoY29uc3RhbnQpLCAiY2FuJ3QgZ2V0IGNvbnN0YW50IHZh
bHVlIGZvciBpbml0X2V4cHIncyBpNjQuY29uc3QiKTsKICAgICAgICAgYml0c09ySW1wb3J0TnVt
YmVyID0gY29uc3RhbnQ7Ci0gICAgICAgIHJlc3VsdFR5cGUgPSBJNjQ7CisgICAgICAgIHJlc3Vs
dFR5cGUgPSBUeXBlczo6STY0OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTU3OSw3ICs1
NzksNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2Rl
LCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAgICAgICB1aW50MzJfdCBjb25zdGFu
dDsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50MzIoY29uc3RhbnQpLCAi
Y2FuJ3QgZ2V0IGNvbnN0YW50IHZhbHVlIGZvciBpbml0X2V4cHIncyBmMzIuY29uc3QiKTsKICAg
ICAgICAgYml0c09ySW1wb3J0TnVtYmVyID0gY29uc3RhbnQ7Ci0gICAgICAgIHJlc3VsdFR5cGUg
PSBGMzI7CisgICAgICAgIHJlc3VsdFR5cGUgPSBUeXBlczo6RjMyOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5p
dEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAg
ICAgICB1aW50NjRfdCBjb25zdGFudDsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VVSW50NjQoY29uc3RhbnQpLCAiY2FuJ3QgZ2V0IGNvbnN0YW50IHZhbHVlIGZvciBpbml0X2V4
cHIncyBmNjQuY29uc3QiKTsKICAgICAgICAgYml0c09ySW1wb3J0TnVtYmVyID0gY29uc3RhbnQ7
Ci0gICAgICAgIHJlc3VsdFR5cGUgPSBGNjQ7CisgICAgICAgIHJlc3VsdFR5cGUgPSBUeXBlczo6
RjY0OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTYxNyw3ICs2MTcsNyBAQCBhdXRvIFNl
Y3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0
c09ySW1wb3J0TnVtYmVyLAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMihpbmRleCksICJjYW4ndCBnZXQgcmVmLmZ1bmMgaW5kZXgiKTsKICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihpbmRleCA+PSBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCksICJyZWYuZnVu
YyBpbmRleCIsIGluZGV4LCAiIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBmdW5jdGlvbnMgIiwgbV9p
bmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsKIAotICAgICAgICByZXN1bHRUeXBlID0gRnVuY3JlZjsK
KyAgICAgICAgcmVzdWx0VHlwZSA9IFR5cGVzOjpGdW5jcmVmOwogICAgICAgICBiaXRzT3JJbXBv
cnROdW1iZXIgPSBpbmRleDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjQ3LDcgKzY0Nyw3
IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcihPcHRpb25hbDxJMzJJbml0
RXhwcj4mIGluaXRFeHByLCBBU0NJSUxpdGVyCiAgICAgdWludDY0X3QgaW5pdEV4cHJCaXRzOwog
ICAgIFR5cGUgaW5pdEV4cHJUeXBlOwogICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFy
c2VJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMsIGluaXRFeHByVHlwZSkpOwotICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5pdEV4cHJUeXBlICE9IEkzMiwgZmFpbE1lc3NhZ2UpOwor
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWluaXRFeHByVHlwZS5pc0kzMigpLCBmYWlsTWVzc2Fn
ZSk7CiAgICAgaW5pdEV4cHIgPSBtYWtlSTMySW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4cHJC
aXRzKTsKIAogICAgIHJldHVybiB7IH07CkBAIC02OTMsNyArNjkzLDcgQEAgYXV0byBTZWN0aW9u
UGFyc2VyOjpwYXJzZUVsZW1lbnRTZWdtZW50VmVjdG9yT2ZFeHByZXNzaW9ucyhWZWN0b3I8dWlu
dDMyX3Q+JiByZXMKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFR5cGUgdHlwZU9mTnVs
bDsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZSh0eXBlT2ZO
dWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIGZ1bmMgdHlwZSBpbiBlbGVtIHNlY3Rpb24i
KTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZU9mTnVsbCAhPSBGdW5jcmVm
LCAicmVmLm51bGwgZXh0ZXJuIGlzIGZvcmJpZGRlbiBpbiBlbGVtZW50IHNlY3Rpb24ncywgIiwg
ZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7CisgICAgICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCF0eXBlT2ZOdWxsLmlzRnVuY3JlZigpLCAicmVmLm51
bGwgZXh0ZXJuIGlzIGZvcmJpZGRlbiBpbiBlbGVtZW50IHNlY3Rpb24ncywgIiwgZWxlbWVudE51
bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7CiAgICAgICAgICAgICBmdW5j
dGlvbkluZGV4ID0gRWxlbWVudDo6bnVsbEZ1bmNJbmRleDsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCmluZGV4IGVjOTcxOTgzM2Ix
MjU4MjY1NjFkNmU3ZTZmM2NmMDgwOGMxZWQ3MmIuLjYyNDVhMzFkMDBjMWUwMWU3NDc4MGU3MGIx
MDlhMGU3NWQ2ZGQ2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TaWduYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWdu
YXR1cmUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgU2lnbmF0dXJlOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiKCIpOwogICAgICAgICBDb21tYVBy
aW50ZXIgY29tbWE7CiAgICAgICAgIGZvciAoU2lnbmF0dXJlQXJnQ291bnQgYXJnID0gMDsgYXJn
IDwgYXJndW1lbnRDb3VudCgpOyArK2FyZykKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
bWFrZVN0cmluZyhhcmd1bWVudChhcmcpKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
IG1ha2VTdHJpbmcoYXJndW1lbnQoYXJnKS5raW5kKSk7CiAgICAgICAgIG91dC5wcmludCgiKSIp
OwogICAgIH0KIApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFNpZ25hdHVyZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgICAgIG91
dC5wcmludCgiIC0+IFsiKTsKICAgICAgICAgZm9yIChTaWduYXR1cmVBcmdDb3VudCByZXQgPSAw
OyByZXQgPCByZXR1cm5Db3VudCgpOyArK3JldCkKLSAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgbWFrZVN0cmluZyhyZXR1cm5UeXBlKHJldCkpKTsKKyAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgbWFrZVN0cmluZyhyZXR1cm5UeXBlKHJldCkua2luZCkpOwogICAgICAgICBvdXQucHJp
bnQoIl0iKTsKICAgICB9CiB9CkBAIC02OCwxMCArNjgsMTQgQEAgdm9pZCBTaWduYXR1cmU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChz
aXplX3QgcmV0dXJuQ291bnQsIGNvbnN0IFR5cGUqIHJldHVyblR5cGVzLCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgVHlwZSogYXJndW1lbnRUeXBlcykKIHsKICAgICB1bnNpZ25lZCBhY2N1
bXVsYXRvciA9IDB4YTFiY2VkZDh1OwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBhcmd1
bWVudENvdW50OyArK2kpCi0gICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChh
Y2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGFyZ3VtZW50VHlwZXNbaV0pKSk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHJl
dHVybkNvdW50OyArK2kpCi0gICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChh
Y2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHJldHVyblR5cGVzW2ldKSkpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBhcmd1
bWVudENvdW50OyArK2kpIHsKKyAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNo
KGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oYXJndW1lbnRUeXBlc1tpXS5raW5kKSkpOworICAgICAgICBhY2N1bXVsYXRvciA9IFdU
Rjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2go
YXJndW1lbnRUeXBlc1tpXS5pbmRleCkpOworICAgIH0KKyAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgcmV0dXJuQ291bnQ7ICsraSkgeworICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFp
ckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1aW50OF90Pjo6aGFzaChzdGF0aWNf
Y2FzdDx1aW50OF90PihyZXR1cm5UeXBlc1tpXS5raW5kKSkpOworICAgICAgICBhY2N1bXVsYXRv
ciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1bnNpZ25lZD46
Omhhc2gocmV0dXJuVHlwZXNbaV0uaW5kZXgpKTsKKyAgICB9CiAgICAgcmV0dXJuIGFjY3VtdWxh
dG9yOwogfQogCkBAIC05NSwxMSArOTksMTEgQEAgU2lnbmF0dXJlSW5mb3JtYXRpb246OlNpZ25h
dHVyZUluZm9ybWF0aW9uKCkKIHsKICNkZWZpbmUgTUFLRV9USFVOS19TSUdOQVRVUkUodHlwZSwg
ZW5jLCBzdHIsIHZhbCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgaWYgKHR5cGUgIT0gVm9pZCkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFR5cGVLaW5kOjp0eXBlICE9
IFR5cGVLaW5kOjpWb2lkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAg
ICAgIFJlZlB0cjxTaWduYXR1cmU+IHNpZyA9IFNpZ25hdHVyZTo6dHJ5Q3JlYXRlKDEsIDApOyAg
ICAgICAgICAgIFwKICAgICAgICAgICAgIHNpZy0+cmVmKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHNpZy0+Z2V0UmV0
dXJuVHlwZSgwKSA9IHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgIHRodW5rU2lnbmF0dXJlc1tsaW5lYXJpemVUeXBlKHR5cGUpXSA9IHNpZy5nZXQo
KTsgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHNpZy0+Z2V0UmV0dXJuVHlwZSgwKSA9IFR5
cGVzOjp0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHRodW5r
U2lnbmF0dXJlc1tsaW5lYXJpemVUeXBlKFR5cGVLaW5kOjp0eXBlKV0gPSBzaWcuZ2V0KCk7ICAg
IFwKICAgICAgICAgICAgIG1fc2lnbmF0dXJlU2V0LmFkZChTaWduYXR1cmVIYXNoIHsgc2lnLnJl
bGVhc2VOb25OdWxsKCkgfSk7ICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxl
IChmYWxzZSk7CkBAIC0xMTAsNyArMTE0LDcgQEAgU2lnbmF0dXJlSW5mb3JtYXRpb246OlNpZ25h
dHVyZUluZm9ybWF0aW9uKCkKICAgICB7CiAgICAgICAgIFJlZlB0cjxTaWduYXR1cmU+IHNpZyA9
IFNpZ25hdHVyZTo6dHJ5Q3JlYXRlKDAsIDApOwogICAgICAgICBzaWctPnJlZigpOwotICAgICAg
ICB0aHVua1NpZ25hdHVyZXNbbGluZWFyaXplVHlwZShWb2lkKV0gPSBzaWcuZ2V0KCk7CisgICAg
ICAgIHRodW5rU2lnbmF0dXJlc1tsaW5lYXJpemVUeXBlKFR5cGVLaW5kOjpWb2lkKV0gPSBzaWcu
Z2V0KCk7CiAgICAgICAgIG1fc2lnbmF0dXJlU2V0LmFkZChTaWduYXR1cmVIYXNoIHsgc2lnLnJl
bGVhc2VOb25OdWxsKCkgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNpZ25hdHVyZS5oCmluZGV4IGNhOGMzMmI1NmY2Y2FjZDYyM2MyMTY1OWE0M2NmOTlhYTk3
MDQ4NWEuLjk5MjZhMDUxZDNiOWY0N2ZhNTk5ODNkYWQzOTE4ZWVlZWFkNzcxZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKQEAgLTE0Niw3ICsxNDYsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBzaW5nbGV0b24oKTsK
IAogICAgIHN0YXRpYyBSZWZQdHI8U2lnbmF0dXJlPiBzaWduYXR1cmVGb3IoY29uc3QgVmVjdG9y
PFR5cGUsIDE+JiByZXR1cm5UeXBlcywgY29uc3QgVmVjdG9yPFR5cGU+JiBhcmd1bWVudFR5cGVz
KTsKLSAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFNpZ25hdHVyZSogdGh1bmtGb3IoVHlwZSB0eXBl
KSBjb25zdCB7IHJldHVybiB0aHVua1NpZ25hdHVyZXNbbGluZWFyaXplVHlwZSh0eXBlKV07IH0K
KyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFNpZ25hdHVyZSogdGh1bmtGb3IoVHlwZSB0eXBlKSBj
b25zdCB7IHJldHVybiB0aHVua1NpZ25hdHVyZXNbbGluZWFyaXplVHlwZSh0eXBlLmtpbmQpXTsg
fQogCiAgICAgc3RhdGljIGNvbnN0IFNpZ25hdHVyZSYgZ2V0KFNpZ25hdHVyZUluZGV4KTsKICAg
ICBzdGF0aWMgU2lnbmF0dXJlSW5kZXggZ2V0KGNvbnN0IFNpZ25hdHVyZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKaW5kZXggNWVkMjY1YjE4NTY5N2FlMzkwY2Rm
MTFhMDlhYzZmMTJjMjc5Y2FlZC4uNmFmNzdkYzU2NWU1NjEzMjJlNDczMTY3ZjEwNTNhN2JlMWFj
NjNlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3BwCkBAIC0xODAs
OSArMTgwLDkgQEAgREVGSU5FX1ZJU0lUX0FHR1JFR0FURShUYWJsZSk7CiBUeXBlIFRhYmxlOjp3
YXNtVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRXh0ZXJucmVmVGFibGUoKSkKLSAgICAgICAg
cmV0dXJuIFR5cGU6OkV4dGVybnJlZjsKKyAgICAgICAgcmV0dXJuIFR5cGVzOjpFeHRlcm5yZWY7
CiAgICAgQVNTRVJUKGlzRnVuY3JlZlRhYmxlKCkpOwotICAgIHJldHVybiBUeXBlOjpGdW5jcmVm
OworICAgIHJldHVybiBUeXBlczo6RnVuY3JlZjsKIH0KIAogRnVuY1JlZlRhYmxlKiBUYWJsZTo6
YXNGdW5jcmVmVGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
Z2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2Vu
ZXJhdGVXYXNtT3BzSGVhZGVyLnB5CmluZGV4IDdmZTc3NWRkYTYxNmI1MmViMmE0NDY4MmNiOGVl
MTA1MTBlNDk1OGQuLmExYjA3MjY5YWZlNzgzMjJhMWQ1NzkzY2M5NWU0YWM5NWE1ZTUyYzIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRl
ci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFk
ZXIucHkKQEAgLTIwNywxNCArMjA3LDQwIEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVt
VHlwZXMgPSAiIiIgKyBzdHIobGVuKHR5cGVzKSkgKyAiIiI7CiAKICIiIiArIHR5cGVfZGVmaW5p
dGlvbnMgKyAiIiIKICNkZWZpbmUgQ1JFQVRFX0VOVU1fVkFMVUUobmFtZSwgaWQsIC4uLikgbmFt
ZSA9IGlkLAotZW51bSBUeXBlIDogaW50OF90IHsKK2VudW0gY2xhc3MgVHlwZUtpbmQgOiBpbnQ4
X3QgewogICAgIEZPUl9FQUNIX1dBU01fVFlQRShDUkVBVEVfRU5VTV9WQUxVRSkKIH07CiAjdW5k
ZWYgQ1JFQVRFX0VOVU1fVkFMVUUKIAorc3RydWN0IFR5cGUgeworICAgIFR5cGVLaW5kIGtpbmQ7
CisgICAgdW5zaWduZWQgaW5kZXg7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIua2luZCA9PSBraW5kICYm
IG90aGVyLmluZGV4ID09IGluZGV4OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBUeXBlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKG90aGVyID09ICp0
aGlzKTsKKyAgICB9CisKKyAgICAjZGVmaW5lIENSRUFURV9QUkVESUNBVEUobmFtZSwgLi4uKSBi
b29sIGlzICMjIG5hbWUoKSBjb25zdCB7IHJldHVybiBraW5kID09IFR5cGVLaW5kOjpuYW1lOyB9
CisgICAgRk9SX0VBQ0hfV0FTTV9UWVBFKENSRUFURV9QUkVESUNBVEUpCisgICAgI3VuZGVmIENS
RUFURV9QUkVESUNBVEUKK307CisKK25hbWVzcGFjZSBUeXBlcworeworI2RlZmluZSBDUkVBVEVf
Q09OU1RBTlQobmFtZSwgaWQsIC4uLikgY29uc3RleHByIFR5cGUgbmFtZSA9IFR5cGV7VHlwZUtp
bmQ6Om5hbWUsIDB1fTsKK0ZPUl9FQUNIX1dBU01fVFlQRShDUkVBVEVfQ09OU1RBTlQpCisjdW5k
ZWYgQ1JFQVRFX0NPTlNUQU5UCit9IC8vIG5hbWVzcGFjZSBUeXBlcworCiAjZGVmaW5lIENSRUFU
RV9DQVNFKG5hbWUsIGlkLCAuLi4pIGNhc2UgaWQ6IHJldHVybiB0cnVlOwogdGVtcGxhdGUgPHR5
cGVuYW1lIEludD4KLWlubGluZSBib29sIGlzVmFsaWRUeXBlKEludCBpKQoraW5saW5lIGJvb2wg
aXNWYWxpZFR5cGVLaW5kKEludCBpKQogewogICAgIHN3aXRjaCAoaSkgewogICAgIGRlZmF1bHQ6
IHJldHVybiBmYWxzZTsKQEAgLTIyNiwxMCArMjUyLDEwIEBAIGlubGluZSBib29sIGlzVmFsaWRU
eXBlKEludCBpKQogI3VuZGVmIENSRUFURV9DQVNFCiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFlf
QjNKSVQpCi0jZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM3R5cGUsIC4uLikgY2FzZSBu
YW1lOiByZXR1cm4gYjN0eXBlOworI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBpZCwgYjN0eXBl
LCAuLi4pIGNhc2UgVHlwZUtpbmQ6Om5hbWU6IHJldHVybiBiM3R5cGU7CiBpbmxpbmUgQjM6OlR5
cGUgdG9CM1R5cGUoVHlwZSB0eXBlKQogewotICAgIHN3aXRjaCAodHlwZSkgeworICAgIHN3aXRj
aCAodHlwZS5raW5kKSB7CiAgICAgRk9SX0VBQ0hfV0FTTV9UWVBFKENSRUFURV9DQVNFKQogICAg
IH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjM4LDEwICsyNjQsMTAg
QEAgaW5saW5lIEIzOjpUeXBlIHRvQjNUeXBlKFR5cGUgdHlwZSkKICN1bmRlZiBDUkVBVEVfQ0FT
RQogI2VuZGlmCiAKLSNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgLi4uKSBjYXNlIG5hbWU6IHJl
dHVybiAjbmFtZTsKLWlubGluZSBjb25zdCBjaGFyKiBtYWtlU3RyaW5nKFR5cGUgdHlwZSkKKyNk
ZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgLi4uKSBjYXNlIFR5cGVLaW5kOjpuYW1lOiByZXR1cm4g
I25hbWU7CitpbmxpbmUgY29uc3QgY2hhciogbWFrZVN0cmluZyhUeXBlS2luZCBraW5kKQogewot
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIHN3aXRjaCAoa2luZCkgewogICAgIEZPUl9FQUNIX1dB
U01fVFlQRShDUkVBVEVfQ0FTRSkKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTI0OSwxMCArMjc1LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBtYWtlU3RyaW5n
KFR5cGUgdHlwZSkKIH0KICN1bmRlZiBDUkVBVEVfQ0FTRQogCi0jZGVmaW5lIENSRUFURV9DQVNF
KG5hbWUsIGlkLCBiM3R5cGUsIGluYywgLi4uKSBjYXNlIGlkOiByZXR1cm4gaW5jOwotaW5saW5l
IGludCBsaW5lYXJpemVUeXBlKFR5cGUgdHlwZSkKKyNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwg
aWQsIGIzdHlwZSwgaW5jLCAuLi4pIGNhc2UgVHlwZUtpbmQ6Om5hbWU6IHJldHVybiBpbmM7Citp
bmxpbmUgaW50IGxpbmVhcml6ZVR5cGUoVHlwZUtpbmQga2luZCkKIHsKLSAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBGT1JfRUFDSF9XQVNNX1RZUEUoQ1JFQVRF
X0NBU0UpCiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNjAs
MTQgKzI4NiwxNCBAQCBpbmxpbmUgaW50IGxpbmVhcml6ZVR5cGUoVHlwZSB0eXBlKQogfQogI3Vu
ZGVmIENSRUFURV9DQVNFCiAKLSNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgaWQsIGIzdHlwZSwg
aW5jLCAuLi4pIGNhc2UgaW5jOiByZXR1cm4gbmFtZTsKLWlubGluZSBUeXBlIGxpbmVhcml6ZWRU
b1R5cGUoaW50IGkpCisjZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM3R5cGUsIGluYywg
Li4uKSBjYXNlIGluYzogcmV0dXJuIFR5cGVLaW5kOjpuYW1lOworaW5saW5lIFR5cGVLaW5kIGxp
bmVhcml6ZWRUb1R5cGUoaW50IGkpCiB7CiAgICAgc3dpdGNoIChpKSB7CiAgICAgRk9SX0VBQ0hf
V0FTTV9UWVBFKENSRUFURV9DQVNFKQogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBWb2lkOworICAgIHJldHVybiBUeXBlS2luZDo6Vm9pZDsKIH0K
ICN1bmRlZiBDUkVBVEVfQ0FTRQogCkBAIC00MDQsOSArNDMwLDkgQEAgaW5saW5lIGNvbnN0IGNo
YXIqIG1ha2VTdHJpbmcoT3BUeXBlIG9wKQogCiBuYW1lc3BhY2UgV1RGIHsKIAotaW5saW5lIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6Oldhc206OlR5cGUgdHlwZSkK
K2lubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpXYXNtOjpU
eXBlS2luZCBraW5kKQogewotICAgIG91dC5wcmludChKU0M6Oldhc206Om1ha2VTdHJpbmcodHlw
ZSkpOworICAgIG91dC5wcmludChKU0M6Oldhc206Om1ha2VTdHJpbmcoa2luZCkpOwogfQogCiBp
bmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6V2FzbTo6T3BU
eXBlIG9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dh
c20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmluZGV4
IDdmYmYyODVjZjZmMzEwNzgzNGRjOTU4ZTE3NDQ1ZDQ0N2UzZWZlNzIuLjUxNjk2MmI1OWEyOGY4
NmQyNmJjOWUwYjRhMzE4NWYyNmQ0ZWViNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1RvV2FzbS5jcHAKQEAgLTQwLDIzICs0MCwyMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdhc20gewogCiB2b2lkIG1hcnNoYWxsSlNSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBDYWxsSW5mb3JtYXRpb24mIHdhc21G
cmFtZUNvbnZlbnRpb24sIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBzYXZlZFJlc3VsdFJl
Z2lzdGVycykKIHsKLSAgICBhdXRvIGJveFdhc21SZXN1bHQgPSBbXShDQ2FsbEhlbHBlcnMmIGpp
dCwgV2FzbTo6VHlwZSB0eXBlLCBSZWcgc3JjLCBKU1ZhbHVlUmVncyBkc3QpIHsKLSAgICAgICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgV2FzbTo6Vm9pZDoKKyAgICBhdXRvIGJveFdh
c21SZXN1bHQgPSBbXShDQ2FsbEhlbHBlcnMmIGppdCwgVHlwZSB0eXBlLCBSZWcgc3JjLCBKU1Zh
bHVlUmVncyBkc3QpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHsKKyAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgICAgIGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5k
ZWZpbmVkKCksIGRzdCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXYXNtOjpF
eHRlcm5yZWY6Ci0gICAgICAgIGNhc2UgV2FzbTo6RnVuY3JlZjoKKyAgICAgICAgY2FzZSBUeXBl
S2luZDo6RXh0ZXJucmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAg
ICAgICAgaml0Lm1vdmUoc3JjLmdwcigpLCBkc3QucGF5bG9hZEdQUigpKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFdhc206OkkzMjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6
STMyOgogICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvV29yZChzcmMuZ3ByKCksIGRzdC5w
YXlsb2FkR1BSKCkpOwogICAgICAgICAgICAgaml0LmJveEludDMyKGRzdC5wYXlsb2FkR1BSKCks
IGRzdCwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFdhc206OkYzMjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICAg
ICAgaml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHNyYy5mcHIoKSwgc3JjLmZwcigpKTsKICAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIFdhc206OkY2NDogeworICAgICAgICBj
YXNlIFR5cGVLaW5kOjpGNjQ6IHsKICAgICAgICAgICAgIGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpz
TnVtYmVyKHB1cmVOYU4oKSksIGRzdCk7CiAgICAgICAgICAgICBhdXRvIGlzTmFOID0gaml0LmJy
YW5jaElmTmFOKHNyYy5mcHIoKSk7CiAgICAgICAgICAgICBqaXQuYm94RG91YmxlKHNyYy5mcHIo
KSwgZHN0LCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIG1h
cnNoYWxsSlNSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0
dXJlLCBjb25zdCBDYWxsSQogICAgIGlmIChzaWduYXR1cmUucmV0dXJuc1ZvaWQoKSkKICAgICAg
ICAgaml0Lm1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgSlNWYWx1ZVJlZ3MgeyBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiB9KTsKICAgICBlbHNlIGlmIChzaWduYXR1cmUucmV0dXJuQ291
bnQoKSA9PSAxKSB7Ci0gICAgICAgIGlmIChzaWduYXR1cmUucmV0dXJuVHlwZSgwKSA9PSBXYXNt
OjpJNjQpIHsKKyAgICAgICAgaWYgKHNpZ25hdHVyZS5yZXR1cm5UeXBlKDApLmlzSTY0KCkpIHsK
ICAgICAgICAgICAgIEdQUlJlZyBpbnB1dEdQUiA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0
c1swXS5yZWcoKS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB3YXNtQ29udGV4dEluc3RhbmNl
R1BSID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS53YXNtQ29udGV4dEluc3RhbmNlUG9pbnRl
cjsKICAgICAgICAgICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpIHsKQEAgLTk0LDI5ICs5
NCwyOSBAQCB2b2lkIG1hcnNoYWxsSlNSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBDYWxsSQogICAgICAgICAgICAgVmFsdWVMb2NhdGlv
biBsb2MgPSB3YXNtRnJhbWVDb252ZW50aW9uLnJlc3VsdHNbaV07CiAgICAgICAgICAgICBUeXBl
IHR5cGUgPSBzaWduYXR1cmUucmV0dXJuVHlwZShpKTsKIAotICAgICAgICAgICAgaGFzSTY0IHw9
IHR5cGUgPT0gV2FzbTo6STY0OworICAgICAgICAgICAgaGFzSTY0IHw9IHR5cGUuaXNJNjQoKTsK
ICAgICAgICAgICAgIGlmIChsb2MuaXNSZWcoKSkgewotICAgICAgICAgICAgICAgIGlmICh0eXBl
ICE9IFdhc206Okk2NCkgeworICAgICAgICAgICAgICAgIGlmICghdHlwZS5pc0k2NCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGJveFdhc21SZXN1bHQoaml0LCBzaWduYXR1cmUucmV0dXJuVHlw
ZShpKSwgbG9jLnJlZygpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
VmFsdWUoc2NyYXRjaCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQobG9jLnJlZygpKS0+b2Zm
c2V0KCkgKyB3YXNtRnJhbWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5C
eXRlcykpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBqaXQu
c3RvcmVWYWx1ZShKU1ZhbHVlUmVncyB7IGxvYy5yZWcoKS5ncHIoKSB9LCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2F2ZWRSZXN1bHRS
ZWdpc3RlcnMuZmluZChsb2MucmVnKCkpLT5vZmZzZXQoKSArIHdhc21GcmFtZUNvbnZlbnRpb24u
aGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFdhc206Okk2NCkgeworICAgICAgICAgICAg
ICAgIGlmICghdHlwZS5pc0k2NCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9jYXRp
b24gPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwgbG9jLm9mZnNldEZyb21TUCgpKTsKLSAgICAgICAgICAgICAgICAgICAgUmVnIHRtcCA9
IHR5cGUgPT0gRjMyIHx8IHR5cGUgPT0gRjY0ID8gUmVnKGZwclNjcmF0Y2gpIDogUmVnKHNjcmF0
Y2guZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICBSZWcgdG1wID0gKHR5cGUuaXNGMzIoKSB8
fCB0eXBlLmlzRjY0KCkpID8gUmVnKGZwclNjcmF0Y2gpIDogUmVnKHNjcmF0Y2guZ3ByKCkpOwog
ICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0VG9SZWcobG9jYXRpb24sIHRtcCk7CiAgICAg
ICAgICAgICAgICAgICAgIGJveFdhc21SZXN1bHQoaml0LCBzaWduYXR1cmUucmV0dXJuVHlwZShp
KSwgdG1wLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoc2Ny
YXRjaCwgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFdhc206OkkzMjoKKyAg
ICAgICAgICAgIHN3aXRjaCAodHlwZS5raW5kKSB7CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5k
OjpJMzI6CiAgICAgICAgICAgICAgICAgaW5kZXhpbmdUeXBlID0gbGVhc3RVcHBlckJvdW5kT2ZJ
bmRleGluZ1R5cGVzKGluZGV4aW5nVHlwZSwgQXJyYXlXaXRoSW50MzIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXYXNtOjpGMzI6Ci0gICAgICAgICAgICBjYXNl
IFdhc206OkY2NDoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKKyAgICAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OkY2NDoKICAgICAgICAgICAgICAgICBpbmRleGluZ1R5cGUgPSBsZWFz
dFVwcGVyQm91bmRPZkluZGV4aW5nVHlwZXMoaW5kZXhpbmdUeXBlLCBBcnJheVdpdGhEb3VibGUp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTEzMSw3
ICsxMzEsNyBAQCB2b2lkIG1hcnNoYWxsSlNSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBDYWxsSQogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBWYWx1ZUxvY2F0aW9uIGxvYyA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0c1tp
XTsKICAgICAgICAgICAgICAgICBUeXBlIHR5cGUgPSBzaWduYXR1cmUucmV0dXJuVHlwZShpKTsK
LSAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBXYXNtOjpJNjQpCisgICAgICAgICAgICAgICAg
aWYgKCF0eXBlLmlzSTY0KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICAgICAgR1BSUmVnIHdhc21Db250ZXh0SW5zdGFuY2VHUFIgPSBQaW5uZWRSZWdpc3Rl
ckluZm86OmdldCgpLndhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyOwpAQCAtMjM4LDcgKzIzOCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0CiAgICAgICAgICAgICBUeXBlIHR5cGUgPSBzaWdu
YXR1cmUuYXJndW1lbnQoaSk7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MganNQ
YXJhbShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwganNGcmFtZUNvbnZlbnRpb24ucGFyYW1z
W2ldLm9mZnNldEZyb21GUCgpKTsKICAgICAgICAgICAgIGlmICh3YXNtRnJhbWVDb252ZW50aW9u
LnBhcmFtc1tpXS5pc1N0YWNrQXJndW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGlmICh0eXBl
ID09IFdhc206OkkzMiB8fCB0eXBlID09IFdhc206OkYzMikgeworICAgICAgICAgICAgICAgIGlm
ICh0eXBlLmlzSTMyKCkgfHwgdHlwZS5pc0YzMigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGpp
dC5sb2FkMzIoanNQYXJhbSwgc2NyYXRjaFJlZyk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5z
dG9yZTMyKHNjcmF0Y2hSZWcsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQod2FzbUZyYW1lQ29udmVu
dGlvbi5wYXJhbXNbaV0ub2Zmc2V0RnJvbVNQKCkpKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBj
cmVhdGVKU1RvV2FzbVdyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hSZWcsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQo
d2FzbUZyYW1lQ29udmVudGlvbi5wYXJhbXNbaV0ub2Zmc2V0RnJvbVNQKCkpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICh0eXBl
ID09IFdhc206OkkzMiB8fCB0eXBlID09IFdhc206OkYzMikKKyAgICAgICAgICAgICAgICBpZiAo
dHlwZS5pc0kzMigpIHx8IHR5cGUuaXNGMzIoKSkKICAgICAgICAgICAgICAgICAgICAgaml0Lmxv
YWQzMlRvUmVnKGpzUGFyYW0sIHdhc21GcmFtZUNvbnZlbnRpb24ucGFyYW1zW2ldLnJlZygpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjRUb1Jl
Zyhqc1BhcmFtLCB3YXNtRnJhbWVDb252ZW50aW9uLnBhcmFtc1tpXS5yZWcoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaApp
bmRleCA2ZjlmM2IxM2JhZDk2NWRkYjIwMTBhMDk3NzgyNzE3ZGVmZmU5MGQ2Li5kOGYyNjUwY2Fh
NTg2NzIzNTRiZDVmMzlmN2RlYWI2NDEwZDAwNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEzOCw5ICsxMzgs
OSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbihWTSYgdm0s
IEpTVmFsdWUgb2JqZWN0KQogQUxXQVlTX0lOTElORSBKU1ZhbHVlIGRlZmF1bHRWYWx1ZUZvclJl
ZmVyZW5jZVR5cGUoY29uc3QgV2FzbTo6VHlwZSB0eXBlKQogewogICAgIEFTU0VSVChXYXNtOjpp
c1JlZlR5cGUodHlwZSkpOwotICAgIGlmICh0eXBlID09IFdhc206OlR5cGU6OkV4dGVybnJlZikK
KyAgICBpZiAodHlwZS5pc0V4dGVybnJlZigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLSAgICBBU1NFUlQodHlwZSA9PSBXYXNtOjpUeXBlOjpGdW5jcmVmKTsKKyAgICBBU1NFUlQo
dHlwZS5pc0Z1bmNyZWYoKSk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggODA4Y2MyMThmNGFiZDk2YWNl
MDFhOWNlZWMyMjdmODdlNjU3ZDY5YS4uNzFlM2Q3ZmM3ZTgwMTMyNmRhYzQ1MGE3M2JjNzM5YzE4
NzQ1NWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRv
SlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApA
QCAtMTAxLDE0ICsxMDEsMTQgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21F
bnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgdW5z
aWduZWQgZnJPZmZzZXQgPSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgYXJn
TnVtID0gMDsgYXJnTnVtIDwgYXJnQ291bnQ7ICsrYXJnTnVtKSB7CiAgICAgICAgICAgICBUeXBl
IGFyZ1R5cGUgPSBzaWduYXR1cmUuYXJndW1lbnQoYXJnTnVtKTsKLSAgICAgICAgICAgIHN3aXRj
aCAoYXJnVHlwZSkgewotICAgICAgICAgICAgY2FzZSBWb2lkOgotICAgICAgICAgICAgY2FzZSBG
dW5jOgorICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlLmtpbmQpIHsKKyAgICAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlZvaWQ6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgogICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJv
dmUuCi0gICAgICAgICAgICBjYXNlIEV4dGVybnJlZjoKLSAgICAgICAgICAgIGNhc2UgRnVuY3Jl
ZjoKLSAgICAgICAgICAgIGNhc2UgSTMyOgotICAgICAgICAgICAgY2FzZSBJNjQ6IHsKKyAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmNyZWY6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpJNjQ6IHsKICAgICAgICAgICAgICAgICBHUFJSZWcgZ3ByUmVnOwog
ICAgICAgICAgICAgICAgIGlmIChtYXJzaGFsbGVkR1BScyA8IHdhc21DQy5ncHJBcmdzLnNpemUo
KSkKICAgICAgICAgICAgICAgICAgICAgZ3ByUmVnID0gd2FzbUNDLmdwckFyZ3NbbWFyc2hhbGxl
ZEdQUnNdLmdwcigpOwpAQCAtMTE5LDcgKzExOSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZt
CiAgICAgICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICsrbWFyc2hhbGxlZEdQUnM7Ci0gICAgICAg
ICAgICAgICAgaWYgKGFyZ1R5cGUgPT0gSTMyKSB7CisgICAgICAgICAgICAgICAgaWYgKGFyZ1R5
cGUuaXNJMzIoKSkgewogICAgICAgICAgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9Xb3Jk
KGdwclJlZywgZ3ByUmVnKTsgLy8gQ2xlYXIgbm9uLWludDMyIGFuZCBub24tdGFnIGJpdHMuCiAg
ICAgICAgICAgICAgICAgICAgIGppdC5ib3hJbnQzMihncHJSZWcsIEpTVmFsdWVSZWdzKGdwclJl
ZyksIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTI3LDgg
KzEyNyw4IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+
LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICAgICAgY2FsbGVl
RnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgRjMyOgotICAgICAgICAgICAgY2FzZSBG
NjQ6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CisgICAgICAgICAgICBjYXNlIFR5
cGVLaW5kOjpGNjQ6CiAgICAgICAgICAgICAgICAgLy8gU2tpcHBlZDogaGFuZGxlZCBiZWxvdy4K
ICAgICAgICAgICAgICAgICBpZiAobWFyc2hhbGxlZEZQUnMgPj0gd2FzbUNDLmZwckFyZ3Muc2l6
ZSgpKQogICAgICAgICAgICAgICAgICAgICBmck9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOwpA
QCAtMTczLDE0ICsxNzMsMTQgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21F
bnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KIAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGFyZ051bSA9IDA7IGFyZ051bSA8IGFyZ0NvdW50OyArK2FyZ051bSkgewog
ICAgICAgICAgICAgVHlwZSBhcmdUeXBlID0gc2lnbmF0dXJlLmFyZ3VtZW50KGFyZ051bSk7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgVm9pZDoKLSAg
ICAgICAgICAgIGNhc2UgRnVuYzoKKyAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZS5raW5kKSB7
CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgorICAgICAgICAgICAgY2FzZSBUeXBl
S2luZDo6RnVuYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyAvLyBIYW5kbGVkIGFib3ZlLgotICAgICAgICAgICAgY2FzZSBFeHRlcm5yZWY6Ci0gICAgICAg
ICAgICBjYXNlIEZ1bmNyZWY6Ci0gICAgICAgICAgICBjYXNlIEkzMjoKLSAgICAgICAgICAgIGNh
c2UgSTY0OiB7CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6
STMyOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0OiB7CiAgICAgICAgICAgICAgICAg
Ly8gU2tpcHBlZDogaGFuZGxlZCBhYm92ZS4KICAgICAgICAgICAgICAgICBpZiAobWFyc2hhbGxl
ZEdQUnMgPj0gd2FzbUNDLmdwckFyZ3Muc2l6ZSgpKQogICAgICAgICAgICAgICAgICAgICBmck9m
ZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIEV4cGVjdGVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2Fz
bVRvSlMoVk0mIHZtCiAgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9m
KFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNhc2UgRjMyOiB7CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6IHsKICAg
ICAgICAgICAgICAgICBGUFJSZWcgZnByUmVnOwogICAgICAgICAgICAgICAgIGlmIChtYXJzaGFs
bGVkRlBScyA8IHdhc21DQy5mcHJBcmdzLnNpemUoKSkKICAgICAgICAgICAgICAgICAgICAgZnBy
UmVnID0gd2FzbUNDLmZwckFyZ3NbbWFyc2hhbGxlZEZQUnNdLmZwcigpOwpAQCAtMjAyLDcgKzIw
Miw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBC
aW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICAgICAgbWFyc2hhbGxG
UFIoZnByUmVnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNhc2UgRjY0OiB7CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6IHsKICAg
ICAgICAgICAgICAgICBGUFJSZWcgZnByUmVnOwogICAgICAgICAgICAgICAgIGlmIChtYXJzaGFs
bGVkRlBScyA8IHdhc21DQy5mcHJBcmdzLnNpemUoKSkKICAgICAgICAgICAgICAgICAgICAgZnBy
UmVnID0gd2FzbUNDLmZwckFyZ3NbbWFyc2hhbGxlZEZQUnNdLmZwcigpOwpAQCAtMjI2LDcgKzIy
Niw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBC
aW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgIC8vIFdlIGNhbGwgZnVuY3Rp
b25zIHRvIGNvbnZlcnQgSTY0IHRvIEJpZ0ludC4KICAgICAgICAgdW5zaWduZWQgY2FsbGVlRnJh
bWVPZmZzZXQgPSBDYWxsRnJhbWVTbG90OjpmaXJzdEFyZ3VtZW50ICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdOdW0gPSAwOyBh
cmdOdW0gPCBhcmdDb3VudDsgKythcmdOdW0pIHsKLSAgICAgICAgICAgIGlmIChzaWduYXR1cmUu
YXJndW1lbnQoYXJnTnVtKSA9PSBJNjQpIHsKKyAgICAgICAgICAgIGlmIChzaWduYXR1cmUuYXJn
dW1lbnQoYXJnTnVtKS5pc0k2NCgpKSB7CiAgICAgICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29u
dGV4dEluc3RhbmNlKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0
LmxvYWQ2NChjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KGNhbGxlZUZyYW1lT2Zmc2V0KSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uQ29udmVydFRvQmlnSW50KT4oR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwpAQCAtMjc0LDEzICsyNzQsMTMgQEAgRXhwZWN0ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNt
VG9KUyhWTSYgdm0KICAgICBkb25lLmxpbmsoJmppdCk7CiAKICAgICBpZiAoc2lnbmF0dXJlLnJl
dHVybkNvdW50KCkgPT0gMSkgewotICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBl
KDApKSB7Ci0gICAgICAgIGNhc2UgVm9pZDoKLSAgICAgICAgY2FzZSBGdW5jOgorICAgICAgICBz
d2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKDApLmtpbmQpIHsKKyAgICAgICAgY2FzZSBUeXBl
S2luZDo6Vm9pZDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIC8v
IEZvciB0aGUgSmF2YVNjcmlwdCBlbWJlZGRpbmcsIGltcG9ydHMgd2l0aCB0aGVzZSB0eXBlcyBp
biB0aGVpciBzaWduYXR1cmUgcmV0dXJuIGFyZSBhIFdlYkFzc2VtYmx5Lk1vZHVsZSB2YWxpZGF0
aW9uIGVycm9yLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEk2NDogeworICAgICAgICBjYXNlIFR5cGVL
aW5kOjpJNjQ6IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSBJNjQgZXh0cmFjdGlv
biBmcm9tIEJpZ0ludC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjAwNTMKICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gd2FzbUNhbGxJ
bmZvLnJlc3VsdHNbMF0uZ3ByKCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgRXhwZWN0ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9K
UyhWTSYgdm0KICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBJMzI6IHsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOiB7CiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSB3YXNt
Q2FsbEluZm8ucmVzdWx0c1swXS5ncHIoKTsKQEAgLTMxNywxMSArMzE3LDExIEBAIEV4cGVjdGVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4g
d2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIEZ1bmNyZWY6Ci0gICAgICAgIGNhc2Ug
RXh0ZXJucmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICBjYXNl
IFR5cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgd2FzbUNhbGxJbmZvLnJlc3VsdHNbMF0uZ3ByKCkpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRjMyOiB7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjog
ewogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwogICAgICAgICAgICAg
RlBSUmVnIGRlc3QgPSB3YXNtQ2FsbEluZm8ucmVzdWx0c1swXS5mcHIoKTsKIApAQCAtMzUyLDcg
KzM1Miw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+
LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBkb25lLmxpbmso
JmppdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIEY2NDog
eworICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6IHsKICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIEZQUlJlZyBkZXN0ID0gd2FzbUNhbGxJbmZv
LnJlc3VsdHNbMF0uZnByKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggNTMyMDJlNTAxYzIyOWZlYjQ3OTI4
ZTcyNGVkZmQ3YjlmZjBkMGJkNi4uNjdlNGU3MThkMjFhMjQ3YmIwMmJkM2I4N2Y4Y2NhNGE0Mjcw
MjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTc5LDI4ICs3OSwyOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogCiAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc2lnbmF0
dXJlLmFyZ3VtZW50Q291bnQoKTsgKythcmdJbmRleCkgewogICAgICAgICBKU1ZhbHVlIGFyZyA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoYXJnSW5kZXgpOwotICAgICAgICBzd2l0Y2ggKHNpZ25hdHVy
ZS5hcmd1bWVudChhcmdJbmRleCkpIHsKLSAgICAgICAgY2FzZSBXYXNtOjpJMzI6CisgICAgICAg
IHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50KGFyZ0luZGV4KS5raW5kKSB7CisgICAgICAgIGNh
c2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoKICAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29k
ZShhcmcudG9JbnQzMihnbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFdhc206OkZ1bmNyZWY6IHsKKyAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVu
Y3JlZjogewogICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBh
cmcpICYmICFhcmcuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yKGdsb2JhbE9iamVjdCwgdm0sICJGdW5jcmVmIG11c3QgYmUgYW4gZXhw
b3J0ZWQgd2FzbSBmdW5jdGlvbiIpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBjYXNlIFdhc206OkV4dGVybnJlZjoKKyAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2lu
ZDo6RXh0ZXJucmVmOgogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2FzbTo6STY0
OgorICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJNjQ6CiAgICAgICAgICAgICBhcmcgPSBK
U1ZhbHVlOjpkZWNvZGUoYml0d2lzZV9jYXN0PHVpbnQ2NF90PihhcmcudG9CaWdJbnQ2NChnbG9i
YWxPYmplY3QpKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXYXNtOjpGMzI6
CisgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkYzMjoKICAgICAgICAgICAgIGFyZyA9IEpT
VmFsdWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFyZy50b0Zsb2F0KGdsb2JhbE9i
amVjdCkpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdhc206OkY2NDoKKyAg
ICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RjY0OgogICAgICAgICAgICAgYXJnID0gSlNWYWx1
ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYXJnLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCkpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdhc206OlZvaWQ6Ci0gICAg
ICAgIGNhc2UgV2FzbTo6RnVuYzoKKyAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6Vm9pZDoK
KyAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yNjAsOCArMjYwLDggQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2Fs
bEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgYm9vbCBpc1N0YWNrID0gd2FzbUNhbGxJbmZvLnBh
cmFtc1tpXS5pc1N0YWNrQXJndW1lbnQoKTsKIAogICAgICAgICBhdXRvIHR5cGUgPSBzaWduYXR1
cmUuYXJndW1lbnQoaSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIFdh
c206OkkzMjogeworICAgICAgICBzd2l0Y2ggKHR5cGUua2luZCkgeworICAgICAgICBjYXNlIFdh
c206OlR5cGVLaW5kOjpJMzI6IHsKICAgICAgICAgICAgIGppdC5sb2FkNjQoanNQYXJhbSwgc2Ny
YXRjaEdQUik7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaElmTm90SW50
MzIoc2NyYXRjaEdQUikpOwogICAgICAgICAgICAgaWYgKGlzU3RhY2spCkBAIC0yNzAsNyArMjcw
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVu
Y3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgICAgICBqaXQuemVyb0V4
dGVuZDMyVG9Xb3JkKHNjcmF0Y2hHUFIsIHdhc21DYWxsSW5mby5wYXJhbXNbaV0uZ3ByKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBXYXNtOjpGdW5jcmVm
OiB7CisgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6IHsKICAgICAgICAgICAg
IC8vIEVuc3VyZSB3ZSBoYXZlIGEgV0FTTSBleHBvcnRlZCBmdW5jdGlvbi4KICAgICAgICAgICAg
IGppdC5sb2FkNjQoanNQYXJhbSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBhdXRvIGlzTnVs
bCA9IGppdC5icmFuY2hJZk51bGwoc2NyYXRjaEdQUik7CkBAIC0yOTAsNyArMjkwLDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246Ompz
Q2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgIGlzTnVsbC5saW5rKCZqaXQpOwogICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBXYXNtOjpFeHRl
cm5yZWY6IHsKKyAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOiB7CiAgICAg
ICAgICAgICBpZiAoaXNTdGFjaykgewogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoanNQYXJh
bSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUiwg
Y2FsbGVlRnJhbWUud2l0aE9mZnNldCh3YXNtQ2FsbEluZm8ucGFyYW1zW2ldLm9mZnNldEZyb21T
UCgpKSk7CkBAIC0yOTgsMTMgKzI5OCwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAg
ICAgICAgICAgICAgIGppdC5sb2FkNjQoanNQYXJhbSwgd2FzbUNhbGxJbmZvLnBhcmFtc1tpXS5n
cHIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFdhc206
OkYzMjoKLSAgICAgICAgY2FzZSBXYXNtOjpGNjQ6IHsKKyAgICAgICAgY2FzZSBXYXNtOjpUeXBl
S2luZDo6RjMyOgorICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGNjQ6IHsKICAgICAgICAg
ICAgIGlmICghaXNTdGFjaykKICAgICAgICAgICAgICAgICBzY3JhdGNoRlBSID0gd2FzbUNhbGxJ
bmZvLnBhcmFtc1tpXS5mcHIoKTsKICAgICAgICAgICAgIGF1dG8gbW92ZVRvRGVzdGluYXRpb24g
PSBbJl0gKCkgewogICAgICAgICAgICAgICAgIGlmIChpc1N0YWNrKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzaWduYXR1cmUuYXJndW1lbnQoaSkgPT0gV2FzbTo6RjMyKQorICAgICAgICAg
ICAgICAgICAgICBpZiAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpLmlzRjMyKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuc3RvcmVGbG9hdChzY3JhdGNoRlBSLCBjYWxsZWVGcmFtZS53aXRo
T2Zmc2V0KHdhc21DYWxsSW5mby5wYXJhbXNbaV0ub2Zmc2V0RnJvbVNQKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlRG91Ymxl
KHNjcmF0Y2hGUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQod2FzbUNhbGxJbmZvLnBhcmFtc1tp
XS5vZmZzZXRGcm9tU1AoKSkpOwpAQCAtMzE2LDEzICszMTYsMTMgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9p
bnRTbG93KCkKICAgICAgICAgICAgIGF1dG8gaXNJbnQzMiA9IGppdC5icmFuY2hJZkludDMyKHNj
cmF0Y2hHUFIpOwogCiAgICAgICAgICAgICBqaXQudW5ib3hEb3VibGUoc2NyYXRjaEdQUiwgc2Ny
YXRjaEdQUiwgc2NyYXRjaEZQUik7Ci0gICAgICAgICAgICBpZiAoc2lnbmF0dXJlLmFyZ3VtZW50
KGkpID09IFdhc206OkYzMikKKyAgICAgICAgICAgIGlmIChzaWduYXR1cmUuYXJndW1lbnQoaSku
aXNGMzIoKSkKICAgICAgICAgICAgICAgICBqaXQuY29udmVydERvdWJsZVRvRmxvYXQoc2NyYXRj
aEZQUiwgc2NyYXRjaEZQUik7CiAgICAgICAgICAgICBtb3ZlVG9EZXN0aW5hdGlvbigpOwogICAg
ICAgICAgICAgYXV0byBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICAgICAgaXNJbnQzMi5s
aW5rKCZqaXQpOwotICAgICAgICAgICAgaWYgKHNpZ25hdHVyZS5hcmd1bWVudChpKSA9PSBXYXNt
OjpGMzIpIHsKKyAgICAgICAgICAgIGlmIChzaWduYXR1cmUuYXJndW1lbnQoaSkuaXNGMzIoKSkg
ewogICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0Zsb2F0KHNjcmF0Y2hHUFIsIHNj
cmF0Y2hGUFIpOwogICAgICAgICAgICAgICAgIG1vdmVUb0Rlc3RpbmF0aW9uKCk7CiAgICAgICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAppbmRleCA5MWJiYTc2NWNj
ZjUzMTBmYjBmYTlhMjAwOGEzMjk0MzlmZTA4MjczLi5lZmY2N2NiMGI3MjM0YzA5YzdlYzZiODA1
NjhlMjliMmExODIyMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcApAQCAtODksMjUg
Kzg5LDI1IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5
R2xvYmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIFN0cmluZyB2YWx1ZVN0
cmluZyA9IHZhbHVlVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
aWYgKHZhbHVlU3RyaW5nID09ICJpMzIiX3MpCi0gICAgICAgICAgICB0eXBlID0gV2FzbTo6VHlw
ZTo6STMyOworICAgICAgICAgICAgdHlwZSA9IFdhc206OlR5cGVzOjpJMzI7CiAgICAgICAgIGVs
c2UgaWYgKHZhbHVlU3RyaW5nID09ICJpNjQiX3MpCi0gICAgICAgICAgICB0eXBlID0gV2FzbTo6
VHlwZTo6STY0OworICAgICAgICAgICAgdHlwZSA9IFdhc206OlR5cGVzOjpJNjQ7CiAgICAgICAg
IGVsc2UgaWYgKHZhbHVlU3RyaW5nID09ICJmMzIiX3MpCi0gICAgICAgICAgICB0eXBlID0gV2Fz
bTo6VHlwZTo6RjMyOworICAgICAgICAgICAgdHlwZSA9IFdhc206OlR5cGVzOjpGMzI7CiAgICAg
ICAgIGVsc2UgaWYgKHZhbHVlU3RyaW5nID09ICJmNjQiX3MpCi0gICAgICAgICAgICB0eXBlID0g
V2FzbTo6VHlwZTo6RjY0OworICAgICAgICAgICAgdHlwZSA9IFdhc206OlR5cGVzOjpGNjQ7CiAg
ICAgICAgIGVsc2UgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpICYmICh2
YWx1ZVN0cmluZyA9PSAiYW55ZnVuYyJfcyB8fCB2YWx1ZVN0cmluZyA9PSAiZnVuY3JlZiJfcykp
Ci0gICAgICAgICAgICB0eXBlID0gV2FzbTo6VHlwZTo6RnVuY3JlZjsKKyAgICAgICAgICAgIHR5
cGUgPSBXYXNtOjpUeXBlczo6RnVuY3JlZjsKICAgICAgICAgZWxzZSBpZiAoT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlSZWZlcmVuY2VzKCkgJiYgdmFsdWVTdHJpbmcgPT0gImV4dGVybnJlZiJfcykK
LSAgICAgICAgICAgIHR5cGUgPSBXYXNtOjpUeXBlOjpFeHRlcm5yZWY7CisgICAgICAgICAgICB0
eXBlID0gV2FzbTo6VHlwZXM6OkV4dGVybnJlZjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5HbG9iYWwg
ZXhwZWN0cyBpdHMgJ3ZhbHVlJyBmaWVsZCB0byBiZSB0aGUgc3RyaW5nICdpMzInLCAnaTY0Jywg
J2YzMicsICdmNjQnLCAnYW55ZnVuYycsICdmdW5jcmVmJywgb3IgJ2V4dGVybnJlZiciX3MpKSk7
CiAgICAgfQogCiAgICAgdWludDY0X3QgaW5pdGlhbFZhbHVlID0gMDsKICAgICBKU1ZhbHVlIGFy
Z3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIFdhc206OlR5cGU6OkkzMjogeworICAgIHN3aXRjaCAodHlwZS5raW5kKSB7CisgICAg
Y2FzZSBXYXNtOjpUeXBlS2luZDo6STMyOiB7CiAgICAgICAgIGlmICghYXJndW1lbnQuaXNVbmRl
ZmluZWQoKSkgewogICAgICAgICAgICAgaW50MzJfdCB2YWx1ZSA9IGFyZ3VtZW50LnRvSW50MzIo
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xMTUsNyArMTE1LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlHbG9iYWwsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2IKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBXYXNt
OjpUeXBlOjpJNjQ6IHsKKyAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJNjQ6IHsKICAgICAgICAg
aWYgKCFhcmd1bWVudC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBpbnQ2NF90IHZhbHVl
ID0gYXJndW1lbnQudG9CaWdJbnQ2NChnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTEyMyw3ICsx
MjMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJseUds
b2JhbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIFdhc206OlR5cGU6OkYzMjogeworICAgIGNhc2UgV2FzbTo6VHlw
ZUtpbmQ6OkYzMjogewogICAgICAgICBpZiAoIWFyZ3VtZW50LmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgICAgIGZsb2F0IHZhbHVlID0gYXJndW1lbnQudG9GbG9hdChnbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3Ry
dWN0SlNXZWJBc3NlbWJseUdsb2JhbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFdhc206OlR5cGU6OkY2NDogewor
ICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkY2NDogewogICAgICAgICBpZiAoIWFyZ3VtZW50Lmlz
VW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGFyZ3VtZW50LnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5R2xvYmFsLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
V2FzbTo6VHlwZTo6RnVuY3JlZjogeworICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6
IHsKICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpKTsK
ICAgICAgICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICBhcmd1bWVu
dCA9IGRlZmF1bHRWYWx1ZUZvclJlZmVyZW5jZVR5cGUodHlwZSk7CkBAIC0xNTAsNyArMTUwLDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlHbG9iYWws
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgaW5pdGlhbFZhbHVlID0gSlNWYWx1
ZTo6ZW5jb2RlKGFyZ3VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgV2Fz
bTo6VHlwZTo6RXh0ZXJucmVmOiB7CisgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVm
OiB7CiAgICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSk7
CiAgICAgICAgIGlmIChhcmd1bWVudC5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgYXJndW1l
bnQgPSBkZWZhdWx0VmFsdWVGb3JSZWZlcmVuY2VUeXBlKHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3Bw
CmluZGV4IDI5MTcyNDk3Y2MxMTM0Njg2YWE4YmJlYWRlMGExZWUxYTRhMTZkYjUuLjU4ZThjZDAw
MDY4MjNkZWFmNGVlNjg3M2ExNzE4YWQ1NzgzNmY1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAg
LTI0NiwyMyArMjQ2LDIzIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3Io
Z2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xv
YmFsIiwgIm11c3QgYmUgYSBzYW1lIHR5cGUiKSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
Z2xvYmFsVmFsdWUtPmdsb2JhbCgpLT5tdXRhYmlsaXR5KCkgIT0gV2FzbTo6R2xvYmFsSW5mb3Jt
YXRpb246OkltbXV0YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRp
b24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRG
YWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAibXVzdCBiZSBhIHNhbWUgbXV0
YWJpbGl0eSIpKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kdWxlSW5mb3JtYXRp
b24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgV2FzbTo6RnVuY3JlZjoKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtb2R1bGVJ
bmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUua2luZCkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSBnbG9iYWxWYWx1ZS0+Z2xvYmFsKCktPmdldChnbG9iYWxPYmpl
Y3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RG
dW5jdGlvbih2bSwgdmFsdWUpICYmICF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3Io
Z2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xv
YmFsIiwgIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIG9yIG51bGwiKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1w
b3J0LmtpbmRJbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJucmVmOgorICAgICAgICAgICAgICAg
ICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+Z2V0KGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9i
YWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6STMyOgotICAgICAgICAgICAgICAg
ICAgICBjYXNlIFdhc206Okk2NDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpGMzI6
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6RjY0OgorICAgICAgICAgICAgICAgICAg
ICBjYXNlIFdhc206OlR5cGVLaW5kOjpJMzI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgV2Fz
bTo6VHlwZUtpbmQ6Okk2NDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2lu
ZDo6RjMyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGNjQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChp
bXBvcnQua2luZEluZGV4LCBnbG9iYWxWYWx1ZS0+Z2xvYmFsKCktPmdldFByaW1pdGl2ZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6Omxp
bmtJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2xvYmFsVHlwZSA9IG1vZHVsZUluZm9ybWF0aW9uLmds
b2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFp
c1JlZlR5cGUoZ2xvYmFsVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlpLiBJ
ZiB0aGUgZ2xvYmFsX3R5cGUgb2YgaSBpcyBpNjQgb3IgVHlwZSh2KSBpcyBOdW1iZXIsIHRocm93
IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGds
b2JhbFR5cGUgPT0gV2FzbTo6STY0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2xv
YmFsVHlwZS5pc0k2NCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc0JpZ0ludCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1w
b3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSBCaWdJ
bnQiKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI4MiwyOCArMjgy
LDI4IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBpCiAgICAgICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgICAgICAvLyBpaWkuIEFwcGVuZCBUb1dlYkFzc2VtYmx5VmFsdWUodikg
dG8gaW1wb3J0cy4KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnbG9iYWxUeXBlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6RnVuY3JlZjoKKyAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChnbG9iYWxUeXBlLmtpbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBX
YXNtOjpUeXBlS2luZDo6RnVuY3JlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNX
ZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgdmFsdWUpICYmICF2YWx1ZS5pc051bGwoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0
LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIG9y
IG51bGwiKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2Uo
KS5zZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJucmVmOgor
ICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChpbXBv
cnQua2luZEluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpJMzI6CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoKICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdGFu
Y2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGltcG9ydC5raW5kSW5kZXgsIHZhbHVlLnRvSW50MzIo
Z2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBXYXNtOjpJNjQ6IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBX
YXNtOjpUeXBlS2luZDo6STY0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGJp
dHMgPSB2YWx1ZS50b0JpZ0ludDY0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRl
eCwgYml0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OkYzMjoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RjMyOgogICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgYml0
d2lzZV9jYXN0PHVpbnQzMl90Pih2YWx1ZS50b0Zsb2F0KGdsb2JhbE9iamVjdCkpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206
OkY2NDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RjY0OgogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1w
b3J0LmtpbmRJbmRleCwgYml0d2lzZV9jYXN0PHVpbnQ2NF90Pih2YWx1ZS5hc051bWJlcigpKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKQEAgLTQ4NywxMyArNDg3LDEzIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmxpbmtJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBpCiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Okdsb2JhbDogewogICAgICAg
ICAgICAgY29uc3QgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCA9IG1vZHVsZUluZm9y
bWF0aW9uLmdsb2JhbHNbZXhwLmtpbmRJbmRleF07Ci0gICAgICAgICAgICBzd2l0Y2ggKGdsb2Jh
bC50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFdhc206OkV4dGVybnJlZjoKLSAgICAgICAgICAg
IGNhc2UgV2FzbTo6RnVuY3JlZjoKLSAgICAgICAgICAgIGNhc2UgV2FzbTo6STMyOgotICAgICAg
ICAgICAgY2FzZSBXYXNtOjpJNjQ6Ci0gICAgICAgICAgICBjYXNlIFdhc206OkYzMjoKLSAgICAg
ICAgICAgIGNhc2UgV2FzbTo6RjY0OiB7CisgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbC50eXBl
LmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAg
ICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgICAgICAgICBjYXNl
IFdhc206OlR5cGVLaW5kOjpJMzI6CisgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJ
NjQ6CisgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGMzI6CisgICAgICAgICAgICBj
YXNlIFdhc206OlR5cGVLaW5kOjpGNjQ6IHsKICAgICAgICAgICAgICAgICAvLyBJZiBnbG9iYWwg
aXMgaW1tdXRhYmxlLCB3ZSBhcmUgbm90IGNyZWF0aW5nIGEgYmluZGluZyBpbnRlcm5hbGx5Lgog
ICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIGJpbmRpbmcganVzdCB0
byBleHBvcnQgaXQuIFRoaXMgYmluZGluZyBpcyBub3QgYWN0dWFsbHkgY29ubmVjdGVkLiBCdXQg
dGhpcyBpcyBPSyBzaW5jZSBpdCBpcyBpbW11dGFibGUuCiAgICAgICAgICAgICAgICAgaWYgKGds
b2JhbC5iaW5kaW5nTW9kZSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6
OkVtYmVkZGVkSW5JbnN0YW5jZSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>