<?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>204294</bug_id>
          
          <creation_ts>2019-11-18 06:38:08 -0800</creation_ts>
          <short_desc>Move StyleResolver to Style namespace</short_desc>
          <delta_ts>2019-11-18 09:38:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1591034</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 06:38:08 -0800</bug_when>
    <thetext>Most subcomponents are there already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591036</commentid>
    <comment_count>1</comment_count>
      <attachid>383741</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 06:50:44 -0800</bug_when>
    <thetext>Created attachment 383741
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591038</commentid>
    <comment_count>2</comment_count>
      <attachid>383743</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 07:01:00 -0800</bug_when>
    <thetext>Created attachment 383743
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591046</commentid>
    <comment_count>3</comment_count>
      <attachid>383746</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 08:00:25 -0800</bug_when>
    <thetext>Created attachment 383746
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591086</commentid>
    <comment_count>4</comment_count>
      <attachid>383746</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-18 09:37:23 -0800</bug_when>
    <thetext>Comment on attachment 383746
patch

Clearing flags on attachment: 383746

Committed r252546: &lt;https://trac.webkit.org/changeset/252546&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591087</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-18 09:37:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591089</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-18 09:38:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/57286344&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383741</attachid>
            <date>2019-11-18 06:50:44 -0800</date>
            <delta_ts>2019-11-18 07:01:00 -0800</delta_ts>
            <desc>patch</desc>
            <filename>styleresolver-namespace.patch</filename>
            <type>text/plain</type>
            <size>85266</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNGRjMTkzNDUzMC4uNzM2MjJjNDIxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMTktMTEtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIE1vdmUgU3R5bGVSZXNvbHZlciB0byBTdHlsZSBuYW1lc3BhY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDI5NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgc3VicGFydHMg
YXJlIGFscmVhZHkgaW4gU3R5bGUgbmFtZXNwYWNlLgorCisgICAgICAgIEFsc28gcmVuYW1lIGl0
IHRvIFN0eWxlOjpSZXNvbHZlciBhbmQgbW92ZSBmaWxlcyB0byBXZWJDb3JlL3N0eWxlIHN1YmRp
cmVjdG9yeS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5n
S2V5ZnJhbWVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5OjpyZWdp
c3RlclByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6YXBwZW5kQXV0aG9y
U3R5bGVTaGVldHMpOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmg6CisgICAgICAg
ICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUgY29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmg6CisgICAgICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlUnVsZUNvbGxlY3Rvcjo6UGFnZVJ1bGVDb2xsZWN0b3IpOgorICAgICAg
ICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZENoaWxk
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQpOgor
ICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
cik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3R5bGVSZXNvbHZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdT
dHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5
bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUpOgorICAg
ICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRl
clRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNs
aWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNG
b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJy
YXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVN0eWxlQWZ0ZXJD
aGFuZ2VJbkVudmlyb25tZW50KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjphbmlt
YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVyLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6UmVzb2x2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjphZGRDdXJyZW50U1ZHRm9udEZhY2VSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6On5SZXNvbHZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UmVzb2x2ZXI6OmJ1aWxkZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UmVzb2x2ZXI6OmlzQW5pbWF0aW9uTmFtZVZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpzdHlsZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRp
b25zQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpjbGVhckNhY2hl
ZERlY2xhcmF0aW9uc0FmZmVjdGVkQnlWaWV3cG9ydFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmFkZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0Fm
ZmVjdGVkQnlWaWV3cG9ydENoYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UmVzb2x2ZXI6OmFkZEFjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudE1lZGlhUXVlcnlSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNB
ZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6YWRkQXBwZWFyYW5jZURlcGVuZGVudE1lZGlhUXVlcnlS
ZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJp
ZXNBZmZlY3RlZEJ5QXBwZWFyYW5jZUNoYW5nZSBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5
bGVSZXNvbHZlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50U3R5bGU6OkVsZW1lbnRTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0
cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6aGFzU2Vs
ZWN0b3JGb3JJZCBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjppbnZhbGlkYXRlSG9zdEFuZFNsb3R0ZWRTdHlsZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlNjb3BlOjp1cGRhdGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6U2NvcGU6OnNjaGVkdWxlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpTY29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JWaWV3cG9ydENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmV2YWx1YXRlTWVkaWFRdWVyaWVzRm9yQWNjZXNzaWJp
bGl0eVNldHRpbmdzQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6ZXZh
bHVhdGVNZWRpYVF1ZXJpZXNGb3JBcHBlYXJhbmNlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6dXBkYXRlU3R5bGVSZXNvbHZlcik6IERlbGV0ZWQuCisgICAgICAgICog
c3R5bGUvU3R5bGVTY29wZS5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbGVtZW50SGFzRGlyZWN0aW9uQXV0byk6
CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OlNjb3BlOjp+U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlRyZWVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBzdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogc3Zn
L1NWR0VsZW1lbnQuaDoKKwogMjAxOS0xMS0xMiAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFBpY3R1cmUtaW4tUGljdHVyZSBldmVudHMgYXJlIG5vdCBmaXJlZCBp
ZiB3ZSBzd2l0Y2ggdGhlIFBpY3R1cmUtaW4tUGljdHVyZSBtb2RlIHRocm91Z2ggbW9kZXJuIG1l
ZGlhIGNvbnRyb2xzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI2ODEyYWU4OTk5Li41ZjIxZjMwZjllNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTc4MCw3ICs3ODAsNiBAQCBjc3MvU3R5bGVDb2xvci5jcHAKIGNz
cy9TdHlsZU1lZGlhLmNwcAogY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKIGNzcy9TdHlsZVByb3Bl
cnR5U2hvcnRoYW5kLmNwcAotY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCiBjc3MvU3R5bGVSdWxlLmNw
cAogY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKIGNzcy9TdHlsZVNoZWV0LmNwcApAQCAtMjM1Nyw2
ICsyMzU2LDcgQEAgc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAKIHN0eWxlL1N0eWxl
SW52YWxpZGF0b3IuY3BwCiBzdHlsZS9TdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwCiBzdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHAKK3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCiBzdHlsZS9TdHlsZVJl
c29sdmVGb3JEb2N1bWVudC5jcHAKIHN0eWxlL1N0eWxlU2NvcGUuY3BwCiBzdHlsZS9TdHlsZVNo
YXJpbmdSZXNvbHZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4MjIxNWY3OTRlNy4uMTA3ZWZmYTM4YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0
NzQsOCArNjQ3NCw4IEBACiAJCTFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5
bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9s
aWIvbGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMUQwMDI2
QTIyMzc0RDYyMzAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTMyMzc0RDYyNDAwQ0E2Q0RGIC8qIEpT
UGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxRDAwMjZBODIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBp
Y3R1cmVFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0VudGVyUGlj
dHVyZUluUGljdHVyZUV2ZW50Lmg7IHBhdGggPSBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFEMDAyNkE5MjM3NEY5RDkwMENBNkNE
RiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwOyBwYXRo
ID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFEMDAyNkE4MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGlj
dHVyZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW50ZXJQaWN0
dXJlSW5QaWN0dXJlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQwMDI2
QTkyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1
cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNG
NkEwMDU1RDZDNSAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
aWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
REJDMUI1NTIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxREM1NTNGRDIxMUJBMTJBMDA0Qjc4MEUgLyogTmF2aWdhdG9yU2hhcmUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclNoYXJlLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MDQ1LDYgKzI3MDQ1LDggQEAKIAkJCQlFNDYxODAyQzFD
OEREMjkwMDAyNkMwMkMgLyogU3R5bGVSZWxhdGlvbnMuaCAqLywKIAkJCQlFNEQ1OEVCMjE3QjRE
QkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwICovLAogCQkJCUU0RDU4
RUIzMTdCNERCREMwMENCRENBOCAvKiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oICovLAorCQkJ
CUUxMzk4NjYxMTU0Nzg0NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLywKKwkJCQlF
MTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovLAogCQkJCUU0NjFE
NjVDMUJCMEM3RjAwMENCNTY0NSAvKiBTdHlsZVNjb3BlLmNwcCAqLywKIAkJCQlFNDYxRDY1RTFC
QjBDODBEMDBDQjU2NDUgLyogU3R5bGVTY29wZS5oICovLAogCQkJCUU0N0EzQUMyMUM1RUFCQkUw
MENDQkZBNyAvKiBTdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAgKi8sCkBAIC0yNzQ1MSw4ICsyNzQ1
Myw2IEBACiAJCQkJQTgwRTZERkEwQTE5OTA2NzAwN0ZCOEM1IC8qIFN0eWxlUHJvcGVydGllcy5o
ICovLAogCQkJCUUxQjI1MTA0MTUyQTBCQUYwMDY5Qjc3OSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kLmNwcCAqLywKIAkJCQlFMUIyNTEwNTE1MkEwQkFGMDA2OUI3NzkgLyogU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZC5oICovLAotCQkJCUUxMzk4NjYxMTU0Nzg0NzQwMDFFM0Y2NSAvKiBTdHlsZVJl
c29sdmVyLmNwcCAqLywKLQkJCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNv
bHZlci5oICovLAogCQkJCUU0QkJFRDRBMTRGQ0RCQTEwMDNGMEI5OCAvKiBTdHlsZVJ1bGUuY3Bw
ICovLAogCQkJCUU0QkJFRDRCMTRGQ0RCQTEwMDNGMEI5OCAvKiBTdHlsZVJ1bGUuaCAqLywKIAkJ
CQlFNDk0NkVBQzE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmNwcCAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IGZkODlhZWRl
NmUwLi44YTUzYWU1MTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6dXBkYXRl
QmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVsZW1lbnRTdHlsZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdCgia2V5ZnJhbWUtZWZmZWN0LSIg
KyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwotICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIgPSBtX3RhcmdldC0+c3R5bGVSZXNvbHZlcigpOworICAgIGF1dG8mIHN0eWxlUmVz
b2x2ZXIgPSBtX3RhcmdldC0+c3R5bGVSZXNvbHZlcigpOwogCiAgICAgZm9yIChhdXRvJiBrZXlm
cmFtZSA6IG1fcGFyc2VkS2V5ZnJhbWVzKSB7CiAgICAgICAgIEtleWZyYW1lVmFsdWUga2V5ZnJh
bWVWYWx1ZShrZXlmcmFtZS5jb21wdXRlZE9mZnNldCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggNDJm
ODBhYjVkOGEuLmQ0NjE4NjQzOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
Q1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OnJlZ2lzdGVyUHJvcGVydHko
RG9jdW1lbnQmIGRvY3VtCiAgICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGluaXRp
YWxWYWx1ZTsKICAgICBpZiAoIWRlc2NyaXB0b3IuaW5pdGlhbFZhbHVlLmlzRW1wdHkoKSkgewog
ICAgICAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKGRlc2NyaXB0b3IuaW5pdGlhbFZhbHVlKTsK
LSAgICAgICAgU3R5bGVSZXNvbHZlciBzdHlsZVJlc29sdmVyKGRvY3VtZW50KTsKKyAgICAgICAg
U3R5bGU6OlJlc29sdmVyIHN0eWxlUmVzb2x2ZXIoZG9jdW1lbnQpOwogCiAgICAgICAgIC8vIFdl
IG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGlzIHNvIHRoYXQgd2UgY2FuIHN1Y2Nlc3NmdWxseSBwYXJz
ZSBjb21wdXRhdGlvbmFsbHkgZGVwZW5kZW50IHZhbHVlcyAobGlrZSBlbSB1bml0cykuCiAgICAg
ICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdGhlIHZhbHVlcyB0byBiZSBhY2N1cmF0ZSwg
c2luY2UgdGhleSB3aWxsIGJlIHJlamVjdGVkIGxhdGVyIGFueXdheQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RvY3VtZW50UnVsZVNldHMuY3BwCmluZGV4IGJhMTkyZjdmMTBmLi5hODRkN2U2NzQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApAQCAtMzcsNyArMzcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVsZVNl
dHMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK0RvY3VtZW50UnVsZVNldHM6OkRvY3Vt
ZW50UnVsZVNldHMoU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIDogbV9zdHls
ZVJlc29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgbV9hdXRob3JTdHlsZSA9IG1ha2VVbmlx
dWU8UnVsZVNldD4oKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6
OmluaXRpYWxpemVVc2VyU3R5bGUoKQogICAgICAgICBtX3VzZXJTdHlsZSA9IFdURk1vdmUodGVt
cFVzZXJTdHlsZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRSdWxlU2V0czo6Y29sbGVjdFJ1bGVzRnJv
bVVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgdXNl
clNoZWV0cywgUnVsZVNldCYgdXNlclN0eWxlLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBt
ZWRpdW0sIFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyKQordm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpj
b2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4+JiB1c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUsIGNvbnN0IE1lZGlhUXVl
cnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGU6OlJlc29sdmVyJiByZXNvbHZlcikKIHsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlclNoZWV0cy5zaXplKCk7ICsraSkgewogICAgICAg
ICBBU1NFUlQodXNlclNoZWV0c1tpXS0+Y29udGVudHMoKS5pc1VzZXJTdHlsZVNoZWV0KCkpOwpA
QCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6cmVzZXRVc2VyQWdlbnRN
ZWRpYVF1ZXJ5U3R5bGUoKQogICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gbnVsbHB0
cjsKIH0KIAotdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgc3R5bGVTaGVldHMsIE1lZGlhUXVl
cnlFdmFsdWF0b3IqIG1lZGl1bSwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9yQ1NT
T01XcmFwcGVycywgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIpCit2b2lkIERvY3VtZW50UnVsZVNl
dHM6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4+JiBzdHlsZVNoZWV0cywgTWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtLCBJbnNwZWN0
b3JDU1NPTVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLCBTdHlsZTo6UmVzb2x2ZXIq
IHJlc29sdmVyKQogewogICAgIC8vIFRoaXMgaGFuZGxlcyBzaGVldHMgYWRkZWQgdG8gdGhlIGVu
ZCBvZiB0aGUgc3R5bGVzaGVldCBsaXN0IG9ubHkuIEluIG90aGVyIGNhc2VzIHRoZSBzdHlsZSBy
ZXNvbHZlcgogICAgIC8vIG5lZWRzIHRvIGJlIHJlY29uc3RydWN0ZWQuIFRvIGhhbmRsZSBpbnNl
cnRpb25zIHRvbyB0aGUgcnVsZSBvcmRlciBudW1iZXJzIHdvdWxkIG5lZWQgdG8gYmUgdXBkYXRl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCmluZGV4IDQ2ZDhhMWE1NjY2Li5l
OWE3NTZhMDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNl
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCkBAIC0zOCw2
ICszOCwxMCBAQCBjbGFzcyBFeHRlbnNpb25TdHlsZVNoZWV0czsKIGNsYXNzIEluc3BlY3RvckNT
U09NV3JhcHBlcnM7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwogCituYW1lc3BhY2UgU3R5
bGUgeworY2xhc3MgUmVzb2x2ZXI7Cit9CisKIHN0cnVjdCBJbnZhbGlkYXRpb25SdWxlU2V0IHsK
ICAgICBNYXRjaEVsZW1lbnQgbWF0Y2hFbGVtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxl
U2V0PiBydWxlU2V0OwpAQCAtNDgsNyArNTIsNyBAQCBzdHJ1Y3QgSW52YWxpZGF0aW9uUnVsZVNl
dCB7CiAKIGNsYXNzIERvY3VtZW50UnVsZVNldHMgewogcHVibGljOgotICAgIERvY3VtZW50UnVs
ZVNldHMoU3R5bGVSZXNvbHZlciYpOworICAgIERvY3VtZW50UnVsZVNldHMoU3R5bGU6OlJlc29s
dmVyJik7CiAgICAgfkRvY3VtZW50UnVsZVNldHMoKTsKIAogICAgIGJvb2wgaXNBdXRob3JTdHls
ZURlZmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXV0aG9yU3R5bGVEZWZpbmVkOyB9CkBAIC03
MCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVVc2VyU3R5bGUoKTsKIAog
ICAgIHZvaWQgcmVzZXRBdXRob3JTdHlsZSgpOwotICAgIHZvaWQgYXBwZW5kQXV0aG9yU3R5bGVT
aGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBNZWRpYVF1ZXJ5RXZh
bHVhdG9yKiwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYsIFN0eWxlUmVzb2x2ZXIqKTsKKyAgICB2
b2lkIGFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4+JiwgTWVkaWFRdWVyeUV2YWx1YXRvciosIEluc3BlY3RvckNTU09NV3JhcHBlcnMmLCBT
dHlsZTo6UmVzb2x2ZXIqKTsKIAogICAgIHZvaWQgcmVzZXRVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5
bGUoKTsKIApAQCAtODAsMTQgKzg0LDE0IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lk
IGNvbGxlY3RGZWF0dXJlcygpIGNvbnN0OwotICAgIHZvaWQgY29sbGVjdFJ1bGVzRnJvbVVzZXJT
dHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIFJ1bGVTZXQm
IHVzZXJTdHlsZSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYsIFN0eWxlUmVzb2x2ZXImKTsK
KyAgICB2b2lkIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBSdWxlU2V0JiB1c2VyU3R5bGUsIGNvbnN0IE1lZGlhUXVl
cnlFdmFsdWF0b3ImLCBTdHlsZTo6UmVzb2x2ZXImKTsKICAgICB2b2lkIHVwZGF0ZVVzZXJBZ2Vu
dE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3Q7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UnVsZVNldD4gbV9hdXRob3JTdHlsZTsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSdWxl
U2V0PiBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVs
ZVNldD4gbV91c2VyU3R5bGU7CiAKLSAgICBTdHlsZVJlc29sdmVyJiBtX3N0eWxlUmVzb2x2ZXI7
CisgICAgU3R5bGU6OlJlc29sdmVyJiBtX3N0eWxlUmVzb2x2ZXI7CiAgICAgbXV0YWJsZSBSdWxl
RmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJ1bGVT
ZXQ+IG1fc2libGluZ1J1bGVTZXQ7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNl
dD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAKaW5kZXggZjBjMmMxZmU4MTMuLjcyMzY1ZmU4NmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0xNDYsNyArMTQ2LDcg
QEAgc3RhdGljIGJvb2wgYXBwbHlSZXN0cmljdG9yKE1lZGlhUXVlcnk6OlJlc3RyaWN0b3Igciwg
Ym9vbCB2YWx1ZSkKICAgICByZXR1cm4gciA9PSBNZWRpYVF1ZXJ5OjpOb3QgPyAhdmFsdWUgOiB2
YWx1ZTsKIH0KIAotYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBNZWRp
YVF1ZXJ5U2V0JiBxdWVyeVNldCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikgY29uc3QK
K2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYg
cXVlcnlTZXQsIFN0eWxlOjpSZXNvbHZlciogc3R5bGVSZXNvbHZlcikgY29uc3QKIHsKICAgICBM
T0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIk1lZGlhUXVlcnlFdmFsdWF0
b3I6OmV2YWx1YXRlIG9uICIgPDwgKG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT51cmwoKS5zdHJp
bmcoKSA6IGVtcHR5U3RyaW5nKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmgKaW5kZXggZGIxYjcxOGM3OGYuLjVhMmVjZGI1MjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKQEAgLTM2LDcgKzM2LDEwIEBAIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBNZWRpYVF1ZXJ5U2V0OwogY2xhc3MgUmVuZGVyU3R5
bGU7Ci1jbGFzcyBTdHlsZVJlc29sdmVyOworCituYW1lc3BhY2UgU3R5bGUgeworY2xhc3MgUmVz
b2x2ZXI7Cit9CiAKIHN0cnVjdCBNZWRpYVF1ZXJ5UmVzdWx0IHsKICAgICBNZWRpYVF1ZXJ5RXhw
cmVzc2lvbiBleHByZXNzaW9uOwpAQCAtNjMsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBt
ZWRpYVR5cGVNYXRjaFNwZWNpZmljKGNvbnN0IGNoYXIqIG1lZGlhVHlwZVRvTWF0Y2gpIGNvbnN0
OwogCiAgICAgLy8gRXZhbHVhdGVzIGEgbGlzdCBvZiBtZWRpYSBxdWVyaWVzLgotICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYsIFN0eWxlUmVzb2x2
ZXIqID0gbnVsbHB0cikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBldmFsdWF0ZShj
b25zdCBNZWRpYVF1ZXJ5U2V0JiwgU3R5bGU6OlJlc29sdmVyKiA9IG51bGxwdHIpIGNvbnN0Owog
CiAgICAgLy8gRXZhbHVhdGVzIG1lZGlhIHF1ZXJ5IHN1YmV4cHJlc3Npb24sIGllICJhbmQgKG1l
ZGlhLWZlYXR1cmU6IHZhbHVlKSIgcGFydC4KICAgICBib29sIGV2YWx1YXRlKGNvbnN0IE1lZGlh
UXVlcnlFeHByZXNzaW9uJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UGFnZVJ1bGVDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rv
ci5oCmluZGV4IGNlNDZkMWMxMGU3Li42MjcyZmQ3MjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Bh
Z2VSdWxlQ29sbGVjdG9yLmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgU3R5bGVSdWxlUGFnZTsK
IAogY2xhc3MgUGFnZVJ1bGVDb2xsZWN0b3IgewogcHVibGljOgotICAgIFBhZ2VSdWxlQ29sbGVj
dG9yKFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSwgRG9jdW1lbnRSdWxlU2V0cyYgcnVsZVNl
dHMpCisgICAgUGFnZVJ1bGVDb2xsZWN0b3IoU3R5bGU6OlJlc29sdmVyOjpTdGF0ZSYgc3RhdGUs
IERvY3VtZW50UnVsZVNldHMmIHJ1bGVTZXRzKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAg
ICAgICAgICwgbV9ydWxlU2V0cyhydWxlU2V0cykgeyB9CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKFJ1bGVTZXQqIHJ1bGVzLCBib29sIGlzTGVm
dFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwogICAgIHZv
aWQgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIG1hdGNoZWRS
dWxlcywgY29uc3QgVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgcnVsZXMsIGJvb2wgaXNMZWZ0UGFn
ZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CiAKLSAgICBjb25z
dCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgbV9zdGF0ZTsKKyAgICBjb25zdCBTdHlsZTo6UmVzb2x2
ZXI6OlN0YXRlJiBtX3N0YXRlOwogICAgIERvY3VtZW50UnVsZVNldHMmIG1fcnVsZVNldHM7CiAK
ICAgICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCA2YWNh
YzMzY2MzYy4uOGVjMWM0ZDRmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTM4NCw3ICsz
ODQsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2UqIHJ1bGUpCiAg
ICAgbV9wYWdlUnVsZXMuYXBwZW5kKHJ1bGUpOwogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZENoaWxk
UnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjb25zdCBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyLCBib29s
IGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCit2b2lkIFJ1bGVTZXQ6
OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVz
LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlOjpSZXNvbHZlciogcmVz
b2x2ZXIsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkKIHsK
ICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykgewogICAgICAgICBpZiAoaXM8U3R5bGVSdWxl
PigqcnVsZSkpCkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgTWUKICAg
ICB9CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRl
bnRzJiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBTdHlsZVJlc29s
dmVyKiByZXNvbHZlcikKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVl
dENvbnRlbnRzJiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBTdHls
ZTo6UmVzb2x2ZXIqIHJlc29sdmVyKQogewogICAgIGZvciAoYXV0byYgcnVsZSA6IHNoZWV0Lmlt
cG9ydFJ1bGVzKCkpIHsKICAgICAgICAgaWYgKHJ1bGUtPnN0eWxlU2hlZXQoKSAmJiAoIXJ1bGUt
Pm1lZGlhUXVlcmllcygpIHx8IG1lZGl1bS5ldmFsdWF0ZSgqcnVsZS0+bWVkaWFRdWVyaWVzKCks
IHJlc29sdmVyKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAppbmRleCA2MzU1ZTkzNjRmZS4uNjE4MGM0OWJj
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVTZXQuaApAQCAtNDQsOSArNDQsMTIgQEAgY2xhc3MgQ1NTU2VsZWN0
b3I7CiBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKIGNs
YXNzIE5vZGU7Ci1jbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRz
OwogCituYW1lc3BhY2UgU3R5bGUgeworY2xhc3MgUmVzb2x2ZXI7Cit9CisKIGVudW0gY2xhc3Mg
TWF0Y2hCYXNlZE9uUnVsZUhhc2ggOiB1bnNpZ25lZCB7CiAgICAgTm9uZSwKICAgICBVbml2ZXJz
YWwsCkBAIC0xMTcsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJ1bGVE
YXRhLCAxPiBSdWxlRGF0YVZlY3RvcjsKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbVN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPFJ1bGVEYXRhVmVjdG9yPj4gQXRvbVJ1bGVNYXA7CiAKLSAgICB2b2lk
IGFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImLCBTdHlsZVJlc29sdmVyKiA9IDApOworICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hl
ZXQoU3R5bGVTaGVldENvbnRlbnRzJiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYsIFN0eWxl
OjpSZXNvbHZlciogPSAwKTsKIAogICAgIHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVsZSopOwog
ICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1bGUqLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNp
Z25lZCBzZWxlY3Rvckxpc3RJbmRleCk7CkBAIC0xNTAsNyArMTUzLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZTsg
fQogCiBwcml2YXRlOgotICAgIHZvaWQgYWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+PiYsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5
bGVSZXNvbHZlciosIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJl
ZSk7CisgICAgdm9pZCBhZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+JiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBTdHlsZTo6UmVzb2x2
ZXIqLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAg
ICAgQXRvbVJ1bGVNYXAgbV9pZFJ1bGVzOwogICAgIEF0b21SdWxlTWFwIG1fY2xhc3NSdWxlczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ1MzcwZjkyY2M3Li4yOGI2MmUzZWI2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMjc1LDEwICsyMjc1LDEwIEBAIHZvaWQgRG9jdW1l
bnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBh
Z2VTaXplLCBpbnQmCiAgICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRv
KCkgPyBtYXJnaW5MZWZ0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwg
d2lkdGgpOwogfQogCi1TdHlsZVJlc29sdmVyJiBEb2N1bWVudDo6dXNlckFnZW50U2hhZG93VHJl
ZVN0eWxlUmVzb2x2ZXIoKQorU3R5bGU6OlJlc29sdmVyJiBEb2N1bWVudDo6dXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIoKQogewogICAgIGlmICghbV91c2VyQWdlbnRTaGFkb3dUcmVl
U3R5bGVSZXNvbHZlcikKLSAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
ciA9IG1ha2VVbmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRoaXMpOworICAgICAgICBtX3VzZXJBZ2Vu
dFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbWFrZVVuaXF1ZTxTdHlsZTo6UmVzb2x2ZXI+KCp0
aGlzKTsKICAgICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZmY1OTFhNmY5MzEuLmY5YTNmNzg3OGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMTkzLDcgKzE5Myw2IEBAIGNsYXNzIFNlbGVjdG9yUXVlcnlD
YWNoZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNldHRpbmdzOwogY2xh
c3MgU3RyaW5nQ2FsbGJhY2s7Ci1jbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVTaGVl
dDsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwpAQCAt
MjY0LDYgKzI2Myw3IEBAIGNsYXNzIFJlc2l6ZU9ic2VydmVyOwogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBTdHlsZSB7CitjbGFzcyBSZXNvbHZlcjsKIGNsYXNzIFNjb3BlOwogfTsKIApAQCAtNTQwLDcg
KzU0MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNl
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNlczsgfQogCi0g
ICAgU3R5bGVSZXNvbHZlciYgdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKTsKKyAg
ICBTdHlsZTo6UmVzb2x2ZXImIHVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCk7CiAK
ICAgICBDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcigpIHsgcmV0dXJuIG1fZm9udFNlbGVj
dG9yOyB9CiAKQEAgLTE2NzgsNyArMTY3OCw3IEBAIHByaXZhdGU6CiAKICAgICBVbmlxdWVSZWY8
UXVpcmtzPiBtX3F1aXJrczsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZVJlc29sdmVyPiBt
X3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
dHlsZTo6UmVzb2x2ZXI+IG1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7CiAKICAg
ICBSZWZQdHI8RE9NV2luZG93PiBtX2RvbVdpbmRvdzsKICAgICBXZWFrUHRyPERvY3VtZW50PiBt
X2NvbnRleHREb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBmMzdjOTMwMmJlMC4u
MDZiN2MwYzJiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE4OTQsNyArMTg5NCw3IEBA
IGJvb2wgRWxlbWVudDo6YWxsb3dzRG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0CiB9CiAjZW5kaWYK
IAotU3R5bGVSZXNvbHZlciYgRWxlbWVudDo6c3R5bGVSZXNvbHZlcigpCitTdHlsZTo6UmVzb2x2
ZXImIEVsZW1lbnQ6OnN0eWxlUmVzb2x2ZXIoKQogewogICAgIGlmIChhdXRvKiBzaGFkb3dSb290
ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPnN0
eWxlU2NvcGUoKS5yZXNvbHZlcigpOwpAQCAtMTkwMiw3ICsxOTAyLDcgQEAgU3R5bGVSZXNvbHZl
ciYgRWxlbWVudDo6c3R5bGVSZXNvbHZlcigpCiAgICAgcmV0dXJuIGRvY3VtZW50KCkuc3R5bGVT
Y29wZSgpLnJlc29sdmVyKCk7CiB9CiAKLUVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQorU3R5bGU6OkVsZW1lbnRTdHlsZSBF
bGVtZW50OjpyZXNvbHZlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogewog
ICAgIHJldHVybiBzdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCp0aGlzLCBwYXJlbnRT
dHlsZSk7CiB9CkBAIC00MDc5LDcgKzQwNzksNyBAQCB2b2lkIEVsZW1lbnQ6OmRpZERldGFjaFJl
bmRlcmVycygpCiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsK
IH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopCitPcHRpb25hbDxTdHlsZTo6
RWxlbWVudFN0eWxlPiBFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVz
b2x2ZUNhbGxiYWNrcygpKTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKaW5kZXggMzY2YzAzNjc4OGUuLmQ1ZTcxZTY5OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTU4LDcgKzU4LDYgQEAgY2xhc3MgUHNldWRvRWxlbWVudDsKIGNsYXNzIFJlbmRlclRyZWVQb3Np
dGlvbjsKIGNsYXNzIFN0eWxlUHJvcGVydHlNYXA7CiBjbGFzcyBXZWJBbmltYXRpb247Ci1zdHJ1
Y3QgRWxlbWVudFN0eWxlOwogc3RydWN0IFNjcm9sbEludG9WaWV3T3B0aW9uczsKIAogI2lmIEVO
QUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCkBAIC02OSw2ICs2OCwxMCBAQCBzdHJ1Y3QgSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhOwogc3RydWN0IFJlc2l6ZU9ic2VydmVyRGF0YTsKICNlbmRp
ZgogCituYW1lc3BhY2UgU3R5bGUgeworc3RydWN0IEVsZW1lbnRTdHlsZTsKK30KKwogZW51bSBT
cGVsbGNoZWNrQXR0cmlidXRlU3RhdGUgewogICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVUcnVlLAog
ICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVGYWxzZSwKQEAgLTU0MSw3ICs1NDQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGFjaFJlbmRl
cmVycygpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
c2hhZG93SG9zdFN0eWxlKTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5
bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOwogCiAgICAgTGF5b3V0UmVjdCBhYnNv
bHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRlc0ZpeGVkUG9zaXRpb25FbGVtZW50
cykgb3ZlcnJpZGU7CiAKQEAgLTU2Miw4ICs1NjUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxv
d3NEb3VibGVUYXBHZXN0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIoKTsKLSAgICBFbGVtZW50U3R5bGUgcmVzb2x2ZVN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CisgICAgU3R5bGU6OlJlc29sdmVyJiBz
dHlsZVJlc29sdmVyKCk7CisgICAgU3R5bGU6OkVsZW1lbnRTdHlsZSByZXNvbHZlU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAogICAgIC8vIEludmFsaWRhdGVzIHRoZSBz
dHlsZSBvZiBhIHNpbmdsZSBlbGVtZW50LiBTdHlsZSBpcyByZXNvbHZlZCBsYXppbHkuCiAgICAg
Ly8gRGVzY2VuZGFudCBlbGVtZW50cyBhcmUgcmVzb2x2ZWQgYXMgbmVlZGVkLCBmb3IgZXhhbXBs
ZSBpZiBhbiBpbmhlcml0ZWQgcHJvcGVydHkgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcAppbmRleCA0ODMyNmJjZTEyZC4uOGEyYjZlYjQ1MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNzIsNyArMTI3Miw3IEBAIHN0
YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9y
RWxlbWVudChFbGVtZW50JiBlbGVtCiB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21S
dWxlcyhTdHlsZWRFbGVtZW50JiBlbGVtZW50KQogewogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBzdHlsZUZyb21NYXRjaGVkUnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNG
b3JFbGVtZW50KGVsZW1lbnQsCi0gICAgICAgIFN0eWxlUmVzb2x2ZXI6OkF1dGhvckNTU1J1bGVz
KTsKKyAgICAgICAgU3R5bGU6OlJlc29sdmVyOjpBdXRob3JDU1NSdWxlcyk7CiAgICAgLy8gU3R5
bGVzIGZyb20gdGhlIGlubGluZSBzdHlsZSBkZWNsYXJhdGlvbiwgaGVsZCBpbiB0aGUgdmFyaWFi
bGUgInN0eWxlIiwgdGFrZSBwcmVjZWRlbmNlIAogICAgIC8vIG92ZXIgdGhvc2UgZnJvbSBtYXRj
aGVkIHJ1bGVzLgogICAgIGlmIChtX211dGFibGVTdHlsZSkKQEAgLTEzNTgsNyArMTM1OCw3IEBA
IHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVk
RWxlbWVudCYgZWxlbWVudCwgTm9kZSoKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gMS4gUmVt
b3ZlIHN0eWxlIGZyb20gbWF0Y2hlZCBydWxlcyBiZWNhdXNlIHN0eWxlIHJlbWFpbiB3aXRob3V0
IHJlcGVhdGluZyBpdCBpbiBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb24KLSAgICBSZWZQdHI8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxCdXRFbXB0eUNT
U1J1bGVzKTsKKyAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBTdHls
ZTo6UmVzb2x2ZXI6OkFsbEJ1dEVtcHR5Q1NTUnVsZXMpOwogICAgIGlmIChzdHlsZUZyb21NYXRj
aGVkUnVsZXMgJiYgIXN0eWxlRnJvbU1hdGNoZWRSdWxlcy0+aXNFbXB0eSgpKQogICAgICAgICBt
X211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbigqbV9tdXRhYmxlU3R5bGUsICpzdHls
ZUZyb21NYXRjaGVkUnVsZXMpOwogCkBAIC0xMzg3LDcgKzEzODcsNyBAQCB2b2lkIEVkaXRpbmdT
dHlsZTo6cmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShFbGVtZW50JiBlbGVt
ZW50KQogICAgIGlmICghbV9tdXRhYmxlU3R5bGUgfHwgbV9tdXRhYmxlU3R5bGUtPmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IGRlZmF1bHRTdHlsZSA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwg
U3R5bGVSZXNvbHZlcjo6VUFBbmRVc2VyQ1NTUnVsZXMpOworICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBkZWZhdWx0U3R5bGUgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVt
ZW50KGVsZW1lbnQsIFN0eWxlOjpSZXNvbHZlcjo6VUFBbmRVc2VyQ1NTUnVsZXMpOwogCiAgICAg
cmVtb3ZlUHJvcGVydGllc0luU3R5bGUobV9tdXRhYmxlU3R5bGUuZ2V0KCksIGRlZmF1bHRTdHls
ZS5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmlu
ZGV4IDc0ZmE2NGIwN2NmLi44YWUxNjI1M2FhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIwNjQsNyArMjA2NCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCgpCiAgICAgICAgIHNldFNlbGVjdGlvbkZy
b21Ob25lKCk7CiAgICAgc2V0Q2FyZXRWaXNpYmlsaXR5KGFjdGl2ZUFuZEZvY3VzZWQgPyBWaXNp
YmxlIDogSGlkZGVuKTsKIAotICAgIC8vIEJlY2F1c2UgU3R5bGVSZXNvbHZlcjo6Y2hlY2tPbmVT
ZWxlY3RvcigpIGFuZAorICAgIC8vIEJlY2F1c2UgU3R5bGU6OlJlc29sdmVyOjpjaGVja09uZVNl
bGVjdG9yKCkgYW5kCiAgICAgLy8gUmVuZGVyVGhlbWU6OmlzRm9jdXNlZCgpIGNoZWNrIGlmIHRo
ZSBmcmFtZSBpcyBhY3RpdmUsIHdlIGhhdmUgdG8KICAgICAvLyB1cGRhdGUgc3R5bGUgYW5kIHRo
ZW1lIHN0YXRlIHRoYXQgZGVwZW5kZWQgb24gdGhvc2UuCiAgICAgaWYgKEVsZW1lbnQqIGVsZW1l
bnQgPSBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggZjIzYWRiYTM4ZTguLjky
YTdlMjFkNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAKQEAgLTU5MCw3ICs1OTAsNyBAQCBSZWZQdHI8SFRNTElucHV0RWxlbWVu
dD4gU2xpZGVyVGh1bWJFbGVtZW50Ojpob3N0SW5wdXQoKSBjb25zdAogICAgIHJldHVybiBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpOwogfQogCi1PcHRpb25hbDxFbGVt
ZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKK09wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKIHsKICAgICAv
LyBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFj
ayB0byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCkBA
IC02NDQsNyArNjQ0LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHkKICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJl
c29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBo
b3N0U3R5bGUpCitPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJF
bGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5k
ZXJTdHlsZSogaG9zdFN0eWxlKQogewogICAgIC8vIFRoaXMgZG9lc24ndCBhY3R1YWxseSBjb21w
dXRlIHN0eWxlLiBUaGlzIGlzIGp1c3QgYSBoYWNrIHRvIHBpY2sgc2hhZG93IHBzZXVkbyBpZCB3
aGVuIGhvc3Qgc3R5bGUgaXMga25vd24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggYjAxOGI5OGIyNWEuLjg0MjBiMDA3YjI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApA
QCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCB3aWxsRGV0YWNoUmVu
ZGVyZXJzKCkgZmluYWw7CiAKLSAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7Cisg
ICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBmaW5hbDsKICAgICBjb25zdCBBdG9t
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBzdGFydERy
YWdnaW5nKCk7CkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTbGlk
ZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBmaW5hbDsKLSAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7Cisg
ICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBmaW5hbDsKICAgICBjb25zdCBBdG9t
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNTbGlkZXJD
b250YWluZXJFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAppbmRleCBkNTY2YmNjNzk0YS4uMDgyOWVmZDdlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAt
ODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJvbmdQYXNzd29yZFRleHRGaWVs
ZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBpczxIVE1MSW5wdXRFbGVtZW50
PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KS0+aGFzQXV0
b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+
IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKK09wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikK
IHsKICAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwog
ICAgIGlmIChpc1N0cm9uZ1Bhc3N3b3JkVGV4dEZpZWxkKHNoYWRvd0hvc3QoKSkpIHsKQEAgLTEw
Miw3ICsxMDIsNyBAQCBSZWY8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRleHRDb250cm9sSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLU9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUp
CitPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUq
IHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZVB0cigpOwogICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbSgqc2hhZG93SG9zdFN0eWxlKTsK
QEAgLTEyNyw3ICsxMjcsNyBAQCBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyUwogICAgICAgICBuZXdT
dHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVscywgRml4ZWQgfSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIEVsZW1lbnRTdHlsZSB7IFdURk1vdmUobmV3U3R5bGUpIH07CisgICAgcmV0dXJu
IHsgV1RGTW92ZShuZXdTdHlsZSkgfTsKIH0KIAogLy8gTUFSSzogVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50CkBAIC0xNzEsMTAgKzE3MSwxMCBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxv
Y2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdAogICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s+KEhUTUxEaXZFbGVtZW50
OjpyZW5kZXJlcigpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitPcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7
CiAgICAgYXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigq
c2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKLSAg
ICByZXR1cm4gRWxlbWVudFN0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5
bGUpKSk7CisgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHls
ZSkpIH07CiB9CiAKIC8vIE1BUks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50CkBAIC0x
OTEsNyArMTkxLDcgQEAgUmVmPFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50PiBUZXh0Q29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW4KICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChkb2N1bWVudCkpOwogfQogCi1P
cHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNv
bHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4g
VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5
bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oCmluZGV4IDdmNjU4MzkwMTAxLi45NjYyOTU5Yjc5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJDb250
YWluZXIoRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOwotICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hv
c3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBUZXh0Q29u
dHJvbElubmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50KERvY3VtZW50Jik7Ci0gICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
c2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0
eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudChEb2N1bWVudCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKICAgICBib29s
IGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiB9OwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50Jik7CiAgICAgCi0gICAgT3B0
aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlk
ZTsKKyAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93
SG9zdFN0eWxlKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA4
ZjA4ZDdhNTkwOS4uZGQxNTA1NzY2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00ODAsOCArNDgwLDggQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICB9CiAKICAgICAvLyBNYXRjaGVkIHJ1bGVzLgot
ICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIgPSBlbGVtZW50LT5zdHlsZVJlc29sdmVy
KCk7Ci0gICAgYXV0byBtYXRjaGVkUnVsZXMgPSBzdHlsZVJlc29sdmVyLnBzZXVkb1N0eWxlUnVs
ZXNGb3JFbGVtZW50KGVsZW1lbnQsIGVsZW1lbnRQc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxs
Q1NTUnVsZXMpOworICAgIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVSZXNvbHZlciA9IGVsZW1lbnQt
PnN0eWxlUmVzb2x2ZXIoKTsKKyAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IHN0eWxlUmVzb2x2ZXIu
cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgZWxlbWVudFBzZXVkb0lkLCBTdHls
ZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICBtYXRjaGVkQ1NTUnVsZXMgPSBidWlsZEFy
cmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KG1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgKmVsZW1l
bnQsIGVsZW1lbnRQc2V1ZG9JZCk7CiAKICAgICBpZiAoIW9yaWdpbmFsRWxlbWVudC0+aXNQc2V1
ZG9FbGVtZW50KCkpIHsKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
bwogICAgICAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50cyA9IEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQgPSBQc2V1ZG9JZDo6Rmlyc3RQdWJsaWNQc2V1ZG9J
ZDsgcHNldWRvSWQgPCBQc2V1ZG9JZDo6QWZ0ZXJMYXN0SW50ZXJuYWxQc2V1ZG9JZDsgcHNldWRv
SWQgPSBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVkb0lk
KSArIDEpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gcHJvdG9jb2xQc2V1ZG9JZCA9IHBy
b3RvY29sVmFsdWVGb3JQc2V1ZG9JZChwc2V1ZG9JZCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
YXV0byBtYXRjaGVkUnVsZXMgPSBzdHlsZVJlc29sdmVyLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVt
ZW50KGVsZW1lbnQsIHBzZXVkb0lkLCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgU3R5bGU6OlJlc29sdmVyOjpB
bGxDU1NSdWxlcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlZFJ1bGVzLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVzID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM6OmNyZWF0ZSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHByb3RvY29sUHNldWRvSWQudmFsdWUoKSkKQEAg
LTUwOSw4ICs1MDksOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVz
Rm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogICAgICAgICAgICAgYXV0
byBlbnRyaWVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVy
aXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIEVsZW1lbnQqIHBhcmVudEVs
ZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgICAgICB3aGlsZSAocGFy
ZW50RWxlbWVudCkgewotICAgICAgICAgICAgICAgIFN0eWxlUmVzb2x2ZXImIHBhcmVudFN0eWxl
UmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCk7Ci0gICAgICAgICAgICAg
ICAgYXV0byBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxlUnVs
ZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsK
KyAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50RWxlbWVu
dC0+c3R5bGVSZXNvbHZlcigpOworICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50TWF0Y2hlZFJ1
bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVt
ZW50LCBTdHlsZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBhdXRv
IGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Ojpj
cmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJy
YXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAq
cGFyZW50RWxlbWVudCwgUHNldWRvSWQ6Ok5vbmUpKQogICAgICAgICAgICAgICAgICAgICAucmVs
ZWFzZSgpOwpAQCAtOTQ0LDEyICs5NDQsMTIgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3QKICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1
bGFyOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNw
ZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSogc3R5bGVSdWxlLCBT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50KQorUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGU6OlJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIC8vIFN0eWxlUnVsZXMgcmV0dXJuZWQgYnkgU3R5
bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQgbGFjayBwYXJlbnQgcG9pbnRlcnMgc2lu
Y2UgdGhhdCBpbmZvbWF0aW9uIGlzIG5vdCBjaGVhcGx5IGF2YWlsYWJsZS4KKyAgICAvLyBTdHls
ZVJ1bGVzIHJldHVybmVkIGJ5IFN0eWxlOjpSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQg
bGFjayBwYXJlbnQgcG9pbnRlcnMgc2luY2UgdGhhdCBpbmZvbWF0aW9uIGlzIG5vdCBjaGVhcGx5
IGF2YWlsYWJsZS4KICAgICAvLyBTaW5jZSB0aGUgaW5zcGVjdG9yIHdhbnRzIHRvIHdhbGsgdGhl
IHBhcmVudCBjaGFpbiwgd2UgY29uc3RydWN0IHRoZSBmdWxsIHdyYXBwZXJzIGhlcmUuCiAgICAg
c3R5bGVSZXNvbHZlci5pbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkuY29sbGVjdERvY3VtZW50V3Jh
cHBlcnMoc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCkpOwog
ICAgIHN0eWxlUmVzb2x2ZXIuaW5zcGVjdG9yQ1NTT01XcmFwcGVycygpLmNvbGxlY3RTY29wZVdy
YXBwZXJzKFN0eWxlOjpTY29wZTo6Zm9yTm9kZShlbGVtZW50KSk7CkBAIC05NzYsNyArOTc2LDcg
QEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NT
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSgKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVl
dCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShydWxlLCBudWxscHRy
KSA6IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRj
aGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVz
LCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9J
ZCBwc2V1ZG9JZCkKK1JlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVs
ZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVzLCBTdHls
ZTo6UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQmIGVsZW1lbnQsIFBzZXVkb0lkIHBz
ZXVkb0lkKQogewogICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggZTQzY2I1Yjc2
MTAuLjY3NDJkZGYyYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC01MCw5ICs1MCwxMiBAQCBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZUxpc3Q7Ci1jbGFzcyBT
dHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVSdWxlOwogCituYW1lc3BhY2UgU3R5bGUgeworY2xh
c3MgUmVzb2x2ZXI7Cit9CisKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50IGZpbmFsIDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSAsIHB1YmxpYyBJbnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlciAsIHB1YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ1NTQWdlbnQpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtMTQyLDkgKzE0NSw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
U3R5bGVTaGVldCogY3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50KERvY3VtZW50
Jik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVj
dE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4g
YnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jik7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmpl
Y3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1lbnQmKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1
bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYs
IFBzZXVkb0lkKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVj
dG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlOjpSZXNvbHZlciYsIEVsZW1lbnQmLCBQc2V1
ZG9JZCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1
aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKFN0eWxlZEVsZW1lbnQmKTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMGFjZTllYzdiZDUuLjQ5NGUwOTc4YTU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNTI1LDkgKzE1MjUsOSBAQCBSZWZQdHI8Q1NTUnVs
ZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFN0cmluZwogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+c3R5bGVTY29wZSgpLmZsdXNoUGVuZGluZ1VwZGF0ZSgpOwogCi0gICAgdW5z
aWduZWQgcnVsZXNUb0luY2x1ZGUgPSBTdHlsZVJlc29sdmVyOjpBdXRob3JDU1NSdWxlczsKKyAg
ICB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IFN0eWxlOjpSZXNvbHZlcjo6QXV0aG9yQ1NTUnVs
ZXM7CiAgICAgaWYgKCFhdXRob3JPbmx5KQotICAgICAgICBydWxlc1RvSW5jbHVkZSB8PSBTdHls
ZVJlc29sdmVyOjpVQUFuZFVzZXJDU1NSdWxlczsKKyAgICAgICAgcnVsZXNUb0luY2x1ZGUgfD0g
U3R5bGU6OlJlc29sdmVyOjpVQUFuZFVzZXJDU1NSdWxlczsKIAogICAgIFBzZXVkb0lkIHBzZXVk
b0lkID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKHBzZXVkb1R5cGUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCBjZjM3OGIwYjI0Yy4uMTkzMGFmNDA3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
NTcwLDcgKzU3MCw3IEBAIHZvaWQgUGFnZTo6aW5pdEdyb3VwKCkKIHZvaWQgUGFnZTo6dXBkYXRl
U3R5bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQoKQogewogICAgIGZvckVhY2hEb2N1bWVudChb
XShEb2N1bWVudCYgZG9jdW1lbnQpIHsKLSAgICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIgPSBkb2N1bWVudC5zdHlsZVNjb3BlKCkucmVzb2x2ZXJJZkV4aXN0cygpKQorICAg
ICAgICBpZiAoU3R5bGU6OlJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9jdW1lbnQuc3R5bGVT
Y29wZSgpLnJlc29sdmVySWZFeGlzdHMoKSkKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmlu
dmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKTsKICAgICAgICAgZG9jdW1lbnQuc2No
ZWR1bGVGdWxsU3R5bGVSZWJ1aWxkKCk7CiAgICAgICAgIGRvY3VtZW50LnN0eWxlU2NvcGUoKS5k
aWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGU1NzYyOTM1OGE0
Li5hZDg2OTE1NzMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgQW5pbWF0aW9uVXBk
YXRlIENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBS
ZW5kZXJTdHlsZSoKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhbmltYXRlZFN0eWxlICYmIGNo
ZWNrRm9yU3RhY2tpbmdDb250ZXh0KSB7Ci0gICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBp
cyBzaW1pbGFyIHRvIGNvZGUgaW4gU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoKSBi
dXQgb25seSBuZWVkcyB0byBjb25zdWx0CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBp
cyBzaW1pbGFyIHRvIGNvZGUgaW4gU3R5bGU6OkFkanVzdGVyOjphZGp1c3QoKSBidXQgb25seSBu
ZWVkcyB0byBjb25zdWx0CiAgICAgICAgICAgICAvLyBhbmltYXRhYmxlIHByb3BlcnRpZXMgdGhh
dCBjYW4gdHJpZ2dlciBzdGFja2luZyBjb250ZXh0LgogICAgICAgICAgICAgaWYgKGFuaW1hdGVk
U3R5bGUtPm9wYWNpdHkoKSA8IDEuMGYKICAgICAgICAgICAgICAgICB8fCBhbmltYXRlZFN0eWxl
LT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAppbmRleCA3N2E4YzM5MjM1Zi4uMzgzYTkzNTY1NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIFJlbmRlck1l
dGVyOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyUHJvZ3Jlc3M7CiBjbGFzcyBS
ZW5kZXJTdHlsZTsKLWNsYXNzIFN0eWxlUmVzb2x2ZXI7CiAKIGNsYXNzIFJlbmRlclRoZW1lIHsK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCmluZGV4IDg3YzZjZTRkN2MwLi45ZDgzZWY4NTdmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAg
c3RhdGljIGJvb2wgcmFyZU5vbkluaGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWlu
dChjb25zdCBTdHlsZVJhcmVOb25JbmgKIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBPcHRpb25TZXQ8U3R5bGVE
aWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5PiYgY2hhbmdlZENvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0aWVzKSBjb25zdAogewotICAgIC8vIFN0eWxlUmVzb2x2ZXIgaGFzIGVuc3VyZWQg
dGhhdCB6SW5kZXggaXMgbm9uLWF1dG8gb25seSBpZiBpdCdzIGFwcGxpY2FibGUuCisgICAgLy8g
U3R5bGU6OlJlc29sdmVyIGhhcyBlbnN1cmVkIHRoYXQgekluZGV4IGlzIG5vbi1hdXRvIG9ubHkg
aWYgaXQncyBhcHBsaWNhYmxlLgogICAgIGlmIChtX2JveERhdGEtPnpJbmRleCgpICE9IG90aGVy
Lm1fYm94RGF0YS0+ekluZGV4KCkgfHwgbV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCkgIT0gb3Ro
ZXIubV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDNiNTBl
ODBmZjRjLi41ODUyMmJkOWU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKQEAgLTExMyw3ICsxMTMsNiBAQCBjbGFzcyBQYWlyOwogY2xhc3MgU2hh
ZG93RGF0YTsKIGNsYXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBTdHlsZUluaGVyaXRlZERhdGE7Ci1j
bGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKIGNsYXNzIFN0
eWxlU2Nyb2xsU25hcFBvcnQ7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApyZW5hbWUgdG8gU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzUwN2JiNmU1ZGUuLjFjYjEwMWZj
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTgxLDEwICs4MSwx
MSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKLVN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVz
b2x2ZXI6OlJlc29sdmVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcnVsZVNldHMoKnRo
aXMpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FE
QVBUQVRJT04pCkBAIC0xMjQsNyArMTI1LDcgQEAgU3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZl
cihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgbV9ydWxlU2V0cy5yZXNldFVzZXJBZ2VudE1lZGlh
UXVlcnlTdHlsZSgpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEN1cnJlbnRTVkdGb250
RmFjZVJ1bGVzKCkKK3ZvaWQgUmVzb2x2ZXI6OmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCkK
IHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChtX2RvY3VtZW50LnN2Z0V4dGVuc2lv
bnMoKSkgewpAQCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkQ3VycmVu
dFNWR0ZvbnRGYWNlUnVsZXMoKQogI2VuZGlmCiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
ZW5kQXV0aG9yU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4m
IHN0eWxlU2hlZXRzKQordm9pZCBSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoY29u
c3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHN0eWxlU2hlZXRzKQogewogICAgIG1f
cnVsZVNldHMuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoc3R5bGVTaGVldHMsICZtX21lZGlhUXVl
cnlFdmFsdWF0b3IsIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVycywgdGhpcyk7CiAKQEAgLTE0OCwx
MyArMTQ5LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMo
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mCiB9CiAKIC8vIFRoaXMgaXMgYSBz
aW1wbGlmaWVkIHN0eWxlIHNldHRpbmcgZnVuY3Rpb24gZm9yIGtleWZyYW1lIHN0eWxlcwotdm9p
ZCBTdHlsZVJlc29sdmVyOjphZGRLZXlmcmFtZVN0eWxlKFJlZjxTdHlsZVJ1bGVLZXlmcmFtZXM+
JiYgcnVsZSkKK3ZvaWQgUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUoUmVmPFN0eWxlUnVsZUtl
eWZyYW1lcz4mJiBydWxlKQogewogICAgIEF0b21TdHJpbmcgcyhydWxlLT5uYW1lKCkpOwogICAg
IG1fa2V5ZnJhbWVzUnVsZU1hcC5zZXQocy5pbXBsKCksIFdURk1vdmUocnVsZSkpOwogfQogCi1T
dHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigpCitSZXNvbHZlcjo6flJlc29sdmVyKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9kb2N1bWVudC5pc1Jlc29sdmluZ1RyZWVTdHlsZSgpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0RlbGV0ZWQpOwpAQCAtMTY1LDcgKzE2Niw3IEBAIFN0
eWxlUmVzb2x2ZXI6On5TdHlsZVJlc29sdmVyKCkKICNlbmRpZgogfQogCi1TdHlsZVJlc29sdmVy
OjpTdGF0ZTo6U3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogZG9jdW1lbnRFbGVtZW50U3R5bGUpCitS
ZXNvbHZlcjo6U3RhdGU6OlN0YXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIGRvY3VtZW50RWxlbWVudFN0
eWxlKQogICAgIDogbV9lbGVtZW50KCZlbGVtZW50KQogICAgICwgbV9wYXJlbnRTdHlsZShwYXJl
bnRTdHlsZSkKIHsKQEAgLTE4MSwxMiArMTgyLDEyIEBAIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpT
dGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
CiAgICAgICAgIG1fcm9vdEVsZW1lbnRTdHlsZSA9IGRvY3VtZW50RWxlbWVudFN0eWxlID8gZG9j
dW1lbnRFbGVtZW50U3R5bGUgOiBkb2N1bWVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHN0eWxlKQoraW5saW5lIHZvaWQgUmVzb2x2ZXI6OlN0YXRlOjpzZXRT
dHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIG1fc3R5bGUg
PSBXVEZNb3ZlKHN0eWxlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6
OnNldFBhcmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50U3R5bGUp
CitpbmxpbmUgdm9pZCBSZXNvbHZlcjo6U3RhdGU6OnNldFBhcmVudFN0eWxlKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50U3R5bGUpCiB7CiAgICAgbV9vd25lZFBhcmVudFN0eWxl
ID0gV1RGTW92ZShwYXJlbnRTdHlsZSk7CiAgICAgbV9wYXJlbnRTdHlsZSA9IG1fb3duZWRQYXJl
bnRTdHlsZS5nZXQoKTsKQEAgLTE5OCw3ICsxOTksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNB
dFNoYWRvd0JvdW5kYXJ5KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIHBhcmVu
dE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CiB9CiAKLVN0eWxlOjpCdWlsZGVy
Q29udGV4dCBTdHlsZVJlc29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUp
CitCdWlsZGVyQ29udGV4dCBSZXNvbHZlcjo6YnVpbGRlckNvbnRleHQoY29uc3QgU3RhdGUmIHN0
YXRlKQogewogICAgIHJldHVybiB7CiAgICAgICAgIG1fZG9jdW1lbnQsCkBAIC0yMDgsNyArMjA5
LDcgQEAgU3R5bGU6OkJ1aWxkZXJDb250ZXh0IFN0eWxlUmVzb2x2ZXI6OmJ1aWxkZXJDb250ZXh0
KGNvbnN0IFN0YXRlJiBzdGF0ZSkKICAgICB9OwogfQogCi1FbGVtZW50U3R5bGUgU3R5bGVSZXNv
bHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlLCBS
dWxlTWF0Y2hpbmdCZWhhdmlvciBtYXRjaGluZ0JlaGF2aW9yLCBjb25zdCBTZWxlY3RvckZpbHRl
ciogc2VsZWN0b3JGaWx0ZXIpCitFbGVtZW50U3R5bGUgUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVu
dChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgUnVsZU1hdGNoaW5nQmVoYXZpb3Ig
bWF0Y2hpbmdCZWhhdmlvciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVsZXRlZCk7CiAKQEAgLTI1MiwxMSArMjUzLDEx
IEBAIEVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyCiAgICAgaWYgKGNvbGxlY3Rvci5kaWRNYXRjaFVu
Y29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKSkKICAgICAgICAgc3R5bGUuc2V0VW5pcXVlKCk7CiAK
LSAgICBhdXRvIGVsZW1lbnRTdHlsZVJlbGF0aW9ucyA9IFN0eWxlOjpjb21taXRSZWxhdGlvbnNU
b1JlbmRlclN0eWxlKHN0eWxlLCBlbGVtZW50LCBjb2xsZWN0b3Iuc3R5bGVSZWxhdGlvbnMoKSk7
CisgICAgYXV0byBlbGVtZW50U3R5bGVSZWxhdGlvbnMgPSBjb21taXRSZWxhdGlvbnNUb1JlbmRl
clN0eWxlKHN0eWxlLCBlbGVtZW50LCBjb2xsZWN0b3Iuc3R5bGVSZWxhdGlvbnMoKSk7CiAKICAg
ICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKHN0YXRlLCBjb2xsZWN0b3IubWF0Y2hSZXN1bHQoKSk7
CiAKLSAgICBTdHlsZTo6QWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQoKSwgKnN0YXRlLnBhcmVu
dFN0eWxlKCksIHBhcmVudEJveFN0eWxlLCAmZWxlbWVudCk7CisgICAgQWRqdXN0ZXIgYWRqdXN0
ZXIoZG9jdW1lbnQoKSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIHBhcmVudEJveFN0eWxlLCAmZWxl
bWVudCk7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0ZS5zdHlsZSgpLCBzdGF0ZS51c2VyQWdl
bnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICBpZiAoc3RhdGUuc3R5bGUoKS0+aGFzVmlld3Bv
cnRVbml0cygpKQpAQCAtMjY1LDcgKzI2Niw3IEBAIEVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVy
OjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyCiAg
ICAgcmV0dXJuIHsgc3RhdGUudGFrZVN0eWxlKCksIFdURk1vdmUoZWxlbWVudFN0eWxlUmVsYXRp
b25zKSB9OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6
OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5
bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgU3R5bGVSdWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlm
cmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVlKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBS
ZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBS
ZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSoga2V5ZnJh
bWUsIEtleWZyYW1lVmFsdWUmIGtleWZyYW1lVmFsdWUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IW1faXNEZWxldGVkKTsKIApAQCAtMjc3LDEwICsyNzgsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IEVsZW1lbnQm
IGVsZW0KICAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmVsZW1lbnRT
dHlsZSkpOwogICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
ZWxlbWVudFN0eWxlKSk7CiAKLSAgICBTdHlsZTo6QnVpbGRlciBidWlsZGVyKCpzdGF0ZS5zdHls
ZSgpLCBidWlsZGVyQ29udGV4dChzdGF0ZSksIHJlc3VsdCwgeyBTdHlsZTo6Q2FzY2FkZUxldmVs
OjpBdXRob3IgfSk7CisgICAgQnVpbGRlciBidWlsZGVyKCpzdGF0ZS5zdHlsZSgpLCBidWlsZGVy
Q29udGV4dChzdGF0ZSksIHJlc3VsdCwgeyBDYXNjYWRlTGV2ZWw6OkF1dGhvciB9KTsKICAgICBi
dWlsZGVyLmFwcGx5QWxsUHJvcGVydGllcygpOwogCi0gICAgU3R5bGU6OkFkanVzdGVyIGFkanVz
dGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBudWxscHRyLCBudWxscHRyKTsK
KyAgICBBZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwg
bnVsbHB0ciwgbnVsbHB0cik7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0ZS5zdHlsZSgpLCBz
dGF0ZS51c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICAvLyBBZGQgYWxsIHRoZSBh
bmltYXRpbmcgcHJvcGVydGllcyB0byB0aGUga2V5ZnJhbWUuCkBAIC0yOTYsMTIgKzI5NywxMiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5
ZnJhbWUoY29uc3QgRWxlbWVudCYgZWxlbQogICAgIHJldHVybiBzdGF0ZS50YWtlU3R5bGUoKTsK
IH0KIAotYm9vbCBTdHlsZVJlc29sdmVyOjppc0FuaW1hdGlvbk5hbWVWYWxpZChjb25zdCBTdHJp
bmcmIG5hbWUpCitib29sIFJlc29sdmVyOjppc0FuaW1hdGlvbk5hbWVWYWxpZChjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fa2V5ZnJhbWVzUnVsZU1hcC5maW5kKEF0b21TdHJp
bmcobmFtZSkuaW1wbCgpKSAhPSBtX2tleWZyYW1lc1J1bGVNYXAuZW5kKCk7CiB9CiAKLXZvaWQg
U3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgS2V5ZnJhbWVMaXN0JiBs
aXN0KQordm9pZCBSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgS2V5ZnJhbWVM
aXN0JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsKIApAQCAtMzk3LDcgKzM5OCw3IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgUmVuCiAgICAgfQogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVkb1N0eWxlUmVxdWVzdCwg
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
Qm94U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK3N0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25z
dCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVkb1N0eWxl
UmVxdWVzdCwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogcGFyZW50Qm94U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikK
IHsKICAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwgJnBhcmVudFN0eWxlLCBtX292ZXJy
aWRlRG9jdW1lbnRFbGVtZW50U3R5bGUpOwogCkBAIC00MjgsNyArNDI5LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQo
Y29uc3QgRWxlbWVudCYKIAogICAgIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoc3RhdGUsIGNvbGxl
Y3Rvci5tYXRjaFJlc3VsdCgpKTsKIAotICAgIFN0eWxlOjpBZGp1c3RlciBhZGp1c3Rlcihkb2N1
bWVudCgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwgcGFyZW50Qm94U3R5bGUsIG51bGxwdHIpOwor
ICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBw
YXJlbnRCb3hTdHlsZSwgbnVsbHB0cik7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0ZS5zdHls
ZSgpLCBzdGF0ZS51c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICBpZiAoc3RhdGUu
c3R5bGUoKS0+aGFzVmlld3BvcnRVbml0cygpKQpAQCAtNDM3LDcgKzQzOCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50
KGNvbnN0IEVsZW1lbnQmCiAgICAgcmV0dXJuIHN0YXRlLnRha2VTdHlsZSgpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQg
cGFnZUluZGV4KQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNvbHZlcjo6c3R5bGVG
b3JQYWdlKGludCBwYWdlSW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNEZWxldGVk
KTsKIApAQCAtNDU1LDE0ICs0NTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBT
dHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKIAogICAgIGF1dG8mIHJl
c3VsdCA9IGNvbGxlY3Rvci5tYXRjaFJlc3VsdCgpOwogCi0gICAgU3R5bGU6OkJ1aWxkZXIgYnVp
bGRlcigqc3RhdGUuc3R5bGUoKSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCByZXN1bHQsIHsgU3R5
bGU6OkNhc2NhZGVMZXZlbDo6QXV0aG9yIH0pOworICAgIEJ1aWxkZXIgYnVpbGRlcigqc3RhdGUu
c3R5bGUoKSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCByZXN1bHQsIHsgQ2FzY2FkZUxldmVsOjpB
dXRob3IgfSk7CiAgICAgYnVpbGRlci5hcHBseUFsbFByb3BlcnRpZXMoKTsKIAogICAgIC8vIE5v
dyByZXR1cm4gdGhlIHN0eWxlLgogICAgIHJldHVybiBzdGF0ZS50YWtlU3R5bGUoKTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpkZWZhdWx0U3R5bGVG
b3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IFJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQpCiB7CiAgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKIApA
QCAtNDcxLDkgKzQ3Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNv
bHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldE9uZUZhbWlseShzdGFuZGFyZEZhbWlseSk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldEtleXdvcmRTaXplRnJvbUlkZW50aWZpZXIoQ1NTVmFsdWVNZWRpdW0pOwogCi0gICAgYXV0
byBzaXplID0gU3R5bGU6OmZvbnRTaXplRm9yS2V5d29yZChDU1NWYWx1ZU1lZGl1bSwgZmFsc2Us
IGRvY3VtZW50KCkpOworICAgIGF1dG8gc2l6ZSA9IGZvbnRTaXplRm9yS2V5d29yZChDU1NWYWx1
ZU1lZGl1bSwgZmFsc2UsIGRvY3VtZW50KCkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVj
aWZpZWRTaXplKHNpemUpOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoU3R5
bGU6OmNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzaXplLCBmb250RGVzY3JpcHRp
b24uaXNBYnNvbHV0ZVNpemUoKSwgaXM8U1ZHRWxlbWVudD4oZWxlbWVudCksIHN0eWxlLmdldCgp
LCBkb2N1bWVudCgpKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21w
dXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJz
b2x1dGVTaXplKCksIGlzPFNWR0VsZW1lbnQ+KGVsZW1lbnQpLCBzdHlsZS5nZXQoKSwgZG9jdW1l
bnQoKSkpOwogCiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNob3VsZEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKHNldHRpbmdzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSA/IEFsbG93
VXNlckluc3RhbGxlZEZvbnRzOjpZZXMgOiBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pOwog
ICAgIHN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsK
QEAgLTQ4MywxMiArNDg0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVS
ZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50CiAgICAgcmV0dXJu
IHN0eWxlOwogfQogCi1WZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUmVzb2x2ZXI6OnN0
eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVz
VG9JbmNsdWRlKQorVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6c3R5bGVSdWxl
c0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcnVsZXNUb0luY2x1
ZGUpCiB7CiAgICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIFBz
ZXVkb0lkOjpOb25lLCBydWxlc1RvSW5jbHVkZSk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8U3R5bGVS
dWxlPj4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxl
bWVudCogZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRl
KQorVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0Zv
ckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2ln
bmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJu
IHsgfTsKQEAgLTUyOCwyNyArNTI5LDI3IEBAIHN0YXRpYyBib29sIGVsZW1lbnRUeXBlSGFzQXBw
ZWFyYW5jZUZyb21VQVN0eWxlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHx8IGxv
Y2FsTmFtZSA9PSBIVE1MTmFtZXM6Om1ldGVyVGFnOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6
OmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKQordm9pZCBSZXNvbHZlcjo6aW52
YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpCiB7CiAgICAgbV9tYXRjaGVkRGVjbGFy
YXRpb25zQ2FjaGUuaW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmNsZWFy
Q2FjaGVkRGVjbGFyYXRpb25zQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMoKQordm9pZCBSZXNvbHZl
cjo6Y2xlYXJDYWNoZWREZWNsYXJhdGlvbnNBZmZlY3RlZEJ5Vmlld3BvcnRVbml0cygpCiB7CiAg
ICAgbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuY2xlYXJFbnRyaWVzQWZmZWN0ZWRCeVZpZXdw
b3J0VW5pdHMoKTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0
aWVzKFN0YXRlJiBzdGF0ZSwgY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBVc2VNYXRj
aGVkRGVjbGFyYXRpb25zQ2FjaGUgdXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlKQordm9pZCBS
ZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhTdGF0ZSYgc3RhdGUsIGNvbnN0IE1hdGNo
UmVzdWx0JiBtYXRjaFJlc3VsdCwgVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlIHVzZU1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZSkKIHsKLSAgICB1bnNpZ25lZCBjYWNoZUhhc2ggPSB1c2VNYXRj
aGVkRGVjbGFyYXRpb25zQ2FjaGUgPT0gVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpZZXMg
PyBTdHlsZTo6TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpjb21wdXRlSGFzaChtYXRjaFJlc3Vs
dCkgOiAwOwotICAgIGF1dG8gaW5jbHVkZWRQcm9wZXJ0aWVzID0gU3R5bGU6OlByb3BlcnR5Q2Fz
Y2FkZTo6SW5jbHVkZWRQcm9wZXJ0aWVzOjpBbGw7CisgICAgdW5zaWduZWQgY2FjaGVIYXNoID0g
dXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlID09IFVzZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNo
ZTo6WWVzID8gTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpjb21wdXRlSGFzaChtYXRjaFJlc3Vs
dCkgOiAwOworICAgIGF1dG8gaW5jbHVkZWRQcm9wZXJ0aWVzID0gUHJvcGVydHlDYXNjYWRlOjpJ
bmNsdWRlZFByb3BlcnRpZXM6OkFsbDsKIAogICAgIGF1dG8mIHN0eWxlID0gKnN0YXRlLnN0eWxl
KCk7CiAgICAgYXV0byYgcGFyZW50U3R5bGUgPSAqc3RhdGUucGFyZW50U3R5bGUoKTsKICAgICBh
dXRvJiBlbGVtZW50ID0gKnN0YXRlLmVsZW1lbnQoKTsKIAogICAgIGF1dG8qIGNhY2hlRW50cnkg
PSBtX21hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5maW5kKGNhY2hlSGFzaCwgbWF0Y2hSZXN1bHQp
OwotICAgIGlmIChjYWNoZUVudHJ5ICYmIFN0eWxlOjpNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6
OmlzQ2FjaGVhYmxlKGVsZW1lbnQsIHN0eWxlLCBwYXJlbnRTdHlsZSkpIHsKKyAgICBpZiAoY2Fj
aGVFbnRyeSAmJiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OmlzQ2FjaGVhYmxlKGVsZW1lbnQs
IHN0eWxlLCBwYXJlbnRTdHlsZSkpIHsKICAgICAgICAgLy8gV2UgY2FuIGJ1aWxkIHVwIHRoZSBz
dHlsZSBieSBjb3B5aW5nIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcyBmcm9tIGFuIGVhcmxpZXIg
c3R5bGUgb2JqZWN0IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGV4YWN0CiAgICAgICAgIC8vIHN0eWxl
IGRlY2xhcmF0aW9ucy4gV2UgdGhlbiBvbmx5IG5lZWQgdG8gYXBwbHkgdGhlIGluaGVyaXRlZCBw
cm9wZXJ0aWVzLCBpZiBhbnksIGFzIHRoZWlyIHZhbHVlcyBjYW4gZGVwZW5kIG9uIHRoZSAKICAg
ICAgICAgLy8gZWxlbWVudCBjb250ZXh0LiBUaGlzIGlzIGZhc3QgYW5kIHNhdmVzIG1lbW9yeSBi
eSByZXVzaW5nIHRoZSBzdHlsZSBkYXRhIHN0cnVjdHVyZXMuCkBAIC01NjUsNyArNTY2LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKFN0YXRlJiBzdGF0ZSwg
Y29uc3QgTWF0Y2hSZXN1bHQmIG1hdGMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaW5jbHVkZWRQcm9wZXJ0aWVzID0gU3R5bGU6OlByb3BlcnR5Q2Fz
Y2FkZTo6SW5jbHVkZWRQcm9wZXJ0aWVzOjpJbmhlcml0ZWRPbmx5OworICAgICAgICBpbmNsdWRl
ZFByb3BlcnRpZXMgPSBQcm9wZXJ0eUNhc2NhZGU6OkluY2x1ZGVkUHJvcGVydGllczo6SW5oZXJp
dGVkT25seTsKICAgICB9CiAKICAgICBpZiAoZWxlbWVudFR5cGVIYXNBcHBlYXJhbmNlRnJvbVVB
U3R5bGUoZWxlbWVudCkpIHsKQEAgLTU3MywxMyArNTc0LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhTdGF0ZSYgc3RhdGUsIGNvbnN0IE1hdGNoUmVzdWx0
JiBtYXRjCiAgICAgICAgIC8vIElmIHNvLCB3ZSBjYWNoZSB0aGUgYm9yZGVyIGFuZCBiYWNrZ3Jv
dW5kIHN0eWxlcyBzbyB0aGF0IFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSgpCiAgICAgICAgIC8v
IGNhbiBsb29rIGF0IHRoZW0gbGF0ZXIgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGEgc3R5bGVk
IGZvcm0gY29udHJvbCBvciBub3QuCiAgICAgICAgIGF1dG8gdXNlckFnZW50U3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y2xvbmVQdHIoc3R5bGUpOwotICAgICAgICBTdHlsZTo6QnVpbGRlciBidWlsZGVy
KCp1c2VyQWdlbnRTdHlsZSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCBtYXRjaFJlc3VsdCwgeyBT
dHlsZTo6Q2FzY2FkZUxldmVsOjpVc2VyQWdlbnQgfSk7CisgICAgICAgIEJ1aWxkZXIgYnVpbGRl
cigqdXNlckFnZW50U3R5bGUsIGJ1aWxkZXJDb250ZXh0KHN0YXRlKSwgbWF0Y2hSZXN1bHQsIHsg
Q2FzY2FkZUxldmVsOjpVc2VyQWdlbnQgfSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwbHlBbGxQcm9w
ZXJ0aWVzKCk7CiAKICAgICAgICAgc3RhdGUuc2V0VXNlckFnZW50QXBwZWFyYW5jZVN0eWxlKFdU
Rk1vdmUodXNlckFnZW50U3R5bGUpKTsKICAgICB9CiAKLSAgICBTdHlsZTo6QnVpbGRlciBidWls
ZGVyKCpzdGF0ZS5zdHlsZSgpLCBidWlsZGVyQ29udGV4dChzdGF0ZSksIG1hdGNoUmVzdWx0LCBT
dHlsZTo6YWxsQ2FzY2FkZUxldmVscygpLCBpbmNsdWRlZFByb3BlcnRpZXMpOworICAgIEJ1aWxk
ZXIgYnVpbGRlcigqc3RhdGUuc3R5bGUoKSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCBtYXRjaFJl
c3VsdCwgYWxsQ2FzY2FkZUxldmVscygpLCBpbmNsdWRlZFByb3BlcnRpZXMpOwogCiAgICAgLy8g
SGlnaCBwcmlvcml0eSBwcm9wZXJ0aWVzIG1heSBhZmZlY3QgcmVzb2x1dGlvbiBvZiBvdGhlciBw
cm9wZXJ0aWVzICh0aGV5IGFyZSBtb3N0bHkgZm9udCByZWxhdGVkKS4KICAgICBidWlsZGVyLmFw
cGx5SGlnaFByaW9yaXR5UHJvcGVydGllcygpOwpAQCAtNjAwLDE4ICs2MDEsMTggQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKFN0YXRlJiBzdGF0ZSwgY29uc3Qg
TWF0Y2hSZXN1bHQmIG1hdGMKICAgICBpZiAoY2FjaGVFbnRyeSB8fCAhY2FjaGVIYXNoKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoU3R5bGU6Ok1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6
aXNDYWNoZWFibGUoZWxlbWVudCwgc3R5bGUsIHBhcmVudFN0eWxlKSkKKyAgICBpZiAoTWF0Y2hl
ZERlY2xhcmF0aW9uc0NhY2hlOjppc0NhY2hlYWJsZShlbGVtZW50LCBzdHlsZSwgcGFyZW50U3R5
bGUpKQogICAgICAgICBtX21hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5hZGQoc3R5bGUsIHBhcmVu
dFN0eWxlLCBjYWNoZUhhc2gsIG1hdGNoUmVzdWx0KTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVy
OjphZGRWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHQoY29uc3QgTWVkaWFRdWVyeUV4
cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVzdWx0KQordm9pZCBSZXNvbHZlcjo6YWRkVmll
d3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9u
JiBleHByZXNzaW9uLCBib29sIHJlc3VsdCkKIHsKICAgICBtX3ZpZXdwb3J0RGVwZW5kZW50TWVk
aWFRdWVyeVJlc3VsdHMuYXBwZW5kKE1lZGlhUXVlcnlSZXN1bHQgeyBleHByZXNzaW9uLCByZXN1
bHQgfSk7CiB9CiAKLWJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRC
eVZpZXdwb3J0Q2hhbmdlKCkgY29uc3QKK2Jvb2wgUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0Fm
ZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0CiB7Ci0gICAgTE9HKE1lZGlhUXVlcmllcywg
IlN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSBl
dmFsdWF0aW5nIHF1ZXJpZXMiKTsKKyAgICBMT0coTWVkaWFRdWVyaWVzLCAiU3R5bGU6OlJlc29s
dmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UgZXZhbHVhdGluZyBx
dWVyaWVzIik7CiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiBtX3ZpZXdwb3J0RGVwZW5kZW50TWVk
aWFRdWVyeVJlc3VsdHMpIHsKICAgICAgICAgaWYgKG1fbWVkaWFRdWVyeUV2YWx1YXRvci5ldmFs
dWF0ZShyZXN1bHQuZXhwcmVzc2lvbikgIT0gcmVzdWx0LnJlc3VsdCkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtNjE5LDE0ICs2MjAsMTQgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNN
ZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjphZGRBY2Nlc3NpYmlsaXR5U2V0dGluZ3NE
ZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBib29sIHJlc3VsdCkKK3ZvaWQgUmVzb2x2ZXI6OmFkZEFjY2Vzc2liaWxpdHlTZXR0
aW5nc0RlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHQoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24m
IGV4cHJlc3Npb24sIGJvb2wgcmVzdWx0KQogewogICAgIG1fYWNjZXNzaWJpbGl0eVNldHRpbmdz
RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuYXBwZW5kKE1lZGlhUXVlcnlSZXN1bHQgeyBleHBy
ZXNzaW9uLCByZXN1bHQgfSk7CiB9CiAKLWJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVkaWFRdWVy
aWVzQWZmZWN0ZWRCeUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZSgpIGNvbnN0Citib29sIFJl
c29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hh
bmdlKCkgY29uc3QKIHsKLSAgICBMT0coTWVkaWFRdWVyaWVzLCAiU3R5bGVSZXNvbHZlcjo6aGFz
TWVkaWFRdWVyaWVzQWZmZWN0ZWRCeUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZSBldmFsdWF0
aW5nIHF1ZXJpZXMiKTsKKyAgICBMT0coTWVkaWFRdWVyaWVzLCAiU3R5bGU6OlJlc29sdmVyOjpo
YXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlIGV2YWx1
YXRpbmcgcXVlcmllcyIpOwogICAgIGZvciAoYXV0byYgcmVzdWx0IDogbV9hY2Nlc3NpYmlsaXR5
U2V0dGluZ3NEZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cykgewogICAgICAgICBpZiAobV9tZWRp
YVF1ZXJ5RXZhbHVhdG9yLmV2YWx1YXRlKHJlc3VsdC5leHByZXNzaW9uKSAhPSByZXN1bHQucmVz
dWx0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MzQsMTQgKzYzNSwxNCBAQCBib29s
IFN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlBY2Nlc3NpYmlsaXR5U2V0
dGluZ3NDaGFuZ2UoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTdHlsZVJl
c29sdmVyOjphZGRBcHBlYXJhbmNlRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdChjb25zdCBNZWRp
YVF1ZXJ5RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXN1bHQpCit2b2lkIFJlc29sdmVy
OjphZGRBcHBlYXJhbmNlRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdChjb25zdCBNZWRpYVF1ZXJ5
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXN1bHQpCiB7CiAgICAgbV9hcHBlYXJhbmNl
RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuYXBwZW5kKE1lZGlhUXVlcnlSZXN1bHQgeyBleHBy
ZXNzaW9uLCByZXN1bHQgfSk7CiB9CiAKLWJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVkaWFRdWVy
aWVzQWZmZWN0ZWRCeUFwcGVhcmFuY2VDaGFuZ2UoKSBjb25zdAorYm9vbCBSZXNvbHZlcjo6aGFz
TWVkaWFRdWVyaWVzQWZmZWN0ZWRCeUFwcGVhcmFuY2VDaGFuZ2UoKSBjb25zdAogewotICAgIExP
RyhNZWRpYVF1ZXJpZXMsICJTdHlsZVJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5
QXBwZWFyYW5jZUNoYW5nZSBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKKyAgICBMT0coTWVkaWFRdWVy
aWVzLCAiU3R5bGU6OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QXBwZWFyYW5j
ZUNoYW5nZSBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IG1f
YXBwZWFyYW5jZURlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzKSB7CiAgICAgICAgIGlmIChtX21l
ZGlhUXVlcnlFdmFsdWF0b3IuZXZhbHVhdGUocmVzdWx0LmV4cHJlc3Npb24pICE9IHJlc3VsdC5y
ZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY0OSw0ICs2NTAsNSBAQCBib29s
IFN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlBcHBlYXJhbmNlQ2hhbmdl
KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFN0eWxlCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCnNpbWls
YXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAppbmRl
eCAwZTI4MjQwY2VlMi4uZTIyMjQ1MzM4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
ci5oCkBAIC0zOSwzNCArMzksMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBD
U1NDdXJzb3JJbWFnZVZhbHVlOwotY2xhc3MgQ1NTRm9udEZhY2U7Ci1jbGFzcyBDU1NGb250RmFj
ZVJ1bGU7Ci1jbGFzcyBDU1NGb250VmFsdWU7Ci1jbGFzcyBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OwotY2xhc3MgQ1NTSW1hZ2VTZXRWYWx1ZTsKLWNsYXNzIENTU0ltYWdlVmFsdWU7Ci1jbGFzcyBD
U1NQYWdlUnVsZTsKLWNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwotY2xhc3MgQ1NTUHJvcGVydHk7
CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwotY2xhc3MgQ1NTVmFsdWU7Ci1jbGFzcyBDb250YWluZXJO
b2RlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwotY2xhc3MgRnJhbWU7Ci1jbGFz
cyBGcmFtZVZpZXc7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBLZXlmcmFtZVZhbHVlOwot
Y2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKLWNsYXNzIE5vZGU7CitjbGFzcyBQYWdlUnVsZUNv
bGxlY3RvcjsKIGNsYXNzIFJ1bGVEYXRhOwogY2xhc3MgUnVsZVNldDsKIGNsYXNzIFNlbGVjdG9y
RmlsdGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBTdHlsZUNhY2hlZEltYWdlOwotY2xhc3Mg
U3R5bGVHZW5lcmF0ZWRJbWFnZTsKLWNsYXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBTdHlsZVJ1bGVL
ZXlmcmFtZTsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFN0eWxlUnVsZTsKQEAgLTc0
LDEwICs1Niw3IEBAIGNsYXNzIFN0eWxlUnVsZUtleWZyYW1lczsKIGNsYXNzIFN0eWxlUnVsZVBh
Z2U7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldExpc3Q7Ci1jbGFzcyBTdHls
ZWRFbGVtZW50OwotY2xhc3MgU1ZHRWxlbWVudDsKIGNsYXNzIFZpZXdwb3J0U3R5bGVSZXNvbHZl
cjsKLXN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKIC8vIE1hdGNoT25seVVzZXJBZ2Vu
dFJ1bGVzIGlzIHVzZWQgaW4gbWVkaWEgcXVlcmllcywgd2hlcmUgcmVsYXRpdmUgdW5pdHMKIC8v
IGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gdGhlIGRvY3VtZW50IHJvb3QgZWxlbWVudCBz
dHlsZSwgYW5kIHN0eWxlZCBvbmx5CkBAIC04OSwyMiArNjgsMjMgQEAgZW51bSBjbGFzcyBSdWxl
TWF0Y2hpbmdCZWhhdmlvcjogdWludDhfdCB7CiAgICAgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMs
CiB9OwogCituYW1lc3BhY2UgU3R5bGUgeworCiBzdHJ1Y3QgRWxlbWVudFN0eWxlIHsKLSAgICBF
bGVtZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZW5kZXJTdHlsZSwgc3Rk
Ojp1bmlxdWVfcHRyPFN0eWxlOjpSZWxhdGlvbnM+IHJlbGF0aW9ucyA9IHsgfSkKKyAgICBFbGVt
ZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZW5kZXJTdHlsZSwgc3RkOjp1
bmlxdWVfcHRyPFJlbGF0aW9ucz4gcmVsYXRpb25zID0geyB9KQogICAgICAgICA6IHJlbmRlclN0
eWxlKFdURk1vdmUocmVuZGVyU3R5bGUpKQogICAgICAgICAsIHJlbGF0aW9ucyhXVEZNb3ZlKHJl
bGF0aW9ucykpCiAgICAgeyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJl
bmRlclN0eWxlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6UmVsYXRpb25zPiByZWxhdGlv
bnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4gcmVsYXRpb25zOwogfTsKIAotLy8g
VGhpcyBjbGFzcyBzZWxlY3RzIGEgUmVuZGVyU3R5bGUgZm9yIGEgZ2l2ZW4gZWxlbWVudCBiYXNl
ZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3R5bGVzaGVldHMuCi1jbGFzcyBTdHlsZVJlc29sdmVyIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVJlc29sdmVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitjbGFzcyBSZXNvbHZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVz
b2x2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdHlsZVJlc29s
dmVyKERvY3VtZW50Jik7Ci0gICAgflN0eWxlUmVzb2x2ZXIoKTsKKyAgICBSZXNvbHZlcihEb2N1
bWVudCYpOworICAgIH5SZXNvbHZlcigpOwogCiAgICAgRWxlbWVudFN0eWxlIHN0eWxlRm9yRWxl
bWVudChjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBSdWxlTWF0Y2hpbmdCZWhh
dmlvciA9IFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzLCBjb25zdCBTZWxlY3Rv
ckZpbHRlciogPSBudWxscHRyKTsKIApAQCAtMTc1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICBJ
bnNwZWN0b3JDU1NPTVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkgeyByZXR1cm4g
bV9pbnNwZWN0b3JDU1NPTVdyYXBwZXJzOyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNz
IFBhZ2VSdWxlQ29sbGVjdG9yOworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpQYWdlUnVsZUNv
bGxlY3RvcjsKIAogICAgIGNsYXNzIFN0YXRlIHsKICAgICBwdWJsaWM6CkBAIC0yMDYsNyArMTg2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBtX3Vz
ZXJBZ2VudEFwcGVhcmFuY2VTdHlsZTsKICAgICB9OwogCi0gICAgU3R5bGU6OkJ1aWxkZXJDb250
ZXh0IGJ1aWxkZXJDb250ZXh0KGNvbnN0IFN0YXRlJik7CisgICAgQnVpbGRlckNvbnRleHQgYnVp
bGRlckNvbnRleHQoY29uc3QgU3RhdGUmKTsKIAogICAgIGVudW0gY2xhc3MgVXNlTWF0Y2hlZERl
Y2xhcmF0aW9uc0NhY2hlIHsgWWVzLCBObyB9OwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVy
dGllcyhTdGF0ZSYsIGNvbnN0IE1hdGNoUmVzdWx0JiwgVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0Nh
Y2hlID0gVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpZZXMpOwpAQCAtMjMzLDE0ICsyMTMs
MTQgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMgbV9pbnNwZWN0b3JD
U1NPTVdyYXBwZXJzOwogCi0gICAgU3R5bGU6Ok1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSBtX21h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZTsKKyAgICBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgbV9t
YXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU7CiAKICAgICBib29sIG1fbWF0Y2hBdXRob3JBbmRVc2Vy
U3R5bGVzIHsgdHJ1ZSB9OwotICAgIC8vIFNlZSBpZiB3ZSBzdGlsbCBoYXZlIGNyYXNoZXMgd2hl
cmUgU3R5bGVSZXNvbHZlciBnZXRzIGRlbGV0ZWQgZWFybHkuCisgICAgLy8gU2VlIGlmIHdlIHN0
aWxsIGhhdmUgY3Jhc2hlcyB3aGVyZSBSZXNvbHZlciBnZXRzIGRlbGV0ZWQgZWFybHkuCiAgICAg
Ym9vbCBtX2lzRGVsZXRlZCB7IGZhbHNlIH07CiB9OwogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29s
dmVyOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBBdG9tU3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25zdAoraW5saW5lIGJvb2wgUmVzb2x2ZXI6
Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0
b21TdHJpbmcgJmF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdHRyaWJ1dGVO
YW1lLmlzRW1wdHkoKSk7CiAgICAgaWYgKGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpKQpAQCAtMjQ4
LDEwICsyMjgsMTEgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JB
dHRyaWJ1dGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QKICAgICByZXR1cm4gbV9ydWxl
U2V0cy5mZWF0dXJlcygpLmF0dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzLmNvbnRhaW5zKGF0dHJp
YnV0ZU5hbWUpOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZv
cklkKGNvbnN0IEF0b21TdHJpbmcmIGlkVmFsdWUpIGNvbnN0CitpbmxpbmUgYm9vbCBSZXNvbHZl
cjo6aGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9tU3RyaW5nJiBpZFZhbHVlKSBjb25zdAogewog
ICAgIEFTU0VSVCghaWRWYWx1ZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBtX3J1bGVTZXRzLmZl
YXR1cmVzKCkuaWRzSW5SdWxlcy5jb250YWlucyhpZFZhbHVlKTsKIH0KIAorfSAvLyBuYW1lc3Bh
Y2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZS5jcHAKaW5kZXggZGNiNjViYzA5YzMuLjNjOWZkODhhMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlLmNwcApAQCAtODgsNyArODgsNyBAQCBib29sIFNjb3BlOjpzaG91bGRVc2VTaGFy
ZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVN0eWxlUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCitSZXNvbHZlciYgU2Nv
cGU6OnJlc29sdmVyKCkKIHsKICAgICBpZiAoc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93
VHJlZVN0eWxlUmVzb2x2ZXIoKSkKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQudXNlckFnZW50
U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKTsKQEAgLTk2LDcgKzk2LDcgQEAgU3R5bGVSZXNvbHZl
ciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKICAgICAgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHls
ZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9yZXNvbHZlciA9IG1ha2VVbmlxdWU8U3R5
bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7CisgICAgICAgIG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVl
PFJlc29sdmVyPihtX2RvY3VtZW50KTsKIAogICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkgewog
ICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKQEAg
LTExNyw3ICsxMTcsNyBAQCBTdHlsZVJlc29sdmVyJiBTY29wZTo6cmVzb2x2ZXIoKQogICAgIHJl
dHVybiAqbV9yZXNvbHZlcjsKIH0KIAotU3R5bGVSZXNvbHZlciogU2NvcGU6OnJlc29sdmVySWZF
eGlzdHMoKQorUmVzb2x2ZXIqIFNjb3BlOjpyZXNvbHZlcklmRXhpc3RzKCkKIHsKICAgICBpZiAo
c2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSkKICAgICAg
ICAgcmV0dXJuICZtX2RvY3VtZW50LnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCk7
CkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBTY29wZTo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRz
KFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4+JiBzaGVldHMpCiAgICAgfQogfQogCi1TY29wZTo6
U3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgU2NvcGU6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKGNv
bnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHlsZXNoZWV0cywgYm9vbCYg
cmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpCitTY29wZTo6UmVzb2x2ZXJVcGRhdGVUeXBlIFNjb3Bl
OjphbmFseXplU3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+PiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKQogewog
ICAgIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjID0gdHJ1ZTsKICAgICAKQEAgLTQxNSwxNyArNDE1
LDE3IEBAIFNjb3BlOjpTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBTY29wZTo6YW5hbHl6ZVN0eWxl
U2hlZXRDaGFuZ2UoY29uc3QgVmVjdG9yPFJlZlB0CiAgICAgICAgIGFkZGVkU2hlZXRzLmFwcGVu
ZCgmbmV3U3R5bGVzaGVldHNbbmV3SW5kZXhdLT5jb250ZW50cygpKTsKICAgICAgICAgKytuZXdJ
bmRleDsKICAgICB9Ci0gICAgLy8gSWYgYWxsIG5ldyBzaGVldHMgd2VyZSBhZGRlZCBhdCB0aGUg
ZW5kIG9mIHRoZSBsaXN0IHdlIGNhbiBqdXN0IGFkZCB0aGVtIHRvIGV4aXN0aW5nIFN0eWxlUmVz
b2x2ZXIuCisgICAgLy8gSWYgYWxsIG5ldyBzaGVldHMgd2VyZSBhZGRlZCBhdCB0aGUgZW5kIG9m
IHRoZSBsaXN0IHdlIGNhbiBqdXN0IGFkZCB0aGVtIHRvIGV4aXN0aW5nIFJlc29sdmVyLgogICAg
IC8vIElmIHRoZXJlIHdlcmUgaW5zZXJ0aW9ucyB3ZSBuZWVkIHRvIHJlLWFkZCBhbGwgdGhlIHN0
eWxlc2hlZXRzIHNvIHJ1bGVzIGFyZSBvcmRlcmVkIGNvcnJlY3RseS4KLSAgICBhdXRvIHN0eWxl
UmVzb2x2ZXJVcGRhdGVUeXBlID0gaGFzSW5zZXJ0aW9ucyA/IFJlc2V0IDogQWRkaXRpdmU7Cisg
ICAgYXV0byBSZXNvbHZlclVwZGF0ZVR5cGUgPSBoYXNJbnNlcnRpb25zID8gUmVzZXQgOiBBZGRp
dGl2ZTsKIAogICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IHBhcnNpbmcgdGhlIGJvZHkgYW5kIHNv
IG1heSBoYXZlIHNpZ25pZmljYW50IGFtb3VudCBvZiBlbGVtZW50cywgcHV0IHNvbWUgZWZmb3J0
IGludG8gdHJ5aW5nIHRvIGF2b2lkIHN0eWxlIHJlY2FsY3MuCiAgICAgaWYgKCFtX2RvY3VtZW50
LmJvZHlPckZyYW1lc2V0KCkgfHwgbV9kb2N1bWVudC5oYXNOb2Rlc1dpdGhOb25GaW5hbFN0eWxl
KCkgfHwgbV9kb2N1bWVudC5oYXNOb2Rlc1dpdGhNaXNzaW5nU3R5bGUoKSkKLSAgICAgICAgcmV0
dXJuIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlOworICAgICAgICByZXR1cm4gUmVzb2x2ZXJVcGRh
dGVUeXBlOwogCiAgICAgSW52YWxpZGF0b3IgaW52YWxpZGF0b3IoYWRkZWRTaGVldHMsIHN0eWxl
UmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpKTsKICAgICBpZiAoaW52YWxpZGF0b3IuZGly
dGllc0FsbFN0eWxlKCkpCi0gICAgICAgIHJldHVybiBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZTsK
KyAgICAgICAgcmV0dXJuIFJlc29sdmVyVXBkYXRlVHlwZTsKIAogICAgIGlmIChtX3NoYWRvd1Jv
b3QpCiAgICAgICAgIGludmFsaWRhdG9yLmludmFsaWRhdGVTdHlsZSgqbV9zaGFkb3dSb290KTsK
QEAgLTQzNCw3ICs0MzQsNyBAQCBTY29wZTo6U3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgU2NvcGU6
OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFZlY3RvcjxSZWZQdAogCiAgICAgcmVxdWly
ZXNGdWxsU3R5bGVSZWNhbGMgPSBmYWxzZTsKIAotICAgIHJldHVybiBzdHlsZVJlc29sdmVyVXBk
YXRlVHlwZTsKKyAgICByZXR1cm4gUmVzb2x2ZXJVcGRhdGVUeXBlOwogfQogCiBzdGF0aWMgdm9p
ZCBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYgcmVzdWx0LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYgc2hl
ZXRzKQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGZpbHRlckVuYWJsZWROb25lbXB0
eUNTU1N0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiByCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlSG9zdEFuZFNsb3R0ZWRTdHlsZUlmTmVlZGVkKFNo
YWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyKQorc3RhdGljIHZv
aWQgaW52YWxpZGF0ZUhvc3RBbmRTbG90dGVkU3R5bGVJZk5lZWRlZChTaGFkb3dSb290JiBzaGFk
b3dSb290LCBSZXNvbHZlciYgcmVzb2x2ZXIpCiB7CiAgICAgYXV0byYgaG9zdCA9ICpzaGFkb3dS
b290Lmhvc3QoKTsKICAgICBpZiAoIXJlc29sdmVyLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKS5o
b3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKQEAgLTQ5MCwxMSArNDkwLDExIEBAIHZv
aWQgU2NvcGU6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkK
ICAgICBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNo
ZWV0cywgYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgYm9vbCByZXF1aXJlc0Z1bGxTdHlsZVJl
Y2FsYyA9IHRydWU7Ci0gICAgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgc3R5bGVSZXNvbHZlclVw
ZGF0ZVR5cGUgPSBSZWNvbnN0cnVjdDsKKyAgICBSZXNvbHZlclVwZGF0ZVR5cGUgUmVzb2x2ZXJV
cGRhdGVUeXBlID0gUmVjb25zdHJ1Y3Q7CiAgICAgaWYgKHVwZGF0ZVR5cGUgPT0gVXBkYXRlVHlw
ZTo6QWN0aXZlU2V0KQotICAgICAgICBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9IGFuYWx5emVT
dHlsZVNoZWV0Q2hhbmdlKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCByZXF1aXJlc0Z1bGxTdHlsZVJl
Y2FsYyk7CisgICAgICAgIFJlc29sdmVyVXBkYXRlVHlwZSA9IGFuYWx5emVTdHlsZVNoZWV0Q2hh
bmdlKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CiAKLSAg
ICB1cGRhdGVTdHlsZVJlc29sdmVyKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBzdHlsZVJlc29sdmVy
VXBkYXRlVHlwZSk7CisgICAgdXBkYXRlUmVzb2x2ZXIoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIFJl
c29sdmVyVXBkYXRlVHlwZSk7CiAKICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlz
dEZvckZhc3RMb29rdXAgPSBudWxscHRyOwogICAgIG1fYWN0aXZlU3R5bGVTaGVldHMuc3dhcChh
Y3RpdmVDU1NTdHlsZVNoZWV0cyk7CkBAIC01MTgsNyArNTE4LDcgQEAgdm9pZCBTY29wZTo6dXBk
YXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlVHlwZSB1cGRhdGVUeXBlKQogICAgIH0KIH0KIAot
dm9pZCBTY29wZTo6dXBkYXRlU3R5bGVSZXNvbHZlcihWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+PiYgYWN0aXZlU3R5bGVTaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHVwZGF0ZVR5
cGUpCit2b2lkIFNjb3BlOjp1cGRhdGVSZXNvbHZlcihWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+PiYgYWN0aXZlU3R5bGVTaGVldHMsIFJlc29sdmVyVXBkYXRlVHlwZSB1cGRhdGVUeXBlKQog
ewogICAgIGlmICh1cGRhdGVUeXBlID09IFJlY29uc3RydWN0KSB7CiAgICAgICAgIGNsZWFyUmVz
b2x2ZXIoKTsKQEAgLTYwMyw3ICs2MDMsNyBAQCB2b2lkIFNjb3BlOjpzY2hlZHVsZVVwZGF0ZShV
cGRhdGVUeXBlIHVwZGF0ZSkKICAgICAgICAgICAgIGludmFsaWRhdGVIb3N0QW5kU2xvdHRlZFN0
eWxlSWZOZWVkZWQoKm1fc2hhZG93Um9vdCwgKm1fcmVzb2x2ZXIpOwogICAgICAgICAvLyBGSVhN
RTogQW5pbWF0aW9uIGNvZGUgbWF5IHRyaWdnZXIgcmVzb3VyY2UgbG9hZCBpbiBtaWRkbGUgb2Yg
c3R5bGUgcmVjYWxjIGFuZCB0aGF0IGNhbiBhZGQgYSBydWxlIHRvIGEgY29udGVudCBleHRlbnNp
b24gc3R5bGVzaGVldC4KICAgICAgICAgLy8gICAgICAgIEZpeCBhbmQgcmVtb3ZlIGlzUmVzb2x2
aW5nVHJlZVN0eWxlKCkgdGVzdCBiZWxvdywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQzMzUKLSAgICAgICAgLy8gRklYTUU6IFRoZSBtX2lzVXBkYXRpbmdT
dHlsZVJlc29sdmVyIHRlc3QgaXMgaGVyZSBiZWNhdXNlIGV4dGVuc2lvbiBzdHlsZXNoZWV0cyBj
YW4gZ2V0IHVzIGhlcmUgZnJvbSBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0
cy4KKyAgICAgICAgLy8gRklYTUU6IFRoZSBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHRlc3Qg
aXMgaGVyZSBiZWNhdXNlIGV4dGVuc2lvbiBzdHlsZXNoZWV0cyBjYW4gZ2V0IHVzIGhlcmUgZnJv
bSBSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMuCiAgICAgICAgIGlmICghbV9pc1Vw
ZGF0aW5nU3R5bGVSZXNvbHZlciAmJiAhbV9kb2N1bWVudC5pc1Jlc29sdmluZ1RyZWVTdHlsZSgp
KQogICAgICAgICAgICAgY2xlYXJSZXNvbHZlcigpOwogICAgIH0KQEAgLTYyMSwyMSArNjIxLDIx
IEBAIHZvaWQgU2NvcGU6OnNjaGVkdWxlVXBkYXRlKFVwZGF0ZVR5cGUgdXBkYXRlKQogCiB2b2lk
IFNjb3BlOjpldmFsdWF0ZU1lZGlhUXVlcmllc0ZvclZpZXdwb3J0Q2hhbmdlKCkKIHsKLSAgICBl
dmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIpIHsKKyAgICBl
dmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoUmVzb2x2ZXImIHJlc29sdmVyKSB7CiAgICAgICAgIHJl
dHVybiByZXNvbHZlci5oYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKTsK
ICAgICB9KTsKIH0KIAogdm9pZCBTY29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JBY2Nlc3Np
YmlsaXR5U2V0dGluZ3NDaGFuZ2UoKQogewotICAgIGV2YWx1YXRlTWVkaWFRdWVyaWVzKFtdIChT
dHlsZVJlc29sdmVyJiByZXNvbHZlcikgeworICAgIGV2YWx1YXRlTWVkaWFRdWVyaWVzKFtdIChS
ZXNvbHZlciYgcmVzb2x2ZXIpIHsKICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmhhc01lZGlhUXVl
cmllc0FmZmVjdGVkQnlBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UoKTsKICAgICB9KTsKIH0K
IAogdm9pZCBTY29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JBcHBlYXJhbmNlQ2hhbmdlKCkK
IHsKLSAgICBldmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIp
IHsKKyAgICBldmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoUmVzb2x2ZXImIHJlc29sdmVyKSB7CiAg
ICAgICAgIHJldHVybiByZXNvbHZlci5oYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QXBwZWFyYW5j
ZUNoYW5nZSgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCmluZGV4IGE3
MDJmNzM5NDIzLi5lZDE0YjViNmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaApAQCAt
NDMsNyArNDMsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBOb2Rl
OwogY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uOwotY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNs
YXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBjbGFzcyBTdHlsZVNo
ZWV0TGlzdDsKQEAgLTUyLDYgKzUxLDggQEAgY2xhc3MgVHJlZVNjb3BlOwogCiBuYW1lc3BhY2Ug
U3R5bGUgewogCitjbGFzcyBSZXNvbHZlcjsKKwogLy8gVGhpcyBpcyB1c2VkIHRvIGlkZW50aWZ5
IHN0eWxlIHNjb3BlcyB0aGF0IGNhbiBhZmZlY3QgYW4gZWxlbWVudC4KIC8vIFNjb3BlcyBhcmUg
aW4gdHJlZS1vZi10cmVlcyBvcmRlci4gU3R5bGVzIGZyb20gZWFybGllciBzY29wZXMgd2luIG92
ZXIgbGF0ZXIgb25lcyAobW9kdWxvICFpbXBvcnRhbnQpLgogZW51bSBjbGFzcyBTY29wZU9yZGlu
YWwgOiBpbnQgewpAQCAtMTE0LDggKzExNSw4IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmPFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNvbGxlY3RYU0xUcmFuc2Zvcm1zKCk7CiAjZW5kaWYKIAot
ICAgIFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyKCk7Ci0gICAgU3R5bGVSZXNvbHZlciogcmVzb2x2
ZXJJZkV4aXN0cygpOworICAgIFJlc29sdmVyJiByZXNvbHZlcigpOworICAgIFJlc29sdmVyKiBy
ZXNvbHZlcklmRXhpc3RzKCk7CiAgICAgdm9pZCBjbGVhclJlc29sdmVyKCk7CiAgICAgdm9pZCBy
ZWxlYXNlTWVtb3J5KCk7CiAKQEAgLTE0MCwxMyArMTQxLDEzIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYp
OwogCi0gICAgZW51bSBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSB7CisgICAgZW51bSBSZXNvbHZl
clVwZGF0ZVR5cGUgewogICAgICAgICBSZWNvbnN0cnVjdCwKICAgICAgICAgUmVzZXQsCiAgICAg
ICAgIEFkZGl0aXZlCiAgICAgfTsKLSAgICBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBhbmFseXpl
U3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgbmV3
U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKLSAgICB2b2lkIHVw
ZGF0ZVN0eWxlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBTdHlsZVJl
c29sdmVyVXBkYXRlVHlwZSk7CisgICAgUmVzb2x2ZXJVcGRhdGVUeXBlIGFuYWx5emVTdHlsZVNo
ZWV0Q2hhbmdlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHlsZXNo
ZWV0cywgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOworICAgIHZvaWQgdXBkYXRlUmVz
b2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBSZXNvbHZlclVwZGF0ZVR5cGUp
OwogCiAgICAgdm9pZCBwZW5kaW5nVXBkYXRlVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY2xlYXJQ
ZW5kaW5nVXBkYXRlKCk7CkBAIC0xNTQsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVu
dCYgbV9kb2N1bWVudDsKICAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jvb3QgeyBudWxscHRyIH07
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGVSZXNvbHZlcj4gbV9yZXNvbHZlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVzb2x2ZXI+IG1fcmVzb2x2ZXI7CiAKICAgICBWZWN0b3I8UmVmUHRy
PFN0eWxlU2hlZXQ+PiBtX3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3Q7CiAgICAgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbV9hY3RpdmVTdHlsZVNoZWV0czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAppbmRleCBjNzgzMzczMDhhYS4u
NjIyYzU1OTM1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmlu
Z1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNv
bHZlci5jcHAKQEAgLTY5LDcgKzY5LDYgQEAgc3RhdGljIGlubGluZSBib29sIHBhcmVudEVsZW1l
bnRQcmV2ZW50c1NoYXJpbmcoY29uc3QgRWxlbWVudCYgcGFyZW50RWxlbWVudCkKIAogc3RhdGlj
IGlubGluZSBib29sIGVsZW1lbnRIYXNEaXJlY3Rpb25BdXRvKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgbGluZSBpcyBzdXJwcmlzaW5nbHkgaG90LCB3ZSBt
YXkgd2lzaCB0byBpbmxpbmUgaGFzRGlyZWN0aW9uQXV0byBpbnRvIFN0eWxlUmVzb2x2ZXIuCiAg
ICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MRWxlbWVu
dD4oZWxlbWVudCkuaGFzRGlyZWN0aW9uQXV0bygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggNDFlOWY0NDcwODUuLjNmNTU0MGRhOGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC02NiwyNyAr
NjYsMjcgQEAgVHJlZVJlc29sdmVyOjpUcmVlUmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQog
VHJlZVJlc29sdmVyOjp+VHJlZVJlc29sdmVyKCkgPSBkZWZhdWx0OwogCiBUcmVlUmVzb2x2ZXI6
OlNjb3BlOjpTY29wZShEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBzdHlsZVJlc29sdmVyKGRv
Y3VtZW50LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpKQotICAgICwgc2hhcmluZ1Jlc29sdmVyKGRv
Y3VtZW50LCBzdHlsZVJlc29sdmVyLnJ1bGVTZXRzKCksIHNlbGVjdG9yRmlsdGVyKQorICAgIDog
cmVzb2x2ZXIoZG9jdW1lbnQuc3R5bGVTY29wZSgpLnJlc29sdmVyKCkpCisgICAgLCBzaGFyaW5n
UmVzb2x2ZXIoZG9jdW1lbnQsIHJlc29sdmVyLnJ1bGVTZXRzKCksIHNlbGVjdG9yRmlsdGVyKQog
ewogICAgIGRvY3VtZW50LnNldElzUmVzb2x2aW5nVHJlZVN0eWxlKHRydWUpOwogfQogCiBUcmVl
UmVzb2x2ZXI6OlNjb3BlOjpTY29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBTY29wZSYgZW5j
bG9zaW5nU2NvcGUpCi0gICAgOiBzdHlsZVJlc29sdmVyKHNoYWRvd1Jvb3Quc3R5bGVTY29wZSgp
LnJlc29sdmVyKCkpCi0gICAgLCBzaGFyaW5nUmVzb2x2ZXIoc2hhZG93Um9vdC5kb2N1bWVudFNj
b3BlKCksIHN0eWxlUmVzb2x2ZXIucnVsZVNldHMoKSwgc2VsZWN0b3JGaWx0ZXIpCisgICAgOiBy
ZXNvbHZlcihzaGFkb3dSb290LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpKQorICAgICwgc2hhcmlu
Z1Jlc29sdmVyKHNoYWRvd1Jvb3QuZG9jdW1lbnRTY29wZSgpLCByZXNvbHZlci5ydWxlU2V0cygp
LCBzZWxlY3RvckZpbHRlcikKICAgICAsIHNoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCiAgICAgLCBl
bmNsb3NpbmdTY29wZSgmZW5jbG9zaW5nU2NvcGUpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zZXRP
dmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKGVuY2xvc2luZ1Njb3BlLnN0eWxlUmVzb2x2ZXIu
b3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSgpKTsKKyAgICByZXNvbHZlci5zZXRPdmVycmlk
ZURvY3VtZW50RWxlbWVudFN0eWxlKGVuY2xvc2luZ1Njb3BlLnJlc29sdmVyLm92ZXJyaWRlRG9j
dW1lbnRFbGVtZW50U3R5bGUoKSk7CiB9CiAKIFRyZWVSZXNvbHZlcjo6U2NvcGU6On5TY29wZSgp
CiB7CiAgICAgaWYgKCFzaGFkb3dSb290KQotICAgICAgICBzdHlsZVJlc29sdmVyLmRvY3VtZW50
KCkuc2V0SXNSZXNvbHZpbmdUcmVlU3R5bGUoZmFsc2UpOworICAgICAgICByZXNvbHZlci5kb2N1
bWVudCgpLnNldElzUmVzb2x2aW5nVHJlZVN0eWxlKGZhbHNlKTsKIAotICAgIHN0eWxlUmVzb2x2
ZXIuc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShudWxscHRyKTsKKyAgICByZXNvbHZl
ci5zZXRPdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKG51bGxwdHIpOwogfQogCiBUcmVlUmVz
b2x2ZXI6OlBhcmVudDo6UGFyZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTEzNCw3ICsxMzQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFRyZWVSZXNvbHZlcjo6c3R5bGVGb3JF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbgogICAgIGlmIChhdXRvIHN0eWxlID0gc2NvcGUo
KS5zaGFyaW5nUmVzb2x2ZXIucmVzb2x2ZShlbGVtZW50LCAqbV91cGRhdGUpKQogICAgICAgICBy
ZXR1cm4gc3R5bGU7CiAKLSAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkuc3R5bGVSZXNv
bHZlci5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgJmluaGVyaXRlZFN0eWxlLCBwYXJlbnRCb3hT
dHlsZSgpLCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcywgJnNjb3BlKCkuc2Vs
ZWN0b3JGaWx0ZXIpOworICAgIGF1dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5yZXNvbHZlci5z
dHlsZUZvckVsZW1lbnQoZWxlbWVudCwgJmluaGVyaXRlZFN0eWxlLCBwYXJlbnRCb3hTdHlsZSgp
LCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcywgJnNjb3BlKCkuc2VsZWN0b3JG
aWx0ZXIpOwogCiAgICAgaWYgKGVsZW1lbnRTdHlsZS5yZWxhdGlvbnMpCiAgICAgICAgIGNvbW1p
dFJlbGF0aW9ucyhXVEZNb3ZlKGVsZW1lbnRTdHlsZS5yZWxhdGlvbnMpLCAqbV91cGRhdGUpOwpA
QCAtMjEyLDEyICsyMTIsMTIgQEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZl
RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogCiAgICAgaWYgKCZlbGVtZW50ID09IG1fZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCkpIHsKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZSA9
IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlLnN0eWxlKTsKLSAgICAgICAgc2NvcGUoKS5z
dHlsZVJlc29sdmVyLnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUobV9kb2N1bWVudEVs
ZW1lbnRTdHlsZS5nZXQoKSk7CisgICAgICAgIHNjb3BlKCkucmVzb2x2ZXIuc2V0T3ZlcnJpZGVE
b2N1bWVudEVsZW1lbnRTdHlsZShtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpKTsKIAogICAg
ICAgICBpZiAodXBkYXRlLmNoYW5nZSAhPSBOb0NoYW5nZSAmJiBleGlzdGluZ1N0eWxlICYmIGV4
aXN0aW5nU3R5bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpICE9IHVwZGF0ZS5zdHlsZS0+Y29t
cHV0ZWRGb250UGl4ZWxTaXplKCkpIHsKICAgICAgICAgICAgIC8vICJyZW0iIHVuaXRzIGFyZSBy
ZWxhdGl2ZSB0byB0aGUgZG9jdW1lbnQgZWxlbWVudCdzIGZvbnQgc2l6ZSBzbyB3ZSBuZWVkIHRv
IHJlY29tcHV0ZSBldmVyeXRoaW5nLgogICAgICAgICAgICAgLy8gSW4gcHJhY3RpY2UgdGhpcyBp
cyByYXJlLgotICAgICAgICAgICAgc2NvcGUoKS5zdHlsZVJlc29sdmVyLmludmFsaWRhdGVNYXRj
aGVkRGVjbGFyYXRpb25zQ2FjaGUoKTsKKyAgICAgICAgICAgIHNjb3BlKCkucmVzb2x2ZXIuaW52
YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpOwogICAgICAgICAgICAgZGVzY2VuZGFu
dHNUb1Jlc29sdmUgPSBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6QWxsOwogICAgICAgICB9CiAgICAg
fQpAQCAtMjU0LDcgKzI1NCw3IEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpyZXNvbHZl
UHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwCiAgICAgaWYgKCFl
bGVtZW50VXBkYXRlLnN0eWxlLT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICBhdXRvIHBzZXVkb1N0eWxlID0gc2NvcGUoKS5zdHlsZVJlc29sdmVy
LnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sICplbGVtZW50VXBk
YXRlLnN0eWxlLCBwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhlbGVtZW50VXBkYXRlKSwgJnNjb3Bl
KCkuc2VsZWN0b3JGaWx0ZXIpOworICAgIGF1dG8gcHNldWRvU3R5bGUgPSBzY29wZSgpLnJlc29s
dmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sICplbGVtZW50
VXBkYXRlLnN0eWxlLCBwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhlbGVtZW50VXBkYXRlKSwgJnNj
b3BlKCkuc2VsZWN0b3JGaWx0ZXIpOwogICAgIGlmICghcHNldWRvRWxlbWVudFJlbmRlcmVySXNO
ZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC01NjUs
MTMgKzU2NSwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29s
dmUoKQogICAgIG1fcGFyZW50U3RhY2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50KSk7CiAKICAg
ICAvLyBQc2V1ZG8gZWxlbWVudCByZW1vdmFsIGFuZCBzaW1pbGFyIG1heSBvbmx5IHdvcmsgd2l0
aCB0aGVzZSBmbGFncyBzdGlsbCBzZXQuIFJlc2V0IHRoZW0gYWZ0ZXIgdGhlIHN0eWxlIHJlY2Fs
Yy4KLSAgICByZW5kZXJWaWV3LnNldFVzZXNGaXJzdExpbmVSdWxlcyhyZW5kZXJWaWV3LnVzZXNG
aXJzdExpbmVSdWxlcygpIHx8IHNjb3BlKCkuc3R5bGVSZXNvbHZlci51c2VzRmlyc3RMaW5lUnVs
ZXMoKSk7Ci0gICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMZXR0ZXJSdWxlcyhyZW5kZXJWaWV3
LnVzZXNGaXJzdExldHRlclJ1bGVzKCkgfHwgc2NvcGUoKS5zdHlsZVJlc29sdmVyLnVzZXNGaXJz
dExldHRlclJ1bGVzKCkpOworICAgIHJlbmRlclZpZXcuc2V0VXNlc0ZpcnN0TGluZVJ1bGVzKHJl
bmRlclZpZXcudXNlc0ZpcnN0TGluZVJ1bGVzKCkgfHwgc2NvcGUoKS5yZXNvbHZlci51c2VzRmly
c3RMaW5lUnVsZXMoKSk7CisgICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMZXR0ZXJSdWxlcyhy
ZW5kZXJWaWV3LnVzZXNGaXJzdExldHRlclJ1bGVzKCkgfHwgc2NvcGUoKS5yZXNvbHZlci51c2Vz
Rmlyc3RMZXR0ZXJSdWxlcygpKTsKIAogICAgIHJlc29sdmVDb21wb3NlZFRyZWUoKTsKIAotICAg
IHJlbmRlclZpZXcuc2V0VXNlc0ZpcnN0TGluZVJ1bGVzKHNjb3BlKCkuc3R5bGVSZXNvbHZlci51
c2VzRmlyc3RMaW5lUnVsZXMoKSk7Ci0gICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMZXR0ZXJS
dWxlcyhzY29wZSgpLnN0eWxlUmVzb2x2ZXIudXNlc0ZpcnN0TGV0dGVyUnVsZXMoKSk7CisgICAg
cmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMaW5lUnVsZXMoc2NvcGUoKS5yZXNvbHZlci51c2VzRmly
c3RMaW5lUnVsZXMoKSk7CisgICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMZXR0ZXJSdWxlcyhz
Y29wZSgpLnJlc29sdmVyLnVzZXNGaXJzdExldHRlclJ1bGVzKCkpOwogCiAgICAgQVNTRVJUKG1f
c2NvcGVTdGFjay5zaXplKCkgPT0gMSk7CiAgICAgQVNTRVJUKG1fcGFyZW50U3RhY2suc2l6ZSgp
ID09IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggZDk0
NjEwMGJmMTkuLjdiMjJiMTBjMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmgKQEAgLTQwLDEwICs0MCwxMSBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgTm9kZTsK
IGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFN0eWxlUmVzb2x2
ZXI7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKK2NsYXNzIFJlc29sdmVyOworCiBjbGFzcyBUcmVl
UmVzb2x2ZXIgewogcHVibGljOgogICAgIFRyZWVSZXNvbHZlcihEb2N1bWVudCYpOwpAQCAtNjIs
NyArNjMsNyBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRVcGRhdGUgcmVzb2x2ZVBzZXVkb1N0eWxl
KEVsZW1lbnQmLCBjb25zdCBFbGVtZW50VXBkYXRlJiwgUHNldWRvSWQpOwogCiAgICAgc3RydWN0
IFNjb3BlIDogUmVmQ291bnRlZDxTY29wZT4gewotICAgICAgICBTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyOworICAgICAgICBSZXNvbHZlciYgcmVzb2x2ZXI7CiAgICAgICAgIFNlbGVjdG9y
RmlsdGVyIHNlbGVjdG9yRmlsdGVyOwogICAgICAgICBTaGFyaW5nUmVzb2x2ZXIgc2hhcmluZ1Jl
c29sdmVyOwogICAgICAgICBTaGFkb3dSb290KiBzaGFkb3dSb290IHsgbnVsbHB0ciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDJiOWZmODQ5OWE0Li4wNTE4MDk4ZTQ4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNTkzLDExICs1OTMsMTEgQEAgdm9pZCBTVkdF
bGVtZW50OjphbmltYXRvcldpbGxCZURlbGV0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkKICAgICBwcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpLmFuaW1hdG9yV2lsbEJlRGVs
ZXRlZChhdHRyaWJ1dGVOYW1lKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTVkdFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSopCitPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTVkdFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNl
PiB0cmVlIHdlIGdldCB0aGUgc3R5bGUgZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVlLgogICAgIGlm
IChhdXRvIHN0eWxlRWxlbWVudCA9IG1ha2VSZWZQdHIodGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1l
bnQoKSkpIHsKLSAgICAgICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBzdHlsZSA9IHN0eWxlRWxl
bWVudC0+cmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CisgICAgICAgIE9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IHN0eWxlID0gc3R5bGVFbGVtZW50LT5yZXNvbHZlU3R5bGUoJnBhcmVu
dFN0eWxlKTsKICAgICAgICAgU3R5bGU6OkFkanVzdGVyOjphZGp1c3RTVkdFbGVtZW50U3R5bGUo
KnN0eWxlLT5yZW5kZXJTdHlsZSwgKnRoaXMpOwogICAgICAgICByZXR1cm4gc3R5bGU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggODRhYmEyMjljNzUuLjk4ZmNmZmJjYTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRDb3JyZXNwb25kaW5nRWxlbWVudChTVkdFbGVtZW50Kik7CiAKLSAgICBPcHRpb25h
bDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwor
ICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIFF1YWxpZmllZE5hbWUgYW5pbWF0YWJsZUF0
dHJpYnV0ZUZvck5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwogI2lmbmRlZiBOREVCVUcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383743</attachid>
            <date>2019-11-18 07:01:00 -0800</date>
            <delta_ts>2019-11-18 08:00:25 -0800</delta_ts>
            <desc>patch</desc>
            <filename>styleresolver-namespace-2.patch</filename>
            <type>text/plain</type>
            <size>83103</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMGY3ZjY4MzVkNS4uZjIwZjNhOWM2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMTktMTEtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIE1vdmUgU3R5bGVSZXNvbHZlciB0byBTdHlsZSBuYW1lc3BhY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDI5NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgc3VicGFydHMg
YXJlIGFscmVhZHkgaW4gU3R5bGUgbmFtZXNwYWNlLgorCisgICAgICAgIEFsc28gcmVuYW1lIGl0
IHRvIFN0eWxlOjpSZXNvbHZlciBhbmQgbW92ZSBmaWxlcyB0byBXZWJDb3JlL3N0eWxlIHN1YmRp
cmVjdG9yeS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5n
S2V5ZnJhbWVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5OjpyZWdp
c3RlclByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6YXBwZW5kQXV0aG9y
U3R5bGVTaGVldHMpOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmg6CisgICAgICAg
ICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUgY29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmg6CisgICAgICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlUnVsZUNvbGxlY3Rvcjo6UGFnZVJ1bGVDb2xsZWN0b3IpOgorICAgICAg
ICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZENoaWxk
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQpOgor
ICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
cik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3R5bGVSZXNvbHZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdT
dHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5
bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUpOgorICAg
ICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRl
clRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNs
aWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNG
b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJy
YXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVN0eWxlQWZ0ZXJD
aGFuZ2VJbkVudmlyb25tZW50KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjphbmlt
YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVyLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6UmVzb2x2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjphZGRDdXJyZW50U1ZHRm9udEZhY2VSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6On5SZXNvbHZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UmVzb2x2ZXI6OmJ1aWxkZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UmVzb2x2ZXI6OmlzQW5pbWF0aW9uTmFtZVZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpzdHlsZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRp
b25zQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpjbGVhckNhY2hl
ZERlY2xhcmF0aW9uc0FmZmVjdGVkQnlWaWV3cG9ydFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmFkZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0Fm
ZmVjdGVkQnlWaWV3cG9ydENoYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UmVzb2x2ZXI6OmFkZEFjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudE1lZGlhUXVlcnlSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNB
ZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6YWRkQXBwZWFyYW5jZURlcGVuZGVudE1lZGlhUXVlcnlS
ZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJp
ZXNBZmZlY3RlZEJ5QXBwZWFyYW5jZUNoYW5nZSBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5
bGVSZXNvbHZlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50U3R5bGU6OkVsZW1lbnRTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0
cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6aGFzU2Vs
ZWN0b3JGb3JJZCBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjppbnZhbGlkYXRlSG9zdEFuZFNsb3R0ZWRTdHlsZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlNjb3BlOjp1cGRhdGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6U2NvcGU6OnNjaGVkdWxlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpTY29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JWaWV3cG9ydENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmV2YWx1YXRlTWVkaWFRdWVyaWVzRm9yQWNjZXNzaWJp
bGl0eVNldHRpbmdzQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6ZXZh
bHVhdGVNZWRpYVF1ZXJpZXNGb3JBcHBlYXJhbmNlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6dXBkYXRlU3R5bGVSZXNvbHZlcik6IERlbGV0ZWQuCisgICAgICAgICog
c3R5bGUvU3R5bGVTY29wZS5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbGVtZW50SGFzRGlyZWN0aW9uQXV0byk6
CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OlNjb3BlOjp+U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlRyZWVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBzdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogc3Zn
L1NWR0VsZW1lbnQuaDoKKyAgICAgICAgCiAyMDE5LTExLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZvY3VzaW5nIGEgc2hhZG93IGhvc3Qgd2hpY2ggZGVs
ZWdhdGVzIGZvY3VzIHNob3VsZCBza2lwIGlubmVyIHNoYWRvdyBob3N0cyB3aGljaCBkZWxlZ2F0
ZSBmb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMjc1MjI3Mjk3OS4uNGMwMDkzYjE2YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC03ODAsNyArNzgwLDYgQEAgY3NzL1N0eWxlQ29sb3IuY3BwCiBjc3MvU3R5
bGVNZWRpYS5jcHAKIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwCiBjc3MvU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZC5jcHAKLWNzcy9TdHlsZVJlc29sdmVyLmNwcAogY3NzL1N0eWxlUnVsZS5jcHAKIGNz
cy9TdHlsZVJ1bGVJbXBvcnQuY3BwCiBjc3MvU3R5bGVTaGVldC5jcHAKQEAgLTIzNTYsNiArMjM1
NSw3IEBAIHN0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCiBzdHlsZS9TdHlsZUludmFs
aWRhdG9yLmNwcAogc3R5bGUvU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcAogc3R5bGUvU3R5bGVS
ZWxhdGlvbnMuY3BwCitzdHlsZS9TdHlsZVJlc29sdmVyLmNwcAogc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuY3BwCiBzdHlsZS9TdHlsZVNjb3BlLmNwcAogc3R5bGUvU3R5bGVTaGFyaW5n
UmVzb2x2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNjcyZTk5MjEwYzcuLjJjZDc2MzI3NGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzA0OSw2
ICsyNzA0OSw4IEBACiAJCQkJRTQ2MTgwMkMxQzhERDI5MDAwMjZDMDJDIC8qIFN0eWxlUmVsYXRp
b25zLmggKi8sCiAJCQkJRTRENThFQjIxN0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50LmNwcCAqLywKIAkJCQlFNEQ1OEVCMzE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVS
ZXNvbHZlRm9yRG9jdW1lbnQuaCAqLywKKwkJCQlFMTM5ODY2MTE1NDc4NDc0MDAxRTNGNjUgLyog
U3R5bGVSZXNvbHZlci5jcHAgKi8sCisJCQkJRTEzOTg2NjIxNTQ3ODQ3NDAwMUUzRjY1IC8qIFN0
eWxlUmVzb2x2ZXIuaCAqLywKIAkJCQlFNDYxRDY1QzFCQjBDN0YwMDBDQjU2NDUgLyogU3R5bGVT
Y29wZS5jcHAgKi8sCiAJCQkJRTQ2MUQ2NUUxQkIwQzgwRDAwQ0I1NjQ1IC8qIFN0eWxlU2NvcGUu
aCAqLywKIAkJCQlFNDdBM0FDMjFDNUVBQkJFMDBDQ0JGQTcgLyogU3R5bGVTaGFyaW5nUmVzb2x2
ZXIuY3BwICovLApAQCAtMjc0NTcsOCArMjc0NTksNiBAQAogCQkJCUE4MEU2REZBMEExOTkwNjcw
MDdGQjhDNSAvKiBTdHlsZVByb3BlcnRpZXMuaCAqLywKIAkJCQlFMUIyNTEwNDE1MkEwQkFGMDA2
OUI3NzkgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5jcHAgKi8sCiAJCQkJRTFCMjUxMDUxNTJB
MEJBRjAwNjlCNzc5IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCAqLywKLQkJCQlFMTM5ODY2
MTE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi8sCi0JCQkJRTEzOTg2NjIx
NTQ3ODQ3NDAwMUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIuaCAqLywKIAkJCQlFNEJCRUQ0QTE0RkNE
QkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNwcCAqLywKIAkJCQlFNEJCRUQ0QjE0RkNEQkExMDAz
RjBCOTggLyogU3R5bGVSdWxlLmggKi8sCiAJCQkJRTQ5NDZFQUMxNTZFNjRERDAwRDMyOTdGIC8q
IFN0eWxlUnVsZUltcG9ydC5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmNwcAppbmRleCA4NjU5MGQxOTEzYi4uMjdjYTk0YmRiNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtNzQxLDcgKzc0MSw3IEBA
IHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxl
JiBlbGVtZW50U3R5bGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEtleWZyYW1lTGlzdCBrZXlm
cmFtZUxpc3QoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KTsKLSAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyID0gbV90YXJnZXQtPnN0eWxlUmVz
b2x2ZXIoKTsKKyAgICBhdXRvJiBzdHlsZVJlc29sdmVyID0gbV90YXJnZXQtPnN0eWxlUmVzb2x2
ZXIoKTsKIAogICAgIGZvciAoYXV0byYga2V5ZnJhbWUgOiBtX3BhcnNlZEtleWZyYW1lcykgewog
ICAgICAgICBLZXlmcmFtZVZhbHVlIGtleWZyYW1lVmFsdWUoa2V5ZnJhbWUuY29tcHV0ZWRPZmZz
ZXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lz
dGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IDQyZjgwYWI1ZDhhLi5kNDYxODY0MzhjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNw
cApAQCAtNDgsNyArNDgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5OjpyZWdpc3RlclByb3BlcnR5KERvY3VtZW50JiBkb2N1bQogICAgIFJlZlB0cjxD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBpbml0aWFsVmFsdWU7CiAgICAgaWYgKCFkZXNjcmlwdG9y
LmluaXRpYWxWYWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgQ1NTVG9rZW5pemVyIHRva2VuaXpl
cihkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7Ci0gICAgICAgIFN0eWxlUmVzb2x2ZXIgc3R5bGVS
ZXNvbHZlcihkb2N1bWVudCk7CisgICAgICAgIFN0eWxlOjpSZXNvbHZlciBzdHlsZVJlc29sdmVy
KGRvY3VtZW50KTsKIAogICAgICAgICAvLyBXZSBuZWVkIHRvIGluaXRpYWxpemUgdGhpcyBzbyB0
aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0YXRpb25hbGx5IGRlcGVuZGVudCB2
YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgogICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBuZWVk
IHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRoZXkgd2lsbCBiZSByZWplY3RlZCBs
YXRlciBhbnl3YXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVT
ZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAppbmRleCBi
YTE5MmY3ZjEwZi4uYTg0ZDdlNjc0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
b2N1bWVudFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxl
U2V0cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Eb2N1
bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIpCitEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKFN0eWxlOjpSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcikKICAgICA6IG1fc3R5bGVSZXNvbHZlcihzdHlsZVJlc29sdmVyKQogewog
ICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CkBAIC0xMDIsNyArMTAy
LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKICAgICAg
ICAgbV91c2VyU3R5bGUgPSBXVEZNb3ZlKHRlbXBVc2VyU3R5bGUpOwogfQogCi12b2lkIERvY3Vt
ZW50UnVsZVNldHM6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHVzZXJTaGVldHMsIFJ1bGVTZXQmIHVzZXJTdHlsZSwg
Y29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBTdHlsZVJlc29sdmVyJiByZXNvbHZl
cikKK3ZvaWQgRG9jdW1lbnRSdWxlU2V0czo6Y29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0
cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgdXNlclNoZWV0cywgUnVsZVNl
dCYgdXNlclN0eWxlLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlOjpS
ZXNvbHZlciYgcmVzb2x2ZXIpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZXJT
aGVldHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKHVzZXJTaGVldHNbaV0tPmNvbnRl
bnRzKCkuaXNVc2VyU3R5bGVTaGVldCgpKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIERvY3Vt
ZW50UnVsZVNldHM6OnJlc2V0VXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCkKICAgICBtX3VzZXJB
Z2VudE1lZGlhUXVlcnlTdHlsZSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgRG9jdW1lbnRSdWxlU2V0
czo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0Pj4mIHN0eWxlU2hlZXRzLCBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtZWRpdW0sIEluc3BlY3Rv
ckNTU09NV3JhcHBlcnMmIGluc3BlY3RvckNTU09NV3JhcHBlcnMsIFN0eWxlUmVzb2x2ZXIqIHJl
c29sdmVyKQordm9pZCBEb2N1bWVudFJ1bGVTZXRzOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgc3R5bGVTaGVldHMsIE1lZGlhUXVl
cnlFdmFsdWF0b3IqIG1lZGl1bSwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9yQ1NT
T01XcmFwcGVycywgU3R5bGU6OlJlc29sdmVyKiByZXNvbHZlcikKIHsKICAgICAvLyBUaGlzIGhh
bmRsZXMgc2hlZXRzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHN0eWxlc2hlZXQgbGlzdCBvbmx5
LiBJbiBvdGhlciBjYXNlcyB0aGUgc3R5bGUgcmVzb2x2ZXIKICAgICAvLyBuZWVkcyB0byBiZSBy
ZWNvbnN0cnVjdGVkLiBUbyBoYW5kbGUgaW5zZXJ0aW9ucyB0b28gdGhlIHJ1bGUgb3JkZXIgbnVt
YmVycyB3b3VsZCBuZWVkIHRvIGJlIHVwZGF0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVs
ZVNldHMuaAppbmRleCA0NmQ4YTFhNTY2Ni4uZTlhNzU2YTA3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RvY3VtZW50UnVsZVNldHMuaApAQCAtMzgsNiArMzgsMTAgQEAgY2xhc3MgRXh0ZW5zaW9uU3R5
bGVTaGVldHM7CiBjbGFzcyBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOwogY2xhc3MgTWVkaWFRdWVy
eUV2YWx1YXRvcjsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNzIFJlc29sdmVyOworfQorCiBz
dHJ1Y3QgSW52YWxpZGF0aW9uUnVsZVNldCB7CiAgICAgTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVu
dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gcnVsZVNldDsKQEAgLTQ4LDcgKzUyLDcg
QEAgc3RydWN0IEludmFsaWRhdGlvblJ1bGVTZXQgewogCiBjbGFzcyBEb2N1bWVudFJ1bGVTZXRz
IHsKIHB1YmxpYzoKLSAgICBEb2N1bWVudFJ1bGVTZXRzKFN0eWxlUmVzb2x2ZXImKTsKKyAgICBE
b2N1bWVudFJ1bGVTZXRzKFN0eWxlOjpSZXNvbHZlciYpOwogICAgIH5Eb2N1bWVudFJ1bGVTZXRz
KCk7CiAKICAgICBib29sIGlzQXV0aG9yU3R5bGVEZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0F1dGhvclN0eWxlRGVmaW5lZDsgfQpAQCAtNzAsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbml0aWFsaXplVXNlclN0eWxlKCk7CiAKICAgICB2b2lkIHJlc2V0QXV0aG9yU3R5bGUoKTsK
LSAgICB2b2lkIGFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4+JiwgTWVkaWFRdWVyeUV2YWx1YXRvciosIEluc3BlY3RvckNTU09NV3JhcHBl
cnMmLCBTdHlsZVJlc29sdmVyKik7CisgICAgdm9pZCBhcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIE1lZGlhUXVlcnlFdmFsdWF0b3Iq
LCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiwgU3R5bGU6OlJlc29sdmVyKik7CiAKICAgICB2b2lk
IHJlc2V0VXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCk7CiAKQEAgLTgwLDE0ICs4NCwxNCBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0RmVhdHVyZXMoKSBjb25zdDsKLSAg
ICB2b2lkIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0Pj4mLCBSdWxlU2V0JiB1c2VyU3R5bGUsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImLCBTdHlsZVJlc29sdmVyJik7CisgICAgdm9pZCBjb2xsZWN0UnVsZXNGcm9tVXNl
clN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiwgUnVsZVNl
dCYgdXNlclN0eWxlLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGU6OlJlc29sdmVy
Jik7CiAgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNv
bnN0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fYXV0aG9yU3R5bGU7CiAgICAg
bXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5
bGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fdXNlclN0eWxlOwogCi0gICAgU3R5
bGVSZXNvbHZlciYgbV9zdHlsZVJlc29sdmVyOworICAgIFN0eWxlOjpSZXNvbHZlciYgbV9zdHls
ZVJlc29sdmVyOwogICAgIG11dGFibGUgUnVsZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDY4NmNm
MGFiZGVkLi40MTE1YzQyYTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBib29sIGFwcGx5UmVzdHJpY3Rv
cihNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHIsIGJvb2wgdmFsdWUpCiAgICAgcmV0dXJuIHIgPT0g
TWVkaWFRdWVyeTo6Tm90ID8gIXZhbHVlIDogdmFsdWU7CiB9CiAKLWJvb2wgTWVkaWFRdWVyeUV2
YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYgcXVlcnlTZXQsIFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIpIGNvbnN0Citib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2
YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlTZXQmIHF1ZXJ5U2V0LCBTdHlsZTo6UmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXIpIGNvbnN0CiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVlcmllcywg
c3RyZWFtIDw8ICJNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZSBvbiAiIDw8IChtX2RvY3Vt
ZW50ID8gbV9kb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkgOiBlbXB0eVN0cmluZygpKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oCmluZGV4IGRiMWI3MThjNzhmLi41
YTJlY2RiNTIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFs
dWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oCkBA
IC0zNiw3ICszNiwxMCBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgTWVk
aWFRdWVyeVNldDsKIGNsYXNzIFJlbmRlclN0eWxlOwotY2xhc3MgU3R5bGVSZXNvbHZlcjsKKwor
bmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNzIFJlc29sdmVyOworfQogCiBzdHJ1Y3QgTWVkaWFRdWVy
eVJlc3VsdCB7CiAgICAgTWVkaWFRdWVyeUV4cHJlc3Npb24gZXhwcmVzc2lvbjsKQEAgLTYzLDcg
KzY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgbWVkaWFUeXBlTWF0Y2hTcGVjaWZpYyhjb25zdCBj
aGFyKiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdDsKIAogICAgIC8vIEV2YWx1YXRlcyBhIGxpc3Qg
b2YgbWVkaWEgcXVlcmllcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV2YWx1YXRlKGNvbnN0
IE1lZGlhUXVlcnlTZXQmLCBTdHlsZVJlc29sdmVyKiA9IG51bGxwdHIpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYsIFN0eWxlOjpS
ZXNvbHZlciogPSBudWxscHRyKSBjb25zdDsKIAogICAgIC8vIEV2YWx1YXRlcyBtZWRpYSBxdWVy
eSBzdWJleHByZXNzaW9uLCBpZSAiYW5kIChtZWRpYS1mZWF0dXJlOiB2YWx1ZSkiIHBhcnQuCiAg
ICAgYm9vbCBldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuaAppbmRleCBjZTQ2ZDFjMTBlNy4uNjI3MmZk
NzIwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5oCkBAIC0zMSw3ICsz
MSw3IEBAIGNsYXNzIFN0eWxlUnVsZVBhZ2U7CiAKIGNsYXNzIFBhZ2VSdWxlQ29sbGVjdG9yIHsK
IHB1YmxpYzoKLSAgICBQYWdlUnVsZUNvbGxlY3RvcihTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3Rh
dGUsIERvY3VtZW50UnVsZVNldHMmIHJ1bGVTZXRzKQorICAgIFBhZ2VSdWxlQ29sbGVjdG9yKFN0
eWxlOjpSZXNvbHZlcjo6U3RhdGUmIHN0YXRlLCBEb2N1bWVudFJ1bGVTZXRzJiBydWxlU2V0cykK
ICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fcnVsZVNldHMocnVsZVNldHMp
IHsgfQogCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFBhZ2VSdWxl
cyhSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25z
dCBTdHJpbmcmIHBhZ2VOYW1lKTsKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzRm9yTGlzdChWZWN0
b3I8U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQ
YWdlKj4mIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0
cmluZyYgcGFnZU5hbWUpOwogCi0gICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIG1fc3Rh
dGU7CisgICAgY29uc3QgU3R5bGU6OlJlc29sdmVyOjpTdGF0ZSYgbV9zdGF0ZTsKICAgICBEb2N1
bWVudFJ1bGVTZXRzJiBtX3J1bGVTZXRzOwogCiAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggNmFjYWMzM2NjM2MuLjhlYzFjNGQ0ZjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRQYWdl
UnVsZShTdHlsZVJ1bGVQYWdlKiBydWxlKQogICAgIG1fcGFnZVJ1bGVzLmFwcGVuZChydWxlKTsK
IH0KIAotdm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBT
dHlsZVJlc29sdmVyKiByZXNvbHZlciwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKQordm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYg
bWVkaXVtLCBTdHlsZTo6UmVzb2x2ZXIqIHJlc29sdmVyLCBib29sIGlzSW5pdGlhdGluZ0VsZW1l
bnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7CiAgICAgZm9yIChhdXRvJiBydWxlIDogcnVsZXMp
IHsKICAgICAgICAgaWYgKGlzPFN0eWxlUnVsZT4oKnJ1bGUpKQpAQCAtNDExLDcgKzQxMSw3IEBA
IHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZUJhc2U+PiYgcnVsZXMsIGNvbnN0IE1lCiAgICAgfQogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1
bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIpCit2b2lkIFJ1bGVTZXQ6
OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQsIGNvbnN0IE1lZGlh
UXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGU6OlJlc29sdmVyKiByZXNvbHZlcikKIHsKICAg
ICBmb3IgKGF1dG8mIHJ1bGUgOiBzaGVldC5pbXBvcnRSdWxlcygpKSB7CiAgICAgICAgIGlmIChy
dWxlLT5zdHlsZVNoZWV0KCkgJiYgKCFydWxlLT5tZWRpYVF1ZXJpZXMoKSB8fCBtZWRpdW0uZXZh
bHVhdGUoKnJ1bGUtPm1lZGlhUXVlcmllcygpLCByZXNvbHZlcikpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgK
aW5kZXggNjM1NWU5MzY0ZmUuLjYxODBjNDliY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKQEAgLTQ0
LDkgKzQ0LDEyIEBAIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNs
YXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwotY2xhc3MgU3R5bGVSZXNvbHZl
cjsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNz
IFJlc29sdmVyOworfQorCiBlbnVtIGNsYXNzIE1hdGNoQmFzZWRPblJ1bGVIYXNoIDogdW5zaWdu
ZWQgewogICAgIE5vbmUsCiAgICAgVW5pdmVyc2FsLApAQCAtMTE3LDcgKzEyMCw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIFZlY3RvcjxSdWxlRGF0YSwgMT4gUnVsZURhdGFWZWN0b3I7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRGF0YVZlY3Rv
cj4+IEF0b21SdWxlTWFwOwogCi0gICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0
Q29udGVudHMmLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciogPSAw
KTsKKyAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYsIGNvbnN0
IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBTdHlsZTo6UmVzb2x2ZXIqID0gMCk7CiAKICAgICB2b2lk
IGFkZFN0eWxlUnVsZShTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwg
dW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgpOwpAQCAt
MTUwLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0hvc3RQc2V1ZG9DbGFzc1J1bGVz
TWF0Y2hpbmdJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBtX2hhc0hvc3RQc2V1ZG9DbGFz
c1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWU7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFkZENo
aWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mLCBjb25zdCBNZWRp
YVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlUmVzb2x2ZXIqLCBib29sIGlzSW5pdGlhdGlu
Z0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIHZvaWQgYWRkQ2hpbGRSdWxlcyhj
b25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYsIGNvbnN0IE1lZGlhUXVlcnlFdmFs
dWF0b3ImIG1lZGl1bSwgU3R5bGU6OlJlc29sdmVyKiwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKICAg
ICBBdG9tUnVsZU1hcCBtX2NsYXNzUnVsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBh
Y2Q1OGNkMzA2NS4uNjdlZTAzOTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjI4
NiwxMCArMjI4NiwxMCBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVs
cyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogICAgIG1hcmdpbkxlZnQg
PSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IGludFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoKTsKIH0KIAotU3R5bGVSZXNvbHZlciYg
RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKK1N0eWxlOjpSZXNv
bHZlciYgRG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKIHsKICAg
ICBpZiAoIW1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpCi0gICAgICAgIG1fdXNl
ckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+
KCp0aGlzKTsKKyAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IG1h
a2VVbmlxdWU8U3R5bGU6OlJlc29sdmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJBZ2Vu
dFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDdh
ZTdlMzdiNTQ3Li4zODI0MjIxZTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE5Myw3ICsx
OTMsNiBAQCBjbGFzcyBTZWxlY3RvclF1ZXJ5Q2FjaGU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CiBjbGFzcyBTZXR0aW5nczsKIGNsYXNzIFN0cmluZ0NhbGxiYWNrOwotY2xhc3MgU3R5
bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7
CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKQEAgLTI2NCw2ICsyNjMsNyBAQCBjbGFzcyBSZXNpemVP
YnNlcnZlcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgU3R5bGUgeworY2xhc3MgUmVzb2x2ZXI7CiBj
bGFzcyBTY29wZTsKIH07CiAKQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHNhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoKSBjb25zdCB7IHJldHVybiBtX3Nhd0VsZW1l
bnRzSW5Lbm93bk5hbWVzcGFjZXM7IH0KIAotICAgIFN0eWxlUmVzb2x2ZXImIHVzZXJBZ2VudFNo
YWRvd1RyZWVTdHlsZVJlc29sdmVyKCk7CisgICAgU3R5bGU6OlJlc29sdmVyJiB1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpOwogCiAgICAgQ1NTRm9udFNlbGVjdG9yJiBmb250U2Vs
ZWN0b3IoKSB7IHJldHVybiBtX2ZvbnRTZWxlY3RvcjsgfQogCkBAIC0xNjc5LDcgKzE2NzksNyBA
QCBwcml2YXRlOgogCiAgICAgVW5pcXVlUmVmPFF1aXJrcz4gbV9xdWlya3M7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3R5bGVSZXNvbHZlcj4gbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNv
bHZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6OlJlc29sdmVyPiBtX3VzZXJBZ2VudFNo
YWRvd1RyZWVTdHlsZVJlc29sdmVyOwogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9kb21XaW5k
b3c7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9jb250ZXh0RG9jdW1lbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggOGUzMGNmYTg3ODYuLmM5NDYzYjFmZDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC0xODk0LDcgKzE4OTQsNyBAQCBib29sIEVsZW1lbnQ6OmFsbG93c0RvdWJsZVRh
cEdlc3R1cmUoKSBjb25zdAogfQogI2VuZGlmCiAKLVN0eWxlUmVzb2x2ZXImIEVsZW1lbnQ6OnN0
eWxlUmVzb2x2ZXIoKQorU3R5bGU6OlJlc29sdmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVyKCkK
IHsKICAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCiAg
ICAgICAgIHJldHVybiBzaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKTsKQEAgLTE5
MDIsNyArMTkwMiw3IEBAIFN0eWxlUmVzb2x2ZXImIEVsZW1lbnQ6OnN0eWxlUmVzb2x2ZXIoKQog
ICAgIHJldHVybiBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpOwogfQogCi1FbGVt
ZW50U3R5bGUgRWxlbWVudDo6cmVzb2x2ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSkKK1N0eWxlOjpFbGVtZW50U3R5bGUgRWxlbWVudDo6cmVzb2x2ZVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKIHsKICAgICByZXR1cm4gc3R5bGVSZXNvbHZlcigpLnN0
eWxlRm9yRWxlbWVudCgqdGhpcywgcGFyZW50U3R5bGUpOwogfQpAQCAtNDA4OSw3ICs0MDg5LDcg
QEAgdm9pZCBFbGVtZW50OjpkaWREZXRhY2hSZW5kZXJlcnMoKQogICAgIEFTU0VSVChoYXNDdXN0
b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHlsZT4g
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVu
ZGVyU3R5bGUqKQorT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKQogewog
ICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7CiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDM2NmMwMzY3ODhlLi5kNWU3MWU2
OTljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFBzZXVkb0Vs
ZW1lbnQ7CiBjbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247CiBjbGFzcyBTdHlsZVByb3BlcnR5TWFw
OwogY2xhc3MgV2ViQW5pbWF0aW9uOwotc3RydWN0IEVsZW1lbnRTdHlsZTsKIHN0cnVjdCBTY3Jv
bGxJbnRvVmlld09wdGlvbnM7CiAKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQpA
QCAtNjksNiArNjgsMTAgQEAgc3RydWN0IEludGVyc2VjdGlvbk9ic2VydmVyRGF0YTsKIHN0cnVj
dCBSZXNpemVPYnNlcnZlckRhdGE7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFN0eWxlIHsKK3N0cnVj
dCBFbGVtZW50U3R5bGU7Cit9CisKIGVudW0gU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIHsKICAg
ICBTcGVsbGNoZWNrQXR0cmlidXRlVHJ1ZSwKICAgICBTcGVsbGNoZWNrQXR0cmlidXRlRmFsc2Us
CkBAIC01NDEsNyArNTQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hS
ZW5kZXJlcnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWREZXRhY2hSZW5kZXJlcnMoKTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSk7CisgICAgdmlydHVh
bCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKTsKIAogICAgIExheW91dFJlY3QgYWJzb2x1dGVFdmVudEhhbmRsZXJCb3VuZHMoYm9vbCYg
aW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxlbWVudHMpIG92ZXJyaWRlOwogCkBAIC01NjIsOCArNTY1
LDggQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzRG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKCk7Ci0g
ICAgRWxlbWVudFN0eWxlIHJlc29sdmVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUpOworICAgIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVSZXNvbHZlcigpOworICAgIFN0eWxlOjpF
bGVtZW50U3R5bGUgcmVzb2x2ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7
CiAKICAgICAvLyBJbnZhbGlkYXRlcyB0aGUgc3R5bGUgb2YgYSBzaW5nbGUgZWxlbWVudC4gU3R5
bGUgaXMgcmVzb2x2ZWQgbGF6aWx5LgogICAgIC8vIERlc2NlbmRhbnQgZWxlbWVudHMgYXJlIHJl
c29sdmVkIGFzIG5lZWRlZCwgZm9yIGV4YW1wbGUgaWYgYW4gaW5oZXJpdGVkIHByb3BlcnR5IGNo
YW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggYTE0ODgx
ZmQ1YmYuLjA4ODhkMTIyNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbQogdm9pZCBF
ZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1
bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAotICAgICAgICBT
dHlsZVJlc29sdmVyOjpBdXRob3JDU1NSdWxlcyk7CisgICAgICAgIFN0eWxlOjpSZXNvbHZlcjo6
QXV0aG9yQ1NTUnVsZXMpOwogICAgIC8vIFN0eWxlcyBmcm9tIHRoZSBpbmxpbmUgc3R5bGUgZGVj
bGFyYXRpb24sIGhlbGQgaW4gdGhlIHZhcmlhYmxlICJzdHlsZSIsIHRha2UgcHJlY2VkZW5jZSAK
ICAgICAvLyBvdmVyIHRob3NlIGZyb20gbWF0Y2hlZCBydWxlcy4KICAgICBpZiAobV9tdXRhYmxl
U3R5bGUpCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5
bGVGcm9tUnVsZXNBbmRDb250ZXh0KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIE5vZGUqCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIDEuIFJlbW92ZSBzdHlsZSBmcm9tIG1hdGNoZWQgcnVsZXMg
YmVjYXVzZSBzdHlsZSByZW1haW4gd2l0aG91dCByZXBlYXRpbmcgaXQgaW4gaW5saW5lIHN0eWxl
IGRlY2xhcmF0aW9uCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlRnJv
bU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwg
U3R5bGVSZXNvbHZlcjo6QWxsQnV0RW1wdHlDU1NSdWxlcyk7CisgICAgUmVmUHRyPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRS
dWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgU3R5bGU6OlJlc29sdmVyOjpBbGxCdXRFbXB0eUNTU1J1
bGVzKTsKICAgICBpZiAoc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzICYmICFzdHlsZUZyb21NYXRjaGVk
UnVsZXMtPmlzRW1wdHkoKSkKICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVz
Tm90SW4oKm1fbXV0YWJsZVN0eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIApAQCAtMTM4
Nyw3ICsxMzg3LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1l
bnREZWZhdWx0U3R5bGUoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxl
IHx8IG1fbXV0YWJsZVN0eWxlLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBkZWZhdWx0U3R5bGUgPSBzdHlsZUZyb21NYXRj
aGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIFN0eWxlUmVzb2x2ZXI6OlVBQW5kVXNlckNTU1J1
bGVzKTsKKyAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0g
c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBTdHlsZTo6UmVzb2x2ZXI6
OlVBQW5kVXNlckNTU1J1bGVzKTsKIAogICAgIHJlbW92ZVByb3BlcnRpZXNJblN0eWxlKG1fbXV0
YWJsZVN0eWxlLmdldCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA3NGZhNjRiMDdjZi4uOGFlMTYyNTNhYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yMDY0LDcg
KzIwNjQsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5n
ZWQoKQogICAgICAgICBzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwogICAgIHNldENhcmV0VmlzaWJp
bGl0eShhY3RpdmVBbmRGb2N1c2VkID8gVmlzaWJsZSA6IEhpZGRlbik7CiAKLSAgICAvLyBCZWNh
dXNlIFN0eWxlUmVzb2x2ZXI6OmNoZWNrT25lU2VsZWN0b3IoKSBhbmQKKyAgICAvLyBCZWNhdXNl
IFN0eWxlOjpSZXNvbHZlcjo6Y2hlY2tPbmVTZWxlY3RvcigpIGFuZAogICAgIC8vIFJlbmRlclRo
ZW1lOjppc0ZvY3VzZWQoKSBjaGVjayBpZiB0aGUgZnJhbWUgaXMgYWN0aXZlLCB3ZSBoYXZlIHRv
CiAgICAgLy8gdXBkYXRlIHN0eWxlIGFuZCB0aGVtZSBzdGF0ZSB0aGF0IGRlcGVuZGVkIG9uIHRo
b3NlLgogICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCmluZGV4IGYyM2FkYmEzOGU4Li45MmE3ZTIxZDcwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC01OTAsNyArNTkw
LDcgQEAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElu
cHV0KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93
SG9zdCgpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxl
KiBob3N0U3R5bGUpCitPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRl
clN0eWxlKiBob3N0U3R5bGUpCiB7CiAgICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNvbXB1
dGUgc3R5bGUuIFRoaXMgaXMganVzdCBhIGhhY2sgdG8gcGljayBzaGFkb3cgcHNldWRvIGlkIHdo
ZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlckNvbnRh
aW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxl
PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxlKQorT3B0aW9uYWw8U3R5bGU6OkVs
ZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKIHsKICAgICAv
LyBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFj
ayB0byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4
IGIwMThiOThiMjVhLi44NDIwYjAwN2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpIGZpbmFsOwogCi0gICAgT3B0aW9u
YWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5
bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0
eWxlKikgZmluYWw7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBmaW5hbDsKIAogICAgIHZvaWQgc3RhcnREcmFnZ2luZygpOwpAQCAtMTM2LDcgKzEzNiw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYp
OwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7Ci0gICAgT3B0aW9u
YWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5
bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0
eWxlKikgZmluYWw7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGlzU2xpZGVyQ29udGFpbmVyRWxlbWVudCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNDM5MzJlNGYwZGMuLjU1YzBj
MzNiYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzU3Ryb25nUGFzc3dvcmRUZXh0RmllbGQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKICAg
ICByZXR1cm4gaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oZWxlbWVudCktPmhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKTsK
IH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyOjpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSopCitPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElu
bmVyQ29udGFpbmVyOjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVu
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgYXV0byBlbGVtZW50U3R5bGUgPSBy
ZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAgICBpZiAoaXNTdHJvbmdQYXNzd29yZFRleHRG
aWVsZChzaGFkb3dIb3N0KCkpKSB7CkBAIC0xMDIsNyArMTAyLDcgQEAgUmVmPFRleHRDb250cm9s
SW5uZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0Q29udHJvbElubmVyRWxlbWVu
dChkb2N1bWVudCkpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHls
ZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0
byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICBuZXdTdHlsZS0+aW5o
ZXJpdEZyb20oKnNoYWRvd0hvc3RTdHlsZSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgT3B0aW9uYWw8
RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlclMKICAgICAgICAgbmV3U3R5bGUtPnNldEZsZXhCYXNpcyhMZW5ndGggeyBw
aXhlbHMsIEZpeGVkIH0pOwogICAgIH0KIAotICAgIHJldHVybiBFbGVtZW50U3R5bGUgeyBXVEZN
b3ZlKG5ld1N0eWxlKSB9OworICAgIHJldHVybiB7IFdURk1vdmUobmV3U3R5bGUpIH07CiB9CiAK
IC8vIE1BUks6IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudApAQCAtMTcxLDEwICsxNzEsMTAg
QEAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OnJlbmRlcmVyKCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRy
b2xJbm5lckJsb2NrPihIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXIoKSk7CiB9CiAKLU9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKQorT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5k
ZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUgPSBkb3duY2FzdDxI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QoKSkuY3JlYXRlSW5uZXJUZXh0
U3R5bGUoKnNoYWRvd0hvc3RTdHlsZSk7Ci0gICAgcmV0dXJuIEVsZW1lbnRTdHlsZShtYWtlVW5p
cXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOworICAgIHJldHVybiB7IG1ha2VVbmlx
dWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSB9OwogfQogCiAvLyBNQVJLOiBUZXh0Q29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudApAQCAtMTkxLDcgKzE5MSw3IEBAIFJlZjxUZXh0Q29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudD4gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dENvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK09w
dGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUgPSByZXNv
bHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCA3ZjY1ODM5MDEwMS4uOTY2
Mjk1OWI3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKERvY3VtZW50Jik7CiAgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxFbGVtZW50
U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIE9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92
ZXJyaWRlOwogfTsKIAogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTERpdkVsZW1lbnQgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICBUZXh0Q29udHJvbElubmVyRWxlbWVudChEb2N1bWVudCYpOwotICAgIE9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7Cisg
ICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RT
dHlsZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTY4LDcgKzY4LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsK
ICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hv
c3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTgxLDcgKzgx
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVu
dChEb2N1bWVudCYpOwogICAgIAotICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiBj
bGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxE
aXZFbGVtZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggOGYwOGQ3YTU5MDkuLmRkMTUwNTc2NjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0Fn
ZW50LmNwcApAQCAtNDgwLDggKzQ4MCw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAgICAg
fQogCiAgICAgLy8gTWF0Y2hlZCBydWxlcy4KLSAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyID0gZWxlbWVudC0+c3R5bGVSZXNvbHZlcigpOwotICAgIGF1dG8gbWF0Y2hlZFJ1bGVzID0g
c3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBlbGVtZW50
UHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICBTdHlsZTo6UmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIgPSBlbGVtZW50LT5zdHlsZVJlc29sdmVyKCk7CisgICAgYXV0byBt
YXRjaGVkUnVsZXMgPSBzdHlsZVJlc29sdmVyLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVs
ZW1lbnQsIGVsZW1lbnRQc2V1ZG9JZCwgU3R5bGU6OlJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CiAg
ICAgbWF0Y2hlZENTU1J1bGVzID0gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChtYXRjaGVk
UnVsZXMsIHN0eWxlUmVzb2x2ZXIsICplbGVtZW50LCBlbGVtZW50UHNldWRvSWQpOwogCiAgICAg
aWYgKCFvcmlnaW5hbEVsZW1lbnQtPmlzUHNldWRvRWxlbWVudCgpKSB7CkBAIC00OTAsNyArNDkw
LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICAgICAgICAgIGF1dG8gcHNldWRvRWxl
bWVudHMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRN
YXRjaGVzPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0g
UHNldWRvSWQ6OkZpcnN0UHVibGljUHNldWRvSWQ7IHBzZXVkb0lkIDwgUHNldWRvSWQ6OkFmdGVy
TGFzdEludGVybmFsUHNldWRvSWQ7IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHN0
YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkgKyAxKSkgewogICAgICAgICAgICAgICAgIGlm
IChhdXRvIHByb3RvY29sUHNldWRvSWQgPSBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQocHNldWRv
SWQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNv
bHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgU3R5bGVS
ZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOworICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWRS
dWxlcyA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwg
cHNldWRvSWQsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gbWF0Y2hlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRj
aGVzOjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRQc2V1ZG9JZChw
cm90b2NvbFBzZXVkb0lkLnZhbHVlKCkpCkBAIC01MDksOCArNTA5LDggQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbm8KICAgICAgICAgICAgIGF1dG8gZW50cmllcyA9IEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pjo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVu
dCgpOwogICAgICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQpIHsKLSAgICAgICAgICAgICAg
ICBTdHlsZVJlc29sdmVyJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50RWxlbWVudC0+c3R5
bGVSZXNvbHZlcigpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50TWF0Y2hlZFJ1bGVzID0g
cGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBT
dHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CisgICAgICAgICAgICAgICAgYXV0byYgcGFyZW50
U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2ZXIuc3R5
bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGU6OlJlc29sdmVyOjpBbGxDU1NS
dWxlcyk7CiAgICAgICAgICAgICAgICAgYXV0byBlbnRyeSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAg
LnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1h
dGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgKnBhcmVudEVsZW1lbnQsIFBzZXVkb0lkOjpOb25l
KSkKICAgICAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTk0NCwxMiArOTQ0LDEyIEBA
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBJbnNwZWN0b3JDU1NB
Z2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0CiAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
UnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
RWxlbWVudCYgZWxlbWVudCkKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1
bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiBzdHls
ZVJ1bGUsIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBpZiAoIXN0eWxlUnVsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAv
LyBTdHlsZVJ1bGVzIHJldHVybmVkIGJ5IFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVt
ZW50IGxhY2sgcGFyZW50IHBvaW50ZXJzIHNpbmNlIHRoYXQgaW5mb21hdGlvbiBpcyBub3QgY2hl
YXBseSBhdmFpbGFibGUuCisgICAgLy8gU3R5bGVSdWxlcyByZXR1cm5lZCBieSBTdHlsZTo6UmVz
b2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50IGxhY2sgcGFyZW50IHBvaW50ZXJzIHNpbmNlIHRo
YXQgaW5mb21hdGlvbiBpcyBub3QgY2hlYXBseSBhdmFpbGFibGUuCiAgICAgLy8gU2luY2UgdGhl
IGluc3BlY3RvciB3YW50cyB0byB3YWxrIHRoZSBwYXJlbnQgY2hhaW4sIHdlIGNvbnN0cnVjdCB0
aGUgZnVsbCB3cmFwcGVycyBoZXJlLgogICAgIHN0eWxlUmVzb2x2ZXIuaW5zcGVjdG9yQ1NTT01X
cmFwcGVycygpLmNvbGxlY3REb2N1bWVudFdyYXBwZXJzKHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQo
KS5leHRlbnNpb25TdHlsZVNoZWV0cygpKTsKICAgICBzdHlsZVJlc29sdmVyLmluc3BlY3RvckNT
U09NV3JhcHBlcnMoKS5jb2xsZWN0U2NvcGVXcmFwcGVycyhTdHlsZTo6U2NvcGU6OmZvck5vZGUo
ZWxlbWVudCkpOwpAQCAtOTc2LDcgKzk3Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoCiAg
ICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWls
ZE9iamVjdEZvclJ1bGUocnVsZSwgbnVsbHB0cikgOiBudWxscHRyOwogfQogCi1SZWZQdHI8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCitSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0Fn
ZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGU6OlJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBF
bGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKICAgICBhdXRvIHJlc3VsdCA9
IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+OjpjcmVh
dGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5oCmluZGV4IGU0M2NiNWI3NjEwLi42NzQyZGRmMmM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAt
NTAsOSArNTAsMTIgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgTm9k
ZTsKIGNsYXNzIE5vZGVMaXN0OwotY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlUnVs
ZTsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNzIFJlc29sdmVyOworfQorCiBjbGFzcyBJbnNw
ZWN0b3JDU1NBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UgLCBwdWJsaWMg
SW5zcGVjdG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgLCBwdWJsaWMgSW5zcGVjdG9y
U3R5bGVTaGVldDo6TGlzdGVuZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckNTU0FnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE0Miw5ICsxNDUs
OSBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGNyZWF0ZUluc3BlY3RvclN0
eWxlU2hlZXRGb3JEb2N1bWVudChEb2N1bWVudCYpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0
eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KTsKIAotICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUq
LCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqLCBTdHlsZTo6
UmVzb2x2ZXImLCBFbGVtZW50Jik7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOwotICAgIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVp
bGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+
JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQmLCBQc2V1ZG9JZCk7CisgICAgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5
Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHls
ZTo6UmVzb2x2ZXImLCBFbGVtZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShT
dHlsZWRFbGVtZW50Jik7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDBhY2U5
ZWM3YmQ1Li40OTRlMDk3OGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTUy
NSw5ICsxNTI1LDkgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRD
U1NSdWxlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcKICAgICBhdXRvKiBmcmFtZSA9
IHRoaXMtPmZyYW1lKCk7CiAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2NvcGUoKS5mbHVz
aFBlbmRpbmdVcGRhdGUoKTsKIAotICAgIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0gU3R5bGVS
ZXNvbHZlcjo6QXV0aG9yQ1NTUnVsZXM7CisgICAgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBT
dHlsZTo6UmVzb2x2ZXI6OkF1dGhvckNTU1J1bGVzOwogICAgIGlmICghYXV0aG9yT25seSkKLSAg
ICAgICAgcnVsZXNUb0luY2x1ZGUgfD0gU3R5bGVSZXNvbHZlcjo6VUFBbmRVc2VyQ1NTUnVsZXM7
CisgICAgICAgIHJ1bGVzVG9JbmNsdWRlIHw9IFN0eWxlOjpSZXNvbHZlcjo6VUFBbmRVc2VyQ1NT
UnVsZXM7CiAKICAgICBQc2V1ZG9JZCBwc2V1ZG9JZCA9IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChw
c2V1ZG9UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggY2YzNzhiMGIyNGMuLjE5MzBhZjQw
NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIFBhZ2U6Omlu
aXRHcm91cCgpCiB2b2lkIFBhZ2U6OnVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50
KCkKIHsKICAgICBmb3JFYWNoRG9jdW1lbnQoW10oRG9jdW1lbnQmIGRvY3VtZW50KSB7Ci0gICAg
ICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9jdW1lbnQuc3R5bGVTY29w
ZSgpLnJlc29sdmVySWZFeGlzdHMoKSkKKyAgICAgICAgaWYgKFN0eWxlOjpSZXNvbHZlciogc3R5
bGVSZXNvbHZlciA9IGRvY3VtZW50LnN0eWxlU2NvcGUoKS5yZXNvbHZlcklmRXhpc3RzKCkpCiAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5pbnZhbGlkYXRlTWF0Y2hlZERlY2xhcmF0aW9uc0Nh
Y2hlKCk7CiAgICAgICAgIGRvY3VtZW50LnNjaGVkdWxlRnVsbFN0eWxlUmVidWlsZCgpOwogICAg
ICAgICBkb2N1bWVudC5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5p
bWF0aW9uLmNwcAppbmRleCBlNTc2MjkzNThhNC4uYWQ4NjkxNTczMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApAQCAt
MzA0LDcgKzMwNCw3IEBAIEFuaW1hdGlvblVwZGF0ZSBDb21wb3NpdGVBbmltYXRpb246OmFuaW1h
dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoYW5pbWF0ZWRTdHlsZSAmJiBjaGVja0ZvclN0YWNraW5nQ29udGV4dCkgewotICAg
ICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgc2ltaWxhciB0byBjb2RlIGluIFN0eWxlUmVz
b2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKCkgYnV0IG9ubHkgbmVlZHMgdG8gY29uc3VsdAorICAg
ICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgc2ltaWxhciB0byBjb2RlIGluIFN0eWxlOjpB
ZGp1c3Rlcjo6YWRqdXN0KCkgYnV0IG9ubHkgbmVlZHMgdG8gY29uc3VsdAogICAgICAgICAgICAg
Ly8gYW5pbWF0YWJsZSBwcm9wZXJ0aWVzIHRoYXQgY2FuIHRyaWdnZXIgc3RhY2tpbmcgY29udGV4
dC4KICAgICAgICAgICAgIGlmIChhbmltYXRlZFN0eWxlLT5vcGFjaXR5KCkgPCAxLjBmCiAgICAg
ICAgICAgICAgICAgfHwgYW5pbWF0ZWRTdHlsZS0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggNzdhOGMzOTIzNWYu
LjM4M2E5MzU2NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAt
NDUsNyArNDUsNiBAQCBjbGFzcyBSZW5kZXJNZXRlcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIFJlbmRlclByb2dyZXNzOwogY2xhc3MgUmVuZGVyU3R5bGU7Ci1jbGFzcyBTdHlsZVJlc29s
dmVyOwogCiBjbGFzcyBSZW5kZXJUaGVtZSB7CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA4N2M2Y2U0ZDdjMC4uOWQ4
M2VmODU3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHN0YXRpYyBib29sIHJhcmVOb25Jbmhlcml0ZWRE
YXRhQ2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgU3R5bGVSYXJlTm9uSW5oCiAKIGJv
b2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0
eWxlJiBvdGhlciwgT3B0aW9uU2V0PFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eT4mIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKIHsKLSAgICAv
LyBTdHlsZVJlc29sdmVyIGhhcyBlbnN1cmVkIHRoYXQgekluZGV4IGlzIG5vbi1hdXRvIG9ubHkg
aWYgaXQncyBhcHBsaWNhYmxlLgorICAgIC8vIFN0eWxlOjpSZXNvbHZlciBoYXMgZW5zdXJlZCB0
aGF0IHpJbmRleCBpcyBub24tYXV0byBvbmx5IGlmIGl0J3MgYXBwbGljYWJsZS4KICAgICBpZiAo
bV9ib3hEYXRhLT56SW5kZXgoKSAhPSBvdGhlci5tX2JveERhdGEtPnpJbmRleCgpIHx8IG1fYm94
RGF0YS0+aGFzQXV0b1pJbmRleCgpICE9IG90aGVyLm1fYm94RGF0YS0+aGFzQXV0b1pJbmRleCgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCAzYjUwZTgwZmY0Yy4uNTg1MjJiZDllNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMTMsNyArMTEz
LDYgQEAgY2xhc3MgUGFpcjsKIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFzcyBTdHlsZUltYWdlOwog
Y2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhOwotY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0
eWxlU2Nyb2xsU25hcEFyZWE7CiBjbGFzcyBTdHlsZVNjcm9sbFNuYXBQb3J0OwogY2xhc3MgVHJh
bnNmb3JtYXRpb25NYXRyaXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcApzaW1p
bGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDY0NDNlYzMyYmRhLi5hZWExYTBkMWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC04MSwxMCArODEsMTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
U3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1TdHlsZVJlc29sdmVyOjpTdHlsZVJlc29s
dmVyKERvY3VtZW50JiBkb2N1bWVudCkKK1Jlc29sdmVyOjpSZXNvbHZlcihEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBtX3J1bGVTZXRzKCp0aGlzKQogICAgICwgbV9kb2N1bWVudChkb2N1bWVu
dCkKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQpAQCAtMTI0LDcgKzEyNSw3IEBA
IFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIG1f
cnVsZVNldHMucmVzZXRVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUoKTsKIH0KIAotdm9pZCBTdHls
ZVJlc29sdmVyOjphZGRDdXJyZW50U1ZHRm9udEZhY2VSdWxlcygpCit2b2lkIFJlc29sdmVyOjph
ZGRDdXJyZW50U1ZHRm9udEZhY2VSdWxlcygpCiB7CiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAg
ICBpZiAobV9kb2N1bWVudC5zdmdFeHRlbnNpb25zKCkpIHsKQEAgLTEzNSw3ICsxMzYsNyBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCkKICNlbmRpZgog
fQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBzdHlsZVNoZWV0cykKK3ZvaWQgUmVzb2x2ZXI6
OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4+JiBzdHlsZVNoZWV0cykKIHsKICAgICBtX3J1bGVTZXRzLmFwcGVuZEF1dGhvclN0eWxlU2hl
ZXRzKHN0eWxlU2hlZXRzLCAmbV9tZWRpYVF1ZXJ5RXZhbHVhdG9yLCBtX2luc3BlY3RvckNTU09N
V3JhcHBlcnMsIHRoaXMpOwogCkBAIC0xNDgsMTMgKzE0OSwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4+JgogfQogCiAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBzdHlsZSBzZXR0aW5nIGZ1bmN0
aW9uIGZvciBrZXlmcmFtZSBzdHlsZXMKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkS2V5ZnJhbWVT
dHlsZShSZWY8U3R5bGVSdWxlS2V5ZnJhbWVzPiYmIHJ1bGUpCit2b2lkIFJlc29sdmVyOjphZGRL
ZXlmcmFtZVN0eWxlKFJlZjxTdHlsZVJ1bGVLZXlmcmFtZXM+JiYgcnVsZSkKIHsKICAgICBBdG9t
U3RyaW5nIHMocnVsZS0+bmFtZSgpKTsKICAgICBtX2tleWZyYW1lc1J1bGVNYXAuc2V0KHMuaW1w
bCgpLCBXVEZNb3ZlKHJ1bGUpKTsKIH0KIAotU3R5bGVSZXNvbHZlcjo6flN0eWxlUmVzb2x2ZXIo
KQorUmVzb2x2ZXI6On5SZXNvbHZlcigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZG9jdW1l
bnQuaXNSZXNvbHZpbmdUcmVlU3R5bGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNEZWxl
dGVkKTsKQEAgLTE2NSw3ICsxNjYsNyBAQCBTdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigp
CiAjZW5kaWYKIH0KIAotU3R5bGVSZXNvbHZlcjo6U3RhdGU6OlN0YXRlKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIGRvY3VtZW50RWxlbWVudFN0eWxlKQorUmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZShjb25zdCBF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBkb2N1bWVudEVsZW1lbnRTdHlsZSkKICAgICA6IG1fZWxlbWVudCgmZWxlbWVu
dCkKICAgICAsIG1fcGFyZW50U3R5bGUocGFyZW50U3R5bGUpCiB7CkBAIC0xODEsMTIgKzE4Miwx
MiBAQCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6U3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eQogICAgICAgICBtX3Jvb3RFbGVtZW50U3R5bGUg
PSBkb2N1bWVudEVsZW1lbnRTdHlsZSA/IGRvY3VtZW50RWxlbWVudFN0eWxlIDogZG9jdW1lbnRF
bGVtZW50LT5yZW5kZXJTdHlsZSgpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpT
dGF0ZTo6c2V0U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK2lubGlu
ZSB2b2lkIFJlc29sdmVyOjpTdGF0ZTo6c2V0U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZShzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHBhcmVudFN0eWxlKQoraW5saW5lIHZvaWQgUmVzb2x2ZXI6OlN0YXRl
OjpzZXRQYXJlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBhcmVudFN0eWxl
KQogewogICAgIG1fb3duZWRQYXJlbnRTdHlsZSA9IFdURk1vdmUocGFyZW50U3R5bGUpOwogICAg
IG1fcGFyZW50U3R5bGUgPSBtX293bmVkUGFyZW50U3R5bGUuZ2V0KCk7CkBAIC0xOTgsNyArMTk5
LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXRTaGFkb3dCb3VuZGFyeShjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIHJldHVybiBwYXJlbnROb2RlICYmIHBhcmVudE5vZGUtPmlzU2hhZG93
Um9vdCgpOwogfQogCi1TdHlsZTo6QnVpbGRlckNvbnRleHQgU3R5bGVSZXNvbHZlcjo6YnVpbGRl
ckNvbnRleHQoY29uc3QgU3RhdGUmIHN0YXRlKQorQnVpbGRlckNvbnRleHQgUmVzb2x2ZXI6OmJ1
aWxkZXJDb250ZXh0KGNvbnN0IFN0YXRlJiBzdGF0ZSkKIHsKICAgICByZXR1cm4gewogICAgICAg
ICBtX2RvY3VtZW50LApAQCAtMjA4LDcgKzIwOSw3IEBAIFN0eWxlOjpCdWlsZGVyQ29udGV4dCBT
dHlsZVJlc29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUpCiAgICAgfTsK
IH0KIAotRWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25zdCBF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hpbmdC
ZWhhdmlvciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQorRWxlbWVudFN0
eWxlIFJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94
U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZpb3IsIGNvbnN0IFNlbGVj
dG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0Rl
bGV0ZWQpOwogCkBAIC0yNTIsMTEgKzI1MywxMSBAQCBFbGVtZW50U3R5bGUgU3R5bGVSZXNvbHZl
cjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlcgog
ICAgIGlmIChjb2xsZWN0b3IuZGlkTWF0Y2hVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCkpCiAg
ICAgICAgIHN0eWxlLnNldFVuaXF1ZSgpOwogCi0gICAgYXV0byBlbGVtZW50U3R5bGVSZWxhdGlv
bnMgPSBTdHlsZTo6Y29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZShzdHlsZSwgZWxlbWVudCwg
Y29sbGVjdG9yLnN0eWxlUmVsYXRpb25zKCkpOworICAgIGF1dG8gZWxlbWVudFN0eWxlUmVsYXRp
b25zID0gY29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZShzdHlsZSwgZWxlbWVudCwgY29sbGVj
dG9yLnN0eWxlUmVsYXRpb25zKCkpOwogCiAgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhzdGF0
ZSwgY29sbGVjdG9yLm1hdGNoUmVzdWx0KCkpOwogCi0gICAgU3R5bGU6OkFkanVzdGVyIGFkanVz
dGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBwYXJlbnRCb3hTdHlsZSwgJmVs
ZW1lbnQpOworICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRT
dHlsZSgpLCBwYXJlbnRCb3hTdHlsZSwgJmVsZW1lbnQpOwogICAgIGFkanVzdGVyLmFkanVzdCgq
c3RhdGUuc3R5bGUoKSwgc3RhdGUudXNlckFnZW50QXBwZWFyYW5jZVN0eWxlKCkpOwogCiAgICAg
aWYgKHN0YXRlLnN0eWxlKCktPmhhc1ZpZXdwb3J0VW5pdHMoKSkKQEAgLTI2NSw3ICsyNjYsNyBA
QCBFbGVtZW50U3R5bGUgU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlcgogICAgIHJldHVybiB7IHN0YXRlLnRha2VTdHlsZSgp
LCBXVEZNb3ZlKGVsZW1lbnRTdHlsZVJlbGF0aW9ucykgfTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxl
UnVsZUtleWZyYW1lKiBrZXlmcmFtZSwgS2V5ZnJhbWVWYWx1ZSYga2V5ZnJhbWVWYWx1ZSkKK3N0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29u
c3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29u
c3QgU3R5bGVSdWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZVZh
bHVlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVsZXRlZCk7CiAKQEAgLTI3NywxMCAr
Mjc4LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5
bGVGb3JLZXlmcmFtZShjb25zdCBFbGVtZW50JiBlbGVtCiAgICAgc3RhdGUuc2V0U3R5bGUoUmVu
ZGVyU3R5bGU6OmNsb25lUHRyKCplbGVtZW50U3R5bGUpKTsKICAgICBzdGF0ZS5zZXRQYXJlbnRT
dHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmVsZW1lbnRTdHlsZSkpOwogCi0gICAgU3R5bGU6
OkJ1aWxkZXIgYnVpbGRlcigqc3RhdGUuc3R5bGUoKSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCBy
ZXN1bHQsIHsgU3R5bGU6OkNhc2NhZGVMZXZlbDo6QXV0aG9yIH0pOworICAgIEJ1aWxkZXIgYnVp
bGRlcigqc3RhdGUuc3R5bGUoKSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCByZXN1bHQsIHsgQ2Fz
Y2FkZUxldmVsOjpBdXRob3IgfSk7CiAgICAgYnVpbGRlci5hcHBseUFsbFByb3BlcnRpZXMoKTsK
IAotICAgIFN0eWxlOjpBZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50
U3R5bGUoKSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgQWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1l
bnQoKSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGFkanVz
dGVyLmFkanVzdCgqc3RhdGUuc3R5bGUoKSwgc3RhdGUudXNlckFnZW50QXBwZWFyYW5jZVN0eWxl
KCkpOwogCiAgICAgLy8gQWRkIGFsbCB0aGUgYW5pbWF0aW5nIHByb3BlcnRpZXMgdG8gdGhlIGtl
eWZyYW1lLgpAQCAtMjk2LDEyICsyOTcsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IEVsZW1lbnQmIGVsZW0KICAg
ICByZXR1cm4gc3RhdGUudGFrZVN0eWxlKCk7CiB9CiAKLWJvb2wgU3R5bGVSZXNvbHZlcjo6aXNB
bmltYXRpb25OYW1lVmFsaWQoY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBSZXNvbHZlcjo6aXNB
bmltYXRpb25OYW1lVmFsaWQoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBtX2tl
eWZyYW1lc1J1bGVNYXAuZmluZChBdG9tU3RyaW5nKG5hbWUpLmltcGwoKSkgIT0gbV9rZXlmcmFt
ZXNSdWxlTWFwLmVuZCgpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVz
Rm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBl
bGVtZW50U3R5bGUsIEtleWZyYW1lTGlzdCYgbGlzdCkKK3ZvaWQgUmVzb2x2ZXI6OmtleWZyYW1l
U3R5bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0
eWxlKiBlbGVtZW50U3R5bGUsIEtleWZyYW1lTGlzdCYgbGlzdCkKIHsKICAgICBsaXN0LmNsZWFy
KCk7CiAKQEAgLTM5Nyw3ICszOTgsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5
bGVzRm9yQW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbgogICAgIH0K
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9T
dHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUHNldWRvU3R5bGVS
ZXF1ZXN0JiBwc2V1ZG9TdHlsZVJlcXVlc3QsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlLCBjb25zdCBTZWxlY3RvckZpbHRl
ciogc2VsZWN0b3JGaWx0ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlc29sdmVy
Ojpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUHNl
dWRvU3R5bGVSZXF1ZXN0JiBwc2V1ZG9TdHlsZVJlcXVlc3QsIGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlLCBjb25zdCBTZWxl
Y3RvckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCiB7CiAgICAgYXV0byBzdGF0ZSA9IFN0YXRlKGVs
ZW1lbnQsICZwYXJlbnRTdHlsZSwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKTsKIApA
QCAtNDI4LDcgKzQyOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNv
bHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmCiAKICAgICBhcHBseU1h
dGNoZWRQcm9wZXJ0aWVzKHN0YXRlLCBjb2xsZWN0b3IubWF0Y2hSZXN1bHQoKSk7CiAKLSAgICBT
dHlsZTo6QWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQoKSwgKnN0YXRlLnBhcmVudFN0eWxlKCks
IHBhcmVudEJveFN0eWxlLCBudWxscHRyKTsKKyAgICBBZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVu
dCgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwgcGFyZW50Qm94U3R5bGUsIG51bGxwdHIpOwogICAg
IGFkanVzdGVyLmFkanVzdCgqc3RhdGUuc3R5bGUoKSwgc3RhdGUudXNlckFnZW50QXBwZWFyYW5j
ZVN0eWxlKCkpOwogCiAgICAgaWYgKHN0YXRlLnN0eWxlKCktPmhhc1ZpZXdwb3J0VW5pdHMoKSkK
QEAgLTQzNyw3ICs0MzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVz
b2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JgogICAgIHJldHVybiBz
dGF0ZS50YWtlU3R5bGUoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHls
ZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKK3N0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gUmVzb2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQogewogICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVsZXRlZCk7CiAKQEAgLTQ1NSwxNCArNDU2LDE0IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKGlu
dCBwYWdlSW5kZXgpCiAKICAgICBhdXRvJiByZXN1bHQgPSBjb2xsZWN0b3IubWF0Y2hSZXN1bHQo
KTsKIAotICAgIFN0eWxlOjpCdWlsZGVyIGJ1aWxkZXIoKnN0YXRlLnN0eWxlKCksIGJ1aWxkZXJD
b250ZXh0KHN0YXRlKSwgcmVzdWx0LCB7IFN0eWxlOjpDYXNjYWRlTGV2ZWw6OkF1dGhvciB9KTsK
KyAgICBCdWlsZGVyIGJ1aWxkZXIoKnN0YXRlLnN0eWxlKCksIGJ1aWxkZXJDb250ZXh0KHN0YXRl
KSwgcmVzdWx0LCB7IENhc2NhZGVMZXZlbDo6QXV0aG9yIH0pOwogICAgIGJ1aWxkZXIuYXBwbHlB
bGxQcm9wZXJ0aWVzKCk7CiAKICAgICAvLyBOb3cgcmV0dXJuIHRoZSBzdHlsZS4KICAgICByZXR1
cm4gc3RhdGUudGFrZVN0eWxlKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
U3R5bGVSZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVt
ZW50KQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNvbHZlcjo6ZGVmYXVsdFN0eWxl
Rm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIGF1dG8gc3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAKQEAgLTQ3MSw5ICs0NzIsOSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1lbnQo
Y29uc3QgRWxlbWVudAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoc3RhbmRhcmRG
YW1pbHkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZUZyb21JZGVudGlmaWVy
KENTU1ZhbHVlTWVkaXVtKTsKIAotICAgIGF1dG8gc2l6ZSA9IFN0eWxlOjpmb250U2l6ZUZvcktl
eXdvcmQoQ1NTVmFsdWVNZWRpdW0sIGZhbHNlLCBkb2N1bWVudCgpKTsKKyAgICBhdXRvIHNpemUg
PSBmb250U2l6ZUZvcktleXdvcmQoQ1NTVmFsdWVNZWRpdW0sIGZhbHNlLCBkb2N1bWVudCgpKTsK
ICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzaXplKTsKLSAgICBmb250RGVz
Y3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKFN0eWxlOjpjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNp
ZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGlzPFNWR0Vs
ZW1lbnQ+KGVsZW1lbnQpLCBzdHlsZS5nZXQoKSwgZG9jdW1lbnQoKSkpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXpl
KHNpemUsIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBpczxTVkdFbGVtZW50Pihl
bGVtZW50KSwgc3R5bGUuZ2V0KCksIGRvY3VtZW50KCkpKTsKIAogICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyhzZXR0aW5ncygpLnNob3VsZEFsbG93
VXNlckluc3RhbGxlZEZvbnRzKCkgPyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6WWVzIDogQWxs
b3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vKTsKICAgICBzdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9u
KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CkBAIC00ODMsMTIgKzQ4NCwxMiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1l
bnQoY29uc3QgRWxlbWVudAogICAgIHJldHVybiBzdHlsZTsKIH0KIAotVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGU+PiBTdHlsZVJlc29sdmVyOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50KiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKK1ZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlPj4gUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIHJldHVybiBwc2V1ZG9TdHls
ZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSwgcnVsZXNUb0luY2x1ZGUp
OwogfQogCi1WZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0
eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVk
b0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKK1ZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4g
UmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQsIFBzZXVkb0lkIHBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC01MjgsMjcgKzUyOSwyNyBAQCBz
dGF0aWMgYm9vbCBlbGVtZW50VHlwZUhhc0FwcGVhcmFuY2VGcm9tVUFTdHlsZShjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQogICAgICAgICB8fCBsb2NhbE5hbWUgPT0gSFRNTE5hbWVzOjptZXRlclRh
ZzsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjppbnZhbGlkYXRlTWF0Y2hlZERlY2xhcmF0aW9u
c0NhY2hlKCkKK3ZvaWQgUmVzb2x2ZXI6OmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2Fj
aGUoKQogewogICAgIG1fbWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmludmFsaWRhdGUoKTsKIH0K
IAotdm9pZCBTdHlsZVJlc29sdmVyOjpjbGVhckNhY2hlZERlY2xhcmF0aW9uc0FmZmVjdGVkQnlW
aWV3cG9ydFVuaXRzKCkKK3ZvaWQgUmVzb2x2ZXI6OmNsZWFyQ2FjaGVkRGVjbGFyYXRpb25zQWZm
ZWN0ZWRCeVZpZXdwb3J0VW5pdHMoKQogewogICAgIG1fbWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hl
LmNsZWFyRW50cmllc0FmZmVjdGVkQnlWaWV3cG9ydFVuaXRzKCk7CiB9CiAKLXZvaWQgU3R5bGVS
ZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhTdGF0ZSYgc3RhdGUsIGNvbnN0IE1hdGNo
UmVzdWx0JiBtYXRjaFJlc3VsdCwgVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlIHVzZU1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZSkKK3ZvaWQgUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRp
ZXMoU3RhdGUmIHN0YXRlLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIFVzZU1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZSB1c2VNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUpCiB7Ci0gICAg
dW5zaWduZWQgY2FjaGVIYXNoID0gdXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlID09IFVzZU1h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6WWVzID8gU3R5bGU6Ok1hdGNoZWREZWNsYXJhdGlvbnND
YWNoZTo6Y29tcHV0ZUhhc2gobWF0Y2hSZXN1bHQpIDogMDsKLSAgICBhdXRvIGluY2x1ZGVkUHJv
cGVydGllcyA9IFN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OkluY2x1ZGVkUHJvcGVydGllczo6QWxs
OworICAgIHVuc2lnbmVkIGNhY2hlSGFzaCA9IHVzZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSA9
PSBVc2VNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OlllcyA/IE1hdGNoZWREZWNsYXJhdGlvbnND
YWNoZTo6Y29tcHV0ZUhhc2gobWF0Y2hSZXN1bHQpIDogMDsKKyAgICBhdXRvIGluY2x1ZGVkUHJv
cGVydGllcyA9IFByb3BlcnR5Q2FzY2FkZTo6SW5jbHVkZWRQcm9wZXJ0aWVzOjpBbGw7CiAKICAg
ICBhdXRvJiBzdHlsZSA9ICpzdGF0ZS5zdHlsZSgpOwogICAgIGF1dG8mIHBhcmVudFN0eWxlID0g
KnN0YXRlLnBhcmVudFN0eWxlKCk7CiAgICAgYXV0byYgZWxlbWVudCA9ICpzdGF0ZS5lbGVtZW50
KCk7CiAKICAgICBhdXRvKiBjYWNoZUVudHJ5ID0gbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUu
ZmluZChjYWNoZUhhc2gsIG1hdGNoUmVzdWx0KTsKLSAgICBpZiAoY2FjaGVFbnRyeSAmJiBTdHls
ZTo6TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjppc0NhY2hlYWJsZShlbGVtZW50LCBzdHlsZSwg
cGFyZW50U3R5bGUpKSB7CisgICAgaWYgKGNhY2hlRW50cnkgJiYgTWF0Y2hlZERlY2xhcmF0aW9u
c0NhY2hlOjppc0NhY2hlYWJsZShlbGVtZW50LCBzdHlsZSwgcGFyZW50U3R5bGUpKSB7CiAgICAg
ICAgIC8vIFdlIGNhbiBidWlsZCB1cCB0aGUgc3R5bGUgYnkgY29weWluZyBub24taW5oZXJpdGVk
IHByb3BlcnRpZXMgZnJvbSBhbiBlYXJsaWVyIHN0eWxlIG9iamVjdCBidWlsdCB1c2luZyB0aGUg
c2FtZSBleGFjdAogICAgICAgICAvLyBzdHlsZSBkZWNsYXJhdGlvbnMuIFdlIHRoZW4gb25seSBu
ZWVkIHRvIGFwcGx5IHRoZSBpbmhlcml0ZWQgcHJvcGVydGllcywgaWYgYW55LCBhcyB0aGVpciB2
YWx1ZXMgY2FuIGRlcGVuZCBvbiB0aGUgCiAgICAgICAgIC8vIGVsZW1lbnQgY29udGV4dC4gVGhp
cyBpcyBmYXN0IGFuZCBzYXZlcyBtZW1vcnkgYnkgcmV1c2luZyB0aGUgc3R5bGUgZGF0YSBzdHJ1
Y3R1cmVzLgpAQCAtNTY1LDcgKzU2Niw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRj
aGVkUHJvcGVydGllcyhTdGF0ZSYgc3RhdGUsIGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGluY2x1ZGVkUHJv
cGVydGllcyA9IFN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OkluY2x1ZGVkUHJvcGVydGllczo6SW5o
ZXJpdGVkT25seTsKKyAgICAgICAgaW5jbHVkZWRQcm9wZXJ0aWVzID0gUHJvcGVydHlDYXNjYWRl
OjpJbmNsdWRlZFByb3BlcnRpZXM6OkluaGVyaXRlZE9ubHk7CiAgICAgfQogCiAgICAgaWYgKGVs
ZW1lbnRUeXBlSGFzQXBwZWFyYW5jZUZyb21VQVN0eWxlKGVsZW1lbnQpKSB7CkBAIC01NzMsMTMg
KzU3NCwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoU3Rh
dGUmIHN0YXRlLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0YwogICAgICAgICAvLyBJZiBzbywgd2Ug
Y2FjaGUgdGhlIGJvcmRlciBhbmQgYmFja2dyb3VuZCBzdHlsZXMgc28gdGhhdCBSZW5kZXJUaGVt
ZTo6YWRqdXN0U3R5bGUoKQogICAgICAgICAvLyBjYW4gbG9vayBhdCB0aGVtIGxhdGVyIHRvIGZp
Z3VyZSBvdXQgaWYgdGhpcyBpcyBhIHN0eWxlZCBmb3JtIGNvbnRyb2wgb3Igbm90LgogICAgICAg
ICBhdXRvIHVzZXJBZ2VudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHN0eWxlKTsKLSAg
ICAgICAgU3R5bGU6OkJ1aWxkZXIgYnVpbGRlcigqdXNlckFnZW50U3R5bGUsIGJ1aWxkZXJDb250
ZXh0KHN0YXRlKSwgbWF0Y2hSZXN1bHQsIHsgU3R5bGU6OkNhc2NhZGVMZXZlbDo6VXNlckFnZW50
IH0pOworICAgICAgICBCdWlsZGVyIGJ1aWxkZXIoKnVzZXJBZ2VudFN0eWxlLCBidWlsZGVyQ29u
dGV4dChzdGF0ZSksIG1hdGNoUmVzdWx0LCB7IENhc2NhZGVMZXZlbDo6VXNlckFnZW50IH0pOwog
ICAgICAgICBidWlsZGVyLmFwcGx5QWxsUHJvcGVydGllcygpOwogCiAgICAgICAgIHN0YXRlLnNl
dFVzZXJBZ2VudEFwcGVhcmFuY2VTdHlsZShXVEZNb3ZlKHVzZXJBZ2VudFN0eWxlKSk7CiAgICAg
fQogCi0gICAgU3R5bGU6OkJ1aWxkZXIgYnVpbGRlcigqc3RhdGUuc3R5bGUoKSwgYnVpbGRlckNv
bnRleHQoc3RhdGUpLCBtYXRjaFJlc3VsdCwgU3R5bGU6OmFsbENhc2NhZGVMZXZlbHMoKSwgaW5j
bHVkZWRQcm9wZXJ0aWVzKTsKKyAgICBCdWlsZGVyIGJ1aWxkZXIoKnN0YXRlLnN0eWxlKCksIGJ1
aWxkZXJDb250ZXh0KHN0YXRlKSwgbWF0Y2hSZXN1bHQsIGFsbENhc2NhZGVMZXZlbHMoKSwgaW5j
bHVkZWRQcm9wZXJ0aWVzKTsKIAogICAgIC8vIEhpZ2ggcHJpb3JpdHkgcHJvcGVydGllcyBtYXkg
YWZmZWN0IHJlc29sdXRpb24gb2Ygb3RoZXIgcHJvcGVydGllcyAodGhleSBhcmUgbW9zdGx5IGZv
bnQgcmVsYXRlZCkuCiAgICAgYnVpbGRlci5hcHBseUhpZ2hQcmlvcml0eVByb3BlcnRpZXMoKTsK
QEAgLTU5OCwxOCArNTk5LDE4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyhTdGF0ZSYgc3RhdGUsIGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjCiAgICAgaWYgKGNh
Y2hlRW50cnkgfHwgIWNhY2hlSGFzaCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFN0eWxl
OjpNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OmlzQ2FjaGVhYmxlKGVsZW1lbnQsIHN0eWxlLCBw
YXJlbnRTdHlsZSkpCisgICAgaWYgKE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTo6aXNDYWNoZWFi
bGUoZWxlbWVudCwgc3R5bGUsIHBhcmVudFN0eWxlKSkKICAgICAgICAgbV9tYXRjaGVkRGVjbGFy
YXRpb25zQ2FjaGUuYWRkKHN0eWxlLCBwYXJlbnRTdHlsZSwgY2FjaGVIYXNoLCBtYXRjaFJlc3Vs
dCk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1
ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJiBleHByZXNzaW9uLCBib29sIHJl
c3VsdCkKK3ZvaWQgUmVzb2x2ZXI6OmFkZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3Vs
dChjb25zdCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXN1bHQpCiB7
CiAgICAgbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzLmFwcGVuZChNZWRpYVF1
ZXJ5UmVzdWx0IHsgZXhwcmVzc2lvbiwgcmVzdWx0IH0pOwogfQogCi1ib29sIFN0eWxlUmVzb2x2
ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0Citib29s
IFJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKSBjb25z
dAogewotICAgIExPRyhNZWRpYVF1ZXJpZXMsICJTdHlsZVJlc29sdmVyOjpoYXNNZWRpYVF1ZXJp
ZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UgZXZhbHVhdGluZyBxdWVyaWVzIik7CisgICAgTE9H
KE1lZGlhUXVlcmllcywgIlN0eWxlOjpSZXNvbHZlcjo6aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRC
eVZpZXdwb3J0Q2hhbmdlIGV2YWx1YXRpbmcgcXVlcmllcyIpOwogICAgIGZvciAoYXV0byYgcmVz
dWx0IDogbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzKSB7CiAgICAgICAgIGlm
IChtX21lZGlhUXVlcnlFdmFsdWF0b3IuZXZhbHVhdGUocmVzdWx0LmV4cHJlc3Npb24pICE9IHJl
c3VsdC5yZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxNywxNCArNjE4LDE0
IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeVZpZXdwb3J0
Q2hhbmdlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZl
cjo6YWRkQWNjZXNzaWJpbGl0eVNldHRpbmdzRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdChjb25z
dCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXN1bHQpCit2b2lkIFJl
c29sdmVyOjphZGRBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0
KGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJiBleHByZXNzaW9uLCBib29sIHJlc3VsdCkKIHsK
ICAgICBtX2FjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzLmFw
cGVuZChNZWRpYVF1ZXJ5UmVzdWx0IHsgZXhwcmVzc2lvbiwgcmVzdWx0IH0pOwogfQogCi1ib29s
IFN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlBY2Nlc3NpYmlsaXR5U2V0
dGluZ3NDaGFuZ2UoKSBjb25zdAorYm9vbCBSZXNvbHZlcjo6aGFzTWVkaWFRdWVyaWVzQWZmZWN0
ZWRCeUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZSgpIGNvbnN0CiB7Ci0gICAgTE9HKE1lZGlh
UXVlcmllcywgIlN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlBY2Nlc3Np
YmlsaXR5U2V0dGluZ3NDaGFuZ2UgZXZhbHVhdGluZyBxdWVyaWVzIik7CisgICAgTE9HKE1lZGlh
UXVlcmllcywgIlN0eWxlOjpSZXNvbHZlcjo6aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeUFjY2Vz
c2liaWxpdHlTZXR0aW5nc0NoYW5nZSBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKICAgICBmb3IgKGF1
dG8mIHJlc3VsdCA6IG1fYWNjZXNzaWJpbGl0eVNldHRpbmdzRGVwZW5kZW50TWVkaWFRdWVyeVJl
c3VsdHMpIHsKICAgICAgICAgaWYgKG1fbWVkaWFRdWVyeUV2YWx1YXRvci5ldmFsdWF0ZShyZXN1
bHQuZXhwcmVzc2lvbikgIT0gcmVzdWx0LnJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtNjMyLDE0ICs2MzMsMTQgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNNZWRpYVF1ZXJp
ZXNBZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlKCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkQXBwZWFyYW5jZURlcGVuZGVu
dE1lZGlhUXVlcnlSZXN1bHQoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24mIGV4cHJlc3Npb24s
IGJvb2wgcmVzdWx0KQordm9pZCBSZXNvbHZlcjo6YWRkQXBwZWFyYW5jZURlcGVuZGVudE1lZGlh
UXVlcnlSZXN1bHQoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wg
cmVzdWx0KQogewogICAgIG1fYXBwZWFyYW5jZURlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzLmFw
cGVuZChNZWRpYVF1ZXJ5UmVzdWx0IHsgZXhwcmVzc2lvbiwgcmVzdWx0IH0pOwogfQogCi1ib29s
IFN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlBcHBlYXJhbmNlQ2hhbmdl
KCkgY29uc3QKK2Jvb2wgUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlBcHBlYXJh
bmNlQ2hhbmdlKCkgY29uc3QKIHsKLSAgICBMT0coTWVkaWFRdWVyaWVzLCAiU3R5bGVSZXNvbHZl
cjo6aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeUFwcGVhcmFuY2VDaGFuZ2UgZXZhbHVhdGluZyBx
dWVyaWVzIik7CisgICAgTE9HKE1lZGlhUXVlcmllcywgIlN0eWxlOjpSZXNvbHZlcjo6aGFzTWVk
aWFRdWVyaWVzQWZmZWN0ZWRCeUFwcGVhcmFuY2VDaGFuZ2UgZXZhbHVhdGluZyBxdWVyaWVzIik7
CiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiBtX2FwcGVhcmFuY2VEZXBlbmRlbnRNZWRpYVF1ZXJ5
UmVzdWx0cykgewogICAgICAgICBpZiAobV9tZWRpYVF1ZXJ5RXZhbHVhdG9yLmV2YWx1YXRlKHJl
c3VsdC5leHByZXNzaW9uKSAhPSByZXN1bHQucmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC02NDcsNCArNjQ4LDUgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNNZWRpYVF1ZXJp
ZXNBZmZlY3RlZEJ5QXBwZWFyYW5jZUNoYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCit9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZXIuaApzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggMGUyODI0MGNlZTIuLmUyMjI0NTMzOGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaApAQCAtMzksMzQgKzM5LDE2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsKLWNsYXNzIENT
U0ZvbnRGYWNlOwotY2xhc3MgQ1NTRm9udEZhY2VSdWxlOwotY2xhc3MgQ1NTRm9udFZhbHVlOwot
Y2xhc3MgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTsKLWNsYXNzIENTU0ltYWdlU2V0VmFsdWU7Ci1j
bGFzcyBDU1NJbWFnZVZhbHVlOwotY2xhc3MgQ1NTUGFnZVJ1bGU7Ci1jbGFzcyBDU1NQcmltaXRp
dmVWYWx1ZTsKLWNsYXNzIENTU1Byb3BlcnR5OwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKLWNsYXNz
IENTU1ZhbHVlOwotY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RWxlbWVudDsKLWNsYXNzIEZyYW1lOwotY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgS2V5ZnJhbWVM
aXN0OwogY2xhc3MgS2V5ZnJhbWVWYWx1ZTsKLWNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7Ci1j
bGFzcyBOb2RlOworY2xhc3MgUGFnZVJ1bGVDb2xsZWN0b3I7CiBjbGFzcyBSdWxlRGF0YTsKIGNs
YXNzIFJ1bGVTZXQ7CiBjbGFzcyBTZWxlY3RvckZpbHRlcjsKIGNsYXNzIFNldHRpbmdzOwotY2xh
c3MgU3R5bGVDYWNoZWRJbWFnZTsKLWNsYXNzIFN0eWxlR2VuZXJhdGVkSW1hZ2U7Ci1jbGFzcyBT
dHlsZUltYWdlOwogY2xhc3MgU3R5bGVSdWxlS2V5ZnJhbWU7CiBjbGFzcyBTdHlsZVByb3BlcnRp
ZXM7CiBjbGFzcyBTdHlsZVJ1bGU7CkBAIC03NCwxMCArNTYsNyBAQCBjbGFzcyBTdHlsZVJ1bGVL
ZXlmcmFtZXM7CiBjbGFzcyBTdHlsZVJ1bGVQYWdlOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNz
IFN0eWxlU2hlZXRMaXN0OwotY2xhc3MgU3R5bGVkRWxlbWVudDsKLWNsYXNzIFNWR0VsZW1lbnQ7
CiBjbGFzcyBWaWV3cG9ydFN0eWxlUmVzb2x2ZXI7Ci1zdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zOwogCiAvLyBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcyBpcyB1c2VkIGluIG1lZGlhIHF1ZXJp
ZXMsIHdoZXJlIHJlbGF0aXZlIHVuaXRzCiAvLyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRv
IHRoZSBkb2N1bWVudCByb290IGVsZW1lbnQgc3R5bGUsIGFuZCBzdHlsZWQgb25seQpAQCAtODks
MjIgKzY4LDIzIEBAIGVudW0gY2xhc3MgUnVsZU1hdGNoaW5nQmVoYXZpb3I6IHVpbnQ4X3Qgewog
ICAgIE1hdGNoT25seVVzZXJBZ2VudFJ1bGVzLAogfTsKIAorbmFtZXNwYWNlIFN0eWxlIHsKKwog
c3RydWN0IEVsZW1lbnRTdHlsZSB7Ci0gICAgRWxlbWVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gcmVuZGVyU3R5bGUsIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6UmVsYXRpb25z
PiByZWxhdGlvbnMgPSB7IH0pCisgICAgRWxlbWVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gcmVuZGVyU3R5bGUsIHN0ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+IHJlbGF0aW9u
cyA9IHsgfSkKICAgICAgICAgOiByZW5kZXJTdHlsZShXVEZNb3ZlKHJlbmRlclN0eWxlKSkKICAg
ICAgICAgLCByZWxhdGlvbnMoV1RGTW92ZShyZWxhdGlvbnMpKQogICAgIHsgfQogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZW5kZXJTdHlsZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3R5bGU6OlJlbGF0aW9ucz4gcmVsYXRpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWxh
dGlvbnM+IHJlbGF0aW9uczsKIH07CiAKLS8vIFRoaXMgY2xhc3Mgc2VsZWN0cyBhIFJlbmRlclN0
eWxlIGZvciBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24gYSBjb2xsZWN0aW9uIG9mIHN0eWxlc2hl
ZXRzLgotY2xhc3MgU3R5bGVSZXNvbHZlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3R5
bGVSZXNvbHZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3MgUmVzb2x2ZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlc29sdmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgU3R5bGVSZXNvbHZlcihEb2N1bWVudCYpOwotICAgIH5TdHlsZVJl
c29sdmVyKCk7CisgICAgUmVzb2x2ZXIoRG9jdW1lbnQmKTsKKyAgICB+UmVzb2x2ZXIoKTsKIAog
ICAgIEVsZW1lbnRTdHlsZSBzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxl
ID0gbnVsbHB0ciwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgPSBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6
TWF0Y2hBbGxSdWxlcywgY29uc3QgU2VsZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7CiAKQEAgLTE3
NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVj
dG9yQ1NTT01XcmFwcGVycygpIHsgcmV0dXJuIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVyczsgfQog
CiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBQYWdlUnVsZUNvbGxlY3RvcjsKKyAgICBmcmll
bmQgY2xhc3MgV2ViQ29yZTo6UGFnZVJ1bGVDb2xsZWN0b3I7CiAKICAgICBjbGFzcyBTdGF0ZSB7
CiAgICAgcHVibGljOgpAQCAtMjA2LDcgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV91c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGU7CiAgICAg
fTsKIAotICAgIFN0eWxlOjpCdWlsZGVyQ29udGV4dCBidWlsZGVyQ29udGV4dChjb25zdCBTdGF0
ZSYpOworICAgIEJ1aWxkZXJDb250ZXh0IGJ1aWxkZXJDb250ZXh0KGNvbnN0IFN0YXRlJik7CiAK
ICAgICBlbnVtIGNsYXNzIFVzZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSB7IFllcywgTm8gfTsK
ICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoU3RhdGUmLCBjb25zdCBNYXRjaFJlc3Vs
dCYsIFVzZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSA9IFVzZU1hdGNoZWREZWNsYXJhdGlvbnND
YWNoZTo6WWVzKTsKQEAgLTIzMywxNCArMjEzLDE0IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0
b3JDU1NPTVdyYXBwZXJzIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVyczsKIAotICAgIFN0eWxlOjpN
YXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU7CisgICAg
TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlIG1fbWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOwogCiAg
ICAgYm9vbCBtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyB7IHRydWUgfTsKLSAgICAvLyBTZWUg
aWYgd2Ugc3RpbGwgaGF2ZSBjcmFzaGVzIHdoZXJlIFN0eWxlUmVzb2x2ZXIgZ2V0cyBkZWxldGVk
IGVhcmx5LgorICAgIC8vIFNlZSBpZiB3ZSBzdGlsbCBoYXZlIGNyYXNoZXMgd2hlcmUgUmVzb2x2
ZXIgZ2V0cyBkZWxldGVkIGVhcmx5LgogICAgIGJvb2wgbV9pc0RlbGV0ZWQgeyBmYWxzZSB9Owog
fTsKIAotaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUo
Y29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyAmYXR0cmlidXRlTmFtZSkg
Y29uc3QKK2lubGluZSBib29sIFJlc29sdmVyOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25z
dCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25z
dAogewogICAgIEFTU0VSVCghYXR0cmlidXRlTmFtZS5pc0VtcHR5KCkpOwogICAgIGlmIChlbGVt
ZW50LmlzSFRNTEVsZW1lbnQoKSkKQEAgLTI0OCwxMCArMjI4LDExIEBAIGlubGluZSBib29sIFN0
eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0CiAgICAgcmV0dXJuIG1fcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVMb2Nh
bE5hbWVzSW5SdWxlcy5jb250YWlucyhhdHRyaWJ1dGVOYW1lKTsKIH0KIAotaW5saW5lIGJvb2wg
U3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9tU3RyaW5nJiBpZFZhbHVl
KSBjb25zdAoraW5saW5lIGJvb2wgUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9ySWQoY29uc3QgQXRv
bVN0cmluZyYgaWRWYWx1ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlkVmFsdWUuaXNFbXB0eSgp
KTsKICAgICByZXR1cm4gbV9ydWxlU2V0cy5mZWF0dXJlcygpLmlkc0luUnVsZXMuY29udGFpbnMo
aWRWYWx1ZSk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFN0eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCmluZGV4IGRjYjY1YmMwOWMzLi4zYzlm
ZDg4YTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgYm9vbCBTY29wZTo6c2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVz
b2x2ZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHlsZVJlc29sdmVyJiBTY29w
ZTo6cmVzb2x2ZXIoKQorUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCiB7CiAgICAgaWYgKHNo
b3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkpCiAgICAgICAg
IHJldHVybiBtX2RvY3VtZW50LnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCk7CkBA
IC05Niw3ICs5Niw3IEBAIFN0eWxlUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCiAgICAgaWYg
KCFtX3Jlc29sdmVyKSB7CiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHls
ZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciwgdHJ1ZSB9OwogCi0gICAgICAg
IG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOworICAg
ICAgICBtX3Jlc29sdmVyID0gbWFrZVVuaXF1ZTxSZXNvbHZlcj4obV9kb2N1bWVudCk7CiAKICAg
ICAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNl
bGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgU3R5bGVSZXNvbHZl
ciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICByZXR1cm4gKm1fcmVzb2x2ZXI7CiB9CiAKLVN0eWxl
UmVzb2x2ZXIqIFNjb3BlOjpyZXNvbHZlcklmRXhpc3RzKCkKK1Jlc29sdmVyKiBTY29wZTo6cmVz
b2x2ZXJJZkV4aXN0cygpCiB7CiAgICAgaWYgKHNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRv
d1RyZWVTdHlsZVJlc29sdmVyKCkpCiAgICAgICAgIHJldHVybiAmbV9kb2N1bWVudC51c2VyQWdl
bnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpOwpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgU2Nv
cGU6OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYg
c2hlZXRzKQogICAgIH0KIH0KIAotU2NvcGU6OlN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIFNjb3Bl
OjphbmFseXplU3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+PiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKQorU2Nv
cGU6OlJlc29sdmVyVXBkYXRlVHlwZSBTY29wZTo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoY29u
c3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIG5ld1N0eWxlc2hlZXRzLCBib29sJiBy
ZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykKIHsKICAgICByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyA9
IHRydWU7CiAgICAgCkBAIC00MTUsMTcgKzQxNSwxNyBAQCBTY29wZTo6U3R5bGVSZXNvbHZlclVw
ZGF0ZVR5cGUgU2NvcGU6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFZlY3RvcjxSZWZQ
dAogICAgICAgICBhZGRlZFNoZWV0cy5hcHBlbmQoJm5ld1N0eWxlc2hlZXRzW25ld0luZGV4XS0+
Y29udGVudHMoKSk7CiAgICAgICAgICsrbmV3SW5kZXg7CiAgICAgfQotICAgIC8vIElmIGFsbCBu
ZXcgc2hlZXRzIHdlcmUgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCB3ZSBjYW4ganVzdCBh
ZGQgdGhlbSB0byBleGlzdGluZyBTdHlsZVJlc29sdmVyLgorICAgIC8vIElmIGFsbCBuZXcgc2hl
ZXRzIHdlcmUgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCB3ZSBjYW4ganVzdCBhZGQgdGhl
bSB0byBleGlzdGluZyBSZXNvbHZlci4KICAgICAvLyBJZiB0aGVyZSB3ZXJlIGluc2VydGlvbnMg
d2UgbmVlZCB0byByZS1hZGQgYWxsIHRoZSBzdHlsZXNoZWV0cyBzbyBydWxlcyBhcmUgb3JkZXJl
ZCBjb3JyZWN0bHkuCi0gICAgYXV0byBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9IGhhc0luc2Vy
dGlvbnMgPyBSZXNldCA6IEFkZGl0aXZlOworICAgIGF1dG8gUmVzb2x2ZXJVcGRhdGVUeXBlID0g
aGFzSW5zZXJ0aW9ucyA/IFJlc2V0IDogQWRkaXRpdmU7CiAKICAgICAvLyBJZiB3ZSBhcmUgYWxy
ZWFkeSBwYXJzaW5nIHRoZSBib2R5IGFuZCBzbyBtYXkgaGF2ZSBzaWduaWZpY2FudCBhbW91bnQg
b2YgZWxlbWVudHMsIHB1dCBzb21lIGVmZm9ydCBpbnRvIHRyeWluZyB0byBhdm9pZCBzdHlsZSBy
ZWNhbGNzLgogICAgIGlmICghbV9kb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpIHx8IG1fZG9jdW1l
bnQuaGFzTm9kZXNXaXRoTm9uRmluYWxTdHlsZSgpIHx8IG1fZG9jdW1lbnQuaGFzTm9kZXNXaXRo
TWlzc2luZ1N0eWxlKCkpCi0gICAgICAgIHJldHVybiBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZTsK
KyAgICAgICAgcmV0dXJuIFJlc29sdmVyVXBkYXRlVHlwZTsKIAogICAgIEludmFsaWRhdG9yIGlu
dmFsaWRhdG9yKGFkZGVkU2hlZXRzLCBzdHlsZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3Io
KSk7CiAgICAgaWYgKGludmFsaWRhdG9yLmRpcnRpZXNBbGxTdHlsZSgpKQotICAgICAgICByZXR1
cm4gc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGU7CisgICAgICAgIHJldHVybiBSZXNvbHZlclVwZGF0
ZVR5cGU7CiAKICAgICBpZiAobV9zaGFkb3dSb290KQogICAgICAgICBpbnZhbGlkYXRvci5pbnZh
bGlkYXRlU3R5bGUoKm1fc2hhZG93Um9vdCk7CkBAIC00MzQsNyArNDM0LDcgQEAgU2NvcGU6OlN0
eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIFNjb3BlOjphbmFseXplU3R5bGVTaGVldENoYW5nZShjb25z
dCBWZWN0b3I8UmVmUHQKIAogICAgIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjID0gZmFsc2U7CiAK
LSAgICByZXR1cm4gc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGU7CisgICAgcmV0dXJuIFJlc29sdmVy
VXBkYXRlVHlwZTsKIH0KIAogc3RhdGljIHZvaWQgZmlsdGVyRW5hYmxlZE5vbmVtcHR5Q1NTU3R5
bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHJlc3VsdCwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4mIHNoZWV0cykKQEAgLTQ1Myw3ICs0NTMsNyBAQCBzdGF0
aWMgdm9pZCBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgcgogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgaW52YWxpZGF0ZUhv
c3RBbmRTbG90dGVkU3R5bGVJZk5lZWRlZChTaGFkb3dSb290JiBzaGFkb3dSb290LCBTdHlsZVJl
c29sdmVyJiByZXNvbHZlcikKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVIb3N0QW5kU2xvdHRlZFN0
eWxlSWZOZWVkZWQoU2hhZG93Um9vdCYgc2hhZG93Um9vdCwgUmVzb2x2ZXImIHJlc29sdmVyKQog
ewogICAgIGF1dG8mIGhvc3QgPSAqc2hhZG93Um9vdC5ob3N0KCk7CiAgICAgaWYgKCFyZXNvbHZl
ci5ydWxlU2V0cygpLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5
KCkpCkBAIC00OTAsMTEgKzQ5MCwxMSBAQCB2b2lkIFNjb3BlOjp1cGRhdGVBY3RpdmVTdHlsZVNo
ZWV0cyhVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiAgICAgZmlsdGVyRW5hYmxlZE5vbmVtcHR5Q1NT
U3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAog
ICAgIGJvb2wgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSB0cnVlOwotICAgIFN0eWxlUmVzb2x2
ZXJVcGRhdGVUeXBlIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID0gUmVjb25zdHJ1Y3Q7CisgICAg
UmVzb2x2ZXJVcGRhdGVUeXBlIFJlc29sdmVyVXBkYXRlVHlwZSA9IFJlY29uc3RydWN0OwogICAg
IGlmICh1cGRhdGVUeXBlID09IFVwZGF0ZVR5cGU6OkFjdGl2ZVNldCkKLSAgICAgICAgc3R5bGVS
ZXNvbHZlclVwZGF0ZVR5cGUgPSBhbmFseXplU3R5bGVTaGVldENoYW5nZShhY3RpdmVDU1NTdHls
ZVNoZWV0cywgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOworICAgICAgICBSZXNvbHZlclVwZGF0
ZVR5cGUgPSBhbmFseXplU3R5bGVTaGVldENoYW5nZShhY3RpdmVDU1NTdHlsZVNoZWV0cywgcmVx
dWlyZXNGdWxsU3R5bGVSZWNhbGMpOwogCi0gICAgdXBkYXRlU3R5bGVSZXNvbHZlcihhY3RpdmVD
U1NTdHlsZVNoZWV0cywgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUpOworICAgIHVwZGF0ZVJlc29s
dmVyKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBSZXNvbHZlclVwZGF0ZVR5cGUpOwogCiAgICAgbV93
ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwID0gbnVsbHB0cjsKICAg
ICBtX2FjdGl2ZVN0eWxlU2hlZXRzLnN3YXAoYWN0aXZlQ1NTU3R5bGVTaGVldHMpOwpAQCAtNTE4
LDcgKzUxOCw3IEBAIHZvaWQgU2NvcGU6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZVR5
cGUgdXBkYXRlVHlwZSkKICAgICB9CiB9CiAKLXZvaWQgU2NvcGU6OnVwZGF0ZVN0eWxlUmVzb2x2
ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIGFjdGl2ZVN0eWxlU2hlZXRzLCBTdHls
ZVJlc29sdmVyVXBkYXRlVHlwZSB1cGRhdGVUeXBlKQordm9pZCBTY29wZTo6dXBkYXRlUmVzb2x2
ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIGFjdGl2ZVN0eWxlU2hlZXRzLCBSZXNv
bHZlclVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKIHsKICAgICBpZiAodXBkYXRlVHlwZSA9PSBSZWNv
bnN0cnVjdCkgewogICAgICAgICBjbGVhclJlc29sdmVyKCk7CkBAIC02MDMsNyArNjAzLDcgQEAg
dm9pZCBTY29wZTo6c2NoZWR1bGVVcGRhdGUoVXBkYXRlVHlwZSB1cGRhdGUpCiAgICAgICAgICAg
ICBpbnZhbGlkYXRlSG9zdEFuZFNsb3R0ZWRTdHlsZUlmTmVlZGVkKCptX3NoYWRvd1Jvb3QsICpt
X3Jlc29sdmVyKTsKICAgICAgICAgLy8gRklYTUU6IEFuaW1hdGlvbiBjb2RlIG1heSB0cmlnZ2Vy
IHJlc291cmNlIGxvYWQgaW4gbWlkZGxlIG9mIHN0eWxlIHJlY2FsYyBhbmQgdGhhdCBjYW4gYWRk
IGEgcnVsZSB0byBhIGNvbnRlbnQgZXh0ZW5zaW9uIHN0eWxlc2hlZXQuCiAgICAgICAgIC8vICAg
ICAgICBGaXggYW5kIHJlbW92ZSBpc1Jlc29sdmluZ1RyZWVTdHlsZSgpIHRlc3QgYmVsb3csIHNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MzM1Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGUgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB0ZXN0IGlzIGhlcmUgYmVj
YXVzZSBleHRlbnNpb24gc3R5bGVzaGVldHMgY2FuIGdldCB1cyBoZXJlIGZyb20gU3R5bGVSZXNv
bHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMuCisgICAgICAgIC8vIEZJWE1FOiBUaGUgbV9p
c1VwZGF0aW5nU3R5bGVSZXNvbHZlciB0ZXN0IGlzIGhlcmUgYmVjYXVzZSBleHRlbnNpb24gc3R5
bGVzaGVldHMgY2FuIGdldCB1cyBoZXJlIGZyb20gUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxl
U2hlZXRzLgogICAgICAgICBpZiAoIW1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgJiYgIW1fZG9j
dW1lbnQuaXNSZXNvbHZpbmdUcmVlU3R5bGUoKSkKICAgICAgICAgICAgIGNsZWFyUmVzb2x2ZXIo
KTsKICAgICB9CkBAIC02MjEsMjEgKzYyMSwyMSBAQCB2b2lkIFNjb3BlOjpzY2hlZHVsZVVwZGF0
ZShVcGRhdGVUeXBlIHVwZGF0ZSkKIAogdm9pZCBTY29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNG
b3JWaWV3cG9ydENoYW5nZSgpCiB7Ci0gICAgZXZhbHVhdGVNZWRpYVF1ZXJpZXMoW10gKFN0eWxl
UmVzb2x2ZXImIHJlc29sdmVyKSB7CisgICAgZXZhbHVhdGVNZWRpYVF1ZXJpZXMoW10gKFJlc29s
dmVyJiByZXNvbHZlcikgewogICAgICAgICByZXR1cm4gcmVzb2x2ZXIuaGFzTWVkaWFRdWVyaWVz
QWZmZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlKCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU2NvcGU6OmV2
YWx1YXRlTWVkaWFRdWVyaWVzRm9yQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlKCkKIHsKLSAg
ICBldmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIpIHsKKyAg
ICBldmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoUmVzb2x2ZXImIHJlc29sdmVyKSB7CiAgICAgICAg
IHJldHVybiByZXNvbHZlci5oYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNl
dHRpbmdzQ2hhbmdlKCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU2NvcGU6OmV2YWx1YXRlTWVkaWFR
dWVyaWVzRm9yQXBwZWFyYW5jZUNoYW5nZSgpCiB7Ci0gICAgZXZhbHVhdGVNZWRpYVF1ZXJpZXMo
W10gKFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyKSB7CisgICAgZXZhbHVhdGVNZWRpYVF1ZXJpZXMo
W10gKFJlc29sdmVyJiByZXNvbHZlcikgewogICAgICAgICByZXR1cm4gcmVzb2x2ZXIuaGFzTWVk
aWFRdWVyaWVzQWZmZWN0ZWRCeUFwcGVhcmFuY2VDaGFuZ2UoKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlU2NvcGUuaAppbmRleCBhNzAyZjczOTQyMy4uZWQxNGI1YjZjN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgTm9kZTsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjsKLWNsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVT
aGVldENvbnRlbnRzOwogY2xhc3MgU3R5bGVTaGVldExpc3Q7CkBAIC01Miw2ICs1MSw4IEBAIGNs
YXNzIFRyZWVTY29wZTsKIAogbmFtZXNwYWNlIFN0eWxlIHsKIAorY2xhc3MgUmVzb2x2ZXI7CisK
IC8vIFRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSBzdHlsZSBzY29wZXMgdGhhdCBjYW4gYWZmZWN0
IGFuIGVsZW1lbnQuCiAvLyBTY29wZXMgYXJlIGluIHRyZWUtb2YtdHJlZXMgb3JkZXIuIFN0eWxl
cyBmcm9tIGVhcmxpZXIgc2NvcGVzIHdpbiBvdmVyIGxhdGVyIG9uZXMgKG1vZHVsbyAhaW1wb3J0
YW50KS4KIGVudW0gY2xhc3MgU2NvcGVPcmRpbmFsIDogaW50IHsKQEAgLTExNCw4ICsxMTUsOCBA
QCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+PiBjb2xsZWN0
WFNMVHJhbnNmb3JtcygpOwogI2VuZGlmCiAKLSAgICBTdHlsZVJlc29sdmVyJiByZXNvbHZlcigp
OwotICAgIFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVySWZFeGlzdHMoKTsKKyAgICBSZXNvbHZlciYg
cmVzb2x2ZXIoKTsKKyAgICBSZXNvbHZlciogcmVzb2x2ZXJJZkV4aXN0cygpOwogICAgIHZvaWQg
Y2xlYXJSZXNvbHZlcigpOwogICAgIHZvaWQgcmVsZWFzZU1lbW9yeSgpOwogCkBAIC0xNDAsMTMg
KzE0MSwxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMo
VmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4mKTsKIAotICAgIGVudW0gU3R5bGVSZXNvbHZlclVw
ZGF0ZVR5cGUgeworICAgIGVudW0gUmVzb2x2ZXJVcGRhdGVUeXBlIHsKICAgICAgICAgUmVjb25z
dHJ1Y3QsCiAgICAgICAgIFJlc2V0LAogICAgICAgICBBZGRpdGl2ZQogICAgIH07Ci0gICAgU3R5
bGVSZXNvbHZlclVwZGF0ZVR5cGUgYW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoY29uc3QgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIG5ld1N0eWxlc2hlZXRzLCBib29sJiByZXF1aXJlc0Z1
bGxTdHlsZVJlY2FsYyk7Ci0gICAgdm9pZCB1cGRhdGVTdHlsZVJlc29sdmVyKFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4+JiwgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUpOworICAgIFJlc29s
dmVyVXBkYXRlVHlwZSBhbmFseXplU3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxl
UmVjYWxjKTsKKyAgICB2b2lkIHVwZGF0ZVJlc29sdmVyKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4+JiwgUmVzb2x2ZXJVcGRhdGVUeXBlKTsKIAogICAgIHZvaWQgcGVuZGluZ1VwZGF0ZVRp
bWVyRmlyZWQoKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwpAQCAtMTU0LDcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgU2hhZG93Um9v
dCogbV9zaGFkb3dSb290IHsgbnVsbHB0ciB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFN0eWxl
UmVzb2x2ZXI+IG1fcmVzb2x2ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlc29sdmVyPiBtX3Jl
c29sdmVyOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4gbV9zdHlsZVNoZWV0c0Zv
clN0eWxlU2hlZXRMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fYWN0
aXZlU3R5bGVTaGVldHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNo
YXJpbmdSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNv
bHZlci5jcHAKaW5kZXggYzc4MzM3MzA4YWEuLjYyMmM1NTkzNTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCkBAIC02OSw3ICs2OSw2IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBwYXJlbnRFbGVtZW50UHJldmVudHNTaGFyaW5nKGNvbnN0IEVsZW1l
bnQmIHBhcmVudEVsZW1lbnQpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBlbGVtZW50SGFzRGlyZWN0
aW9uQXV0byhjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIC8vIEZJWE1FOiBUaGlzIGxp
bmUgaXMgc3VycHJpc2luZ2x5IGhvdCwgd2UgbWF5IHdpc2ggdG8gaW5saW5lIGhhc0RpcmVjdGlv
bkF1dG8gaW50byBTdHlsZVJlc29sdmVyLgogICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4oZWxl
bWVudCkgJiYgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpLmhhc0RpcmVjdGlvbkF1dG8o
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4
IDQxZTlmNDQ3MDg1Li4zZjU1NDBkYThmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcApAQCAtNjYsMjcgKzY2LDI3IEBAIFRyZWVSZXNvbHZlcjo6VHJlZVJl
c29sdmVyKERvY3VtZW50JiBkb2N1bWVudCkKIFRyZWVSZXNvbHZlcjo6flRyZWVSZXNvbHZlcigp
ID0gZGVmYXVsdDsKIAogVHJlZVJlc29sdmVyOjpTY29wZTo6U2NvcGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQotICAgIDogc3R5bGVSZXNvbHZlcihkb2N1bWVudC5zdHlsZVNjb3BlKCkucmVzb2x2ZXIo
KSkKLSAgICAsIHNoYXJpbmdSZXNvbHZlcihkb2N1bWVudCwgc3R5bGVSZXNvbHZlci5ydWxlU2V0
cygpLCBzZWxlY3RvckZpbHRlcikKKyAgICA6IHJlc29sdmVyKGRvY3VtZW50LnN0eWxlU2NvcGUo
KS5yZXNvbHZlcigpKQorICAgICwgc2hhcmluZ1Jlc29sdmVyKGRvY3VtZW50LCByZXNvbHZlci5y
dWxlU2V0cygpLCBzZWxlY3RvckZpbHRlcikKIHsKICAgICBkb2N1bWVudC5zZXRJc1Jlc29sdmlu
Z1RyZWVTdHlsZSh0cnVlKTsKIH0KIAogVHJlZVJlc29sdmVyOjpTY29wZTo6U2NvcGUoU2hhZG93
Um9vdCYgc2hhZG93Um9vdCwgU2NvcGUmIGVuY2xvc2luZ1Njb3BlKQotICAgIDogc3R5bGVSZXNv
bHZlcihzaGFkb3dSb290LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpKQotICAgICwgc2hhcmluZ1Jl
c29sdmVyKHNoYWRvd1Jvb3QuZG9jdW1lbnRTY29wZSgpLCBzdHlsZVJlc29sdmVyLnJ1bGVTZXRz
KCksIHNlbGVjdG9yRmlsdGVyKQorICAgIDogcmVzb2x2ZXIoc2hhZG93Um9vdC5zdHlsZVNjb3Bl
KCkucmVzb2x2ZXIoKSkKKyAgICAsIHNoYXJpbmdSZXNvbHZlcihzaGFkb3dSb290LmRvY3VtZW50
U2NvcGUoKSwgcmVzb2x2ZXIucnVsZVNldHMoKSwgc2VsZWN0b3JGaWx0ZXIpCiAgICAgLCBzaGFk
b3dSb290KCZzaGFkb3dSb290KQogICAgICwgZW5jbG9zaW5nU2NvcGUoJmVuY2xvc2luZ1Njb3Bl
KQogewotICAgIHN0eWxlUmVzb2x2ZXIuc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShl
bmNsb3NpbmdTY29wZS5zdHlsZVJlc29sdmVyLm92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUo
KSk7CisgICAgcmVzb2x2ZXIuc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShlbmNsb3Np
bmdTY29wZS5yZXNvbHZlci5vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKCkpOwogfQogCiBU
cmVlUmVzb2x2ZXI6OlNjb3BlOjp+U2NvcGUoKQogewogICAgIGlmICghc2hhZG93Um9vdCkKLSAg
ICAgICAgc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLnNldElzUmVzb2x2aW5nVHJlZVN0eWxlKGZh
bHNlKTsKKyAgICAgICAgcmVzb2x2ZXIuZG9jdW1lbnQoKS5zZXRJc1Jlc29sdmluZ1RyZWVTdHls
ZShmYWxzZSk7CiAKLSAgICBzdHlsZVJlc29sdmVyLnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50
U3R5bGUobnVsbHB0cik7CisgICAgcmVzb2x2ZXIuc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRT
dHlsZShudWxscHRyKTsKIH0KIAogVHJlZVJlc29sdmVyOjpQYXJlbnQ6OlBhcmVudChEb2N1bWVu
dCYgZG9jdW1lbnQpCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb24K
ICAgICBpZiAoYXV0byBzdHlsZSA9IHNjb3BlKCkuc2hhcmluZ1Jlc29sdmVyLnJlc29sdmUoZWxl
bWVudCwgKm1fdXBkYXRlKSkKICAgICAgICAgcmV0dXJuIHN0eWxlOwogCi0gICAgYXV0byBlbGVt
ZW50U3R5bGUgPSBzY29wZSgpLnN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JFbGVtZW50KGVsZW1lbnQs
ICZpbmhlcml0ZWRTdHlsZSwgcGFyZW50Qm94U3R5bGUoKSwgUnVsZU1hdGNoaW5nQmVoYXZpb3I6
Ok1hdGNoQWxsUnVsZXMsICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKKyAgICBhdXRvIGVsZW1l
bnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXIuc3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsICZpbmhl
cml0ZWRTdHlsZSwgcGFyZW50Qm94U3R5bGUoKSwgUnVsZU1hdGNoaW5nQmVoYXZpb3I6Ok1hdGNo
QWxsUnVsZXMsICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKIAogICAgIGlmIChlbGVtZW50U3R5
bGUucmVsYXRpb25zKQogICAgICAgICBjb21taXRSZWxhdGlvbnMoV1RGTW92ZShlbGVtZW50U3R5
bGUucmVsYXRpb25zKSwgKm1fdXBkYXRlKTsKQEAgLTIxMiwxMiArMjEyLDEyIEBAIEVsZW1lbnRV
cGRhdGVzIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAog
ICAgIGlmICgmZWxlbWVudCA9PSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKSB7CiAgICAg
ICAgIG1fZG9jdW1lbnRFbGVtZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0
ZS5zdHlsZSk7Ci0gICAgICAgIHNjb3BlKCkuc3R5bGVSZXNvbHZlci5zZXRPdmVycmlkZURvY3Vt
ZW50RWxlbWVudFN0eWxlKG1fZG9jdW1lbnRFbGVtZW50U3R5bGUuZ2V0KCkpOworICAgICAgICBz
Y29wZSgpLnJlc29sdmVyLnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUobV9kb2N1bWVu
dEVsZW1lbnRTdHlsZS5nZXQoKSk7CiAKICAgICAgICAgaWYgKHVwZGF0ZS5jaGFuZ2UgIT0gTm9D
aGFuZ2UgJiYgZXhpc3RpbmdTdHlsZSAmJiBleGlzdGluZ1N0eWxlLT5jb21wdXRlZEZvbnRQaXhl
bFNpemUoKSAhPSB1cGRhdGUuc3R5bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKSB7CiAgICAg
ICAgICAgICAvLyAicmVtIiB1bml0cyBhcmUgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50IGVsZW1l
bnQncyBmb250IHNpemUgc28gd2UgbmVlZCB0byByZWNvbXB1dGUgZXZlcnl0aGluZy4KICAgICAg
ICAgICAgIC8vIEluIHByYWN0aWNlIHRoaXMgaXMgcmFyZS4KLSAgICAgICAgICAgIHNjb3BlKCku
c3R5bGVSZXNvbHZlci5pbnZhbGlkYXRlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlKCk7CisgICAg
ICAgICAgICBzY29wZSgpLnJlc29sdmVyLmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2Fj
aGUoKTsKICAgICAgICAgICAgIGRlc2NlbmRhbnRzVG9SZXNvbHZlID0gRGVzY2VuZGFudHNUb1Jl
c29sdmU6OkFsbDsKICAgICAgICAgfQogICAgIH0KQEAgLTI1NCw3ICsyNTQsNyBAQCBFbGVtZW50
VXBkYXRlIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IEVsZW1lbnRVcAogICAgIGlmICghZWxlbWVudFVwZGF0ZS5zdHlsZS0+aGFzUHNldWRv
U3R5bGUocHNldWRvSWQpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBwc2V1ZG9T
dHlsZSA9IHNjb3BlKCkuc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVu
dCwgeyBwc2V1ZG9JZCB9LCAqZWxlbWVudFVwZGF0ZS5zdHlsZSwgcGFyZW50Qm94U3R5bGVGb3JQ
c2V1ZG8oZWxlbWVudFVwZGF0ZSksICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKKyAgICBhdXRv
IHBzZXVkb1N0eWxlID0gc2NvcGUoKS5yZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxl
bWVudCwgeyBwc2V1ZG9JZCB9LCAqZWxlbWVudFVwZGF0ZS5zdHlsZSwgcGFyZW50Qm94U3R5bGVG
b3JQc2V1ZG8oZWxlbWVudFVwZGF0ZSksICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKICAgICBp
ZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtNTY1LDEzICs1NjUsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlKCkKICAgICBtX3BhcmVudFN0YWNrLmFwcGVu
ZChQYXJlbnQobV9kb2N1bWVudCkpOwogCiAgICAgLy8gUHNldWRvIGVsZW1lbnQgcmVtb3ZhbCBh
bmQgc2ltaWxhciBtYXkgb25seSB3b3JrIHdpdGggdGhlc2UgZmxhZ3Mgc3RpbGwgc2V0LiBSZXNl
dCB0aGVtIGFmdGVyIHRoZSBzdHlsZSByZWNhbGMuCi0gICAgcmVuZGVyVmlldy5zZXRVc2VzRmly
c3RMaW5lUnVsZXMocmVuZGVyVmlldy51c2VzRmlyc3RMaW5lUnVsZXMoKSB8fCBzY29wZSgpLnN0
eWxlUmVzb2x2ZXIudXNlc0ZpcnN0TGluZVJ1bGVzKCkpOwotICAgIHJlbmRlclZpZXcuc2V0VXNl
c0ZpcnN0TGV0dGVyUnVsZXMocmVuZGVyVmlldy51c2VzRmlyc3RMZXR0ZXJSdWxlcygpIHx8IHNj
b3BlKCkuc3R5bGVSZXNvbHZlci51c2VzRmlyc3RMZXR0ZXJSdWxlcygpKTsKKyAgICByZW5kZXJW
aWV3LnNldFVzZXNGaXJzdExpbmVSdWxlcyhyZW5kZXJWaWV3LnVzZXNGaXJzdExpbmVSdWxlcygp
IHx8IHNjb3BlKCkucmVzb2x2ZXIudXNlc0ZpcnN0TGluZVJ1bGVzKCkpOworICAgIHJlbmRlclZp
ZXcuc2V0VXNlc0ZpcnN0TGV0dGVyUnVsZXMocmVuZGVyVmlldy51c2VzRmlyc3RMZXR0ZXJSdWxl
cygpIHx8IHNjb3BlKCkucmVzb2x2ZXIudXNlc0ZpcnN0TGV0dGVyUnVsZXMoKSk7CiAKICAgICBy
ZXNvbHZlQ29tcG9zZWRUcmVlKCk7CiAKLSAgICByZW5kZXJWaWV3LnNldFVzZXNGaXJzdExpbmVS
dWxlcyhzY29wZSgpLnN0eWxlUmVzb2x2ZXIudXNlc0ZpcnN0TGluZVJ1bGVzKCkpOwotICAgIHJl
bmRlclZpZXcuc2V0VXNlc0ZpcnN0TGV0dGVyUnVsZXMoc2NvcGUoKS5zdHlsZVJlc29sdmVyLnVz
ZXNGaXJzdExldHRlclJ1bGVzKCkpOworICAgIHJlbmRlclZpZXcuc2V0VXNlc0ZpcnN0TGluZVJ1
bGVzKHNjb3BlKCkucmVzb2x2ZXIudXNlc0ZpcnN0TGluZVJ1bGVzKCkpOworICAgIHJlbmRlclZp
ZXcuc2V0VXNlc0ZpcnN0TGV0dGVyUnVsZXMoc2NvcGUoKS5yZXNvbHZlci51c2VzRmlyc3RMZXR0
ZXJSdWxlcygpKTsKIAogICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpID09IDEpOwogICAg
IEFTU0VSVChtX3BhcmVudFN0YWNrLnNpemUoKSA9PSAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5oCmluZGV4IGQ5NDYxMDBiZjE5Li43YjIyYjEwYzIxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCkBAIC00MCwxMCArNDAsMTEgQEAg
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFNo
YWRvd1Jvb3Q7Ci1jbGFzcyBTdHlsZVJlc29sdmVyOwogCiBuYW1lc3BhY2UgU3R5bGUgewogCitj
bGFzcyBSZXNvbHZlcjsKKwogY2xhc3MgVHJlZVJlc29sdmVyIHsKIHB1YmxpYzoKICAgICBUcmVl
UmVzb2x2ZXIoRG9jdW1lbnQmKTsKQEAgLTYyLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBFbGVt
ZW50VXBkYXRlIHJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiwgY29uc3QgRWxlbWVudFVwZGF0
ZSYsIFBzZXVkb0lkKTsKIAogICAgIHN0cnVjdCBTY29wZSA6IFJlZkNvdW50ZWQ8U2NvcGU+IHsK
LSAgICAgICAgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcjsKKyAgICAgICAgUmVzb2x2ZXIm
IHJlc29sdmVyOwogICAgICAgICBTZWxlY3RvckZpbHRlciBzZWxlY3RvckZpbHRlcjsKICAgICAg
ICAgU2hhcmluZ1Jlc29sdmVyIHNoYXJpbmdSZXNvbHZlcjsKICAgICAgICAgU2hhZG93Um9vdCog
c2hhZG93Um9vdCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA4
N2ZkNWRhYWY5NC4uZTRiZGVkNmQzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAg
LTU5MywxMSArNTkzLDExIEBAIHZvaWQgU1ZHRWxlbWVudDo6YW5pbWF0b3JXaWxsQmVEZWxldGVk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgcHJvcGVydHlBbmltYXRv
ckZhY3RvcnkoKS5hbmltYXRvcldpbGxCZURlbGV0ZWQoYXR0cmlidXRlTmFtZSk7CiB9CiAKLU9w
dGlvbmFsPEVsZW1lbnRTdHlsZT4gU1ZHRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqKQorT3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gU1ZHRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqKQogewogICAgIC8v
IElmIHRoZSBlbGVtZW50IGlzIGluIGEgPHVzZT4gdHJlZSB3ZSBnZXQgdGhlIHN0eWxlIGZyb20g
dGhlIGRlZmluaXRpb24gdHJlZS4KICAgICBpZiAoYXV0byBzdHlsZUVsZW1lbnQgPSBtYWtlUmVm
UHRyKHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpKSB7Ci0gICAgICAgIE9wdGlvbmFsPEVs
ZW1lbnRTdHlsZT4gc3R5bGUgPSBzdHlsZUVsZW1lbnQtPnJlc29sdmVTdHlsZSgmcGFyZW50U3R5
bGUpOworICAgICAgICBhdXRvIHN0eWxlID0gc3R5bGVFbGVtZW50LT5yZXNvbHZlU3R5bGUoJnBh
cmVudFN0eWxlKTsKICAgICAgICAgU3R5bGU6OkFkanVzdGVyOjphZGp1c3RTVkdFbGVtZW50U3R5
bGUoKnN0eWxlLT5yZW5kZXJTdHlsZSwgKnRoaXMpOwogICAgICAgICByZXR1cm4gc3R5bGU7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggODRhYmEyMjljNzUuLjk4ZmNmZmJjYTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXRDb3JyZXNwb25kaW5nRWxlbWVudChTVkdFbGVtZW50Kik7CiAKLSAgICBPcHRp
b25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRl
OworICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dI
b3N0U3R5bGUpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIFF1YWxpZmllZE5hbWUgYW5pbWF0YWJs
ZUF0dHJpYnV0ZUZvck5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwogI2lmbmRlZiBOREVCVUcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383746</attachid>
            <date>2019-11-18 08:00:25 -0800</date>
            <delta_ts>2019-11-18 09:37:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>styleresolver-namespace-3.patch</filename>
            <type>text/plain</type>
            <size>83159</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMGY3ZjY4MzVkNS4uZjIwZjNhOWM2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMTktMTEtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIE1vdmUgU3R5bGVSZXNvbHZlciB0byBTdHlsZSBuYW1lc3BhY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDI5NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgc3VicGFydHMg
YXJlIGFscmVhZHkgaW4gU3R5bGUgbmFtZXNwYWNlLgorCisgICAgICAgIEFsc28gcmVuYW1lIGl0
IHRvIFN0eWxlOjpSZXNvbHZlciBhbmQgbW92ZSBmaWxlcyB0byBXZWJDb3JlL3N0eWxlIHN1YmRp
cmVjdG9yeS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5n
S2V5ZnJhbWVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5OjpyZWdp
c3RlclByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6YXBwZW5kQXV0aG9y
U3R5bGVTaGVldHMpOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmg6CisgICAgICAg
ICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUgY29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmg6CisgICAgICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlUnVsZUNvbGxlY3Rvcjo6UGFnZVJ1bGVDb2xsZWN0b3IpOgorICAgICAg
ICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZENoaWxk
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQpOgor
ICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
cik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3R5bGVSZXNvbHZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdT
dHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5
bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUpOgorICAg
ICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRl
clRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNs
aWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNG
b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJy
YXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVN0eWxlQWZ0ZXJD
aGFuZ2VJbkVudmlyb25tZW50KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjphbmlt
YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVyLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6UmVzb2x2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjphZGRDdXJyZW50U1ZHRm9udEZhY2VSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6YWRkS2V5ZnJhbWVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6On5SZXNvbHZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UmVzb2x2ZXI6OmJ1aWxkZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UmVzb2x2ZXI6OmlzQW5pbWF0aW9uTmFtZVZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpzdHlsZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRp
b25zQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpjbGVhckNhY2hl
ZERlY2xhcmF0aW9uc0FmZmVjdGVkQnlWaWV3cG9ydFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmFkZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0Fm
ZmVjdGVkQnlWaWV3cG9ydENoYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UmVzb2x2ZXI6OmFkZEFjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudE1lZGlhUXVlcnlSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNB
ZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6YWRkQXBwZWFyYW5jZURlcGVuZGVudE1lZGlhUXVlcnlS
ZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJp
ZXNBZmZlY3RlZEJ5QXBwZWFyYW5jZUNoYW5nZSBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5
bGVSZXNvbHZlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50U3R5bGU6OkVsZW1lbnRTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0
cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSZXNvbHZlcjo6aGFzU2Vs
ZWN0b3JGb3JJZCBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjppbnZhbGlkYXRlSG9zdEFuZFNsb3R0ZWRTdHlsZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlNjb3BlOjp1cGRhdGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6U2NvcGU6OnNjaGVkdWxlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpTY29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JWaWV3cG9ydENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmV2YWx1YXRlTWVkaWFRdWVyaWVzRm9yQWNjZXNzaWJp
bGl0eVNldHRpbmdzQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6ZXZh
bHVhdGVNZWRpYVF1ZXJpZXNGb3JBcHBlYXJhbmNlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6dXBkYXRlU3R5bGVSZXNvbHZlcik6IERlbGV0ZWQuCisgICAgICAgICog
c3R5bGUvU3R5bGVTY29wZS5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjplbGVtZW50SGFzRGlyZWN0aW9uQXV0byk6
CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OlNjb3BlOjp+U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlRyZWVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBzdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogc3Zn
L1NWR0VsZW1lbnQuaDoKKyAgICAgICAgCiAyMDE5LTExLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZvY3VzaW5nIGEgc2hhZG93IGhvc3Qgd2hpY2ggZGVs
ZWdhdGVzIGZvY3VzIHNob3VsZCBza2lwIGlubmVyIHNoYWRvdyBob3N0cyB3aGljaCBkZWxlZ2F0
ZSBmb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMjc1MjI3Mjk3OS4uNGMwMDkzYjE2YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC03ODAsNyArNzgwLDYgQEAgY3NzL1N0eWxlQ29sb3IuY3BwCiBjc3MvU3R5
bGVNZWRpYS5jcHAKIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwCiBjc3MvU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZC5jcHAKLWNzcy9TdHlsZVJlc29sdmVyLmNwcAogY3NzL1N0eWxlUnVsZS5jcHAKIGNz
cy9TdHlsZVJ1bGVJbXBvcnQuY3BwCiBjc3MvU3R5bGVTaGVldC5jcHAKQEAgLTIzNTYsNiArMjM1
NSw3IEBAIHN0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCiBzdHlsZS9TdHlsZUludmFs
aWRhdG9yLmNwcAogc3R5bGUvU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcAogc3R5bGUvU3R5bGVS
ZWxhdGlvbnMuY3BwCitzdHlsZS9TdHlsZVJlc29sdmVyLmNwcAogc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuY3BwCiBzdHlsZS9TdHlsZVNjb3BlLmNwcAogc3R5bGUvU3R5bGVTaGFyaW5n
UmVzb2x2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNjcyZTk5MjEwYzcuLjJjZDc2MzI3NGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzA0OSw2
ICsyNzA0OSw4IEBACiAJCQkJRTQ2MTgwMkMxQzhERDI5MDAwMjZDMDJDIC8qIFN0eWxlUmVsYXRp
b25zLmggKi8sCiAJCQkJRTRENThFQjIxN0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50LmNwcCAqLywKIAkJCQlFNEQ1OEVCMzE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVS
ZXNvbHZlRm9yRG9jdW1lbnQuaCAqLywKKwkJCQlFMTM5ODY2MTE1NDc4NDc0MDAxRTNGNjUgLyog
U3R5bGVSZXNvbHZlci5jcHAgKi8sCisJCQkJRTEzOTg2NjIxNTQ3ODQ3NDAwMUUzRjY1IC8qIFN0
eWxlUmVzb2x2ZXIuaCAqLywKIAkJCQlFNDYxRDY1QzFCQjBDN0YwMDBDQjU2NDUgLyogU3R5bGVT
Y29wZS5jcHAgKi8sCiAJCQkJRTQ2MUQ2NUUxQkIwQzgwRDAwQ0I1NjQ1IC8qIFN0eWxlU2NvcGUu
aCAqLywKIAkJCQlFNDdBM0FDMjFDNUVBQkJFMDBDQ0JGQTcgLyogU3R5bGVTaGFyaW5nUmVzb2x2
ZXIuY3BwICovLApAQCAtMjc0NTcsOCArMjc0NTksNiBAQAogCQkJCUE4MEU2REZBMEExOTkwNjcw
MDdGQjhDNSAvKiBTdHlsZVByb3BlcnRpZXMuaCAqLywKIAkJCQlFMUIyNTEwNDE1MkEwQkFGMDA2
OUI3NzkgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5jcHAgKi8sCiAJCQkJRTFCMjUxMDUxNTJB
MEJBRjAwNjlCNzc5IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCAqLywKLQkJCQlFMTM5ODY2
MTE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi8sCi0JCQkJRTEzOTg2NjIx
NTQ3ODQ3NDAwMUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIuaCAqLywKIAkJCQlFNEJCRUQ0QTE0RkNE
QkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNwcCAqLywKIAkJCQlFNEJCRUQ0QjE0RkNEQkExMDAz
RjBCOTggLyogU3R5bGVSdWxlLmggKi8sCiAJCQkJRTQ5NDZFQUMxNTZFNjRERDAwRDMyOTdGIC8q
IFN0eWxlUnVsZUltcG9ydC5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmNwcAppbmRleCA4NjU5MGQxOTEzYi4uMjdjYTk0YmRiNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtNzQxLDcgKzc0MSw3IEBA
IHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxl
JiBlbGVtZW50U3R5bGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEtleWZyYW1lTGlzdCBrZXlm
cmFtZUxpc3QoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KTsKLSAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyID0gbV90YXJnZXQtPnN0eWxlUmVz
b2x2ZXIoKTsKKyAgICBhdXRvJiBzdHlsZVJlc29sdmVyID0gbV90YXJnZXQtPnN0eWxlUmVzb2x2
ZXIoKTsKIAogICAgIGZvciAoYXV0byYga2V5ZnJhbWUgOiBtX3BhcnNlZEtleWZyYW1lcykgewog
ICAgICAgICBLZXlmcmFtZVZhbHVlIGtleWZyYW1lVmFsdWUoa2V5ZnJhbWUuY29tcHV0ZWRPZmZz
ZXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lz
dGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IDQyZjgwYWI1ZDhhLi5kNDYxODY0MzhjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNw
cApAQCAtNDgsNyArNDgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5OjpyZWdpc3RlclByb3BlcnR5KERvY3VtZW50JiBkb2N1bQogICAgIFJlZlB0cjxD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBpbml0aWFsVmFsdWU7CiAgICAgaWYgKCFkZXNjcmlwdG9y
LmluaXRpYWxWYWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgQ1NTVG9rZW5pemVyIHRva2VuaXpl
cihkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7Ci0gICAgICAgIFN0eWxlUmVzb2x2ZXIgc3R5bGVS
ZXNvbHZlcihkb2N1bWVudCk7CisgICAgICAgIFN0eWxlOjpSZXNvbHZlciBzdHlsZVJlc29sdmVy
KGRvY3VtZW50KTsKIAogICAgICAgICAvLyBXZSBuZWVkIHRvIGluaXRpYWxpemUgdGhpcyBzbyB0
aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0YXRpb25hbGx5IGRlcGVuZGVudCB2
YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgogICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBuZWVk
IHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRoZXkgd2lsbCBiZSByZWplY3RlZCBs
YXRlciBhbnl3YXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVT
ZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAppbmRleCBi
YTE5MmY3ZjEwZi4uYTg0ZDdlNjc0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
b2N1bWVudFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxl
U2V0cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Eb2N1
bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIpCitEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKFN0eWxlOjpSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcikKICAgICA6IG1fc3R5bGVSZXNvbHZlcihzdHlsZVJlc29sdmVyKQogewog
ICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CkBAIC0xMDIsNyArMTAy
LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKICAgICAg
ICAgbV91c2VyU3R5bGUgPSBXVEZNb3ZlKHRlbXBVc2VyU3R5bGUpOwogfQogCi12b2lkIERvY3Vt
ZW50UnVsZVNldHM6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHVzZXJTaGVldHMsIFJ1bGVTZXQmIHVzZXJTdHlsZSwg
Y29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBTdHlsZVJlc29sdmVyJiByZXNvbHZl
cikKK3ZvaWQgRG9jdW1lbnRSdWxlU2V0czo6Y29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0
cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgdXNlclNoZWV0cywgUnVsZVNl
dCYgdXNlclN0eWxlLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlOjpS
ZXNvbHZlciYgcmVzb2x2ZXIpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZXJT
aGVldHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKHVzZXJTaGVldHNbaV0tPmNvbnRl
bnRzKCkuaXNVc2VyU3R5bGVTaGVldCgpKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIERvY3Vt
ZW50UnVsZVNldHM6OnJlc2V0VXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCkKICAgICBtX3VzZXJB
Z2VudE1lZGlhUXVlcnlTdHlsZSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgRG9jdW1lbnRSdWxlU2V0
czo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0Pj4mIHN0eWxlU2hlZXRzLCBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtZWRpdW0sIEluc3BlY3Rv
ckNTU09NV3JhcHBlcnMmIGluc3BlY3RvckNTU09NV3JhcHBlcnMsIFN0eWxlUmVzb2x2ZXIqIHJl
c29sdmVyKQordm9pZCBEb2N1bWVudFJ1bGVTZXRzOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgc3R5bGVTaGVldHMsIE1lZGlhUXVl
cnlFdmFsdWF0b3IqIG1lZGl1bSwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9yQ1NT
T01XcmFwcGVycywgU3R5bGU6OlJlc29sdmVyKiByZXNvbHZlcikKIHsKICAgICAvLyBUaGlzIGhh
bmRsZXMgc2hlZXRzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHN0eWxlc2hlZXQgbGlzdCBvbmx5
LiBJbiBvdGhlciBjYXNlcyB0aGUgc3R5bGUgcmVzb2x2ZXIKICAgICAvLyBuZWVkcyB0byBiZSBy
ZWNvbnN0cnVjdGVkLiBUbyBoYW5kbGUgaW5zZXJ0aW9ucyB0b28gdGhlIHJ1bGUgb3JkZXIgbnVt
YmVycyB3b3VsZCBuZWVkIHRvIGJlIHVwZGF0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVs
ZVNldHMuaAppbmRleCA0NmQ4YTFhNTY2Ni4uZTlhNzU2YTA3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RvY3VtZW50UnVsZVNldHMuaApAQCAtMzgsNiArMzgsMTAgQEAgY2xhc3MgRXh0ZW5zaW9uU3R5
bGVTaGVldHM7CiBjbGFzcyBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOwogY2xhc3MgTWVkaWFRdWVy
eUV2YWx1YXRvcjsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNzIFJlc29sdmVyOworfQorCiBz
dHJ1Y3QgSW52YWxpZGF0aW9uUnVsZVNldCB7CiAgICAgTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVu
dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gcnVsZVNldDsKQEAgLTQ4LDcgKzUyLDcg
QEAgc3RydWN0IEludmFsaWRhdGlvblJ1bGVTZXQgewogCiBjbGFzcyBEb2N1bWVudFJ1bGVTZXRz
IHsKIHB1YmxpYzoKLSAgICBEb2N1bWVudFJ1bGVTZXRzKFN0eWxlUmVzb2x2ZXImKTsKKyAgICBE
b2N1bWVudFJ1bGVTZXRzKFN0eWxlOjpSZXNvbHZlciYpOwogICAgIH5Eb2N1bWVudFJ1bGVTZXRz
KCk7CiAKICAgICBib29sIGlzQXV0aG9yU3R5bGVEZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0F1dGhvclN0eWxlRGVmaW5lZDsgfQpAQCAtNzAsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbml0aWFsaXplVXNlclN0eWxlKCk7CiAKICAgICB2b2lkIHJlc2V0QXV0aG9yU3R5bGUoKTsK
LSAgICB2b2lkIGFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4+JiwgTWVkaWFRdWVyeUV2YWx1YXRvciosIEluc3BlY3RvckNTU09NV3JhcHBl
cnMmLCBTdHlsZVJlc29sdmVyKik7CisgICAgdm9pZCBhcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIE1lZGlhUXVlcnlFdmFsdWF0b3Iq
LCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiwgU3R5bGU6OlJlc29sdmVyKik7CiAKICAgICB2b2lk
IHJlc2V0VXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCk7CiAKQEAgLTgwLDE0ICs4NCwxNCBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0RmVhdHVyZXMoKSBjb25zdDsKLSAg
ICB2b2lkIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0Pj4mLCBSdWxlU2V0JiB1c2VyU3R5bGUsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImLCBTdHlsZVJlc29sdmVyJik7CisgICAgdm9pZCBjb2xsZWN0UnVsZXNGcm9tVXNl
clN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiwgUnVsZVNl
dCYgdXNlclN0eWxlLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGU6OlJlc29sdmVy
Jik7CiAgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNv
bnN0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fYXV0aG9yU3R5bGU7CiAgICAg
bXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5
bGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fdXNlclN0eWxlOwogCi0gICAgU3R5
bGVSZXNvbHZlciYgbV9zdHlsZVJlc29sdmVyOworICAgIFN0eWxlOjpSZXNvbHZlciYgbV9zdHls
ZVJlc29sdmVyOwogICAgIG11dGFibGUgUnVsZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDY4NmNm
MGFiZGVkLi40MTE1YzQyYTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBib29sIGFwcGx5UmVzdHJpY3Rv
cihNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHIsIGJvb2wgdmFsdWUpCiAgICAgcmV0dXJuIHIgPT0g
TWVkaWFRdWVyeTo6Tm90ID8gIXZhbHVlIDogdmFsdWU7CiB9CiAKLWJvb2wgTWVkaWFRdWVyeUV2
YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYgcXVlcnlTZXQsIFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIpIGNvbnN0Citib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2
YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlTZXQmIHF1ZXJ5U2V0LCBTdHlsZTo6UmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXIpIGNvbnN0CiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVlcmllcywg
c3RyZWFtIDw8ICJNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZSBvbiAiIDw8IChtX2RvY3Vt
ZW50ID8gbV9kb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkgOiBlbXB0eVN0cmluZygpKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oCmluZGV4IGRiMWI3MThjNzhmLi41
YTJlY2RiNTIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFs
dWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oCkBA
IC0zNiw3ICszNiwxMCBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgTWVk
aWFRdWVyeVNldDsKIGNsYXNzIFJlbmRlclN0eWxlOwotY2xhc3MgU3R5bGVSZXNvbHZlcjsKKwor
bmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNzIFJlc29sdmVyOworfQogCiBzdHJ1Y3QgTWVkaWFRdWVy
eVJlc3VsdCB7CiAgICAgTWVkaWFRdWVyeUV4cHJlc3Npb24gZXhwcmVzc2lvbjsKQEAgLTYzLDcg
KzY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgbWVkaWFUeXBlTWF0Y2hTcGVjaWZpYyhjb25zdCBj
aGFyKiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdDsKIAogICAgIC8vIEV2YWx1YXRlcyBhIGxpc3Qg
b2YgbWVkaWEgcXVlcmllcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV2YWx1YXRlKGNvbnN0
IE1lZGlhUXVlcnlTZXQmLCBTdHlsZVJlc29sdmVyKiA9IG51bGxwdHIpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYsIFN0eWxlOjpS
ZXNvbHZlciogPSBudWxscHRyKSBjb25zdDsKIAogICAgIC8vIEV2YWx1YXRlcyBtZWRpYSBxdWVy
eSBzdWJleHByZXNzaW9uLCBpZSAiYW5kIChtZWRpYS1mZWF0dXJlOiB2YWx1ZSkiIHBhcnQuCiAg
ICAgYm9vbCBldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuaAppbmRleCBjZTQ2ZDFjMTBlNy4uNjI3MmZk
NzIwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5oCkBAIC0zMSw3ICsz
MSw3IEBAIGNsYXNzIFN0eWxlUnVsZVBhZ2U7CiAKIGNsYXNzIFBhZ2VSdWxlQ29sbGVjdG9yIHsK
IHB1YmxpYzoKLSAgICBQYWdlUnVsZUNvbGxlY3RvcihTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3Rh
dGUsIERvY3VtZW50UnVsZVNldHMmIHJ1bGVTZXRzKQorICAgIFBhZ2VSdWxlQ29sbGVjdG9yKFN0
eWxlOjpSZXNvbHZlcjo6U3RhdGUmIHN0YXRlLCBEb2N1bWVudFJ1bGVTZXRzJiBydWxlU2V0cykK
ICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fcnVsZVNldHMocnVsZVNldHMp
IHsgfQogCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFBhZ2VSdWxl
cyhSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25z
dCBTdHJpbmcmIHBhZ2VOYW1lKTsKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzRm9yTGlzdChWZWN0
b3I8U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQ
YWdlKj4mIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0
cmluZyYgcGFnZU5hbWUpOwogCi0gICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIG1fc3Rh
dGU7CisgICAgY29uc3QgU3R5bGU6OlJlc29sdmVyOjpTdGF0ZSYgbV9zdGF0ZTsKICAgICBEb2N1
bWVudFJ1bGVTZXRzJiBtX3J1bGVTZXRzOwogCiAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggNmFjYWMzM2NjM2MuLjhlYzFjNGQ0ZjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRQYWdl
UnVsZShTdHlsZVJ1bGVQYWdlKiBydWxlKQogICAgIG1fcGFnZVJ1bGVzLmFwcGVuZChydWxlKTsK
IH0KIAotdm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBT
dHlsZVJlc29sdmVyKiByZXNvbHZlciwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKQordm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYg
bWVkaXVtLCBTdHlsZTo6UmVzb2x2ZXIqIHJlc29sdmVyLCBib29sIGlzSW5pdGlhdGluZ0VsZW1l
bnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7CiAgICAgZm9yIChhdXRvJiBydWxlIDogcnVsZXMp
IHsKICAgICAgICAgaWYgKGlzPFN0eWxlUnVsZT4oKnJ1bGUpKQpAQCAtNDExLDcgKzQxMSw3IEBA
IHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZUJhc2U+PiYgcnVsZXMsIGNvbnN0IE1lCiAgICAgfQogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1
bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIpCit2b2lkIFJ1bGVTZXQ6
OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQsIGNvbnN0IE1lZGlh
UXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGU6OlJlc29sdmVyKiByZXNvbHZlcikKIHsKICAg
ICBmb3IgKGF1dG8mIHJ1bGUgOiBzaGVldC5pbXBvcnRSdWxlcygpKSB7CiAgICAgICAgIGlmIChy
dWxlLT5zdHlsZVNoZWV0KCkgJiYgKCFydWxlLT5tZWRpYVF1ZXJpZXMoKSB8fCBtZWRpdW0uZXZh
bHVhdGUoKnJ1bGUtPm1lZGlhUXVlcmllcygpLCByZXNvbHZlcikpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgK
aW5kZXggNjM1NWU5MzY0ZmUuLjYxODBjNDliY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKQEAgLTQ0
LDkgKzQ0LDEyIEBAIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNs
YXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwotY2xhc3MgU3R5bGVSZXNvbHZl
cjsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAorbmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNz
IFJlc29sdmVyOworfQorCiBlbnVtIGNsYXNzIE1hdGNoQmFzZWRPblJ1bGVIYXNoIDogdW5zaWdu
ZWQgewogICAgIE5vbmUsCiAgICAgVW5pdmVyc2FsLApAQCAtMTE3LDcgKzEyMCw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIFZlY3RvcjxSdWxlRGF0YSwgMT4gUnVsZURhdGFWZWN0b3I7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRGF0YVZlY3Rv
cj4+IEF0b21SdWxlTWFwOwogCi0gICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0
Q29udGVudHMmLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciogPSAw
KTsKKyAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYsIGNvbnN0
IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBTdHlsZTo6UmVzb2x2ZXIqID0gMCk7CiAKICAgICB2b2lk
IGFkZFN0eWxlUnVsZShTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwg
dW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgpOwpAQCAt
MTUwLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0hvc3RQc2V1ZG9DbGFzc1J1bGVz
TWF0Y2hpbmdJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBtX2hhc0hvc3RQc2V1ZG9DbGFz
c1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWU7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFkZENo
aWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mLCBjb25zdCBNZWRp
YVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlUmVzb2x2ZXIqLCBib29sIGlzSW5pdGlhdGlu
Z0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIHZvaWQgYWRkQ2hpbGRSdWxlcyhj
b25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYsIGNvbnN0IE1lZGlhUXVlcnlFdmFs
dWF0b3ImIG1lZGl1bSwgU3R5bGU6OlJlc29sdmVyKiwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKICAg
ICBBdG9tUnVsZU1hcCBtX2NsYXNzUnVsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBh
Y2Q1OGNkMzA2NS4uNjdlZTAzOTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjI4
NiwxMCArMjI4NiwxMCBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVs
cyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogICAgIG1hcmdpbkxlZnQg
PSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IGludFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoKTsKIH0KIAotU3R5bGVSZXNvbHZlciYg
RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKK1N0eWxlOjpSZXNv
bHZlciYgRG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKIHsKICAg
ICBpZiAoIW1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpCi0gICAgICAgIG1fdXNl
ckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+
KCp0aGlzKTsKKyAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IG1h
a2VVbmlxdWU8U3R5bGU6OlJlc29sdmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJBZ2Vu
dFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDdh
ZTdlMzdiNTQ3Li4zODI0MjIxZTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE5Myw3ICsx
OTMsNiBAQCBjbGFzcyBTZWxlY3RvclF1ZXJ5Q2FjaGU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CiBjbGFzcyBTZXR0aW5nczsKIGNsYXNzIFN0cmluZ0NhbGxiYWNrOwotY2xhc3MgU3R5
bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7
CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKQEAgLTI2NCw2ICsyNjMsNyBAQCBjbGFzcyBSZXNpemVP
YnNlcnZlcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgU3R5bGUgeworY2xhc3MgUmVzb2x2ZXI7CiBj
bGFzcyBTY29wZTsKIH07CiAKQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHNhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoKSBjb25zdCB7IHJldHVybiBtX3Nhd0VsZW1l
bnRzSW5Lbm93bk5hbWVzcGFjZXM7IH0KIAotICAgIFN0eWxlUmVzb2x2ZXImIHVzZXJBZ2VudFNo
YWRvd1RyZWVTdHlsZVJlc29sdmVyKCk7CisgICAgU3R5bGU6OlJlc29sdmVyJiB1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpOwogCiAgICAgQ1NTRm9udFNlbGVjdG9yJiBmb250U2Vs
ZWN0b3IoKSB7IHJldHVybiBtX2ZvbnRTZWxlY3RvcjsgfQogCkBAIC0xNjc5LDcgKzE2NzksNyBA
QCBwcml2YXRlOgogCiAgICAgVW5pcXVlUmVmPFF1aXJrcz4gbV9xdWlya3M7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3R5bGVSZXNvbHZlcj4gbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNv
bHZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6OlJlc29sdmVyPiBtX3VzZXJBZ2VudFNo
YWRvd1RyZWVTdHlsZVJlc29sdmVyOwogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9kb21XaW5k
b3c7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9jb250ZXh0RG9jdW1lbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggOGUzMGNmYTg3ODYuLmM5NDYzYjFmZDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC0xODk0LDcgKzE4OTQsNyBAQCBib29sIEVsZW1lbnQ6OmFsbG93c0RvdWJsZVRh
cEdlc3R1cmUoKSBjb25zdAogfQogI2VuZGlmCiAKLVN0eWxlUmVzb2x2ZXImIEVsZW1lbnQ6OnN0
eWxlUmVzb2x2ZXIoKQorU3R5bGU6OlJlc29sdmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVyKCkK
IHsKICAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCiAg
ICAgICAgIHJldHVybiBzaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKTsKQEAgLTE5
MDIsNyArMTkwMiw3IEBAIFN0eWxlUmVzb2x2ZXImIEVsZW1lbnQ6OnN0eWxlUmVzb2x2ZXIoKQog
ICAgIHJldHVybiBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpOwogfQogCi1FbGVt
ZW50U3R5bGUgRWxlbWVudDo6cmVzb2x2ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSkKK1N0eWxlOjpFbGVtZW50U3R5bGUgRWxlbWVudDo6cmVzb2x2ZVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKIHsKICAgICByZXR1cm4gc3R5bGVSZXNvbHZlcigpLnN0
eWxlRm9yRWxlbWVudCgqdGhpcywgcGFyZW50U3R5bGUpOwogfQpAQCAtNDA4OSw3ICs0MDg5LDcg
QEAgdm9pZCBFbGVtZW50OjpkaWREZXRhY2hSZW5kZXJlcnMoKQogICAgIEFTU0VSVChoYXNDdXN0
b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHlsZT4g
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVu
ZGVyU3R5bGUqKQorT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKQogewog
ICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7CiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDM2NmMwMzY3ODhlLi5kNWU3MWU2
OTljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFBzZXVkb0Vs
ZW1lbnQ7CiBjbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247CiBjbGFzcyBTdHlsZVByb3BlcnR5TWFw
OwogY2xhc3MgV2ViQW5pbWF0aW9uOwotc3RydWN0IEVsZW1lbnRTdHlsZTsKIHN0cnVjdCBTY3Jv
bGxJbnRvVmlld09wdGlvbnM7CiAKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQpA
QCAtNjksNiArNjgsMTAgQEAgc3RydWN0IEludGVyc2VjdGlvbk9ic2VydmVyRGF0YTsKIHN0cnVj
dCBSZXNpemVPYnNlcnZlckRhdGE7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFN0eWxlIHsKK3N0cnVj
dCBFbGVtZW50U3R5bGU7Cit9CisKIGVudW0gU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIHsKICAg
ICBTcGVsbGNoZWNrQXR0cmlidXRlVHJ1ZSwKICAgICBTcGVsbGNoZWNrQXR0cmlidXRlRmFsc2Us
CkBAIC01NDEsNyArNTQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hS
ZW5kZXJlcnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWREZXRhY2hSZW5kZXJlcnMoKTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSk7CisgICAgdmlydHVh
bCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKTsKIAogICAgIExheW91dFJlY3QgYWJzb2x1dGVFdmVudEhhbmRsZXJCb3VuZHMoYm9vbCYg
aW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxlbWVudHMpIG92ZXJyaWRlOwogCkBAIC01NjIsOCArNTY1
LDggQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzRG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKCk7Ci0g
ICAgRWxlbWVudFN0eWxlIHJlc29sdmVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUpOworICAgIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVSZXNvbHZlcigpOworICAgIFN0eWxlOjpF
bGVtZW50U3R5bGUgcmVzb2x2ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7
CiAKICAgICAvLyBJbnZhbGlkYXRlcyB0aGUgc3R5bGUgb2YgYSBzaW5nbGUgZWxlbWVudC4gU3R5
bGUgaXMgcmVzb2x2ZWQgbGF6aWx5LgogICAgIC8vIERlc2NlbmRhbnQgZWxlbWVudHMgYXJlIHJl
c29sdmVkIGFzIG5lZWRlZCwgZm9yIGV4YW1wbGUgaWYgYW4gaW5oZXJpdGVkIHByb3BlcnR5IGNo
YW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggYTE0ODgx
ZmQ1YmYuLjA4ODhkMTIyNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbQogdm9pZCBF
ZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVGcm9tTWF0Y2hlZFJ1
bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAotICAgICAgICBT
dHlsZVJlc29sdmVyOjpBdXRob3JDU1NSdWxlcyk7CisgICAgICAgIFN0eWxlOjpSZXNvbHZlcjo6
QXV0aG9yQ1NTUnVsZXMpOwogICAgIC8vIFN0eWxlcyBmcm9tIHRoZSBpbmxpbmUgc3R5bGUgZGVj
bGFyYXRpb24sIGhlbGQgaW4gdGhlIHZhcmlhYmxlICJzdHlsZSIsIHRha2UgcHJlY2VkZW5jZSAK
ICAgICAvLyBvdmVyIHRob3NlIGZyb20gbWF0Y2hlZCBydWxlcy4KICAgICBpZiAobV9tdXRhYmxl
U3R5bGUpCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5
bGVGcm9tUnVsZXNBbmRDb250ZXh0KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIE5vZGUqCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIDEuIFJlbW92ZSBzdHlsZSBmcm9tIG1hdGNoZWQgcnVsZXMg
YmVjYXVzZSBzdHlsZSByZW1haW4gd2l0aG91dCByZXBlYXRpbmcgaXQgaW4gaW5saW5lIHN0eWxl
IGRlY2xhcmF0aW9uCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlRnJv
bU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwg
U3R5bGVSZXNvbHZlcjo6QWxsQnV0RW1wdHlDU1NSdWxlcyk7CisgICAgUmVmUHRyPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRS
dWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgU3R5bGU6OlJlc29sdmVyOjpBbGxCdXRFbXB0eUNTU1J1
bGVzKTsKICAgICBpZiAoc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzICYmICFzdHlsZUZyb21NYXRjaGVk
UnVsZXMtPmlzRW1wdHkoKSkKICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVz
Tm90SW4oKm1fbXV0YWJsZVN0eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIApAQCAtMTM4
Nyw3ICsxMzg3LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1l
bnREZWZhdWx0U3R5bGUoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxl
IHx8IG1fbXV0YWJsZVN0eWxlLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBkZWZhdWx0U3R5bGUgPSBzdHlsZUZyb21NYXRj
aGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIFN0eWxlUmVzb2x2ZXI6OlVBQW5kVXNlckNTU1J1
bGVzKTsKKyAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0g
c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBTdHlsZTo6UmVzb2x2ZXI6
OlVBQW5kVXNlckNTU1J1bGVzKTsKIAogICAgIHJlbW92ZVByb3BlcnRpZXNJblN0eWxlKG1fbXV0
YWJsZVN0eWxlLmdldCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA3NGZhNjRiMDdjZi4uOGFlMTYyNTNhYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yMDY0LDcg
KzIwNjQsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5n
ZWQoKQogICAgICAgICBzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwogICAgIHNldENhcmV0VmlzaWJp
bGl0eShhY3RpdmVBbmRGb2N1c2VkID8gVmlzaWJsZSA6IEhpZGRlbik7CiAKLSAgICAvLyBCZWNh
dXNlIFN0eWxlUmVzb2x2ZXI6OmNoZWNrT25lU2VsZWN0b3IoKSBhbmQKKyAgICAvLyBCZWNhdXNl
IFN0eWxlOjpSZXNvbHZlcjo6Y2hlY2tPbmVTZWxlY3RvcigpIGFuZAogICAgIC8vIFJlbmRlclRo
ZW1lOjppc0ZvY3VzZWQoKSBjaGVjayBpZiB0aGUgZnJhbWUgaXMgYWN0aXZlLCB3ZSBoYXZlIHRv
CiAgICAgLy8gdXBkYXRlIHN0eWxlIGFuZCB0aGVtZSBzdGF0ZSB0aGF0IGRlcGVuZGVkIG9uIHRo
b3NlLgogICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCmluZGV4IGYyM2FkYmEzOGU4Li45MmE3ZTIxZDcwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC01OTAsNyArNTkw
LDcgQEAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElu
cHV0KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93
SG9zdCgpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxl
KiBob3N0U3R5bGUpCitPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRl
clN0eWxlKiBob3N0U3R5bGUpCiB7CiAgICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNvbXB1
dGUgc3R5bGUuIFRoaXMgaXMganVzdCBhIGhhY2sgdG8gcGljayBzaGFkb3cgcHNldWRvIGlkIHdo
ZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlckNvbnRh
aW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxl
PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxlKQorT3B0aW9uYWw8U3R5bGU6OkVs
ZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKIHsKICAgICAv
LyBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFj
ayB0byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4
IGIwMThiOThiMjVhLi44NDIwYjAwN2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpIGZpbmFsOwogCi0gICAgT3B0aW9u
YWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5
bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0
eWxlKikgZmluYWw7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBmaW5hbDsKIAogICAgIHZvaWQgc3RhcnREcmFnZ2luZygpOwpAQCAtMTM2LDcgKzEzNiw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYp
OwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7Ci0gICAgT3B0aW9u
YWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5
bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0
eWxlKikgZmluYWw7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGlzU2xpZGVyQ29udGFpbmVyRWxlbWVudCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNDM5MzJlNGYwZGMuLjU1YzBj
MzNiYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzU3Ryb25nUGFzc3dvcmRUZXh0RmllbGQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKICAg
ICByZXR1cm4gaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oZWxlbWVudCktPmhhc0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKTsK
IH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyOjpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSopCitPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElu
bmVyQ29udGFpbmVyOjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVu
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgYXV0byBlbGVtZW50U3R5bGUgPSBy
ZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAgICBpZiAoaXNTdHJvbmdQYXNzd29yZFRleHRG
aWVsZChzaGFkb3dIb3N0KCkpKSB7CkBAIC0xMDIsNyArMTAyLDcgQEAgUmVmPFRleHRDb250cm9s
SW5uZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0Q29udHJvbElubmVyRWxlbWVu
dChkb2N1bWVudCkpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHls
ZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0
byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICBuZXdTdHlsZS0+aW5o
ZXJpdEZyb20oKnNoYWRvd0hvc3RTdHlsZSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgT3B0aW9uYWw8
RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlclMKICAgICAgICAgbmV3U3R5bGUtPnNldEZsZXhCYXNpcyhMZW5ndGggeyBw
aXhlbHMsIEZpeGVkIH0pOwogICAgIH0KIAotICAgIHJldHVybiBFbGVtZW50U3R5bGUgeyBXVEZN
b3ZlKG5ld1N0eWxlKSB9OworICAgIHJldHVybiB7IFdURk1vdmUobmV3U3R5bGUpIH07CiB9CiAK
IC8vIE1BUks6IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudApAQCAtMTcxLDEwICsxNzEsMTAg
QEAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OnJlbmRlcmVyKCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRy
b2xJbm5lckJsb2NrPihIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXIoKSk7CiB9CiAKLU9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKQorT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5k
ZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUgPSBkb3duY2FzdDxI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QoKSkuY3JlYXRlSW5uZXJUZXh0
U3R5bGUoKnNoYWRvd0hvc3RTdHlsZSk7Ci0gICAgcmV0dXJuIEVsZW1lbnRTdHlsZShtYWtlVW5p
cXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOworICAgIHJldHVybiB7IG1ha2VVbmlx
dWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSB9OwogfQogCiAvLyBNQVJLOiBUZXh0Q29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudApAQCAtMTkxLDcgKzE5MSw3IEBAIFJlZjxUZXh0Q29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudD4gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dENvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK09w
dGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUgPSByZXNv
bHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCA3ZjY1ODM5MDEwMS4uOTY2
Mjk1OWI3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKERvY3VtZW50Jik7CiAgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxFbGVtZW50
U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIE9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92
ZXJyaWRlOwogfTsKIAogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTERpdkVsZW1lbnQgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICBUZXh0Q29udHJvbElubmVyRWxlbWVudChEb2N1bWVudCYpOwotICAgIE9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7Cisg
ICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RT
dHlsZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTY4LDcgKzY4LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsK
ICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hv
c3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTgxLDcgKzgx
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVu
dChEb2N1bWVudCYpOwogICAgIAotICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiBj
bGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxE
aXZFbGVtZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggOGYwOGQ3YTU5MDkuLjQ3ZDU5MzMxOWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0Fn
ZW50LmNwcApAQCAtNDgwLDggKzQ4MCw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAgICAg
fQogCiAgICAgLy8gTWF0Y2hlZCBydWxlcy4KLSAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyID0gZWxlbWVudC0+c3R5bGVSZXNvbHZlcigpOwotICAgIGF1dG8gbWF0Y2hlZFJ1bGVzID0g
c3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBlbGVtZW50
UHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICBhdXRvJiBzdHlsZVJl
c29sdmVyID0gZWxlbWVudC0+c3R5bGVSZXNvbHZlcigpOworICAgIGF1dG8gbWF0Y2hlZFJ1bGVz
ID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBlbGVt
ZW50UHNldWRvSWQsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgIG1hdGNoZWRD
U1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLCBzdHls
ZVJlc29sdmVyLCAqZWxlbWVudCwgZWxlbWVudFBzZXVkb0lkKTsKIAogICAgIGlmICghb3JpZ2lu
YWxFbGVtZW50LT5pc1BzZXVkb0VsZW1lbnQoKSkgewpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vCiAgICAgICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRzID0gSlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz46OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9IFBzZXVkb0lkOjpG
aXJzdFB1YmxpY1BzZXVkb0lkOyBwc2V1ZG9JZCA8IFBzZXVkb0lkOjpBZnRlckxhc3RJbnRlcm5h
bFBzZXVkb0lkOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocHNldWRvSWQpICsgMSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm90
b2NvbFBzZXVkb0lkID0gcHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lkKHBzZXVkb0lkKSkgewotICAg
ICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IHN0eWxlUmVzb2x2ZXIucHNldWRv
U3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFs
bENTU1J1bGVzKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkUnVsZXMgPSBzdHls
ZVJlc29sdmVyLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkLCBT
dHlsZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFt
YXRjaGVkUnVsZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1h
dGNoZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlczo6Y3JlYXRl
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0UHNldWRvSWQocHJvdG9jb2xQc2V1
ZG9JZC52YWx1ZSgpKQpAQCAtNTA5LDggKzUwOSw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5v
CiAgICAgICAgICAgICBhdXRvIGVudHJpZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOwogICAgICAgICAgICAg
RWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAg
ICAgICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgU3R5bGVSZXNv
bHZlciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIo
KTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFN0eWxl
UmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGVSZXNvbHZl
cjo6QWxsQ1NTUnVsZXMpOworICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxlUmVzb2x2
ZXIgPSBwYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCk7CisgICAgICAgICAgICAgICAgYXV0
byBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxlUnVsZXNGb3JF
bGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAg
ICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVy
aXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVk
Q1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMs
IHN0eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSkpCiAgICAgICAg
ICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC05NDQsMTIgKzk0NCwxMiBAQCBJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmRldGVj
dE9yaWdpbihDU1NTdAogICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW46OlJlZ3VsYXI7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVS
dWxlKiBzdHlsZVJ1bGUsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQmIGVs
ZW1lbnQpCitSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0
b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSogc3R5bGVSdWxlLCBTdHls
ZTo6UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYg
KCFzdHlsZVJ1bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gU3R5bGVSdWxl
cyByZXR1cm5lZCBieSBTdHlsZVJlc29sdmVyOjpzdHlsZVJ1bGVzRm9yRWxlbWVudCBsYWNrIHBh
cmVudCBwb2ludGVycyBzaW5jZSB0aGF0IGluZm9tYXRpb24gaXMgbm90IGNoZWFwbHkgYXZhaWxh
YmxlLgorICAgIC8vIFN0eWxlUnVsZXMgcmV0dXJuZWQgYnkgU3R5bGU6OlJlc29sdmVyOjpzdHls
ZVJ1bGVzRm9yRWxlbWVudCBsYWNrIHBhcmVudCBwb2ludGVycyBzaW5jZSB0aGF0IGluZm9tYXRp
b24gaXMgbm90IGNoZWFwbHkgYXZhaWxhYmxlLgogICAgIC8vIFNpbmNlIHRoZSBpbnNwZWN0b3Ig
d2FudHMgdG8gd2FsayB0aGUgcGFyZW50IGNoYWluLCB3ZSBjb25zdHJ1Y3QgdGhlIGZ1bGwgd3Jh
cHBlcnMgaGVyZS4KICAgICBzdHlsZVJlc29sdmVyLmluc3BlY3RvckNTU09NV3JhcHBlcnMoKS5j
b2xsZWN0RG9jdW1lbnRXcmFwcGVycyhzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuZXh0ZW5zaW9u
U3R5bGVTaGVldHMoKSk7CiAgICAgc3R5bGVSZXNvbHZlci5pbnNwZWN0b3JDU1NPTVdyYXBwZXJz
KCkuY29sbGVjdFNjb3BlV3JhcHBlcnMoU3R5bGU6OlNjb3BlOjpmb3JOb2RlKGVsZW1lbnQpKTsK
QEAgLTk3Niw3ICs5NzYsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NS
dWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKAogICAgIHJldHVybiBp
bnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JS
dWxlKHJ1bGUsIG51bGxwdHIpIDogbnVsbHB0cjsKIH0KIAotUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQm
IGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQorUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRB
cnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBt
YXRjaGVkUnVsZXMsIFN0eWxlOjpSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCYgZWxl
bWVudCwgUHNldWRvSWQgcHNldWRvSWQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPjo6Y3JlYXRlKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQu
aAppbmRleCBlNDNjYjViNzYxMC4uNjc0MmRkZjJjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTUwLDkgKzUwLDEy
IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBO
b2RlTGlzdDsKLWNsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBTdHlsZVJ1bGU7CiAKK25hbWVz
cGFjZSBTdHlsZSB7CitjbGFzcyBSZXNvbHZlcjsKK30KKwogY2xhc3MgSW5zcGVjdG9yQ1NTQWdl
bnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlICwgcHVibGljIEluc3BlY3Rvcjo6
Q1NTQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyICwgcHVibGljIEluc3BlY3RvclN0eWxlU2hlZXQ6
Okxpc3RlbmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDU1NBZ2VudCk7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNDIsOSArMTQ1LDkgQEAgcHJpdmF0
ZToKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9y
RG9jdW1lbnQoRG9jdW1lbnQmKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW4gZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBE
b2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNv
bHZlciYsIEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGU6OlJlc29sdmVyJiwg
RWxlbWVudCYpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+
IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JN
YXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVz
b2x2ZXImLCBFbGVtZW50JiwgUHNldWRvSWQpOworICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJheUZvck1hdGNoZWRS
dWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiwgU3R5bGU6OlJlc29sdmVy
JiwgRWxlbWVudCYsIFBzZXVkb0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxlbWVu
dCYpOwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAwYWNlOWVjN2JkNS4uNDk0
ZTA5NzhhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE1MjUsOSArMTUyNSw5
IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxl
bWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nCiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpOwogICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNjb3BlKCkuZmx1c2hQZW5kaW5nVXBk
YXRlKCk7CiAKLSAgICB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IFN0eWxlUmVzb2x2ZXI6OkF1
dGhvckNTU1J1bGVzOworICAgIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0gU3R5bGU6OlJlc29s
dmVyOjpBdXRob3JDU1NSdWxlczsKICAgICBpZiAoIWF1dGhvck9ubHkpCi0gICAgICAgIHJ1bGVz
VG9JbmNsdWRlIHw9IFN0eWxlUmVzb2x2ZXI6OlVBQW5kVXNlckNTU1J1bGVzOworICAgICAgICBy
dWxlc1RvSW5jbHVkZSB8PSBTdHlsZTo6UmVzb2x2ZXI6OlVBQW5kVXNlckNTU1J1bGVzOwogCiAg
ICAgUHNldWRvSWQgcHNldWRvSWQgPSBDU1NTZWxlY3Rvcjo6cHNldWRvSWQocHNldWRvVHlwZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNmMzc4YjBiMjRjLi42OWMxZGY5YTYzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBQYWdlOjppbml0R3JvdXAoKQog
dm9pZCBQYWdlOjp1cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCgpCiB7CiAgICAg
Zm9yRWFjaERvY3VtZW50KFtdKERvY3VtZW50JiBkb2N1bWVudCkgewotICAgICAgICBpZiAoU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGRvY3VtZW50LnN0eWxlU2NvcGUoKS5yZXNvbHZl
cklmRXhpc3RzKCkpCisgICAgICAgIGlmIChhdXRvKiBzdHlsZVJlc29sdmVyID0gZG9jdW1lbnQu
c3R5bGVTY29wZSgpLnJlc29sdmVySWZFeGlzdHMoKSkKICAgICAgICAgICAgIHN0eWxlUmVzb2x2
ZXItPmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKTsKICAgICAgICAgZG9jdW1l
bnQuc2NoZWR1bGVGdWxsU3R5bGVSZWJ1aWxkKCk7CiAgICAgICAgIGRvY3VtZW50LnN0eWxlU2Nv
cGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGU1NzYy
OTM1OGE0Li5hZDg2OTE1NzMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgQW5pbWF0
aW9uVXBkYXRlIENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0ZShFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZW5kZXJTdHlsZSoKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhbmltYXRlZFN0eWxl
ICYmIGNoZWNrRm9yU3RhY2tpbmdDb250ZXh0KSB7Ci0gICAgICAgICAgICAvLyBOb3RlIHRoYXQg
dGhpcyBpcyBzaW1pbGFyIHRvIGNvZGUgaW4gU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5
bGUoKSBidXQgb25seSBuZWVkcyB0byBjb25zdWx0CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
dGhpcyBpcyBzaW1pbGFyIHRvIGNvZGUgaW4gU3R5bGU6OkFkanVzdGVyOjphZGp1c3QoKSBidXQg
b25seSBuZWVkcyB0byBjb25zdWx0CiAgICAgICAgICAgICAvLyBhbmltYXRhYmxlIHByb3BlcnRp
ZXMgdGhhdCBjYW4gdHJpZ2dlciBzdGFja2luZyBjb250ZXh0LgogICAgICAgICAgICAgaWYgKGFu
aW1hdGVkU3R5bGUtPm9wYWNpdHkoKSA8IDEuMGYKICAgICAgICAgICAgICAgICB8fCBhbmltYXRl
ZFN0eWxlLT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaAppbmRleCA3N2E4YzM5MjM1Zi4uMzgzYTkzNTY1NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIFJl
bmRlck1ldGVyOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyUHJvZ3Jlc3M7CiBj
bGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIFN0eWxlUmVzb2x2ZXI7CiAKIGNsYXNzIFJlbmRlclRo
ZW1lIHsKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCmluZGV4IDg3YzZjZTRkN2MwLi45ZDgzZWY4NTdmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC05ODEsNyArOTgx
LDcgQEAgc3RhdGljIGJvb2wgcmFyZU5vbkluaGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheWVy
UmVwYWludChjb25zdCBTdHlsZVJhcmVOb25JbmgKIAogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdl
UmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBPcHRpb25TZXQ8
U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5PiYgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewotICAgIC8vIFN0eWxlUmVzb2x2ZXIgaGFzIGVu
c3VyZWQgdGhhdCB6SW5kZXggaXMgbm9uLWF1dG8gb25seSBpZiBpdCdzIGFwcGxpY2FibGUuCisg
ICAgLy8gU3R5bGU6OlJlc29sdmVyIGhhcyBlbnN1cmVkIHRoYXQgekluZGV4IGlzIG5vbi1hdXRv
IG9ubHkgaWYgaXQncyBhcHBsaWNhYmxlLgogICAgIGlmIChtX2JveERhdGEtPnpJbmRleCgpICE9
IG90aGVyLm1fYm94RGF0YS0+ekluZGV4KCkgfHwgbV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCkg
IT0gb3RoZXIubV9ib3hEYXRhLT5oYXNBdXRvWkluZGV4KCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4
IDNiNTBlODBmZjRjLi41ODUyMmJkOWU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTExMyw3ICsxMTMsNiBAQCBjbGFzcyBQYWlyOwogY2xh
c3MgU2hhZG93RGF0YTsKIGNsYXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBTdHlsZUluaGVyaXRlZERh
dGE7Ci1jbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKIGNs
YXNzIFN0eWxlU2Nyb2xsU25hcFBvcnQ7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApyZW5hbWUgdG8gU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNjQ0M2VjMzJiZGEuLmFl
YTFhMGQxYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTgxLDEw
ICs4MSwxMSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLVN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3VtZW50
KQorUmVzb2x2ZXI6OlJlc29sdmVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcnVsZVNl
dHMoKnRoaXMpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQogI2lmIEVOQUJMRShDU1NfREVW
SUNFX0FEQVBUQVRJT04pCkBAIC0xMjQsNyArMTI1LDcgQEAgU3R5bGVSZXNvbHZlcjo6U3R5bGVS
ZXNvbHZlcihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgbV9ydWxlU2V0cy5yZXNldFVzZXJBZ2Vu
dE1lZGlhUXVlcnlTdHlsZSgpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEN1cnJlbnRT
VkdGb250RmFjZVJ1bGVzKCkKK3ZvaWQgUmVzb2x2ZXI6OmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1
bGVzKCkKIHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChtX2RvY3VtZW50LnN2Z0V4
dGVuc2lvbnMoKSkgewpAQCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRk
Q3VycmVudFNWR0ZvbnRGYWNlUnVsZXMoKQogI2VuZGlmCiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0Pj4mIHN0eWxlU2hlZXRzKQordm9pZCBSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVl
dHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHN0eWxlU2hlZXRzKQogewog
ICAgIG1fcnVsZVNldHMuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoc3R5bGVTaGVldHMsICZtX21l
ZGlhUXVlcnlFdmFsdWF0b3IsIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVycywgdGhpcyk7CiAKQEAg
LTE0OCwxMyArMTQ5LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVT
aGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mCiB9CiAKIC8vIFRoaXMg
aXMgYSBzaW1wbGlmaWVkIHN0eWxlIHNldHRpbmcgZnVuY3Rpb24gZm9yIGtleWZyYW1lIHN0eWxl
cwotdm9pZCBTdHlsZVJlc29sdmVyOjphZGRLZXlmcmFtZVN0eWxlKFJlZjxTdHlsZVJ1bGVLZXlm
cmFtZXM+JiYgcnVsZSkKK3ZvaWQgUmVzb2x2ZXI6OmFkZEtleWZyYW1lU3R5bGUoUmVmPFN0eWxl
UnVsZUtleWZyYW1lcz4mJiBydWxlKQogewogICAgIEF0b21TdHJpbmcgcyhydWxlLT5uYW1lKCkp
OwogICAgIG1fa2V5ZnJhbWVzUnVsZU1hcC5zZXQocy5pbXBsKCksIFdURk1vdmUocnVsZSkpOwog
fQogCi1TdHlsZVJlc29sdmVyOjp+U3R5bGVSZXNvbHZlcigpCitSZXNvbHZlcjo6flJlc29sdmVy
KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9kb2N1bWVudC5pc1Jlc29sdmluZ1RyZWVTdHls
ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0RlbGV0ZWQpOwpAQCAtMTY1LDcgKzE2Niw3
IEBAIFN0eWxlUmVzb2x2ZXI6On5TdHlsZVJlc29sdmVyKCkKICNlbmRpZgogfQogCi1TdHlsZVJl
c29sdmVyOjpTdGF0ZTo6U3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogZG9jdW1lbnRFbGVtZW50U3R5
bGUpCitSZXNvbHZlcjo6U3RhdGU6OlN0YXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIGRvY3VtZW50RWxl
bWVudFN0eWxlKQogICAgIDogbV9lbGVtZW50KCZlbGVtZW50KQogICAgICwgbV9wYXJlbnRTdHls
ZShwYXJlbnRTdHlsZSkKIHsKQEAgLTE4MSwxMiArMTgyLDEyIEBAIFN0eWxlUmVzb2x2ZXI6OlN0
YXRlOjpTdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5CiAgICAgICAgIG1fcm9vdEVsZW1lbnRTdHlsZSA9IGRvY3VtZW50RWxlbWVudFN0eWxl
ID8gZG9jdW1lbnRFbGVtZW50U3R5bGUgOiBkb2N1bWVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZShzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQoraW5saW5lIHZvaWQgUmVzb2x2ZXI6OlN0YXRl
OjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIG1f
c3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6
U3RhdGU6OnNldFBhcmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50
U3R5bGUpCitpbmxpbmUgdm9pZCBSZXNvbHZlcjo6U3RhdGU6OnNldFBhcmVudFN0eWxlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50U3R5bGUpCiB7CiAgICAgbV9vd25lZFBhcmVu
dFN0eWxlID0gV1RGTW92ZShwYXJlbnRTdHlsZSk7CiAgICAgbV9wYXJlbnRTdHlsZSA9IG1fb3du
ZWRQYXJlbnRTdHlsZS5nZXQoKTsKQEAgLTE5OCw3ICsxOTksNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNBdFNoYWRvd0JvdW5kYXJ5KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJu
IHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CiB9CiAKLVN0eWxlOjpC
dWlsZGVyQ29udGV4dCBTdHlsZVJlc29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYg
c3RhdGUpCitCdWlsZGVyQ29udGV4dCBSZXNvbHZlcjo6YnVpbGRlckNvbnRleHQoY29uc3QgU3Rh
dGUmIHN0YXRlKQogewogICAgIHJldHVybiB7CiAgICAgICAgIG1fZG9jdW1lbnQsCkBAIC0yMDgs
NyArMjA5LDcgQEAgU3R5bGU6OkJ1aWxkZXJDb250ZXh0IFN0eWxlUmVzb2x2ZXI6OmJ1aWxkZXJD
b250ZXh0KGNvbnN0IFN0YXRlJiBzdGF0ZSkKICAgICB9OwogfQogCi1FbGVtZW50U3R5bGUgU3R5
bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0
eWxlLCBSdWxlTWF0Y2hpbmdCZWhhdmlvciBtYXRjaGluZ0JlaGF2aW9yLCBjb25zdCBTZWxlY3Rv
ckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCitFbGVtZW50U3R5bGUgUmVzb2x2ZXI6OnN0eWxlRm9y
RWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgUnVsZU1hdGNoaW5nQmVo
YXZpb3IgbWF0Y2hpbmdCZWhhdmlvciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmls
dGVyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVsZXRlZCk7CiAKQEAgLTI1MiwxMSAr
MjUzLDExIEBAIEVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29u
c3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyCiAgICAgaWYgKGNvbGxlY3Rvci5kaWRN
YXRjaFVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKSkKICAgICAgICAgc3R5bGUuc2V0VW5pcXVl
KCk7CiAKLSAgICBhdXRvIGVsZW1lbnRTdHlsZVJlbGF0aW9ucyA9IFN0eWxlOjpjb21taXRSZWxh
dGlvbnNUb1JlbmRlclN0eWxlKHN0eWxlLCBlbGVtZW50LCBjb2xsZWN0b3Iuc3R5bGVSZWxhdGlv
bnMoKSk7CisgICAgYXV0byBlbGVtZW50U3R5bGVSZWxhdGlvbnMgPSBjb21taXRSZWxhdGlvbnNU
b1JlbmRlclN0eWxlKHN0eWxlLCBlbGVtZW50LCBjb2xsZWN0b3Iuc3R5bGVSZWxhdGlvbnMoKSk7
CiAKICAgICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKHN0YXRlLCBjb2xsZWN0b3IubWF0Y2hSZXN1
bHQoKSk7CiAKLSAgICBTdHlsZTo6QWRqdXN0ZXIgYWRqdXN0ZXIoZG9jdW1lbnQoKSwgKnN0YXRl
LnBhcmVudFN0eWxlKCksIHBhcmVudEJveFN0eWxlLCAmZWxlbWVudCk7CisgICAgQWRqdXN0ZXIg
YWRqdXN0ZXIoZG9jdW1lbnQoKSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIHBhcmVudEJveFN0eWxl
LCAmZWxlbWVudCk7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0ZS5zdHlsZSgpLCBzdGF0ZS51
c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICBpZiAoc3RhdGUuc3R5bGUoKS0+aGFz
Vmlld3BvcnRVbml0cygpKQpAQCAtMjY1LDcgKzI2Niw3IEBAIEVsZW1lbnRTdHlsZSBTdHlsZVJl
c29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVu
ZGVyCiAgICAgcmV0dXJuIHsgc3RhdGUudGFrZVN0eWxlKCksIFdURk1vdmUoZWxlbWVudFN0eWxl
UmVsYXRpb25zKSB9OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVz
b2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVu
ZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgU3R5bGVSdWxlS2V5ZnJhbWUqIGtleWZyYW1l
LCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVlKQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZSog
a2V5ZnJhbWUsIEtleWZyYW1lVmFsdWUmIGtleWZyYW1lVmFsdWUpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIW1faXNEZWxldGVkKTsKIApAQCAtMjc3LDEwICsyNzgsMTAgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IEVs
ZW1lbnQmIGVsZW0KICAgICBzdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKmVs
ZW1lbnRTdHlsZSkpOwogICAgIHN0YXRlLnNldFBhcmVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqZWxlbWVudFN0eWxlKSk7CiAKLSAgICBTdHlsZTo6QnVpbGRlciBidWlsZGVyKCpzdGF0
ZS5zdHlsZSgpLCBidWlsZGVyQ29udGV4dChzdGF0ZSksIHJlc3VsdCwgeyBTdHlsZTo6Q2FzY2Fk
ZUxldmVsOjpBdXRob3IgfSk7CisgICAgQnVpbGRlciBidWlsZGVyKCpzdGF0ZS5zdHlsZSgpLCBi
dWlsZGVyQ29udGV4dChzdGF0ZSksIHJlc3VsdCwgeyBDYXNjYWRlTGV2ZWw6OkF1dGhvciB9KTsK
ICAgICBidWlsZGVyLmFwcGx5QWxsUHJvcGVydGllcygpOwogCi0gICAgU3R5bGU6OkFkanVzdGVy
IGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBudWxscHRyLCBudWxs
cHRyKTsKKyAgICBBZGp1c3RlciBhZGp1c3Rlcihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50U3R5
bGUoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0ZS5zdHls
ZSgpLCBzdGF0ZS51c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICAvLyBBZGQgYWxs
IHRoZSBhbmltYXRpbmcgcHJvcGVydGllcyB0byB0aGUga2V5ZnJhbWUuCkBAIC0yOTYsMTIgKzI5
NywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yS2V5ZnJhbWUoY29uc3QgRWxlbWVudCYgZWxlbQogICAgIHJldHVybiBzdGF0ZS50YWtlU3R5
bGUoKTsKIH0KIAotYm9vbCBTdHlsZVJlc29sdmVyOjppc0FuaW1hdGlvbk5hbWVWYWxpZChjb25z
dCBTdHJpbmcmIG5hbWUpCitib29sIFJlc29sdmVyOjppc0FuaW1hdGlvbk5hbWVWYWxpZChjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG1fa2V5ZnJhbWVzUnVsZU1hcC5maW5kKEF0
b21TdHJpbmcobmFtZSkuaW1wbCgpKSAhPSBtX2tleWZyYW1lc1J1bGVNYXAuZW5kKCk7CiB9CiAK
LXZvaWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgS2V5ZnJhbWVM
aXN0JiBsaXN0KQordm9pZCBSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29u
c3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgS2V5
ZnJhbWVMaXN0JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsKIApAQCAtMzk3LDcgKzM5OCw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3Qg
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuCiAgICAgfQogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVkb1N0eWxlUmVx
dWVzdCwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50Qm94U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK3N0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVu
dChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVk
b1N0eWxlUmVxdWVzdCwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50Qm94U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZp
bHRlcikKIHsKICAgICBhdXRvIHN0YXRlID0gU3RhdGUoZWxlbWVudCwgJnBhcmVudFN0eWxlLCBt
X292ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUpOwogCkBAIC00MjgsNyArNDI5LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCYKIAogICAgIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoc3RhdGUs
IGNvbGxlY3Rvci5tYXRjaFJlc3VsdCgpKTsKIAotICAgIFN0eWxlOjpBZGp1c3RlciBhZGp1c3Rl
cihkb2N1bWVudCgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwgcGFyZW50Qm94U3R5bGUsIG51bGxw
dHIpOworICAgIEFkanVzdGVyIGFkanVzdGVyKGRvY3VtZW50KCksICpzdGF0ZS5wYXJlbnRTdHls
ZSgpLCBwYXJlbnRCb3hTdHlsZSwgbnVsbHB0cik7CiAgICAgYWRqdXN0ZXIuYWRqdXN0KCpzdGF0
ZS5zdHlsZSgpLCBzdGF0ZS51c2VyQWdlbnRBcHBlYXJhbmNlU3R5bGUoKSk7CiAKICAgICBpZiAo
c3RhdGUuc3R5bGUoKS0+aGFzVmlld3BvcnRVbml0cygpKQpAQCAtNDM3LDcgKzQzOCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JF
bGVtZW50KGNvbnN0IEVsZW1lbnQmCiAgICAgcmV0dXJuIHN0YXRlLnRha2VTdHlsZSgpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yUGFn
ZShpbnQgcGFnZUluZGV4KQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZXNvbHZlcjo6
c3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNE
ZWxldGVkKTsKIApAQCAtNDU1LDE0ICs0NTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKIAogICAgIGF1
dG8mIHJlc3VsdCA9IGNvbGxlY3Rvci5tYXRjaFJlc3VsdCgpOwogCi0gICAgU3R5bGU6OkJ1aWxk
ZXIgYnVpbGRlcigqc3RhdGUuc3R5bGUoKSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCByZXN1bHQs
IHsgU3R5bGU6OkNhc2NhZGVMZXZlbDo6QXV0aG9yIH0pOworICAgIEJ1aWxkZXIgYnVpbGRlcigq
c3RhdGUuc3R5bGUoKSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCByZXN1bHQsIHsgQ2FzY2FkZUxl
dmVsOjpBdXRob3IgfSk7CiAgICAgYnVpbGRlci5hcHBseUFsbFByb3BlcnRpZXMoKTsKIAogICAg
IC8vIE5vdyByZXR1cm4gdGhlIHN0eWxlLgogICAgIHJldHVybiBzdGF0ZS50YWtlU3R5bGUoKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpkZWZhdWx0
U3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IFJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIo
KTsKIApAQCAtNDcxLDkgKzQ3Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5
bGVSZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50CiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShzdGFuZGFyZEZhbWlseSk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEtleXdvcmRTaXplRnJvbUlkZW50aWZpZXIoQ1NTVmFsdWVNZWRpdW0pOwogCi0g
ICAgYXV0byBzaXplID0gU3R5bGU6OmZvbnRTaXplRm9yS2V5d29yZChDU1NWYWx1ZU1lZGl1bSwg
ZmFsc2UsIGRvY3VtZW50KCkpOworICAgIGF1dG8gc2l6ZSA9IGZvbnRTaXplRm9yS2V5d29yZChD
U1NWYWx1ZU1lZGl1bSwgZmFsc2UsIGRvY3VtZW50KCkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRTcGVjaWZpZWRTaXplKHNpemUpOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoU3R5bGU6OmNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzaXplLCBmb250RGVz
Y3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgaXM8U1ZHRWxlbWVudD4oZWxlbWVudCksIHN0eWxl
LmdldCgpLCBkb2N1bWVudCgpKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6
ZShjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9u
LmlzQWJzb2x1dGVTaXplKCksIGlzPFNWR0VsZW1lbnQ+KGVsZW1lbnQpLCBzdHlsZS5nZXQoKSwg
ZG9jdW1lbnQoKSkpOwogCiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNob3VsZEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKHNldHRpbmdzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSA/
IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpZZXMgOiBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6
Tm8pOwogICAgIHN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRp
b24pKTsKQEAgLTQ4MywxMiArNDg0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
U3R5bGVSZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50CiAgICAg
cmV0dXJuIHN0eWxlOwogfQogCi1WZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUmVzb2x2
ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVk
IHJ1bGVzVG9JbmNsdWRlKQorVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6c3R5
bGVSdWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcnVsZXNU
b0luY2x1ZGUpCiB7CiAgICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1l
bnQsIFBzZXVkb0lkOjpOb25lLCBydWxlc1RvSW5jbHVkZSk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8
U3R5bGVSdWxlPj4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29u
c3QgRWxlbWVudCogZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVzVG9J
bmNsdWRlKQorVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6cHNldWRvU3R5bGVS
dWxlc0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQs
IHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIGlmICghZWxlbWVudCkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTUyOCwyNyArNTI5LDI3IEBAIHN0YXRpYyBib29sIGVsZW1lbnRUeXBl
SGFzQXBwZWFyYW5jZUZyb21VQVN0eWxlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAg
IHx8IGxvY2FsTmFtZSA9PSBIVE1MTmFtZXM6Om1ldGVyVGFnOwogfQogCi12b2lkIFN0eWxlUmVz
b2x2ZXI6OmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKQordm9pZCBSZXNvbHZl
cjo6aW52YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpCiB7CiAgICAgbV9tYXRjaGVk
RGVjbGFyYXRpb25zQ2FjaGUuaW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6
OmNsZWFyQ2FjaGVkRGVjbGFyYXRpb25zQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMoKQordm9pZCBS
ZXNvbHZlcjo6Y2xlYXJDYWNoZWREZWNsYXJhdGlvbnNBZmZlY3RlZEJ5Vmlld3BvcnRVbml0cygp
CiB7CiAgICAgbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuY2xlYXJFbnRyaWVzQWZmZWN0ZWRC
eVZpZXdwb3J0VW5pdHMoKTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQ
cm9wZXJ0aWVzKFN0YXRlJiBzdGF0ZSwgY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBV
c2VNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgdXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlKQor
dm9pZCBSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhTdGF0ZSYgc3RhdGUsIGNvbnN0
IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlIHVz
ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSkKIHsKLSAgICB1bnNpZ25lZCBjYWNoZUhhc2ggPSB1
c2VNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgPT0gVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hl
OjpZZXMgPyBTdHlsZTo6TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpjb21wdXRlSGFzaChtYXRj
aFJlc3VsdCkgOiAwOwotICAgIGF1dG8gaW5jbHVkZWRQcm9wZXJ0aWVzID0gU3R5bGU6OlByb3Bl
cnR5Q2FzY2FkZTo6SW5jbHVkZWRQcm9wZXJ0aWVzOjpBbGw7CisgICAgdW5zaWduZWQgY2FjaGVI
YXNoID0gdXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlID09IFVzZU1hdGNoZWREZWNsYXJhdGlv
bnNDYWNoZTo6WWVzID8gTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpjb21wdXRlSGFzaChtYXRj
aFJlc3VsdCkgOiAwOworICAgIGF1dG8gaW5jbHVkZWRQcm9wZXJ0aWVzID0gUHJvcGVydHlDYXNj
YWRlOjpJbmNsdWRlZFByb3BlcnRpZXM6OkFsbDsKIAogICAgIGF1dG8mIHN0eWxlID0gKnN0YXRl
LnN0eWxlKCk7CiAgICAgYXV0byYgcGFyZW50U3R5bGUgPSAqc3RhdGUucGFyZW50U3R5bGUoKTsK
ICAgICBhdXRvJiBlbGVtZW50ID0gKnN0YXRlLmVsZW1lbnQoKTsKIAogICAgIGF1dG8qIGNhY2hl
RW50cnkgPSBtX21hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5maW5kKGNhY2hlSGFzaCwgbWF0Y2hS
ZXN1bHQpOwotICAgIGlmIChjYWNoZUVudHJ5ICYmIFN0eWxlOjpNYXRjaGVkRGVjbGFyYXRpb25z
Q2FjaGU6OmlzQ2FjaGVhYmxlKGVsZW1lbnQsIHN0eWxlLCBwYXJlbnRTdHlsZSkpIHsKKyAgICBp
ZiAoY2FjaGVFbnRyeSAmJiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OmlzQ2FjaGVhYmxlKGVs
ZW1lbnQsIHN0eWxlLCBwYXJlbnRTdHlsZSkpIHsKICAgICAgICAgLy8gV2UgY2FuIGJ1aWxkIHVw
IHRoZSBzdHlsZSBieSBjb3B5aW5nIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcyBmcm9tIGFuIGVh
cmxpZXIgc3R5bGUgb2JqZWN0IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGV4YWN0CiAgICAgICAgIC8v
IHN0eWxlIGRlY2xhcmF0aW9ucy4gV2UgdGhlbiBvbmx5IG5lZWQgdG8gYXBwbHkgdGhlIGluaGVy
aXRlZCBwcm9wZXJ0aWVzLCBpZiBhbnksIGFzIHRoZWlyIHZhbHVlcyBjYW4gZGVwZW5kIG9uIHRo
ZSAKICAgICAgICAgLy8gZWxlbWVudCBjb250ZXh0LiBUaGlzIGlzIGZhc3QgYW5kIHNhdmVzIG1l
bW9yeSBieSByZXVzaW5nIHRoZSBzdHlsZSBkYXRhIHN0cnVjdHVyZXMuCkBAIC01NjUsNyArNTY2
LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKFN0YXRlJiBz
dGF0ZSwgY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGMKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaW5jbHVkZWRQcm9wZXJ0aWVzID0gU3R5bGU6OlByb3Bl
cnR5Q2FzY2FkZTo6SW5jbHVkZWRQcm9wZXJ0aWVzOjpJbmhlcml0ZWRPbmx5OworICAgICAgICBp
bmNsdWRlZFByb3BlcnRpZXMgPSBQcm9wZXJ0eUNhc2NhZGU6OkluY2x1ZGVkUHJvcGVydGllczo6
SW5oZXJpdGVkT25seTsKICAgICB9CiAKICAgICBpZiAoZWxlbWVudFR5cGVIYXNBcHBlYXJhbmNl
RnJvbVVBU3R5bGUoZWxlbWVudCkpIHsKQEAgLTU3MywxMyArNTc0LDEzIEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhTdGF0ZSYgc3RhdGUsIGNvbnN0IE1hdGNo
UmVzdWx0JiBtYXRjCiAgICAgICAgIC8vIElmIHNvLCB3ZSBjYWNoZSB0aGUgYm9yZGVyIGFuZCBi
YWNrZ3JvdW5kIHN0eWxlcyBzbyB0aGF0IFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSgpCiAgICAg
ICAgIC8vIGNhbiBsb29rIGF0IHRoZW0gbGF0ZXIgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGEg
c3R5bGVkIGZvcm0gY29udHJvbCBvciBub3QuCiAgICAgICAgIGF1dG8gdXNlckFnZW50U3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoc3R5bGUpOwotICAgICAgICBTdHlsZTo6QnVpbGRlciBi
dWlsZGVyKCp1c2VyQWdlbnRTdHlsZSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCBtYXRjaFJlc3Vs
dCwgeyBTdHlsZTo6Q2FzY2FkZUxldmVsOjpVc2VyQWdlbnQgfSk7CisgICAgICAgIEJ1aWxkZXIg
YnVpbGRlcigqdXNlckFnZW50U3R5bGUsIGJ1aWxkZXJDb250ZXh0KHN0YXRlKSwgbWF0Y2hSZXN1
bHQsIHsgQ2FzY2FkZUxldmVsOjpVc2VyQWdlbnQgfSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwbHlB
bGxQcm9wZXJ0aWVzKCk7CiAKICAgICAgICAgc3RhdGUuc2V0VXNlckFnZW50QXBwZWFyYW5jZVN0
eWxlKFdURk1vdmUodXNlckFnZW50U3R5bGUpKTsKICAgICB9CiAKLSAgICBTdHlsZTo6QnVpbGRl
ciBidWlsZGVyKCpzdGF0ZS5zdHlsZSgpLCBidWlsZGVyQ29udGV4dChzdGF0ZSksIG1hdGNoUmVz
dWx0LCBTdHlsZTo6YWxsQ2FzY2FkZUxldmVscygpLCBpbmNsdWRlZFByb3BlcnRpZXMpOworICAg
IEJ1aWxkZXIgYnVpbGRlcigqc3RhdGUuc3R5bGUoKSwgYnVpbGRlckNvbnRleHQoc3RhdGUpLCBt
YXRjaFJlc3VsdCwgYWxsQ2FzY2FkZUxldmVscygpLCBpbmNsdWRlZFByb3BlcnRpZXMpOwogCiAg
ICAgLy8gSGlnaCBwcmlvcml0eSBwcm9wZXJ0aWVzIG1heSBhZmZlY3QgcmVzb2x1dGlvbiBvZiBv
dGhlciBwcm9wZXJ0aWVzICh0aGV5IGFyZSBtb3N0bHkgZm9udCByZWxhdGVkKS4KICAgICBidWls
ZGVyLmFwcGx5SGlnaFByaW9yaXR5UHJvcGVydGllcygpOwpAQCAtNTk4LDE4ICs1OTksMTggQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKFN0YXRlJiBzdGF0ZSwg
Y29uc3QgTWF0Y2hSZXN1bHQmIG1hdGMKICAgICBpZiAoY2FjaGVFbnRyeSB8fCAhY2FjaGVIYXNo
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoU3R5bGU6Ok1hdGNoZWREZWNsYXJhdGlvbnND
YWNoZTo6aXNDYWNoZWFibGUoZWxlbWVudCwgc3R5bGUsIHBhcmVudFN0eWxlKSkKKyAgICBpZiAo
TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjppc0NhY2hlYWJsZShlbGVtZW50LCBzdHlsZSwgcGFy
ZW50U3R5bGUpKQogICAgICAgICBtX21hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5hZGQoc3R5bGUs
IHBhcmVudFN0eWxlLCBjYWNoZUhhc2gsIG1hdGNoUmVzdWx0KTsKIH0KIAotdm9pZCBTdHlsZVJl
c29sdmVyOjphZGRWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHQoY29uc3QgTWVkaWFR
dWVyeUV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVzdWx0KQordm9pZCBSZXNvbHZlcjo6
YWRkVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlFeHBy
ZXNzaW9uJiBleHByZXNzaW9uLCBib29sIHJlc3VsdCkKIHsKICAgICBtX3ZpZXdwb3J0RGVwZW5k
ZW50TWVkaWFRdWVyeVJlc3VsdHMuYXBwZW5kKE1lZGlhUXVlcnlSZXN1bHQgeyBleHByZXNzaW9u
LCByZXN1bHQgfSk7CiB9CiAKLWJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVkaWFRdWVyaWVzQWZm
ZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlKCkgY29uc3QKK2Jvb2wgUmVzb2x2ZXI6Omhhc01lZGlhUXVl
cmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0CiB7Ci0gICAgTE9HKE1lZGlhUXVl
cmllcywgIlN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENo
YW5nZSBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKKyAgICBMT0coTWVkaWFRdWVyaWVzLCAiU3R5bGU6
OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UgZXZhbHVh
dGluZyBxdWVyaWVzIik7CiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiBtX3ZpZXdwb3J0RGVwZW5k
ZW50TWVkaWFRdWVyeVJlc3VsdHMpIHsKICAgICAgICAgaWYgKG1fbWVkaWFRdWVyeUV2YWx1YXRv
ci5ldmFsdWF0ZShyZXN1bHQuZXhwcmVzc2lvbikgIT0gcmVzdWx0LnJlc3VsdCkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNjE3LDE0ICs2MTgsMTQgQEAgYm9vbCBTdHlsZVJlc29sdmVy
OjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjphZGRBY2Nlc3NpYmlsaXR5U2V0
dGluZ3NEZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9u
JiBleHByZXNzaW9uLCBib29sIHJlc3VsdCkKK3ZvaWQgUmVzb2x2ZXI6OmFkZEFjY2Vzc2liaWxp
dHlTZXR0aW5nc0RlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHQoY29uc3QgTWVkaWFRdWVyeUV4cHJl
c3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVzdWx0KQogewogICAgIG1fYWNjZXNzaWJpbGl0eVNl
dHRpbmdzRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuYXBwZW5kKE1lZGlhUXVlcnlSZXN1bHQg
eyBleHByZXNzaW9uLCByZXN1bHQgfSk7CiB9CiAKLWJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVk
aWFRdWVyaWVzQWZmZWN0ZWRCeUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZSgpIGNvbnN0Citi
b29sIFJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRp
bmdzQ2hhbmdlKCkgY29uc3QKIHsKLSAgICBMT0coTWVkaWFRdWVyaWVzLCAiU3R5bGVSZXNvbHZl
cjo6aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZSBl
dmFsdWF0aW5nIHF1ZXJpZXMiKTsKKyAgICBMT0coTWVkaWFRdWVyaWVzLCAiU3R5bGU6OlJlc29s
dmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdl
IGV2YWx1YXRpbmcgcXVlcmllcyIpOwogICAgIGZvciAoYXV0byYgcmVzdWx0IDogbV9hY2Nlc3Np
YmlsaXR5U2V0dGluZ3NEZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cykgewogICAgICAgICBpZiAo
bV9tZWRpYVF1ZXJ5RXZhbHVhdG9yLmV2YWx1YXRlKHJlc3VsdC5leHByZXNzaW9uKSAhPSByZXN1
bHQucmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MzIsMTQgKzYzMywxNCBA
QCBib29sIFN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlBY2Nlc3NpYmls
aXR5U2V0dGluZ3NDaGFuZ2UoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBT
dHlsZVJlc29sdmVyOjphZGRBcHBlYXJhbmNlRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdChjb25z
dCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXN1bHQpCit2b2lkIFJl
c29sdmVyOjphZGRBcHBlYXJhbmNlRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdChjb25zdCBNZWRp
YVF1ZXJ5RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXN1bHQpCiB7CiAgICAgbV9hcHBl
YXJhbmNlRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuYXBwZW5kKE1lZGlhUXVlcnlSZXN1bHQg
eyBleHByZXNzaW9uLCByZXN1bHQgfSk7CiB9CiAKLWJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVk
aWFRdWVyaWVzQWZmZWN0ZWRCeUFwcGVhcmFuY2VDaGFuZ2UoKSBjb25zdAorYm9vbCBSZXNvbHZl
cjo6aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeUFwcGVhcmFuY2VDaGFuZ2UoKSBjb25zdAogewot
ICAgIExPRyhNZWRpYVF1ZXJpZXMsICJTdHlsZVJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZl
Y3RlZEJ5QXBwZWFyYW5jZUNoYW5nZSBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKKyAgICBMT0coTWVk
aWFRdWVyaWVzLCAiU3R5bGU6OlJlc29sdmVyOjpoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QXBw
ZWFyYW5jZUNoYW5nZSBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKICAgICBmb3IgKGF1dG8mIHJlc3Vs
dCA6IG1fYXBwZWFyYW5jZURlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzKSB7CiAgICAgICAgIGlm
IChtX21lZGlhUXVlcnlFdmFsdWF0b3IuZXZhbHVhdGUocmVzdWx0LmV4cHJlc3Npb24pICE9IHJl
c3VsdC5yZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY0Nyw0ICs2NDgsNSBA
QCBib29sIFN0eWxlUmVzb2x2ZXI6Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlBcHBlYXJhbmNl
Q2hhbmdlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFN0
eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5o
CnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIu
aAppbmRleCAwZTI4MjQwY2VlMi4uZTIyMjQ1MzM4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlci5oCkBAIC0zOSwzNCArMzksMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlOwotY2xhc3MgQ1NTRm9udEZhY2U7Ci1jbGFzcyBDU1NG
b250RmFjZVJ1bGU7Ci1jbGFzcyBDU1NGb250VmFsdWU7Ci1jbGFzcyBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOwotY2xhc3MgQ1NTSW1hZ2VTZXRWYWx1ZTsKLWNsYXNzIENTU0ltYWdlVmFsdWU7Ci1j
bGFzcyBDU1NQYWdlUnVsZTsKLWNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwotY2xhc3MgQ1NTUHJv
cGVydHk7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwotY2xhc3MgQ1NTVmFsdWU7Ci1jbGFzcyBDb250
YWluZXJOb2RlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwotY2xhc3MgRnJhbWU7
Ci1jbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBLZXlmcmFtZVZh
bHVlOwotY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKLWNsYXNzIE5vZGU7CitjbGFzcyBQYWdl
UnVsZUNvbGxlY3RvcjsKIGNsYXNzIFJ1bGVEYXRhOwogY2xhc3MgUnVsZVNldDsKIGNsYXNzIFNl
bGVjdG9yRmlsdGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBTdHlsZUNhY2hlZEltYWdlOwot
Y2xhc3MgU3R5bGVHZW5lcmF0ZWRJbWFnZTsKLWNsYXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBTdHls
ZVJ1bGVLZXlmcmFtZTsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFN0eWxlUnVsZTsK
QEAgLTc0LDEwICs1Niw3IEBAIGNsYXNzIFN0eWxlUnVsZUtleWZyYW1lczsKIGNsYXNzIFN0eWxl
UnVsZVBhZ2U7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldExpc3Q7Ci1jbGFz
cyBTdHlsZWRFbGVtZW50OwotY2xhc3MgU1ZHRWxlbWVudDsKIGNsYXNzIFZpZXdwb3J0U3R5bGVS
ZXNvbHZlcjsKLXN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKIC8vIE1hdGNoT25seVVz
ZXJBZ2VudFJ1bGVzIGlzIHVzZWQgaW4gbWVkaWEgcXVlcmllcywgd2hlcmUgcmVsYXRpdmUgdW5p
dHMKIC8vIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gdGhlIGRvY3VtZW50IHJvb3QgZWxl
bWVudCBzdHlsZSwgYW5kIHN0eWxlZCBvbmx5CkBAIC04OSwyMiArNjgsMjMgQEAgZW51bSBjbGFz
cyBSdWxlTWF0Y2hpbmdCZWhhdmlvcjogdWludDhfdCB7CiAgICAgTWF0Y2hPbmx5VXNlckFnZW50
UnVsZXMsCiB9OwogCituYW1lc3BhY2UgU3R5bGUgeworCiBzdHJ1Y3QgRWxlbWVudFN0eWxlIHsK
LSAgICBFbGVtZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZW5kZXJTdHls
ZSwgc3RkOjp1bmlxdWVfcHRyPFN0eWxlOjpSZWxhdGlvbnM+IHJlbGF0aW9ucyA9IHsgfSkKKyAg
ICBFbGVtZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiByZW5kZXJTdHlsZSwg
c3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4gcmVsYXRpb25zID0geyB9KQogICAgICAgICA6IHJl
bmRlclN0eWxlKFdURk1vdmUocmVuZGVyU3R5bGUpKQogICAgICAgICAsIHJlbGF0aW9ucyhXVEZN
b3ZlKHJlbGF0aW9ucykpCiAgICAgeyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHJlbmRlclN0eWxlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6UmVsYXRpb25zPiBy
ZWxhdGlvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4gcmVsYXRpb25zOwogfTsK
IAotLy8gVGhpcyBjbGFzcyBzZWxlY3RzIGEgUmVuZGVyU3R5bGUgZm9yIGEgZ2l2ZW4gZWxlbWVu
dCBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3R5bGVzaGVldHMuCi1jbGFzcyBTdHlsZVJlc29s
dmVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVJlc29sdmVyKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitjbGFzcyBSZXNvbHZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVzb2x2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdHls
ZVJlc29sdmVyKERvY3VtZW50Jik7Ci0gICAgflN0eWxlUmVzb2x2ZXIoKTsKKyAgICBSZXNvbHZl
cihEb2N1bWVudCYpOworICAgIH5SZXNvbHZlcigpOwogCiAgICAgRWxlbWVudFN0eWxlIHN0eWxl
Rm9yRWxlbWVudChjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBSdWxlTWF0Y2hp
bmdCZWhhdmlvciA9IFJ1bGVNYXRjaGluZ0JlaGF2aW9yOjpNYXRjaEFsbFJ1bGVzLCBjb25zdCBT
ZWxlY3RvckZpbHRlciogPSBudWxscHRyKTsKIApAQCAtMTc1LDcgKzE1NSw3IEBAIHB1YmxpYzoK
ICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkgeyBy
ZXR1cm4gbV9pbnNwZWN0b3JDU1NPTVdyYXBwZXJzOyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIFBhZ2VSdWxlQ29sbGVjdG9yOworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpQYWdl
UnVsZUNvbGxlY3RvcjsKIAogICAgIGNsYXNzIFN0YXRlIHsKICAgICBwdWJsaWM6CkBAIC0yMDYs
NyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBtX3VzZXJBZ2VudEFwcGVhcmFuY2VTdHlsZTsKICAgICB9OwogCi0gICAgU3R5bGU6OkJ1aWxk
ZXJDb250ZXh0IGJ1aWxkZXJDb250ZXh0KGNvbnN0IFN0YXRlJik7CisgICAgQnVpbGRlckNvbnRl
eHQgYnVpbGRlckNvbnRleHQoY29uc3QgU3RhdGUmKTsKIAogICAgIGVudW0gY2xhc3MgVXNlTWF0
Y2hlZERlY2xhcmF0aW9uc0NhY2hlIHsgWWVzLCBObyB9OwogICAgIHZvaWQgYXBwbHlNYXRjaGVk
UHJvcGVydGllcyhTdGF0ZSYsIGNvbnN0IE1hdGNoUmVzdWx0JiwgVXNlTWF0Y2hlZERlY2xhcmF0
aW9uc0NhY2hlID0gVXNlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjpZZXMpOwpAQCAtMjMzLDE0
ICsyMTMsMTQgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMgbV9pbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzOwogCi0gICAgU3R5bGU6Ok1hdGNoZWREZWNsYXJhdGlvbnNDYWNo
ZSBtX21hdGNoZWREZWNsYXJhdGlvbnNDYWNoZTsKKyAgICBNYXRjaGVkRGVjbGFyYXRpb25zQ2Fj
aGUgbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU7CiAKICAgICBib29sIG1fbWF0Y2hBdXRob3JB
bmRVc2VyU3R5bGVzIHsgdHJ1ZSB9OwotICAgIC8vIFNlZSBpZiB3ZSBzdGlsbCBoYXZlIGNyYXNo
ZXMgd2hlcmUgU3R5bGVSZXNvbHZlciBnZXRzIGRlbGV0ZWQgZWFybHkuCisgICAgLy8gU2VlIGlm
IHdlIHN0aWxsIGhhdmUgY3Jhc2hlcyB3aGVyZSBSZXNvbHZlciBnZXRzIGRlbGV0ZWQgZWFybHku
CiAgICAgYm9vbCBtX2lzRGVsZXRlZCB7IGZhbHNlIH07CiB9OwogCi1pbmxpbmUgYm9vbCBTdHls
ZVJlc29sdmVyOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBBdG9tU3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25zdAoraW5saW5lIGJvb2wgUmVz
b2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEF0b21TdHJpbmcgJmF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdHRy
aWJ1dGVOYW1lLmlzRW1wdHkoKSk7CiAgICAgaWYgKGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpKQpA
QCAtMjQ4LDEwICsyMjgsMTEgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0
b3JGb3JBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QKICAgICByZXR1cm4g
bV9ydWxlU2V0cy5mZWF0dXJlcygpLmF0dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzLmNvbnRhaW5z
KGF0dHJpYnV0ZU5hbWUpOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNTZWxl
Y3RvckZvcklkKGNvbnN0IEF0b21TdHJpbmcmIGlkVmFsdWUpIGNvbnN0CitpbmxpbmUgYm9vbCBS
ZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9tU3RyaW5nJiBpZFZhbHVlKSBjb25z
dAogewogICAgIEFTU0VSVCghaWRWYWx1ZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBtX3J1bGVT
ZXRzLmZlYXR1cmVzKCkuaWRzSW5SdWxlcy5jb250YWlucyhpZFZhbHVlKTsKIH0KIAorfSAvLyBu
YW1lc3BhY2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5jcHAKaW5kZXggZGNiNjViYzA5YzMuLjNjOWZkODhhMmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlLmNwcApAQCAtODgsNyArODgsNyBAQCBib29sIFNjb3BlOjpzaG91bGRV
c2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLVN0eWxlUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCitSZXNvbHZl
ciYgU2NvcGU6OnJlc29sdmVyKCkKIHsKICAgICBpZiAoc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50
U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSkKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQudXNl
ckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKTsKQEAgLTk2LDcgKzk2LDcgQEAgU3R5bGVS
ZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKICAgICAg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRp
bmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9yZXNvbHZlciA9IG1ha2VVbmlx
dWU8U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7CisgICAgICAgIG1fcmVzb2x2ZXIgPSBtYWtl
VW5pcXVlPFJlc29sdmVyPihtX2RvY3VtZW50KTsKIAogICAgICAgICBpZiAoIW1fc2hhZG93Um9v
dCkgewogICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQo
KTsKQEAgLTExNyw3ICsxMTcsNyBAQCBTdHlsZVJlc29sdmVyJiBTY29wZTo6cmVzb2x2ZXIoKQog
ICAgIHJldHVybiAqbV9yZXNvbHZlcjsKIH0KIAotU3R5bGVSZXNvbHZlciogU2NvcGU6OnJlc29s
dmVySWZFeGlzdHMoKQorUmVzb2x2ZXIqIFNjb3BlOjpyZXNvbHZlcklmRXhpc3RzKCkKIHsKICAg
ICBpZiAoc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSkK
ICAgICAgICAgcmV0dXJuICZtX2RvY3VtZW50LnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyKCk7CkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBTY29wZTo6Y29sbGVjdEFjdGl2ZVN0eWxl
U2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4+JiBzaGVldHMpCiAgICAgfQogfQogCi1T
Y29wZTo6U3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgU2NvcGU6OmFuYWx5emVTdHlsZVNoZWV0Q2hh
bmdlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdTdHlsZXNoZWV0cywg
Ym9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpCitTY29wZTo6UmVzb2x2ZXJVcGRhdGVUeXBl
IFNjb3BlOjphbmFseXplU3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxj
KQogewogICAgIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjID0gdHJ1ZTsKICAgICAKQEAgLTQxNSwx
NyArNDE1LDE3IEBAIFNjb3BlOjpTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBTY29wZTo6YW5hbHl6
ZVN0eWxlU2hlZXRDaGFuZ2UoY29uc3QgVmVjdG9yPFJlZlB0CiAgICAgICAgIGFkZGVkU2hlZXRz
LmFwcGVuZCgmbmV3U3R5bGVzaGVldHNbbmV3SW5kZXhdLT5jb250ZW50cygpKTsKICAgICAgICAg
KytuZXdJbmRleDsKICAgICB9Ci0gICAgLy8gSWYgYWxsIG5ldyBzaGVldHMgd2VyZSBhZGRlZCBh
dCB0aGUgZW5kIG9mIHRoZSBsaXN0IHdlIGNhbiBqdXN0IGFkZCB0aGVtIHRvIGV4aXN0aW5nIFN0
eWxlUmVzb2x2ZXIuCisgICAgLy8gSWYgYWxsIG5ldyBzaGVldHMgd2VyZSBhZGRlZCBhdCB0aGUg
ZW5kIG9mIHRoZSBsaXN0IHdlIGNhbiBqdXN0IGFkZCB0aGVtIHRvIGV4aXN0aW5nIFJlc29sdmVy
LgogICAgIC8vIElmIHRoZXJlIHdlcmUgaW5zZXJ0aW9ucyB3ZSBuZWVkIHRvIHJlLWFkZCBhbGwg
dGhlIHN0eWxlc2hlZXRzIHNvIHJ1bGVzIGFyZSBvcmRlcmVkIGNvcnJlY3RseS4KLSAgICBhdXRv
IHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID0gaGFzSW5zZXJ0aW9ucyA/IFJlc2V0IDogQWRkaXRp
dmU7CisgICAgYXV0byBSZXNvbHZlclVwZGF0ZVR5cGUgPSBoYXNJbnNlcnRpb25zID8gUmVzZXQg
OiBBZGRpdGl2ZTsKIAogICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IHBhcnNpbmcgdGhlIGJvZHkg
YW5kIHNvIG1heSBoYXZlIHNpZ25pZmljYW50IGFtb3VudCBvZiBlbGVtZW50cywgcHV0IHNvbWUg
ZWZmb3J0IGludG8gdHJ5aW5nIHRvIGF2b2lkIHN0eWxlIHJlY2FsY3MuCiAgICAgaWYgKCFtX2Rv
Y3VtZW50LmJvZHlPckZyYW1lc2V0KCkgfHwgbV9kb2N1bWVudC5oYXNOb2Rlc1dpdGhOb25GaW5h
bFN0eWxlKCkgfHwgbV9kb2N1bWVudC5oYXNOb2Rlc1dpdGhNaXNzaW5nU3R5bGUoKSkKLSAgICAg
ICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlOworICAgICAgICByZXR1cm4gUmVzb2x2
ZXJVcGRhdGVUeXBlOwogCiAgICAgSW52YWxpZGF0b3IgaW52YWxpZGF0b3IoYWRkZWRTaGVldHMs
IHN0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpKTsKICAgICBpZiAoaW52YWxpZGF0
b3IuZGlydGllc0FsbFN0eWxlKCkpCi0gICAgICAgIHJldHVybiBzdHlsZVJlc29sdmVyVXBkYXRl
VHlwZTsKKyAgICAgICAgcmV0dXJuIFJlc29sdmVyVXBkYXRlVHlwZTsKIAogICAgIGlmIChtX3No
YWRvd1Jvb3QpCiAgICAgICAgIGludmFsaWRhdG9yLmludmFsaWRhdGVTdHlsZSgqbV9zaGFkb3dS
b290KTsKQEAgLTQzNCw3ICs0MzQsNyBAQCBTY29wZTo6U3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUg
U2NvcGU6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFZlY3RvcjxSZWZQdAogCiAgICAg
cmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSBmYWxzZTsKIAotICAgIHJldHVybiBzdHlsZVJlc29s
dmVyVXBkYXRlVHlwZTsKKyAgICByZXR1cm4gUmVzb2x2ZXJVcGRhdGVUeXBlOwogfQogCiBzdGF0
aWMgdm9pZCBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgcmVzdWx0LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+
PiYgc2hlZXRzKQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGZpbHRlckVuYWJsZWRO
b25lbXB0eUNTU1N0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiByCiAg
ICAgfQogfQogCi1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlSG9zdEFuZFNsb3R0ZWRTdHlsZUlmTmVl
ZGVkKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyKQorc3Rh
dGljIHZvaWQgaW52YWxpZGF0ZUhvc3RBbmRTbG90dGVkU3R5bGVJZk5lZWRlZChTaGFkb3dSb290
JiBzaGFkb3dSb290LCBSZXNvbHZlciYgcmVzb2x2ZXIpCiB7CiAgICAgYXV0byYgaG9zdCA9ICpz
aGFkb3dSb290Lmhvc3QoKTsKICAgICBpZiAoIXJlc29sdmVyLnJ1bGVTZXRzKCkuYXV0aG9yU3R5
bGUoKS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKQEAgLTQ5MCwxMSArNDkwLDEx
IEBAIHZvaWQgU2NvcGU6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZVR5cGUgdXBkYXRl
VHlwZSkKICAgICBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NT
dHlsZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgYm9vbCByZXF1aXJlc0Z1bGxT
dHlsZVJlY2FsYyA9IHRydWU7Ci0gICAgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgc3R5bGVSZXNv
bHZlclVwZGF0ZVR5cGUgPSBSZWNvbnN0cnVjdDsKKyAgICBSZXNvbHZlclVwZGF0ZVR5cGUgUmVz
b2x2ZXJVcGRhdGVUeXBlID0gUmVjb25zdHJ1Y3Q7CiAgICAgaWYgKHVwZGF0ZVR5cGUgPT0gVXBk
YXRlVHlwZTo6QWN0aXZlU2V0KQotICAgICAgICBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9IGFu
YWx5emVTdHlsZVNoZWV0Q2hhbmdlKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCByZXF1aXJlc0Z1bGxT
dHlsZVJlY2FsYyk7CisgICAgICAgIFJlc29sdmVyVXBkYXRlVHlwZSA9IGFuYWx5emVTdHlsZVNo
ZWV0Q2hhbmdlKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7
CiAKLSAgICB1cGRhdGVTdHlsZVJlc29sdmVyKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBzdHlsZVJl
c29sdmVyVXBkYXRlVHlwZSk7CisgICAgdXBkYXRlUmVzb2x2ZXIoYWN0aXZlQ1NTU3R5bGVTaGVl
dHMsIFJlc29sdmVyVXBkYXRlVHlwZSk7CiAKICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNo
ZWV0TGlzdEZvckZhc3RMb29rdXAgPSBudWxscHRyOwogICAgIG1fYWN0aXZlU3R5bGVTaGVldHMu
c3dhcChhY3RpdmVDU1NTdHlsZVNoZWV0cyk7CkBAIC01MTgsNyArNTE4LDcgQEAgdm9pZCBTY29w
ZTo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlVHlwZSB1cGRhdGVUeXBlKQogICAgIH0K
IH0KIAotdm9pZCBTY29wZTo6dXBkYXRlU3R5bGVSZXNvbHZlcihWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYgYWN0aXZlU3R5bGVTaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHVw
ZGF0ZVR5cGUpCit2b2lkIFNjb3BlOjp1cGRhdGVSZXNvbHZlcihWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYgYWN0aXZlU3R5bGVTaGVldHMsIFJlc29sdmVyVXBkYXRlVHlwZSB1cGRhdGVU
eXBlKQogewogICAgIGlmICh1cGRhdGVUeXBlID09IFJlY29uc3RydWN0KSB7CiAgICAgICAgIGNs
ZWFyUmVzb2x2ZXIoKTsKQEAgLTYwMyw3ICs2MDMsNyBAQCB2b2lkIFNjb3BlOjpzY2hlZHVsZVVw
ZGF0ZShVcGRhdGVUeXBlIHVwZGF0ZSkKICAgICAgICAgICAgIGludmFsaWRhdGVIb3N0QW5kU2xv
dHRlZFN0eWxlSWZOZWVkZWQoKm1fc2hhZG93Um9vdCwgKm1fcmVzb2x2ZXIpOwogICAgICAgICAv
LyBGSVhNRTogQW5pbWF0aW9uIGNvZGUgbWF5IHRyaWdnZXIgcmVzb3VyY2UgbG9hZCBpbiBtaWRk
bGUgb2Ygc3R5bGUgcmVjYWxjIGFuZCB0aGF0IGNhbiBhZGQgYSBydWxlIHRvIGEgY29udGVudCBl
eHRlbnNpb24gc3R5bGVzaGVldC4KICAgICAgICAgLy8gICAgICAgIEZpeCBhbmQgcmVtb3ZlIGlz
UmVzb2x2aW5nVHJlZVN0eWxlKCkgdGVzdCBiZWxvdywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQzMzUKLSAgICAgICAgLy8gRklYTUU6IFRoZSBtX2lzVXBk
YXRpbmdTdHlsZVJlc29sdmVyIHRlc3QgaXMgaGVyZSBiZWNhdXNlIGV4dGVuc2lvbiBzdHlsZXNo
ZWV0cyBjYW4gZ2V0IHVzIGhlcmUgZnJvbSBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHls
ZVNoZWV0cy4KKyAgICAgICAgLy8gRklYTUU6IFRoZSBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVy
IHRlc3QgaXMgaGVyZSBiZWNhdXNlIGV4dGVuc2lvbiBzdHlsZXNoZWV0cyBjYW4gZ2V0IHVzIGhl
cmUgZnJvbSBSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMuCiAgICAgICAgIGlmICgh
bV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciAmJiAhbV9kb2N1bWVudC5pc1Jlc29sdmluZ1RyZWVT
dHlsZSgpKQogICAgICAgICAgICAgY2xlYXJSZXNvbHZlcigpOwogICAgIH0KQEAgLTYyMSwyMSAr
NjIxLDIxIEBAIHZvaWQgU2NvcGU6OnNjaGVkdWxlVXBkYXRlKFVwZGF0ZVR5cGUgdXBkYXRlKQog
CiB2b2lkIFNjb3BlOjpldmFsdWF0ZU1lZGlhUXVlcmllc0ZvclZpZXdwb3J0Q2hhbmdlKCkKIHsK
LSAgICBldmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIpIHsK
KyAgICBldmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoUmVzb2x2ZXImIHJlc29sdmVyKSB7CiAgICAg
ICAgIHJldHVybiByZXNvbHZlci5oYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5Vmlld3BvcnRDaGFu
Z2UoKTsKICAgICB9KTsKIH0KIAogdm9pZCBTY29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JB
Y2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UoKQogewotICAgIGV2YWx1YXRlTWVkaWFRdWVyaWVz
KFtdIChTdHlsZVJlc29sdmVyJiByZXNvbHZlcikgeworICAgIGV2YWx1YXRlTWVkaWFRdWVyaWVz
KFtdIChSZXNvbHZlciYgcmVzb2x2ZXIpIHsKICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmhhc01l
ZGlhUXVlcmllc0FmZmVjdGVkQnlBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UoKTsKICAgICB9
KTsKIH0KIAogdm9pZCBTY29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JBcHBlYXJhbmNlQ2hh
bmdlKCkKIHsKLSAgICBldmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoU3R5bGVSZXNvbHZlciYgcmVz
b2x2ZXIpIHsKKyAgICBldmFsdWF0ZU1lZGlhUXVlcmllcyhbXSAoUmVzb2x2ZXImIHJlc29sdmVy
KSB7CiAgICAgICAgIHJldHVybiByZXNvbHZlci5oYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QXBw
ZWFyYW5jZUNoYW5nZSgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCmlu
ZGV4IGE3MDJmNzM5NDIzLi5lZDE0YjViNmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUu
aApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBOb2RlOwogY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uOwotY2xhc3MgU3R5bGVSZXNvbHZl
cjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBjbGFzcyBT
dHlsZVNoZWV0TGlzdDsKQEAgLTUyLDYgKzUxLDggQEAgY2xhc3MgVHJlZVNjb3BlOwogCiBuYW1l
c3BhY2UgU3R5bGUgewogCitjbGFzcyBSZXNvbHZlcjsKKwogLy8gVGhpcyBpcyB1c2VkIHRvIGlk
ZW50aWZ5IHN0eWxlIHNjb3BlcyB0aGF0IGNhbiBhZmZlY3QgYW4gZWxlbWVudC4KIC8vIFNjb3Bl
cyBhcmUgaW4gdHJlZS1vZi10cmVlcyBvcmRlci4gU3R5bGVzIGZyb20gZWFybGllciBzY29wZXMg
d2luIG92ZXIgbGF0ZXIgb25lcyAobW9kdWxvICFpbXBvcnRhbnQpLgogZW51bSBjbGFzcyBTY29w
ZU9yZGluYWwgOiBpbnQgewpAQCAtMTE0LDggKzExNSw4IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8
UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNvbGxlY3RYU0xUcmFuc2Zvcm1zKCk7CiAjZW5k
aWYKIAotICAgIFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyKCk7Ci0gICAgU3R5bGVSZXNvbHZlciog
cmVzb2x2ZXJJZkV4aXN0cygpOworICAgIFJlc29sdmVyJiByZXNvbHZlcigpOworICAgIFJlc29s
dmVyKiByZXNvbHZlcklmRXhpc3RzKCk7CiAgICAgdm9pZCBjbGVhclJlc29sdmVyKCk7CiAgICAg
dm9pZCByZWxlYXNlTWVtb3J5KCk7CiAKQEAgLTE0MCwxMyArMTQxLDEzIEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlU2hl
ZXQ+PiYpOwogCi0gICAgZW51bSBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSB7CisgICAgZW51bSBS
ZXNvbHZlclVwZGF0ZVR5cGUgewogICAgICAgICBSZWNvbnN0cnVjdCwKICAgICAgICAgUmVzZXQs
CiAgICAgICAgIEFkZGl0aXZlCiAgICAgfTsKLSAgICBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBh
bmFseXplU3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+
PiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKLSAgICB2
b2lkIHVwZGF0ZVN0eWxlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBT
dHlsZVJlc29sdmVyVXBkYXRlVHlwZSk7CisgICAgUmVzb2x2ZXJVcGRhdGVUeXBlIGFuYWx5emVT
dHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBuZXdT
dHlsZXNoZWV0cywgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOworICAgIHZvaWQgdXBk
YXRlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBSZXNvbHZlclVwZGF0
ZVR5cGUpOwogCiAgICAgdm9pZCBwZW5kaW5nVXBkYXRlVGltZXJGaXJlZCgpOwogICAgIHZvaWQg
Y2xlYXJQZW5kaW5nVXBkYXRlKCk7CkBAIC0xNTQsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICBE
b2N1bWVudCYgbV9kb2N1bWVudDsKICAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jvb3QgeyBudWxs
cHRyIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGVSZXNvbHZlcj4gbV9yZXNvbHZlcjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb2x2ZXI+IG1fcmVzb2x2ZXI7CiAKICAgICBWZWN0b3I8
UmVmUHRyPFN0eWxlU2hlZXQ+PiBtX3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3Q7CiAgICAg
VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbV9hY3RpdmVTdHlsZVNoZWV0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAppbmRleCBjNzgzMzcz
MDhhYS4uNjIyYzU1OTM1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2hhcmluZ1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJp
bmdSZXNvbHZlci5jcHAKQEAgLTY5LDcgKzY5LDYgQEAgc3RhdGljIGlubGluZSBib29sIHBhcmVu
dEVsZW1lbnRQcmV2ZW50c1NoYXJpbmcoY29uc3QgRWxlbWVudCYgcGFyZW50RWxlbWVudCkKIAog
c3RhdGljIGlubGluZSBib29sIGVsZW1lbnRIYXNEaXJlY3Rpb25BdXRvKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgbGluZSBpcyBzdXJwcmlzaW5nbHkgaG90
LCB3ZSBtYXkgd2lzaCB0byBpbmxpbmUgaGFzRGlyZWN0aW9uQXV0byBpbnRvIFN0eWxlUmVzb2x2
ZXIuCiAgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1M
RWxlbWVudD4oZWxlbWVudCkuaGFzRGlyZWN0aW9uQXV0bygpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggNDFlOWY0NDcwODUuLjNmNTU0MGRh
OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC02
NiwyNyArNjYsMjcgQEAgVHJlZVJlc29sdmVyOjpUcmVlUmVzb2x2ZXIoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogVHJlZVJlc29sdmVyOjp+VHJlZVJlc29sdmVyKCkgPSBkZWZhdWx0OwogCiBUcmVlUmVz
b2x2ZXI6OlNjb3BlOjpTY29wZShEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBzdHlsZVJlc29s
dmVyKGRvY3VtZW50LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpKQotICAgICwgc2hhcmluZ1Jlc29s
dmVyKGRvY3VtZW50LCBzdHlsZVJlc29sdmVyLnJ1bGVTZXRzKCksIHNlbGVjdG9yRmlsdGVyKQor
ICAgIDogcmVzb2x2ZXIoZG9jdW1lbnQuc3R5bGVTY29wZSgpLnJlc29sdmVyKCkpCisgICAgLCBz
aGFyaW5nUmVzb2x2ZXIoZG9jdW1lbnQsIHJlc29sdmVyLnJ1bGVTZXRzKCksIHNlbGVjdG9yRmls
dGVyKQogewogICAgIGRvY3VtZW50LnNldElzUmVzb2x2aW5nVHJlZVN0eWxlKHRydWUpOwogfQog
CiBUcmVlUmVzb2x2ZXI6OlNjb3BlOjpTY29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBTY29w
ZSYgZW5jbG9zaW5nU2NvcGUpCi0gICAgOiBzdHlsZVJlc29sdmVyKHNoYWRvd1Jvb3Quc3R5bGVT
Y29wZSgpLnJlc29sdmVyKCkpCi0gICAgLCBzaGFyaW5nUmVzb2x2ZXIoc2hhZG93Um9vdC5kb2N1
bWVudFNjb3BlKCksIHN0eWxlUmVzb2x2ZXIucnVsZVNldHMoKSwgc2VsZWN0b3JGaWx0ZXIpCisg
ICAgOiByZXNvbHZlcihzaGFkb3dSb290LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpKQorICAgICwg
c2hhcmluZ1Jlc29sdmVyKHNoYWRvd1Jvb3QuZG9jdW1lbnRTY29wZSgpLCByZXNvbHZlci5ydWxl
U2V0cygpLCBzZWxlY3RvckZpbHRlcikKICAgICAsIHNoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpCiAg
ICAgLCBlbmNsb3NpbmdTY29wZSgmZW5jbG9zaW5nU2NvcGUpCiB7Ci0gICAgc3R5bGVSZXNvbHZl
ci5zZXRPdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKGVuY2xvc2luZ1Njb3BlLnN0eWxlUmVz
b2x2ZXIub3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSgpKTsKKyAgICByZXNvbHZlci5zZXRP
dmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKGVuY2xvc2luZ1Njb3BlLnJlc29sdmVyLm92ZXJy
aWRlRG9jdW1lbnRFbGVtZW50U3R5bGUoKSk7CiB9CiAKIFRyZWVSZXNvbHZlcjo6U2NvcGU6On5T
Y29wZSgpCiB7CiAgICAgaWYgKCFzaGFkb3dSb290KQotICAgICAgICBzdHlsZVJlc29sdmVyLmRv
Y3VtZW50KCkuc2V0SXNSZXNvbHZpbmdUcmVlU3R5bGUoZmFsc2UpOworICAgICAgICByZXNvbHZl
ci5kb2N1bWVudCgpLnNldElzUmVzb2x2aW5nVHJlZVN0eWxlKGZhbHNlKTsKIAotICAgIHN0eWxl
UmVzb2x2ZXIuc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShudWxscHRyKTsKKyAgICBy
ZXNvbHZlci5zZXRPdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlKG51bGxwdHIpOwogfQogCiBU
cmVlUmVzb2x2ZXI6OlBhcmVudDo6UGFyZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTEzNCw3
ICsxMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFRyZWVSZXNvbHZlcjo6c3R5
bGVGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbgogICAgIGlmIChhdXRvIHN0eWxlID0g
c2NvcGUoKS5zaGFyaW5nUmVzb2x2ZXIucmVzb2x2ZShlbGVtZW50LCAqbV91cGRhdGUpKQogICAg
ICAgICByZXR1cm4gc3R5bGU7CiAKLSAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkuc3R5
bGVSZXNvbHZlci5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgJmluaGVyaXRlZFN0eWxlLCBwYXJl
bnRCb3hTdHlsZSgpLCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcywgJnNjb3Bl
KCkuc2VsZWN0b3JGaWx0ZXIpOworICAgIGF1dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5yZXNv
bHZlci5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgJmluaGVyaXRlZFN0eWxlLCBwYXJlbnRCb3hT
dHlsZSgpLCBSdWxlTWF0Y2hpbmdCZWhhdmlvcjo6TWF0Y2hBbGxSdWxlcywgJnNjb3BlKCkuc2Vs
ZWN0b3JGaWx0ZXIpOwogCiAgICAgaWYgKGVsZW1lbnRTdHlsZS5yZWxhdGlvbnMpCiAgICAgICAg
IGNvbW1pdFJlbGF0aW9ucyhXVEZNb3ZlKGVsZW1lbnRTdHlsZS5yZWxhdGlvbnMpLCAqbV91cGRh
dGUpOwpAQCAtMjEyLDEyICsyMTIsMTIgQEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpy
ZXNvbHZlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogCiAgICAgaWYgKCZlbGVtZW50ID09IG1f
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpIHsKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlLnN0eWxlKTsKLSAgICAgICAgc2Nv
cGUoKS5zdHlsZVJlc29sdmVyLnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUobV9kb2N1
bWVudEVsZW1lbnRTdHlsZS5nZXQoKSk7CisgICAgICAgIHNjb3BlKCkucmVzb2x2ZXIuc2V0T3Zl
cnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpKTsK
IAogICAgICAgICBpZiAodXBkYXRlLmNoYW5nZSAhPSBOb0NoYW5nZSAmJiBleGlzdGluZ1N0eWxl
ICYmIGV4aXN0aW5nU3R5bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpICE9IHVwZGF0ZS5zdHls
ZS0+Y29tcHV0ZWRGb250UGl4ZWxTaXplKCkpIHsKICAgICAgICAgICAgIC8vICJyZW0iIHVuaXRz
IGFyZSByZWxhdGl2ZSB0byB0aGUgZG9jdW1lbnQgZWxlbWVudCdzIGZvbnQgc2l6ZSBzbyB3ZSBu
ZWVkIHRvIHJlY29tcHV0ZSBldmVyeXRoaW5nLgogICAgICAgICAgICAgLy8gSW4gcHJhY3RpY2Ug
dGhpcyBpcyByYXJlLgotICAgICAgICAgICAgc2NvcGUoKS5zdHlsZVJlc29sdmVyLmludmFsaWRh
dGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKTsKKyAgICAgICAgICAgIHNjb3BlKCkucmVzb2x2
ZXIuaW52YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpOwogICAgICAgICAgICAgZGVz
Y2VuZGFudHNUb1Jlc29sdmUgPSBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6QWxsOwogICAgICAgICB9
CiAgICAgfQpAQCAtMjU0LDcgKzI1NCw3IEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpy
ZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwCiAgICAg
aWYgKCFlbGVtZW50VXBkYXRlLnN0eWxlLT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHBzZXVkb1N0eWxlID0gc2NvcGUoKS5zdHlsZVJl
c29sdmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sICplbGVt
ZW50VXBkYXRlLnN0eWxlLCBwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhlbGVtZW50VXBkYXRlKSwg
JnNjb3BlKCkuc2VsZWN0b3JGaWx0ZXIpOworICAgIGF1dG8gcHNldWRvU3R5bGUgPSBzY29wZSgp
LnJlc29sdmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sICpl
bGVtZW50VXBkYXRlLnN0eWxlLCBwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhlbGVtZW50VXBkYXRl
KSwgJnNjb3BlKCkuc2VsZWN0b3JGaWx0ZXIpOwogICAgIGlmICghcHNldWRvRWxlbWVudFJlbmRl
cmVySXNOZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4geyB9OwogCkBA
IC01NjUsMTMgKzU2NSwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVzb2x2ZXI6
OnJlc29sdmUoKQogICAgIG1fcGFyZW50U3RhY2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50KSk7
CiAKICAgICAvLyBQc2V1ZG8gZWxlbWVudCByZW1vdmFsIGFuZCBzaW1pbGFyIG1heSBvbmx5IHdv
cmsgd2l0aCB0aGVzZSBmbGFncyBzdGlsbCBzZXQuIFJlc2V0IHRoZW0gYWZ0ZXIgdGhlIHN0eWxl
IHJlY2FsYy4KLSAgICByZW5kZXJWaWV3LnNldFVzZXNGaXJzdExpbmVSdWxlcyhyZW5kZXJWaWV3
LnVzZXNGaXJzdExpbmVSdWxlcygpIHx8IHNjb3BlKCkuc3R5bGVSZXNvbHZlci51c2VzRmlyc3RM
aW5lUnVsZXMoKSk7Ci0gICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMZXR0ZXJSdWxlcyhyZW5k
ZXJWaWV3LnVzZXNGaXJzdExldHRlclJ1bGVzKCkgfHwgc2NvcGUoKS5zdHlsZVJlc29sdmVyLnVz
ZXNGaXJzdExldHRlclJ1bGVzKCkpOworICAgIHJlbmRlclZpZXcuc2V0VXNlc0ZpcnN0TGluZVJ1
bGVzKHJlbmRlclZpZXcudXNlc0ZpcnN0TGluZVJ1bGVzKCkgfHwgc2NvcGUoKS5yZXNvbHZlci51
c2VzRmlyc3RMaW5lUnVsZXMoKSk7CisgICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMZXR0ZXJS
dWxlcyhyZW5kZXJWaWV3LnVzZXNGaXJzdExldHRlclJ1bGVzKCkgfHwgc2NvcGUoKS5yZXNvbHZl
ci51c2VzRmlyc3RMZXR0ZXJSdWxlcygpKTsKIAogICAgIHJlc29sdmVDb21wb3NlZFRyZWUoKTsK
IAotICAgIHJlbmRlclZpZXcuc2V0VXNlc0ZpcnN0TGluZVJ1bGVzKHNjb3BlKCkuc3R5bGVSZXNv
bHZlci51c2VzRmlyc3RMaW5lUnVsZXMoKSk7Ci0gICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RM
ZXR0ZXJSdWxlcyhzY29wZSgpLnN0eWxlUmVzb2x2ZXIudXNlc0ZpcnN0TGV0dGVyUnVsZXMoKSk7
CisgICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMaW5lUnVsZXMoc2NvcGUoKS5yZXNvbHZlci51
c2VzRmlyc3RMaW5lUnVsZXMoKSk7CisgICAgcmVuZGVyVmlldy5zZXRVc2VzRmlyc3RMZXR0ZXJS
dWxlcyhzY29wZSgpLnJlc29sdmVyLnVzZXNGaXJzdExldHRlclJ1bGVzKCkpOwogCiAgICAgQVNT
RVJUKG1fc2NvcGVTdGFjay5zaXplKCkgPT0gMSk7CiAgICAgQVNTRVJUKG1fcGFyZW50U3RhY2su
c2l6ZSgpID09IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5k
ZXggZDk0NjEwMGJmMTkuLjdiMjJiMTBjMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmgKQEAgLTQwLDEwICs0MCwxMSBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3Mg
Tm9kZTsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFN0eWxl
UmVzb2x2ZXI7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKK2NsYXNzIFJlc29sdmVyOworCiBjbGFz
cyBUcmVlUmVzb2x2ZXIgewogcHVibGljOgogICAgIFRyZWVSZXNvbHZlcihEb2N1bWVudCYpOwpA
QCAtNjIsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRVcGRhdGUgcmVzb2x2ZVBzZXVk
b1N0eWxlKEVsZW1lbnQmLCBjb25zdCBFbGVtZW50VXBkYXRlJiwgUHNldWRvSWQpOwogCiAgICAg
c3RydWN0IFNjb3BlIDogUmVmQ291bnRlZDxTY29wZT4gewotICAgICAgICBTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyOworICAgICAgICBSZXNvbHZlciYgcmVzb2x2ZXI7CiAgICAgICAgIFNl
bGVjdG9yRmlsdGVyIHNlbGVjdG9yRmlsdGVyOwogICAgICAgICBTaGFyaW5nUmVzb2x2ZXIgc2hh
cmluZ1Jlc29sdmVyOwogICAgICAgICBTaGFkb3dSb290KiBzaGFkb3dSb290IHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDg3ZmQ1ZGFhZjk0Li4yZmZjYmFjNTIx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNTkzLDEyICs1OTMsMTIgQEAgdm9p
ZCBTVkdFbGVtZW50OjphbmltYXRvcldpbGxCZURlbGV0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKICAgICBwcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpLmFuaW1hdG9yV2ls
bEJlRGVsZXRlZChhdHRyaWJ1dGVOYW1lKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBT
VkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCitPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBT
VkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW4g
YSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5bGUgZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVlLgog
ICAgIGlmIChhdXRvIHN0eWxlRWxlbWVudCA9IG1ha2VSZWZQdHIodGhpcy0+Y29ycmVzcG9uZGlu
Z0VsZW1lbnQoKSkpIHsKLSAgICAgICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBzdHlsZSA9IHN0
eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7Ci0gICAgICAgIFN0eWxlOjpB
ZGp1c3Rlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKCpzdHlsZS0+cmVuZGVyU3R5bGUsICp0aGlz
KTsKKyAgICAgICAgYXV0byBzdHlsZSA9IHN0eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKCZwYXJl
bnRTdHlsZSk7CisgICAgICAgIFN0eWxlOjpBZGp1c3Rlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxl
KCpzdHlsZS5yZW5kZXJTdHlsZSwgKnRoaXMpOwogICAgICAgICByZXR1cm4gc3R5bGU7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCA4NGFiYTIyOWM3NS4uOThmY2ZmYmNhNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqKTsKIAotICAgIE9wdGlv
bmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hv
c3RTdHlsZSkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgUXVhbGlmaWVkTmFtZSBhbmltYXRhYmxl
QXR0cmlidXRlRm9yTmFtZShjb25zdCBBdG9tU3RyaW5nJik7CiAjaWZuZGVmIE5ERUJVRwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>