<?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>216102</bug_id>
          
          <creation_ts>2020-09-02 15:34:07 -0700</creation_ts>
          <short_desc>Remove EAffinity, UPSTREAM, DOWNSTREAM, SEL_DEFAULT_AFFINITY, and VisibleSelection::selectionType</short_desc>
          <delta_ts>2020-09-03 14:39:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1685027</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-02 15:34:07 -0700</bug_when>
    <thetext>Remove EAffinity, UPSTREAM, DOWNSTREAM, SEL_DEFAULT_AFFINITY, and VisibleSelection::selectionType</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685084</commentid>
    <comment_count>1</comment_count>
      <attachid>407842</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-02 17:58:58 -0700</bug_when>
    <thetext>Created attachment 407842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685095</commentid>
    <comment_count>2</comment_count>
      <attachid>407844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-02 18:23:24 -0700</bug_when>
    <thetext>Created attachment 407844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685144</commentid>
    <comment_count>3</comment_count>
      <attachid>407862</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-02 21:05:28 -0700</bug_when>
    <thetext>Created attachment 407862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685302</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-03 09:54:36 -0700</bug_when>
    <thetext>Looks like tests are passing, ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685439</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-03 14:38:56 -0700</bug_when>
    <thetext>Committed r266557: &lt;https://trac.webkit.org/changeset/266557&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685440</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-03 14:39:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/68302564&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407842</attachid>
            <date>2020-09-02 17:58:58 -0700</date>
            <delta_ts>2020-09-02 18:23:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216102-20200902175857.patch</filename>
            <type>text/plain</type>
            <size>154489</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODgxYTk5YzQ5NTBhMzE3
YmFiMTA2MzhhNzVmYjcyOTU5NThjNjUzNi4uYWMxY2VlYmJkNzI1Y2JiMDFjNzVlMmVlM2U0MmZm
NWJhN2UxNTFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAyMC0wOS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEVBZmZpbml0eSwg
VVBTVFJFQU0sIERPV05TVFJFQU0sIFNFTF9ERUZBVUxUX0FGRklOSVRZLCBhbmQgVmlzaWJsZVNl
bGVjdGlvbjo6c2VsZWN0aW9uVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlckRh
dGEpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
Lmg6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtVGV4dE9w
ZXJhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvblJh
bmdlRm9yUmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnJlcGxhY2VUZXh0SW5SYW5nZSk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUgY29u
c3QpOiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIGNhbGwgdG8gUG9zaXRpb246OmVxdWFsLCBz
aW1wbGlmaWVkIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojpib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IFVzZSBBZmZpbml0eS4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3Np
dGlvbkZvckluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lIGNvbnN0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVG
b2N1c0FwcGVhcmFuY2UpOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisKKyAgICAgICAgKiBk
b20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnByZXZpb3VzQ2hh
cmFjdGVyUG9zaXRpb24gY29uc3QpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpQ
b3NpdGlvbjo6bmV4dENoYXJhY3RlclBvc2l0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpQb3NpdGlvbjo6bGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbiBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnRyYWlsaW5nV2hpdGVzcGFjZVBvc2l0aW9u
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6aW5saW5lQm94QW5k
T2Zmc2V0IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9BcHBseUJsb2NrRWxlbWVu
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlCbG9ja0VsZW1lbnRDb21tYW5k
Ojpmb3JtYXRTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0JyZWFrQmxvY2tx
dW90ZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtCbG9ja3F1b3RlQ29tbWFu
ZDo6ZG9BcHBseSk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBh
cmFncmFwaFdpdGhDbG9uZXMpOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOiBEaXR0by4KKwor
ICAgICAgICAqIGVkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICog
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnNtYXJ0RGVsZXRlUGFyYWdyYXBoU3BhY2Vycyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6IERp
dHRvLgorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmZpcnN0SW5TcGVjaWFsRWxlbWVudCk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAg
ICAgKFdlYkNvcmU6Omxhc3RJblNwZWNpYWxFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjp2aXNpYmxlUG9zaXRpb25CZWZvcmVOb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpYmxlUG9zaXRpb25BZnRlck5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnZp
c2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcik6IFVzZSBBZmZpbml0
eS4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6c2VsZWN0aW9uRm9yQ29tbWFuZCk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6Y2FuRGVsZXRlUmFuZ2UgY29uc3QpOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5p
dHkuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5U3R5bGUpOiBVc2UgaXNOb25lIGFu
ZCBpc0NhcmV0LgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBseVBhcmFncmFwaFN0eWxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKTogVXNl
IEFmZmluaXR5LgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcpOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcik6IERpdHRvLiBVc2UgaXNDYXJldC4K
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dHJhbnNwb3NlKTogUmVseSBvbiBkZWZhdWx0IGFm
ZmluaXR5LgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlIGNv
bnN0KTogRGl0dG8uIEFsc28gc2ltcGxpZnkKKyAgICAgICAgcmVjdGFuZ2xlIGNhbGN1bGF0aW9u
IGF0IHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpz
aG91bGRDaGFuZ2VTZWxlY3Rpb24gY29uc3QpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmZpbmRTdHJpbmcpOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01h
cmspOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTZWxlY3RUb01hcmspOiBEaXR0
by4KKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjptb3ZlVG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjptb2RpZnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpzZXRCYXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6c2V0RXh0ZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2V0U2VsZWN0ZWRSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OnJldmVhbFNlbGVjdGlvbik6IFVzZSBpc05vbmUgYW5kIGlzQ2FyZXQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUpOiBSZWx5IG9uIGRl
ZmF1bHQgYWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZXhwYW5k
U2VsZWN0aW9uVG9FbGVtZW50Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKTogRGl0dG8uCisKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6IFVzZSBBZmZpbml0eS4KKworICAgICAg
ICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5kZW50T3V0ZGVudENvbW1hbmQ6Om91dGRlbnRSZWdpb24pOiBSZWx5IG9uIGRlZmF1bHQgYWZm
aW5pdHkuCisKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSk6IFVzZSBB
ZmZpbml0eS4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydE5lc3RlZExpc3RDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc2VydE5lc3RlZExpc3RDb21tYW5kOjpkb0FwcGx5KTogRGl0
dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6
ZG9BcHBseSk6IFVzZSBBZmZpbml0eS4KKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRh
Yik6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKworICAgICAgICAqIGVkaXRpbmcvUmVuZGVy
ZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpSZW5k
ZXJlZFBvc2l0aW9uKTogVXNlIEFmZmluaXR5LgorICAgICAgICAqIGVkaXRpbmcvUmVuZGVyZWRQ
b3NpdGlvbi5oOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRv
QXBwbHkpOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6Y29tcGxldGVIVE1MUmVwbGFjZW1lbnQpOgorICAgICAgICBV
c2UgVmlzaWJsZVNlbGVjdGlvbjo6ZGVmYXVsdEFmZmluaXR5LgorCisgICAgICAgICogZWRpdGlu
Zy9UZXh0QWZmaW5pdHkuaDogUmVtb3ZlZCBFQWZmaW5pdHksIFVQU1RSRUFNLCBET1dOU1RSRUFN
LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yOjpzaG91bGRSZXByZXNlbnROb2RlT2Zmc2V0WmVybyk6IFJlbHkgb24K
KyAgICAgICAgZGVmYXVsdCBhZmZpbml0eS4KKworICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjptYWtlRWRpdGFibGVS
b290RW1wdHkpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5k
OjpkZWxldGVLZXlQcmVzc2VkKTogVXNlIGlzQ2FyZXRPclJhbmdlIGFuZCBpc1JhbmdlLgorICAg
ICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOiBE
aXR0by4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6VmlzaWJsZVBvc2l0aW9uKTogVXNlIEFmZmluaXR5
LgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpwcmV2aW91cyBjb25zdCk6IFJl
bHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
bjo6bGVmdCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9u
OjpyaWdodCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6IFVz
ZSBBZmZpbml0eS4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKTogVXNl
IEFmZmluaXR5LiBBbHNvIHVzZQorICAgICAgICBpbml0aWFsaXplIGluIHRoZSBjbGFzcyBkZWZp
bml0aW9uLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJv
bUNvbnRlbnRzT2ZOb2RlKTogUmVseSBvbgorICAgICAgICBkZWZhdWx0IGFmZmluaXR5LgorICAg
ICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6c2V0U3RhcnRBbmRFbmRGcm9tQmFzZUFu
ZEV4dGVudFJlc3BlY3RpbmdHcmFudWxhcml0eSk6CisgICAgICAgIFJlbmFtZSBmcm9tICJwb3Mi
IHRvICJwb3NpdGlvbiIuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjp1cGRh
dGVTZWxlY3Rpb25UeXBlKTogVXBkYXRlIGZyb20KKyAgICAgICAgbV9zZWxlY3Rpb25UeXBlIHRv
IG1fdHlwZSBhbmQgdXNlIEFmZmluaXR5LgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbjo6dmFsaWRhdGUpOiBVc2UgaXNSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVT
ZWxlY3Rpb246OnNldFdpdGhvdXRWYWxpZGF0aW9uKTogVXNlIEFmZmluaXR5IGFuZAorICAgICAg
ICBtX3R5cGUuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDogUmVtb3Zl
ZCBTRUxfREVGQVVMVF9BRkZJTklUWSwgcmVwbGFjaW5nCisgICAgICAgIGl0IHdpdGggVmlzaWJs
ZVNlbGVjdGlvbjo6ZGVmYXVsdEFmZmluaXR5LiBSZW1vdmVkIGJvdGgKKyAgICAgICAgVmlzaWJs
ZVNlbGVjdGlvbjo6U2VsZWN0aW9uVHlwZSBhbmQgVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9u
VHlwZSwKKyAgICAgICAgcmVwbGFjaW5nIHdpdGggcHJpdmF0ZSBWaXNpYmxlU2VsZWN0aW9uOjpU
eXBlLiBBbHNvIHJlbmFtZWQKKyAgICAgICAgbV9zZWxlY3Rpb25UeXBlIHRvIG1fdHlwZS4KKwor
ICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxv
Z2ljYWxseVByZXZpb3VzQm94KTogVXNlIEFmZmluaXR5LgorICAgICAgICAoV2ViQ29yZTo6bG9n
aWNhbGx5TmV4dEJveCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNMaW5lUG9z
aXRpb24pOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpuZXh0
TGluZVBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzdGFydE9mUGFyYWdyYXBo
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjplbmRPZlBhcmFncmFwaCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KTogVXNlIEFmZmluaXR5
LgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KTogRGl0
dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdCk6IFVz
ZSBpc1JhbmdlLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6IFVzZSBBZmZp
bml0eS4KKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01TZWxlY3Rpb246OmNvbGxhcHNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpET01T
ZWxlY3Rpb246OmNvbGxhcHNlVG9FbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVNl
bGVjdGlvbjo6Y29sbGFwc2VUb1N0YXJ0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpET01T
ZWxlY3Rpb246OnNldEJhc2VBbmRFeHRlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVNlbGVjdGlvbjo6c2V0UG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVNl
bGVjdGlvbjo6ZXh0ZW5kKTogRGl0dG8uCisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDog
RGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgUmVseSBvbiBkZWZhdWx0IGFmZmluaXR5LgorCisgICAgICAgICogcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZhbmNl
Rm9jdXNJbkRvY3VtZW50T3JkZXIpOgorICAgICAgICBVc2UgY29uc3RydWN0b3IgdGhhdCB0YWtl
cyBhIHNpbmdsZSBQb3NpdGlvbiBhbmQgQWZmaW5pdHkuCisKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJhbmdlcyk6IFVzZSBBZmZpbml0eS4KKwor
ICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6
OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KTogVXNlIGlzTm9uZS4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3Np
dGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKTogVXNlIEFmZmluaXR5Lgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQpOiBEaXR0by4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpwb3NpdGlvbkZvclBvaW50KTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uIGNvbnN0KTogRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6
OnBvc2l0aW9uRm9yUG9pbnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dExpbmVCb3hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpw
b3NpdGlvbkZvclBvaW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTZWxlY3Rpb24pOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KTogRGl0dG8uCisKIDIw
MjAtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5n
ZSBBZmZpbml0eSBpbnRvIGFuIGVudW0gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzlmZGRjNzlmNDljZmIx
MGYxY2UwM2FiNWM5NjVmYTY2MDAzOWE2Yy4uZDJmZTgxMTIwZThhYjQ4MjQ0YWMyYmRlMWJlYWNj
MjdmNDE2N2I4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAyMC0wOS0wMiAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEVBZmZpbml0eSwgVVBT
VFJFQU0sIERPV05TVFJFQU0sIFNFTF9ERUZBVUxUX0FGRklOSVRZLCBhbmQgVmlzaWJsZVNlbGVj
dGlvbjo6c2VsZWN0aW9uVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE2MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKTogVXNlIEFmZmluaXR5LgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OnRvQVBJKTogRGl0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6IERpdHRv
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMp
OiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Bc3luYyk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZWxldGVTdXJyb3VuZGluZyk6IERp
dHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREcmFnKTogVXNlIEFmZmlu
aXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdmVTZWxl
Y3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3Vu
ZGFyeSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFj
ZVNlbGVjdGVkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNl
RGljdGF0ZWRUZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGx5QXV0
b2NvcnJlY3Rpb25JbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEpOiBEaXR0by4KKwogMjAyMC0wOS0wMSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGNvbXBhcmVQb3NpdGlvbnMg
YW5kIG1ha2UgVmlzaWJsZVBvc2l0aW9uIGltcHJvdmVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nCmluZGV4IDkwNTQwNTBjYWM2Mjg1N2E3NWFkMjQxZTQxYTdjYTFmY2YwZjY1M2IuLmYx
NDVlODdhYWEwMWIwN2Y0NWIwOTcxMzk1ZTg2NjJjNzk3MTkzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wOS0wMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEVBZmZpbml0eSwgVVBTVFJFQU0sIERP
V05TVFJFQU0sIFNFTF9ERUZBVUxUX0FGRklOSVRZLCBhbmQgVmlzaWJsZVNlbGVjdGlvbjo6c2Vs
ZWN0aW9uVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE2MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
Y2xvc2VzdENhcmV0UmVjdEluTWFya2VkVGV4dFJhbmdlRm9yUG9pbnQ6XSk6IFVzZSBBZmZpbml0
eS4KKyAgICAgICAgKC1bV2ViRnJhbWUgc21hcnRFeHRlbmRSYW5nZWRTZWxlY3Rpb246XSk6IFVz
ZSB2aXNpYmxlU3RhcnQvRW5kL0V4dGVudCBzbyB3ZSBkb24ndAorICAgICAgICBuZWVkIHRvIHdy
aXRlIGV4cGxpY2l0IGNvZGUgdG8gaGFuZGxlIGFmZmluaXR5LgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9z
aXRpb24gc2V0QWZmaW5pdHk6XSk6IFVzZSBBZmZpbml0eS4KKwogMjAyMC0wOS0wMiAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIEFmZmluaXR5IGludG8g
YW4gZW51bSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQxMTkxZjgyOGEy
MjliZDkzNTMyMDVmOTNlMGQ3ODE2ZTAwYWM4MzguLmI2ZmMxZjJkMzE0OTE2MGRmODIyZDA5NWE1
NDlhODEwZTMyMzg0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAyMC0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIEVBZmZpbml0eSwgVVBTVFJFQU0sIERPV05TVFJFQU0sIFNFTF9ERUZBVUxUX0FG
RklOSVRZLCBhbmQgVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uVHlwZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNp
b25zLm1tOgorICAgICAgICAoLVtET01Ob2RlIHJhbmdlT2ZDb250YWluaW5nUGFyYWdyYXBoXSk6
IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAoa2l0KTogVXNlIEFmZmluaXR5LgorICAgICAgICAo
Y29yZSk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6
IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9jYXJldFJlY3RBdFBvc2l0aW9uOmFmZmluaXR5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1b
V2ViRnJhbWUgX3NlbGVjdE5TUmFuZ2U6XSk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAg
ICAgICAgKC1bV2ViRnJhbWUgZ2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOmFuZE1ldGFkYXRhczpd
KTogVXNlIGlzTm9uZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IGluc2VydFRleHQ6XSk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0
eS4KKwogMjAyMC0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2hhbmdlIEFmZmluaXR5IGludG8gYW4gZW51bSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMjQ1YTk0N2FmZjNhMTEzM2Zk
MTUxNjE1MGU2ZDA4ZjY1ZjZjY2ZlZi4uYmQwYzcyMGIwZDY2NTJmMmU5YTM0N2NlMDFkNzM3Njk3
ZjY2ZmJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCkBAIC0xODU3LDcgKzE4NTcsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNo
ZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmCiAgICAg
Q2hhcmFjdGVyT2Zmc2V0IHJlc3VsdCA9IENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YS5u
b2RlLCB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCB0ZXh0TWFya2VyRGF0YS5j
aGFyYWN0ZXJPZmZzZXQpOwogICAgIC8vIFdoZW4gd2UgYXJlIGF0IGEgbGluZSB3cmFwIGFuZCB0
aGUgVmlzaWJsZVBvc2l0aW9uIGlzIHVwc3RyZWFtLCBpdCBtZWFucyB0aGUgdGV4dCBtYXJrZXIg
aXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZS4KICAgICAvLyBXZSB1c2UgdGhlIHBy
ZXZpb3VzIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IGl0IHdpbGwgbWF0Y2ggdGhlIFJhbmdlLgot
ICAgIGlmICh0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSA9PSBVUFNUUkVBTSkKKyAgICBpZiAodGV4
dE1hcmtlckRhdGEuYWZmaW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKQogICAgICAgICByZXR1
cm4gcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQocmVzdWx0LCBmYWxzZSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
aW5kZXggNDE1YzgzNGMxNThhOGM0M2VmMDU5ODMwNTNiYjRiNWM5MjBiNmEzNC4uMTUxZjczYjli
Zjk4NjAwODFiZDgxMTY0OTQ0ZmJiOGE5ZGUxNjM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IFRleHRN
YXJrZXJEYXRhIHsKICAgICBpbnQgY2hhcmFjdGVyU3RhcnRJbmRleCB7IDAgfTsKICAgICBpbnQg
Y2hhcmFjdGVyT2Zmc2V0IHsgMCB9OwogICAgIGJvb2wgaWdub3JlZCB7IGZhbHNlIH07Ci0gICAg
RUFmZmluaXR5IGFmZmluaXR5IHsgRE9XTlNUUkVBTSB9OworICAgIEFmZmluaXR5IGFmZmluaXR5
IHsgQWZmaW5pdHk6OkRvd25zdHJlYW0gfTsKIH07CiAKIHN0cnVjdCBDaGFyYWN0ZXJPZmZzZXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKaW5kZXggMjA5YzliOGM5OThjNTZkZmM0YzNhNDU1MzViNDA3NWE2NjhlMzFmMi4u
YWJiZjUwYzQ1ZmRlMGI5Y2U2OTkxYzY2YTlkMDNhMDU3OWVhZDlmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC02
OTEsNyArNjkxLDcgQEAgVmVjdG9yPFN0cmluZz4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cGVyZm9y
bVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXQKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKIAogICAgIGZvciAoY29uc3QgYXV0byYgdGV4dFJhbmdlIDogb3BlcmF0aW9uLnRleHRS
YW5nZXMpIHsKLSAgICAgICAgaWYgKCFmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5n
ZSh0ZXh0UmFuZ2UsIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGlu
Zzo6WWVzKSkKKyAgICAgICAgaWYgKCFmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5n
ZSh0ZXh0UmFuZ2UsIEFmZmluaXR5OjpEb3duc3RyZWFtLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxk
Q2xvc2VUeXBpbmc6OlllcykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBTdHJp
bmcgdGV4dCA9IHBsYWluVGV4dCh0ZXh0UmFuZ2UpOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIFZpc2li
bGVQb3NpdGlvblJhbmdlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdl
Rm9yVW5vcmRlcmVkUG9zaXRpCiAgICAgYm9vbCBhbHJlYWR5SW5PcmRlcjsKIAogICAgIC8vIHVw
c3RyZWFtIGlzIG9yZGVyZWQgYmVmb3JlIGRvd25zdHJlYW0gZm9yIHRoZSBzYW1lIHBvc2l0aW9u
Ci0gICAgaWYgKHZpc2libGVQb3MxID09IHZpc2libGVQb3MyICYmIHZpc2libGVQb3MyLmFmZmlu
aXR5KCkgPT0gVVBTVFJFQU0pCisgICAgaWYgKHZpc2libGVQb3MxID09IHZpc2libGVQb3MyICYm
IHZpc2libGVQb3MyLmFmZmluaXR5KCkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKQogICAgICAgICBh
bHJlYWR5SW5PcmRlciA9IGZhbHNlOwogCiAgICAgLy8gdXNlIHNlbGVjdGlvbiBvcmRlciB0byBz
ZWUgaWYgdGhlIHBvc2l0aW9ucyBhcmUgaW4gb3JkZXIKQEAgLTExNDYsNyArMTE0Niw3IEBAIFZp
c2libGVQb3NpdGlvblJhbmdlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvblJh
bmdlRm9yUmFuZ2UoY29uc3QgUGxhCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIHN0
YXJ0UG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5nZS5zdGFydCk7Ci0gICAg
c3RhcnRQb3NpdGlvbi5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICBzdGFydFBvc2l0aW9u
LnNldEFmZmluaXR5KEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICByZXR1cm4geyBzdGFydFBv
c2l0aW9uLCB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5nZS5zdGFydCArIHJhbmdlLmxlbmd0
aCkgfTsKIH0KIApAQCAtMjAwMyw3ICsyMDAzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpyZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY28K
ICAgICAvLyBBbHNvIG9ubHkgZG8gdGhpcyB3aGVuIHRoZSBmaWVsZCBpcyBpbiBlZGl0aW5nIG1v
ZGUuCiAgICAgYXV0byYgZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpOwogICAgIGlmIChlbGVt
ZW50LnNob3VsZFVzZUlucHV0TWV0aG9kKCkpIHsKLSAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCku
c2V0U2VsZWN0ZWRSYW5nZShyYW5nZUZvclBsYWluVGV4dFJhbmdlKHJhbmdlKSwgRE9XTlNUUkVB
TSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgICAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UocmFu
Z2UpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlw
aW5nOjpZZXMpOwogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRl
eHQocmVwbGFjZW1lbnRTdHJpbmcsIEVkaXRvcjo6U2VsZWN0UmVwbGFjZW1lbnQ6Ok5vLCBFZGl0
b3I6OlNtYXJ0UmVwbGFjZTo6Tm8pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAppbmRleCAyYWMxMzQyZGFjMzQ0NDQ3ZWQ1MTMyMTg5ZTA4ZWYzNTk1MjNm
ZTk0Li43ZGFhODgwNTI2ZjFhZGRmZDZmY2IyYzVkZmQ2NzE3YzY2YWE1NWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKQEAgLTIwMDQsMjcgKzIwMDQsMjEgQEAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVu
c2kKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKCk7CiAgICAgCiAgICAgLy8g
aXRlcmF0ZSBvdmVyIHRoZSBsaW5lcwotICAgIC8vIEZJWE1FOiB0aGlzIGlzIHdyb25nIHdoZW4g
bGluZU51bWJlciBpcyBsaW5lQ291bnQrMSwgIGJlY2F1c2UgbmV4dExpbmVQb3NpdGlvbiB0YWtl
cyB5b3UgdG8gdGhlCi0gICAgLy8gbGFzdCBvZmZzZXQgb2YgdGhlIGxhc3QgbGluZQotICAgIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gbV9yZW5kZXJlci0+dmlldygpLnBvc2l0aW9uRm9y
UG9pbnQoSW50UG9pbnQoKSwgbnVsbHB0cik7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHNhdmVkVmlz
aWJsZVBvczsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyB3aGVuIGxpbmVOdW1iZXIgaXMg
bGluZUNvdW50KzEsIGJlY2F1c2UgbmV4dExpbmVQb3NpdGlvbiB0YWtlcyB5b3UgdG8gdGhlIGxh
c3Qgb2Zmc2V0IG9mIHRoZSBsYXN0IGxpbmUuCisgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
ID0gbV9yZW5kZXJlci0+dmlldygpLnBvc2l0aW9uRm9yUG9pbnQoSW50UG9pbnQoKSwgbnVsbHB0
cik7CiAgICAgd2hpbGUgKC0tbGluZUNvdW50KSB7Ci0gICAgICAgIHNhdmVkVmlzaWJsZVBvcyA9
IHZpc2libGVQb3M7Ci0gICAgICAgIHZpc2libGVQb3MgPSBuZXh0TGluZVBvc2l0aW9uKHZpc2li
bGVQb3MsIDApOwotICAgICAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKQotICAgICAgICAgICAg
fHwgdmlzaWJsZVBvcyA9PSBzYXZlZFZpc2libGVQb3MKLSAgICAgICAgICAgIHx8IHZpc2libGVQ
b3MuZXF1YWxzKHNhdmVkVmlzaWJsZVBvcykpCisgICAgICAgIGF1dG8gcHJldmlvdXNMaW5lUG9z
aXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgcG9zaXRpb24gPSBuZXh0TGluZVBvc2l0aW9uKHBv
c2l0aW9uLCAwKTsKKyAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpIHx8IHBvc2l0aW9uID09
IHByZXZpb3VzTGluZVBvc2l0aW9uKQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
blJhbmdlKCk7CiAgICAgfQotICAgIAorCiAgICAgLy8gbWFrZSBhIGNhcmV0IHNlbGVjdGlvbiBm
b3IgdGhlIG1hcmtlciBwb3NpdGlvbiwgdGhlbiBleHRlbmQgaXQgdG8gdGhlIGxpbmUKLSAgICAv
LyBOT1RFOiBpZ25vcmVzIHJlc3VsdHMgb2Ygc2VsLm1vZGlmeSBiZWNhdXNlIGl0IHJldHVybnMg
ZmFsc2Ugd2hlbgotICAgIC8vIHN0YXJ0aW5nIGF0IGFuIGVtcHR5IGxpbmUuICBUaGUgcmVzdWx0
aW5nIHNlbGVjdGlvbiBpbiB0aGF0IGNhc2UKLSAgICAvLyB3aWxsIGJlIGEgY2FyZXQgYXQgdmlz
aWJsZVBvcy4KKyAgICAvLyBOT1RFOiBJZ25vcmVzIHJlc3VsdHMgb2Ygc2VsLm1vZGlmeSBiZWNh
dXNlIGl0IHJldHVybnMgZmFsc2Ugd2hlbiBzdGFydGluZyBhdCBhbiBlbXB0eSBsaW5lLgorICAg
IC8vIFRoZSByZXN1bHRpbmcgc2VsZWN0aW9uIGluIHRoYXQgY2FzZSB3aWxsIGJlIGEgY2FyZXQg
YXQgcG9zaXRpb24uCiAgICAgRnJhbWVTZWxlY3Rpb24gc2VsZWN0aW9uOwotICAgIHNlbGVjdGlv
bi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlUG9zKSk7CisgICAgc2VsZWN0
aW9uLnNldFNlbGVjdGlvbihwb3NpdGlvbik7CiAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4
dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkpOwotICAgIAogICAgIHJldHVybiBzZWxlY3Rpb24u
c2VsZWN0aW9uKCk7CiB9CiAgICAgCkBAIC0yMTM0LDExICsyMTI4LDExIEBAIEludFJlY3QgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvCiAgICAgaWYgKHJlY3QyLnkoKSAhPSByZWN0MS55KCkpIHsKICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIGVuZE9mRmlyc3RMaW5lID0gZW5kT2ZMaW5lKHJhbmdlLnN0YXJ0KTsK
ICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0ID09IGVuZE9mRmlyc3RMaW5lKSB7Ci0gICAgICAgICAg
ICByYW5nZS5zdGFydC5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIHJhbmdl
LnN0YXJ0LnNldEFmZmluaXR5KEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICAgICAgICAgIHJl
Y3QxID0gcmFuZ2Uuc3RhcnQuYWJzb2x1dGVDYXJldEJvdW5kcygpOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChyYW5nZS5lbmQgPT0gZW5kT2ZGaXJzdExpbmUpIHsKLSAgICAgICAgICAgIHJhbmdl
LmVuZC5zZXRBZmZpbml0eShVUFNUUkVBTSk7CisgICAgICAgICAgICByYW5nZS5lbmQuc2V0QWZm
aW5pdHkoQWZmaW5pdHk6OlVwc3RyZWFtKTsKICAgICAgICAgICAgIHJlY3QyID0gcmFuZ2UuZW5k
LmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyOTIsNyArMjI4
Niw3IEBAIFZpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxl
UG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCBpbmRlCiAgICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7CiAgICAgfQogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2li
bGVQb3NpdGlvbkZvckluZGV4KGluZGV4VmFsdWUpOwotICAgIHBvc2l0aW9uLnNldEFmZmluaXR5
KERPV05TVFJFQU0pOworICAgIHBvc2l0aW9uLnNldEFmZmluaXR5KEFmZmluaXR5OjpEb3duc3Ry
ZWFtKTsKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKQEAgLTIzNDcsNyArMjM0MSw3IEBAIFBs
YWluVGV4dFJhbmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhSYW5nZUZvckxpbmUo
dW5zaWduZWQgbGluZU51bWJlcikKICAgICBpbnQgaW5kZXgyID0gaW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oZW5kUG9zaXRpb24pOwogICAgIAogICAgIC8vIGFkZCBvbmUgdG8gdGhlIGVuZCBpbmRl
eCBmb3IgYSBsaW5lIGJyZWFrIG5vdCBjYXVzZWQgYnkgc29mdCBsaW5lIHdyYXAgKHRvIG1hdGNo
IEFwcEtpdCkKLSAgICBpZiAoZW5kUG9zaXRpb24uYWZmaW5pdHkoKSA9PSBET1dOU1RSRUFNICYm
IGVuZFBvc2l0aW9uLm5leHQoKS5pc05vdE51bGwoKSkKKyAgICBpZiAoZW5kUG9zaXRpb24uYWZm
aW5pdHkoKSA9PSBBZmZpbml0eTo6RG93bnN0cmVhbSAmJiBlbmRQb3NpdGlvbi5uZXh0KCkuaXNO
b3ROdWxsKCkpCiAgICAgICAgIGluZGV4MiArPSAxOwogICAgIAogICAgIC8vIHJldHVybiBuaWwg
cmF0aGVyIHRoYW4gYW4gemVyby1sZW5ndGggcmFuZ2UgKHRvIG1hdGNoIEFwcEtpdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCA3MjJkY2Y0YmU3ZDI2ODE5YTBjNTZmODNkNTlkZmExZjA3MjRl
ZTgxLi4zZTEzZjhhOGUwMWZiYmQ5OWQ3MmZhYWM2YTFkZThjODU0OGMwNjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCkBAIC0zMDkzLDcgKzMwOTMsNyBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUZv
Y3VzQXBwZWFyYW5jZShTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGUsIFNlbGVjdGlvblJldmVhbE1v
ZAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVz
dG9yZSB0aGUgcHJldmlvdXMgc2VsZWN0aW9uIGlmIHRoZXJlIGlzIG9uZS4KLSAgICAgICAgVmlz
aWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZSh0aGlzKSwgRE9XTlNUUkVBTSk7CisgICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5PckJl
Zm9yZU5vZGUodGhpcykpOwogICAgICAgICAKICAgICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24o
KS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewogICAgICAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9u
OjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpLCBFbGVtZW50OjpkZWZhdWx0Rm9jdXNUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBjZjZkNTFk
M2JhNDYyOWE5ZTJhMzA4MTI2YmFkYTVjZDJjNzFiZTZlLi45NGUwZTljMDUxZGFkYWRhNzNlOWUy
ZjQ3NDZjOWYzYWQ5YWU3YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTU1Nyw3ICs1
NTcsNyBAQCBib29sIFBvc2l0aW9uOjphdEVuZE9mVHJlZSgpIGNvbnN0CiB9CiAKIC8vIHJldHVy
biBmaXJzdCBwcmVjZWRpbmcgRE9NIHBvc2l0aW9uIHJlbmRlcmVkIGF0IGEgZGlmZmVyZW50IGxv
Y2F0aW9uLCBvciAidGhpcyIKLVBvc2l0aW9uIFBvc2l0aW9uOjpwcmV2aW91c0NoYXJhY3RlclBv
c2l0aW9uKEVBZmZpbml0eSBhZmZpbml0eSkgY29uc3QKK1Bvc2l0aW9uIFBvc2l0aW9uOjpwcmV2
aW91c0NoYXJhY3RlclBvc2l0aW9uKEFmZmluaXR5IGFmZmluaXR5KSBjb25zdAogewogICAgIGlm
IChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTU4NSw3ICs1ODUsNyBAQCBQb3Np
dGlvbiBQb3NpdGlvbjo6cHJldmlvdXNDaGFyYWN0ZXJQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5p
dHkpIGNvbnN0CiB9CiAKIC8vIHJldHVybiBmaXJzdCBmb2xsb3dpbmcgcG9zaXRpb24gcmVuZGVy
ZWQgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24sIG9yICJ0aGlzIgotUG9zaXRpb24gUG9zaXRpb246
Om5leHRDaGFyYWN0ZXJQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHkpIGNvbnN0CitQb3NpdGlv
biBQb3NpdGlvbjo6bmV4dENoYXJhY3RlclBvc2l0aW9uKEFmZmluaXR5IGFmZmluaXR5KSBjb25z
dAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEwOTgsNyAr
MTA5OCw3IEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKGNvbnN0
IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKIH0KIAogLy8gVGhpcyBhc3N1bWVzIHRoYXQgaXQg
c3RhcnRzIGluIGVkaXRhYmxlIGNvbnRlbnQuCi1Qb3NpdGlvbiBQb3NpdGlvbjo6bGVhZGluZ1do
aXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xs
YXBzaWJsZVdoaXRlc3BhY2UpIGNvbnN0CitQb3NpdGlvbiBQb3NpdGlvbjo6bGVhZGluZ1doaXRl
c3BhY2VQb3NpdGlvbihBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBjb25zaWRlck5vbkNvbGxhcHNp
YmxlV2hpdGVzcGFjZSkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNFZGl0YWJsZVBvc2l0aW9uKCp0
aGlzKSk7CiAgICAgaWYgKGlzTnVsbCgpKQpAQCAtMTEyMCw3ICsxMTIwLDcgQEAgUG9zaXRpb24g
UG9zaXRpb246OmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24oRUFmZmluaXR5IGFmZmluaXR5LCBi
b29sIGNvbnNpZGVyTm8KIH0KIAogLy8gVGhpcyBhc3N1bWVzIHRoYXQgaXQgc3RhcnRzIGluIGVk
aXRhYmxlIGNvbnRlbnQuCi1Qb3NpdGlvbiBQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9z
aXRpb24oRUFmZmluaXR5LCBib29sIGNvbnNpZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlKSBj
b25zdAorUG9zaXRpb24gUG9zaXRpb246OnRyYWlsaW5nV2hpdGVzcGFjZVBvc2l0aW9uKEFmZmlu
aXR5LCBib29sIGNvbnNpZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlKSBjb25zdAogewogICAg
IEFTU0VSVChpc0VkaXRhYmxlUG9zaXRpb24oKnRoaXMpKTsKICAgICBpZiAoaXNOdWxsKCkpCkBA
IC0xMTM2LDcgKzExMzYsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNl
UG9zaXRpb24oRUFmZmluaXR5LCBib29sIGNvbnNpZGVyTm9uQ29sbGFwcwogICAgIHJldHVybiB7
IH07CiB9CiAKLUlubGluZUJveEFuZE9mZnNldCBQb3NpdGlvbjo6aW5saW5lQm94QW5kT2Zmc2V0
KEVBZmZpbml0eSBhZmZpbml0eSkgY29uc3QKK0lubGluZUJveEFuZE9mZnNldCBQb3NpdGlvbjo6
aW5saW5lQm94QW5kT2Zmc2V0KEFmZmluaXR5IGFmZmluaXR5KSBjb25zdAogewogICAgIHJldHVy
biBpbmxpbmVCb3hBbmRPZmZzZXQoYWZmaW5pdHksIHByaW1hcnlEaXJlY3Rpb24oKSk7CiB9CkBA
IC0xMjMxLDE0ICsxMjMxLDE0IEBAIElubGluZUJveEFuZE9mZnNldCBQb3NpdGlvbjo6aW5saW5l
Qm94QW5kT2Zmc2V0KEFmZmluaXR5IGFmZmluaXR5LCBUZXh0RGlyZWN0aW9uCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgYm94LCBjYXJldE9mZnNldCB9OwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpID09IGNhcmV0
TWF4T2Zmc2V0KSBeIChhZmZpbml0eSA9PSBET1dOU1RSRUFNKSkKLSAgICAgICAgICAgICAgICB8
fCAoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPT0gY2FyZXRNaW5PZmZzZXQp
IF4gKGFmZmluaXR5ID09IFVQU1RSRUFNKSkKKyAgICAgICAgICAgIGlmICgoKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPT0gY2FyZXRNYXhPZmZzZXQpIF4gKGFmZmluaXR5ID09
IEFmZmluaXR5OjpEb3duc3RyZWFtKSkKKyAgICAgICAgICAgICAgICB8fCAoKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPT0gY2FyZXRNaW5PZmZzZXQpIF4gKGFmZmluaXR5ID09
IEFmZmluaXR5OjpVcHN0cmVhbSkpCiAgICAgICAgICAgICAgICAgfHwgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjYXJldE9mZnNldCkgPT0gY2FyZXRNYXhPZmZzZXQgJiYgYm94LT5uZXh0TGVhZk9u
TGluZSgpICYmIGJveC0+bmV4dExlYWZPbkxpbmUoKS0+aXNMaW5lQnJlYWsoKSkpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGJveDsKICAgICAgICAg
fQotICAgICAgICBpZiAoY2FuZGlkYXRlICYmIGNhbmRpZGF0ZSA9PSB0ZXh0UmVuZGVyZXIubGFz
dFRleHRCb3goKSAmJiBhZmZpbml0eSA9PSBET1dOU1RSRUFNKSB7CisgICAgICAgIGlmIChjYW5k
aWRhdGUgJiYgY2FuZGlkYXRlID09IHRleHRSZW5kZXJlci5sYXN0VGV4dEJveCgpICYmIGFmZmlu
aXR5ID09IEFmZmluaXR5OjpEb3duc3RyZWFtKSB7CiAgICAgICAgICAgICBib3ggPSBzZWFyY2hB
aGVhZEZvckJldHRlck1hdGNoKCZ0ZXh0UmVuZGVyZXIpOwogICAgICAgICAgICAgaWYgKGJveCkK
ICAgICAgICAgICAgICAgICBjYXJldE9mZnNldCA9IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNw
cAppbmRleCAxNjc4Y2UzMjc1OGM5NDk5NDc5OGU1ZjYwNTM5NDMyYmEzY2Y3MjJiLi42M2YzN2Qy
YTg5NGJiOTFiMjY2MWRhYTU2MjM2YTExYjliODA0OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQ6OmZvcm1hdFNlbGVjdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZTZWwKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGJsb2Nr
cXVvdGUuY29weVJlZigpLCBzdGFydCk7CiAgICAgICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBIVE1M
QlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIGFwcGVuZE5vZGUocGxhY2Vo
b2xkZXIuY29weVJlZigpLCBXVEZNb3ZlKGJsb2NrcXVvdGUpKTsKLSAgICAgICAgc2V0RW5kaW5n
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKHBsYWNlaG9sZGVy
LnB0cigpKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7
CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uQmVm
b3JlTm9kZShwbGFjZWhvbGRlci5wdHIoKSksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBlbmRpbmdT
ZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAK
aW5kZXggZmRmMTE4YzViMzRiNTRkN2Q1NjhiZDg3NWM1YWQyM2RmNDlmNzFiNy4uMjJiMThiOTc4
ZmJhMGZjNjljMWFkMzllZmJkNmYyNTljYmNjYWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZv
aWQgQnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gSW5zdGVhZCwgaW5z
ZXJ0IHRoZSBicmVhayBiZWZvcmUgdGhlIGJsb2NrcXVvdGUsIHVubGVzcyB0aGUgcG9zaXRpb24g
aXMgYXMgdGhlIGVuZCBvZiB0aGUgcXVvdGVkIGNvbnRlbnQuCiAgICAgaWYgKGlzRmlyc3RWaXNp
YmxlUG9zaXRpb25Jbk5vZGUodmlzaWJsZVBvcywgdG9wQmxvY2txdW90ZSkgJiYgIWlzTGFzdFZp
c1Bvc0luTm9kZSkgewogICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGJyZWFrTm9kZS5jb3B5UmVm
KCksICp0b3BCbG9ja3F1b3RlKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKGJyZWFrTm9kZS5wdHIoKSksIERPV05TVFJFQU0s
IGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBzZXRFbmRpbmdT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoYnJlYWtOb2RlLnB0
cigpKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9u
YWwoKSkpOwogICAgICAgICByZWJhbGFuY2VXaGl0ZXNwYWNlKCk7ICAgCiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgQnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6
ZG9BcHBseSgpCiAKICAgICAvLyBJZiB3ZSdyZSBpbnNlcnRpbmcgdGhlIGJyZWFrIGF0IHRoZSBl
bmQgb2YgdGhlIHF1b3RlZCBjb250ZW50LCB3ZSBkb24ndCBuZWVkIHRvIGJyZWFrIHRoZSBxdW90
ZS4KICAgICBpZiAoaXNMYXN0VmlzUG9zSW5Ob2RlKSB7Ci0gICAgICAgIHNldEVuZGluZ1NlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShicmVha05vZGUucHRyKCkp
LCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2Rl
KGJyZWFrTm9kZS5wdHIoKSksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBlbmRpbmdTZWxlY3Rpb24o
KS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAgICAgcmViYWxhbmNlV2hpdGVzcGFjZSgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgQnJlYWtCbG9ja3F1
b3RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgYWRkQmxvY2tQbGFjZWhvbGRlcklmTmVlZGVkKGNs
b25lZEJsb2NrcXVvdGUucHRyKCkpOwogICAgIAogICAgIC8vIFB1dCB0aGUgc2VsZWN0aW9uIHJp
Z2h0IGJlZm9yZSB0aGUgYnJlYWsuCi0gICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKGJyZWFrTm9kZS5wdHIoKSksIERPV05TVFJFQU0sIGVu
ZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgIHNldEVuZGluZ1NlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShicmVha05vZGUucHRyKCkpLCBB
ZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7
CiAgICAgcmViYWxhbmNlV2hpdGVzcGFjZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDJmYzYzODQ0OWQyODdhMGY3ZTQ2
Y2RjMmYwMjZhYzg2MGFjZDhlMzUuLmRjNzBiYmJmMzA4YzZjNDNmNmQ0NDFmZTU5NDNjMGQ5NDVm
Y2ZlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBoV2l0aENsb25lcyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0TwogCiAg
ICAgY2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQoc3RhcnQsIGVuZCwgb3V0ZXJOb2RlLCBi
bG9ja0VsZW1lbnQpOwogICAgICAgCi0gICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oc3RhcnQsIGVuZCwgRE9XTlNUUkVBTSkpOworICAgIHNldEVuZGluZ1NlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQpKTsKICAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogICAgIAogICAgIC8vIFRoZXJlIGFyZSBidWdzIGluIGRl
bGV0aW9uIHdoZW4gaXQgcmVtb3ZlcyBhIGZ1bGx5IHNlbGVjdGVkIHRhYmxlL2xpc3QuCkBAIC0x
NDQ5LDcgKzE0NDksNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBo
cyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogCiAgICAgLy8gRklYTUUg
KDUwOTg5MzEpOiBXZSBzaG91bGQgYWRkIGEgbmV3IGluc2VydCBhY3Rpb24gIldlYlZpZXdJbnNl
cnRBY3Rpb25Nb3ZlZCIgYW5kIGNhbGwgc2hvdWxkSW5zZXJ0RnJhZ21lbnQgaGVyZS4KIAotICAg
IHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIERPV05TVFJF
QU0pKTsKKyAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydCwgZW5k
KSk7CiAgICAgZG9jdW1lbnQoKS5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSk7CiAKQEAgLTE1MDQsNyArMTUwNCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBh
cmFncmFwCiAgICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudCAod2hpY2ggd2lsbCByZXR1cm4gbnVs
bCkuCiAgICAgICAgIGF1dG8gc3RhcnQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVz
b2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWRp
dGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICpzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JF
bWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwogICAgICAgICBhdXRv
IGVuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRp
b24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5h
dGlvbkluZGV4ICsgKmVuZEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucykpOwotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oeyBzdGFy
dCwgZW5kLCBET1dOU1RSRUFNLCBvcmlnaW5hbElzRGlyZWN0aW9uYWwgfSk7CisgICAgICAgIHNl
dEVuZGluZ1NlbGVjdGlvbih7IHN0YXJ0LCBlbmQsIEFmZmluaXR5OjpEb3duc3RyZWFtLCBvcmln
aW5hbElzRGlyZWN0aW9uYWwgfSk7CiAgICAgfQogfQogCkBAIC0xNTc1LDcgKzE1NzUsNyBAQCBi
b29sIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpicmVha091dE9mRW1wdHlMaXN0SXRlbSgpCiAgICAg
fQogCiAgICAgYXBwZW5kQmxvY2tQbGFjZWhvbGRlcigqbmV3QmxvY2spOwotICAgIHNldEVuZGlu
Z1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUobmV3QmxvY2su
Z2V0KCkpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsK
KyAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5O
b2RlKG5ld0Jsb2NrLmdldCgpKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1NlbGVjdGlv
bigpLmlzRGlyZWN0aW9uYWwoKSkpOwogCiAgICAgc3R5bGUtPnByZXBhcmVUb0FwcGx5QXQoZW5k
aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAgICAgaWYgKCFzdHlsZS0+aXNFbXB0eSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAppbmRleCA0MjEzNDcx
NDUxZDY0NmFjMjVkNzI2MDM0MDA1YzNkZmJhODUyZmE5Li5hMTIwMGU5ZjNiNDBiMjkzNzY0Mzhh
ZTRhY2Q0YmVhZThiMGJiNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Ny
ZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxp
bmtDb21tYW5kLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIENyZWF0ZUxpbmtDb21tYW5kOjpk
b0FwcGx5KCkKICAgICBlbHNlIHsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGFuY2hvckVsZW1lbnQu
Y29weVJlZigpLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKICAgICAgICAgYXBwZW5kTm9k
ZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpLCBhbmNob3JFbGVtZW50LmNvcHlSZWYo
KSk7Ci0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9u
SW5QYXJlbnRCZWZvcmVOb2RlKGFuY2hvckVsZW1lbnQucHRyKCkpLCBwb3NpdGlvbkluUGFyZW50
QWZ0ZXJOb2RlKGFuY2hvckVsZW1lbnQucHRyKCkpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rp
b24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIo
KSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIEFmZmlu
aXR5OjpEb3duc3RyZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCmluZGV4IGJhYTdlOTdlZWMzMzVhZmY1NmVhMjhjYzVhMzhiZTZkMzc4Y2IxNGMu
LmQwZjU2YWQ1MTk5YTUzNjg2ZGE5NTViZjE1NTdiNGJhZGUyZmEzMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMjEzLDcg
KzIxMyw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c21hcnREZWxldGVQYXJhZ3Jh
cGhTcGFjZXJzKCkKICAgICAgICAgYXV0byBwb3NpdGlvbiA9IGVuZE9mUGFyYWdyYXBoQmVmb3Jl
U3RhcnQuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgbV91cHN0cmVhbVN0YXJ0ID0gcG9zaXRp
b24udXBzdHJlYW0oKTsKICAgICAgICAgbV9kb3duc3RyZWFtU3RhcnQgPSBwb3NpdGlvbi5kb3du
c3RyZWFtKCk7Ci0gICAgICAgIG1fbGVhZGluZ1doaXRlc3BhY2UgPSBtX3Vwc3RyZWFtU3RhcnQu
bGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihET1dOU1RSRUFNKTsKKyAgICAgICAgbV9sZWFkaW5n
V2hpdGVzcGFjZSA9IG1fdXBzdHJlYW1TdGFydC5sZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uKEFm
ZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICAgICAgc2V0U3RhcnRpbmdTZWxlY3Rpb25PblNtYXJ0
RGVsZXRlKG1fdXBzdHJlYW1TdGFydCwgbV91cHN0cmVhbUVuZCk7CiAgICAgfQogfQpAQCAtOTAw
LDggKzkwMCw4IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
fQogCiAgICAgLy8gc2F2ZSB0aGlzIHRvIGxhdGVyIG1ha2UgdGhlIHNlbGVjdGlvbiB3aXRoCi0g
ICAgRUFmZmluaXR5IGFmZmluaXR5ID0gbV9zZWxlY3Rpb25Ub0RlbGV0ZS5hZmZpbml0eSgpOwot
ICAgIAorICAgIGF1dG8gYWZmaW5pdHkgPSBtX3NlbGVjdGlvblRvRGVsZXRlLmFmZmluaXR5KCk7
CisKICAgICBQb3NpdGlvbiBkb3duc3RyZWFtRW5kID0gbV9zZWxlY3Rpb25Ub0RlbGV0ZS5lbmQo
KS5kb3duc3RyZWFtKCk7CiAgICAgbV9uZWVkUGxhY2Vob2xkZXIgPSBpc1N0YXJ0T2ZQYXJhZ3Jh
cGgobV9zZWxlY3Rpb25Ub0RlbGV0ZS52aXNpYmxlU3RhcnQoKSwgQ2FuQ3Jvc3NFZGl0aW5nQm91
bmRhcnkpCiAgICAgICAgICAgICAmJiBpc0VuZE9mUGFyYWdyYXBoKG1fc2VsZWN0aW9uVG9EZWxl
dGUudmlzaWJsZUVuZCgpLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuY3BwCmluZGV4IGIyMjc3Y2VjNDE3ZWU4NjNjYTQyM2JhM2RhYjA0ZWUyMTI2MGVj
NDEuLmE3OGE2ZmIxYjA5YTVjYmYxZTE3NDIxNGZhNGYzYWExNzY2NDdiZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtNDMzLDggKzQzMyw4IEBAIHN0YXRpYyBIVE1MRWxlbWVu
dCogZmlyc3RJblNwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICBm
b3IgKE5vZGUqIG5vZGUgPSBwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpOyBub2RlICYmIG5vZGUt
PnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9PSByb290RWRpdGFibGVFbGVtZW50OyBub2RlID0gbm9k
ZS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmICghaXNTcGVjaWFsSFRNTEVsZW1lbnQobm9k
ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZQb3Mo
cG9zaXRpb24sIERPV05TVFJFQU0pOwotICAgICAgICBWaXNpYmxlUG9zaXRpb24gZmlyc3RJbkVs
ZW1lbnQoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKKyAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHZQb3MocG9zaXRpb24pOworICAgICAgICBWaXNpYmxlUG9z
aXRpb24gZmlyc3RJbkVsZW1lbnQoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpKTsK
ICAgICAgICAgaWYgKChpc1JlbmRlcmVkVGFibGUobm9kZSkgJiYgdlBvcyA9PSBmaXJzdEluRWxl
bWVudC5uZXh0KCkpIHx8IHZQb3MgPT0gZmlyc3RJbkVsZW1lbnQpCiAgICAgICAgICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9kZSk7CiAgICAgfQpAQCAtNDQ3LDggKzQ0Nyw4
IEBAIHN0YXRpYyBIVE1MRWxlbWVudCogbGFzdEluU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRp
b24mIHBvc2l0aW9uKQogICAgIGZvciAoTm9kZSogbm9kZSA9IHBvc2l0aW9uLmRlcHJlY2F0ZWRO
b2RlKCk7IG5vZGUgJiYgbm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IHJvb3RFZGl0YWJs
ZUVsZW1lbnQ7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKCFpc1Nw
ZWNpYWxIVE1MRWxlbWVudChub2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBW
aXNpYmxlUG9zaXRpb24gdlBvcyhwb3NpdGlvbiwgRE9XTlNUUkVBTSk7Ci0gICAgICAgIFZpc2li
bGVQb3NpdGlvbiBsYXN0SW5FbGVtZW50KGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSks
IERPV05TVFJFQU0pOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdlBvcyhwb3NpdGlvbik7Cisg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBsYXN0SW5FbGVtZW50KGxhc3RQb3NpdGlvbkluT3JBZnRl
ck5vZGUobm9kZSkpOwogICAgICAgICBpZiAoKGlzUmVuZGVyZWRUYWJsZShub2RlKSAmJiB2UG9z
ID09IGxhc3RJbkVsZW1lbnQucHJldmlvdXMoKSkgfHwgdlBvcyA9PSBsYXN0SW5FbGVtZW50KQog
ICAgICAgICAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MRWxlbWVudD4oKm5vZGUpOwogICAgIH0K
QEAgLTUwOSw3ICs1MDksNyBAQCBFbGVtZW50KiBpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uQmVmb3JlTm9kZShOb2RlJiBub2RlKQogewogICAgIGlmIChub2RlLmhhc0NoaWxkTm9k
ZXMoKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJl
Zm9yZU5vZGUoJm5vZGUpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoJm5vZGUpKTsKICAgICBBU1NFUlQobm9k
ZS5wYXJlbnROb2RlKCkpOwogICAgIEFTU0VSVCghbm9kZS5wYXJlbnROb2RlKCktPmlzU2hhZG93
Um9vdCgpKTsKICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoJm5vZGUpOwpA
QCAtNTE5LDcgKzUxOSw3IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25CZWZvcmVO
b2RlKE5vZGUmIG5vZGUpCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQWZ0ZXJOb2Rl
KE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUuaGFzQ2hpbGROb2RlcygpKQotICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUoJm5vZGUpLCBE
T1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25J
bk9yQWZ0ZXJOb2RlKCZub2RlKSk7CiAgICAgQVNTRVJUKG5vZGUucGFyZW50Tm9kZSgpKTsKICAg
ICBBU1NFUlQoIW5vZGUucGFyZW50Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgcmV0dXJu
IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoJm5vZGUpOwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCwgQ29udGFp
bmVyTm9kZSogc2NvcGUpCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhV
c2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmIG5vZGUsIGludCBpbmRleCkKIHsKICAgICBpZiAo
aW5kZXggPD0gMCkKLSAgICAgICAgcmV0dXJuIHsgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2Rl
KCZub2RlKSwgRE9XTlNUUkVBTSB9OworICAgICAgICByZXR1cm4geyBmaXJzdFBvc2l0aW9uSW5P
ckJlZm9yZU5vZGUoJm5vZGUpIH07CiAKICAgICBhdXRvIHJhbmdlID0gbWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKG5vZGUpOwogICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KHJhbmdlKTsK
QEAgLTExMTAsNyArMTExMCw3IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJ
bmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluCiAgICAgICAgICAg
ICByZXR1cm4geyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oaXQucmFuZ2UoKS5zdGFydCkg
fTsKICAgICB9CiAKLSAgICByZXR1cm4geyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKGl0
LmF0RW5kKCkgPyByYW5nZSA6IGl0LnJhbmdlKCkpLmVuZCksIFVQU1RSRUFNIH07CisgICAgcmV0
dXJuIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChpdC5hdEVuZCgpID8gcmFuZ2UgOiBp
dC5yYW5nZSgpKS5lbmQpLCBBZmZpbml0eTo6VXBzdHJlYW0gfTsKIH0KIAogLy8gRGV0ZXJtaW5l
cyB3aGV0aGVyIHR3byBwb3NpdGlvbnMgYXJlIHZpc2libHkgbmV4dCB0byBlYWNoIG90aGVyIChm
aXJzdCB0aGVuIHNlY29uZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0ZDRhOGNj
NDRmOTAxMmZjZWI0Yzk0NDc5YjA1NTkxOWI1NDQ3ZDJjLi4zOTEzZjJlYzg5NTI3ZjY0Mzk3ZDVh
YTU5OWUxMzMwNDgzZGIzNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNzEs
NyArMjcxLDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBFZGl0b3I6OnNlbGVjdGlvbkZvckNvbW1hbmQo
RXZlbnQqIGV2ZW50KQogICAgICAgICBhdXRvIHN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0KCk7CiAg
ICAgICAgIGlmIChzdGFydC5pc051bGwoKSB8fCAmdGFyZ2V0ICE9IGVuY2xvc2luZ1RleHRGb3Jt
Q29udHJvbChzdGFydCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIHJhbmdlID0gdGFyZ2V0LnNl
bGVjdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiB7ICpyYW5nZSwgRE9XTlNUUkVBTSwg
c2VsZWN0aW9uLmlzRGlyZWN0aW9uYWwoKSB9OworICAgICAgICAgICAgICAgIHJldHVybiB7ICpy
YW5nZSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIHNlbGVjdGlvbi5pc0RpcmVjdGlvbmFsKCkgfTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gc2VsZWN0aW9uOwpAQCAtNTEzLDcgKzUxMyw3
IEBAIGJvb2wgRWRpdG9yOjpjYW5EZWxldGVSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2Up
IGNvbnN0CiAKICAgICBpZiAocmFuZ2UuY29sbGFwc2VkKCkpIHsKICAgICAgICAgLy8gRklYTUU6
IFdlIHNvbWV0aW1lcyBhbGxvdyBkZWxldGlvbnMgYXQgdGhlIHN0YXJ0IG9mIGVkaXRhYmxlIHJv
b3RzLCBsaWtlIHdoZW4gdGhlIGNhcmV0IGlzIGluIGFuIGVtcHR5IGxpc3QgaXRlbS4KLSAgICAg
ICAgYXV0byBwcmV2aW91cyA9IFZpc2libGVQb3NpdGlvbiB7IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihyYW5nZS5zdGFydCksIERPV05TVFJFQU0gfS5wcmV2aW91cygpOworICAgICAgICBh
dXRvIHByZXZpb3VzID0gVmlzaWJsZVBvc2l0aW9uIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKHJhbmdlLnN0YXJ0KSB9LnByZXZpb3VzKCk7CiAgICAgICAgIGlmIChwcmV2aW91cy5pc051
bGwoKSB8fCBwcmV2aW91cy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKSAhPSByYW5nZS5zdGFydC5jb250YWluZXItPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05NDEsMjggKzk0
MSwyNCBAQCB2b2lkIEVkaXRvcjo6YXBwbHlTdHlsZShSZWZQdHI8RWRpdGluZ1N0eWxlPiYmIHN0
eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24sCiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBzZWxlY3Rpb25UeXBlID0gbV9kb2N1bWVudC5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCk7Ci0gICAgaWYgKHNlbGVjdGlvblR5cGUgPT0g
VmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb24pCisgICAgaWYgKG1fZG9jdW1lbnQuc2VsZWN0
aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBpbnB1dFR5cGVO
YW1lID0gaW5wdXRUeXBlTmFtZUZvckVkaXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbik7CiAgICAg
U3RyaW5nIGlucHV0RXZlbnREYXRhID0gaW5wdXRFdmVudERhdGFGb3JFZGl0aW5nU3R5bGVBbmRB
Y3Rpb24oKnN0eWxlLCBlZGl0aW5nQWN0aW9uKTsKLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVu
dCA9IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVu
dCgpOworICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCkpOworCiAgICAgaWYgKGVsZW1lbnQg
JiYgIWRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCgqZWxlbWVudCwgaW5wdXRUeXBlTmFtZSwgaW5w
dXRFdmVudERhdGEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8RWRpdGluZ1N0eWxlPiBz
dHlsZVRvQXBwbHkgPSBjb2xvckZpbHRlck1vZGUgPT0gQ29sb3JGaWx0ZXJNb2RlOjpJbnZlcnRD
b2xvciA/IHN0eWxlLT5pbnZlcnNlVHJhbnNmb3JtQ29sb3JJZk5lZWRlZCgqZWxlbWVudCkgOiBz
dHlsZS5yZWxlYXNlTm9uTnVsbCgpOworICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlz
Tm9uZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBzd2l0Y2ggKHNlbGVjdGlvblR5cGUpIHsK
LSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uOgotICAgICAgICBjb21w
dXRlQW5kU2V0VHlwaW5nU3R5bGUoc3R5bGVUb0FwcGx5LmdldCgpLCBlZGl0aW5nQWN0aW9uKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlv
bjoKKyAgICBhdXRvIHN0eWxlVG9BcHBseSA9IGNvbG9yRmlsdGVyTW9kZSA9PSBDb2xvckZpbHRl
ck1vZGU6OkludmVydENvbG9yID8gc3R5bGUtPmludmVyc2VUcmFuc2Zvcm1Db2xvcklmTmVlZGVk
KCplbGVtZW50KSA6IHN0eWxlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgaWYgKG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuaXNDYXJldCgpKQorICAgICAgICBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUo
c3R5bGVUb0FwcGx5LCBlZGl0aW5nQWN0aW9uKTsKKyAgICBlbHNlCiAgICAgICAgIEFwcGx5U3R5
bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3R5bGVUb0FwcGx5LnB0cigpLCBlZGl0aW5n
QWN0aW9uKS0+YXBwbHkoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQogCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+ZGlk
QXBwbHlTdHlsZSgpOwpAQCAtOTgwLDE3ICs5NzYsMTkgQEAgdm9pZCBFZGl0b3I6OmFwcGx5UGFy
YWdyYXBoU3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0
aW8KICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNlbGVjdGlv
blR5cGUgPSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUo
KTsKLSAgICBpZiAoc2VsZWN0aW9uVHlwZSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlv
bikKKyAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgU3RyaW5nIGlucHV0VHlwZU5hbWUgPSBpbnB1dFR5cGVOYW1lRm9yRWRpdGlu
Z0FjdGlvbihlZGl0aW5nQWN0aW9uKTsKICAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEgPSBpbnB1
dEV2ZW50RGF0YUZvckVkaXRpbmdTdHlsZUFuZEFjdGlvbihzdHlsZSwgZWRpdGluZ0FjdGlvbik7
Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBtYWtl
UmVmUHRyKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxl
bWVudCgpKTsKICAgICBpZiAoZWxlbWVudCAmJiAhZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50KCpl
bGVtZW50LCBpbnB1dFR5cGVOYW1lLCBpbnB1dEV2ZW50RGF0YSkpCiAgICAgICAgIHJldHVybjsK
KyAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJu
OwogCiAgICAgQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShzdHlsZSkucHRyKCksIGVkaXRpbmdBY3Rpb24sIEFwcGx5U3R5bGVDb21tYW5k
OjpGb3JjZUJsb2NrUHJvcGVydGllcyktPmFwcGx5KCk7CisKICAgICBjbGllbnQoKS0+ZGlkQXBw
bHlTdHlsZSgpOwogICAgIGlmIChlbGVtZW50KQogICAgICAgICBkaXNwYXRjaElucHV0RXZlbnQo
KmVsZW1lbnQsIGlucHV0VHlwZU5hbWUsIGlucHV0RXZlbnREYXRhKTsKQEAgLTIxMzcsNyArMjEz
NSw3IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFy
dCA9IHN0ZDo6bWluKGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25TdGFydCwgZXh0ZW50T2Zmc2V0KTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCBiYXNl
T2Zmc2V0ICsgc2VsZWN0aW9uRW5kKSwgZXh0ZW50T2Zmc2V0KTsKICAgICAgICAgICAgIGF1dG8g
cmFuZ2UgPSBTaW1wbGVSYW5nZSB7IHsgKmJhc2VOb2RlLCBzdGFydCB9LCB7ICpiYXNlTm9kZSwg
ZW5kIH0gfTsKLSAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRS
YW5nZShyYW5nZSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5n
OjpObyk7CisgICAgICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFu
Z2UocmFuZ2UsIEFmZmluaXR5OjpEb3duc3RyZWFtLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xv
c2VUeXBpbmc6Ok5vKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjIyNyw3ICsyMjI1LDcgQEAg
dm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKQogICAgIC8vIElmIHNwZWxsaW5nU2VhcmNoUmFuZ2Ugc3RhcnRzIGluIHRoZSBtaWRk
bGUgb2YgYSB3b3JkLCBhZHZhbmNlIHRvIHRoZSBuZXh0IHdvcmQgc28gd2Ugc3RhcnQgY2hlY2tp
bmcKICAgICAvLyBhdCBhIHdvcmQgYm91bmRhcnkuIEdvaW5nIGJhY2sgYnkgb25lIGNoYXIgYW5k
IHRoZW4gZm9yd2FyZCBieSBhIHdvcmQgZG9lcyB0aGUgdHJpY2suCiAgICAgaWYgKHN0YXJ0ZWRX
aXRoU2VsZWN0aW9uKSB7Ci0gICAgICAgIGF1dG8gb25lQmVmb3JlU3RhcnQgPSBWaXNpYmxlUG9z
aXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHNwZWxsaW5nU2VhcmNoUmFuZ2Uuc3Rh
cnQpLCBET1dOU1RSRUFNKS5wcmV2aW91cygpOworICAgICAgICBhdXRvIG9uZUJlZm9yZVN0YXJ0
ID0gVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzcGVsbGluZ1Nl
YXJjaFJhbmdlLnN0YXJ0KSkucHJldmlvdXMoKTsKICAgICAgICAgaWYgKG9uZUJlZm9yZVN0YXJ0
LmlzTm90TnVsbCgpKQogICAgICAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS5zdGFydCA9ICpt
YWtlQm91bmRhcnlQb2ludChlbmRPZldvcmQob25lQmVmb3JlU3RhcnQpKTsKICAgICAgICAgLy8g
ZWxzZSB3ZSB3ZXJlIGFscmVhZHkgYXQgdGhlIHN0YXJ0IG9mIHRoZSBlZGl0YWJsZSBub2RlCkBA
IC0yMzA4LDcgKzIzMDYsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRSA0
ODU5MTkwOiBUaGlzIGdldHMgY29uZnVzZWQgd2l0aCBkb3VibGVkIHB1bmN0dWF0aW9uIGF0IHRo
ZSBlbmQgb2YgYSBwYXJhZ3JhcGguCiAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcmVz
b2x2ZUNoYXJhY3RlclJhbmdlKGdyYW1tYXJTZWFyY2hSYW5nZSwgeyB1bmdyYW1tYXRpY2FsUGhy
YXNlLm9mZnNldCArIHVuZ3JhbW1hdGljYWxQaHJhc2UuZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCB1
bmdyYW1tYXRpY2FsUGhyYXNlLmRldGFpbC5yYW5nZS5sZW5ndGggfSk7Ci0gICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1h
clJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgICAgICBtX2RvY3VtZW50LnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGJhZEdyYW1tYXJSYW5nZSkpOwog
ICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAg
ICAKICAgICAgICAgY2xpZW50KCktPnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyh1
bmdyYW1tYXRpY2FsUGhyYXNlLnBocmFzZSwgdW5ncmFtbWF0aWNhbFBocmFzZS5kZXRhaWwpOwpA
QCAtMjMxOCw3ICsyMzE2LDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGlu
Zyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBhIG1hcmtlciBzbyB3ZSBk
cmF3IHRoZSByZWQgc3F1aWdnbGUgbGF0ZXIuCiAgICAgICAgIAogICAgICAgICBhdXRvIG1pc3Nw
ZWxsaW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwg
eyBtaXNzcGVsbGVkV29yZC5vZmZzZXQsIG1pc3NwZWxsZWRXb3JkLndvcmQubGVuZ3RoKCkgfSk7
Ci0gICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24obWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOworICAgICAgICBtX2RvY3VtZW50
LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFu
Z2UpKTsKICAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsK
ICAgICAgICAgCiAgICAgICAgIGNsaWVudCgpLT51cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxs
ZWRXb3JkKG1pc3NwZWxsZWRXb3JkLndvcmQpOwpAQCAtMjU3NCw3ICsyNTcyLDcgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHdvcmRTdGFydCwKIAogICAgIC8vIElmIGF1dG9jb3JyZWN0ZWQgd29yZCBpcyBub24g
ZW1wdHksIHJlcGxhY2UgdGhlIG1pc3NwZWxsZWQgd29yZCBieSB0aGlzIHdvcmQuCiAgICAgaWYg
KCFhdXRvY29ycmVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBWaXNpYmxlU2VsZWN0
aW9uIG5ld1NlbGVjdGlvbigqbWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSk7CisgICAgICAg
IFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKCptaXNzcGVsbGluZ1JhbmdlKTsKICAgICAg
ICAgaWYgKG5ld1NlbGVjdGlvbiAhPSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
KSB7CiAgICAgICAgICAgICBpZiAoIW1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdl
U2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc4
Myw3ICsyNzgxLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxs
Q2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICBib29sIHJlc3RvcmVT
ZWxlY3Rpb25BZnRlckNoYW5nZSA9IGZhbHNlOwogCiAgICAgaWYgKHNob3VsZFBlcmZvcm1SZXBs
YWNlbWVudCB8fCBzaG91bGRNYXJrU3BlbGxpbmcgfHwgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9u
KSB7Ci0gICAgICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnNlbGVj
dGlvblR5cGUoKSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbikgeworICAgICAg
ICBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpIHsKICAgICAgICAgICAgIC8v
IEF0dGVtcHQgdG8gc2F2ZSB0aGUgY2FyZXQgcG9zaXRpb24gc28gd2UgY2FuIHJlc3RvcmUgaXQg
bGF0ZXIgaWYgbmVlZGVkCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICAgICAgICAgIHNlbGVj
dGlvbk9mZnNldCA9IHBhcmFncmFwaC5vZmZzZXRUbyhjYXJldFBvc2l0aW9uKS5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKQEAgLTI4NjQsNyArMjg2Miw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVw
bGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRl
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9SZXBsYWNlLCBET1dO
U1RSRUFNKTsKKyAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNl
KHJhbmdlVG9SZXBsYWNlKTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Ub1JlcGxhY2UgIT0g
bV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgICAgIGlm
ICghbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9u
VG9SZXBsYWNlKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yOTEwLDcgKzI5
MDgsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1Jl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBleHRlbmRlZFBhcmFncmFw
aC5leHBhbmRSYW5nZVRvTmV4dEVuZCgpOwogICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbkFm
dGVyQ2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA8PSBleHRlbmRlZFBhcmFncmFwaC5yYW5nZUxl
bmd0aCgpKSB7CiAgICAgICAgICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZXh0ZW5kZWRQYXJh
Z3JhcGguc3VicmFuZ2UoeyAwLCBzZWxlY3Rpb25PZmZzZXQgfSk7Ci0gICAgICAgICAgICBtX2Rv
Y3VtZW50LnNlbGVjdGlvbigpLm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc2Vs
ZWN0aW9uUmFuZ2UuZW5kKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBtX2RvY3VtZW50LnNl
bGVjdGlvbigpLm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc2VsZWN0aW9uUmFu
Z2UuZW5kKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgLy8gSWYgdGhpcyBmYWlscyBmb3IgYW55IHJlYXNvbiwgdGhlIGZhbGxiYWNrIGlzIHRv
IGdvIG9uZSBwb3NpdGlvbiBiZXlvbmQgdGhlIGxhc3QgcmVwbGFjZW1lbnQKICAgICAgICAgICAg
IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuZW5kKCkpOwpAQCAtMzE1Nyw3ICszMTU1LDcgQEAgdm9pZCBFZGl0b3I6OnRyYW5z
cG9zZSgpCiAgICAgYXV0byByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShwcmV2aW91cywgbmV4dCk7
CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwotICAgIFZpc2libGVTZWxlY3Rpb24g
bmV3U2VsZWN0aW9uKCpyYW5nZSwgRE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBu
ZXdTZWxlY3Rpb24oKnJhbmdlKTsKIAogICAgIC8vIFRyYW5zcG9zZSB0aGUgdHdvIGNoYXJhY3Rl
cnMuCiAgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQoKnJhbmdlKTsKQEAgLTMyOTUsNyArMzI5
Myw3IEBAIFJlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQ
bGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplCiAgICAgaWYgKCFwbGFjZWhvbGRlci0+cGFy
ZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fZG9jdW1lbnQuc2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24geyBwb3NpdGlvbkluUGFyZW50
QmVmb3JlTm9kZShwbGFjZWhvbGRlci5wdHIoKSksIFNFTF9ERUZBVUxUX0FGRklOSVRZIH0sIEZy
YW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKSk7
CisgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
biB7IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKHBsYWNlaG9sZGVyLnB0cigpKSB9LCBGcmFt
ZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoVXNlclRyaWdnZXJlZCkpOwog
CiAgICAgcmV0dXJuIHBsYWNlaG9sZGVyOwogfQpAQCAtMzMxNiw3ICszMzE0LDcgQEAgdm9pZCBF
ZGl0b3I6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50JiBwbGFj
ZWhvbGRlcikKIAogICAgIC8vIFRvIG1hdGNoIHRoZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0
aW9uLCBzZXQgdGhlIHRleHQgaW5zZXJ0aW9uIHBvaW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUg
cGxhY2Vob2xkZXIgdXNlIHRvIGJlLgogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlz
Rm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHNhdmVk
Um9vdEVkaXRhYmxlRWxlbWVudCkKLSAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7IHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhvbGRl
ciwgU0VMX0RFRkFVTFRfQUZGSU5JVFkgfSwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxl
Y3Rpb25PcHRpb25zKFVzZXJUcmlnZ2VyZWQpKTsKKyAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7IHNhdmVkUG9zaXRpb25CZWZvcmVQ
bGFjZWhvbGRlciB9LCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMo
VXNlclRyaWdnZXJlZCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGFwc2VDYXJldFdp
ZHRoKEludFJlY3QmIHJlY3QpCkBAIC0zMzMyLDQwICszMzMwLDM2IEBAIEludFJlY3QgRWRpdG9y
OjpmaXJzdFJlY3RGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpIGNvbnN0CiB7CiAg
ICAgcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKIAotICAgIFZpc2libGVQ
b3NpdGlvbiBzdGFydFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
cmFuZ2Uuc3RhcnQpLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLnN0YXJ0KSk7CiAKICAgICBpZiAocmFuZ2Uu
Y29sbGFwc2VkKCkpIHsKICAgICAgICAgLy8gRklYTUU6IEdldHRpbmcgY2FyZXQgcmVjdCBhbmQg
cmVtb3ZpbmcgY2FyZXQgd2lkdGggaXMgYSB2ZXJ5IHJvdW5kYWJvdXQgd2F5IHRvIGdldCBjb2xs
YXBzZWQgcmFuZ2UgbG9jYXRpb24uCiAgICAgICAgIC8vIEluIHBhcnRpY3VsYXIsIHdpZHRoIGFk
anVzdG1lbnQgZG9lc24ndCB3b3JrIGZvciByb3RhdGVkIHRleHQuCi0gICAgICAgIEludFJlY3Qg
c3RhcnRDYXJldFJlY3QgPSBSZW5kZXJlZFBvc2l0aW9uKHN0YXJ0VmlzaWJsZVBvc2l0aW9uKS5h
YnNvbHV0ZVJlY3QoKTsKKyAgICAgICAgSW50UmVjdCBzdGFydENhcmV0UmVjdCA9IFJlbmRlcmVk
UG9zaXRpb24oc3RhcnQpLmFic29sdXRlUmVjdCgpOwogICAgICAgICBjb2xsYXBzZUNhcmV0V2lk
dGgoc3RhcnRDYXJldFJlY3QpOwogICAgICAgICByZXR1cm4gc3RhcnRDYXJldFJlY3Q7CiAgICAg
fQogCi0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24ocmFuZ2UuZW5kKSwgVVBTVFJFQU0pOworICAgIFZpc2libGVQb3NpdGlv
biBlbmQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLmVuZCksIEFmZmluaXR5OjpV
cHN0cmVhbSk7CiAKLSAgICBpZiAoaW5TYW1lTGluZShzdGFydFZpc2libGVQb3NpdGlvbiwgZW5k
VmlzaWJsZVBvc2l0aW9uKSkKKyAgICBpZiAoaW5TYW1lTGluZShzdGFydCwgZW5kKSkKICAgICAg
ICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QodW5pdGVkQm91bmRpbmdCb3hlcyhSZW5kZXJPYmpl
Y3Q6OmFic29sdXRlVGV4dFF1YWRzKHJhbmdlKSkpOwogCiAgICAgTGF5b3V0VW5pdCBleHRyYVdp
ZHRoVG9FbmRPZkxpbmU7Ci0gICAgSW50UmVjdCBzdGFydENhcmV0UmVjdCA9IFJlbmRlcmVkUG9z
aXRpb24oc3RhcnRWaXNpYmxlUG9zaXRpb24pLmFic29sdXRlUmVjdCgmZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lKTsKKyAgICBJbnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gUmVuZGVyZWRQb3NpdGlvbihz
dGFydCkuYWJzb2x1dGVSZWN0KCZleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwogICAgIGlmIChzdGFy
dENhcmV0UmVjdCA9PSBJbnRSZWN0KCkpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAKICAg
ICAvLyBXaGVuIHN0YXJ0IGFuZCBlbmQgYXJlbid0IG9uIHRoZSBzYW1lIGxpbmUsIHdlIHdhbnQg
dG8gZ28gZnJvbSBzdGFydCB0byB0aGUgZW5kIG9mIGl0cyBsaW5lLgotICAgIGJvb2wgdGV4dElz
SG9yaXpvbnRhbCA9IHN0YXJ0Q2FyZXRSZWN0LndpZHRoKCkgPT0gY2FyZXRXaWR0aDsKLSAgICBy
ZXR1cm4gdGV4dElzSG9yaXpvbnRhbCA/Ci0gICAgICAgIEludFJlY3Qoc3RhcnRDYXJldFJlY3Qu
eCgpLAotICAgICAgICAgICAgc3RhcnRDYXJldFJlY3QueSgpLAotICAgICAgICAgICAgc3RhcnRD
YXJldFJlY3Qud2lkdGgoKSArIGV4dHJhV2lkdGhUb0VuZE9mTGluZSwKLSAgICAgICAgICAgIHN0
YXJ0Q2FyZXRSZWN0LmhlaWdodCgpKSA6Ci0gICAgICAgIEludFJlY3Qoc3RhcnRDYXJldFJlY3Qu
eCgpLAotICAgICAgICAgICAgc3RhcnRDYXJldFJlY3QueSgpLAotICAgICAgICAgICAgc3RhcnRD
YXJldFJlY3Qud2lkdGgoKSwKLSAgICAgICAgICAgIHN0YXJ0Q2FyZXRSZWN0LmhlaWdodCgpICsg
ZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0YXJ0Q2FyZXRSZWN0
OworICAgIGlmIChzdGFydENhcmV0UmVjdC53aWR0aCgpID09IGNhcmV0V2lkdGgpCisgICAgICAg
IHJlc3VsdC5leHBhbmQoZXh0cmFXaWR0aFRvRW5kT2ZMaW5lLCAwKTsKKyAgICBlbHNlCisgICAg
ICAgIHJlc3VsdC5leHBhbmQoMCwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1ib29sIEVkaXRvcjo6c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3
U2VsZWN0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGNvbnN0
Citib29sIEVkaXRvcjo6c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIG9sZFNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBB
ZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgY29uc3QKIHsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX2RvY3VtZW50LmZyYW1lKCkgJiYgbV9kb2N1bWVu
dC5mcmFtZSgpLT5zZWxlY3Rpb25DaGFuZ2VDYWxsYmFja3NEaXNhYmxlZCgpKQpAQCAtMzQ2Miw3
ICszNDU2LDcgQEAgYm9vbCBFZGl0b3I6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQs
IEZpbmRPcHRpb25zIG9wdGlvbnMpCiAgICAgaWYgKCFyZXN1bHRSYW5nZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbigqcmVzdWx0UmFuZ2UsIERPV05TVFJFQU0pKTsKKyAgICBtX2RvY3VtZW50
LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyZXN1bHRSYW5nZSkp
OwogCiAgICAgaWYgKCEob3B0aW9ucy5jb250YWlucyhEb05vdFJldmVhbFNlbGVjdGlvbikpKQog
ICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKaW5kZXggYWEzNTE1YzRlODgxODFmOGFhM2M5ODAwNTBmMjUwZmM4YzI4
MjRkOS4uMjkwYzJmYzFjZmY0OWY5MTkxZWViZWVkYzliMmVjNGRkZTFhN2FhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCkBAIC00NjIsNyArNDYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Vs
ZWN0aW9uV2lsbENoYW5nZSgpOwogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIE9wdGlvblNldDxGcmFtZVNlbGVj
dGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7Ci0gICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEFm
ZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1
bnNpZ25lZCBjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9vbCBtYXJrTWF0
Y2hlcywgVmVjdG9yPFNpbXBsZVJhbmdlPiopOwogICAgIGJvb2wgbWFya2VkVGV4dE1hdGNoZXNB
cmVIaWdobGlnaHRlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWFya2Vk
VGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCmluZGV4IDJkM2U5NWQwZmMxNjRlYmY2MTFmYjRlNGMwMDE5OWMwMGE1
NTg2YzEuLjNmYzAyZWI2NGRhZmI5OGMzZTBjYTFmYjFkNzFlNjkxYmM0MjlmZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb01hcmsoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0CiAgICAgYXV0byBtYXJrUmFuZ2UgPSBlZGl0b3IubWFyaygp
LnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlv
bi5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmIChtYXJrUmFuZ2UgJiYg
c2VsZWN0aW9uUmFuZ2UpIHsKLSAgICAgICAgaWYgKCFzZWxlY3Rpb24uc2V0U2VsZWN0ZWRSYW5n
ZSh1bmlvblJhbmdlKCptYXJrUmFuZ2UsICpzZWxlY3Rpb25SYW5nZSksIERPV05TVFJFQU0sIEZy
YW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKSkKKyAgICAgICAgaWYgKCFzZWxl
Y3Rpb24uc2V0U2VsZWN0ZWRSYW5nZSh1bmlvblJhbmdlKCptYXJrUmFuZ2UsICpzZWxlY3Rpb25S
YW5nZSksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VU
eXBpbmc6OlllcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGVkaXRv
ci5wZXJmb3JtRGVsZXRlKCk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlU2VsZWN0VG9NYXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdAogICAgICAgICBQQUw6OnN5c3RlbUJlZXAoKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICBzZWxlY3Rpb24uc2V0U2VsZWN0ZWRSYW5nZSh1bmlvblJhbmdlKCptYXJr
UmFuZ2UsICpzZWxlY3Rpb25SYW5nZSksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICBzZWxlY3Rpb24uc2V0U2VsZWN0ZWRSYW5nZSh1bmlv
blJhbmdlKCptYXJrUmFuZ2UsICpzZWxlY3Rpb25SYW5nZSksIEFmZmluaXR5OjpEb3duc3RyZWFt
LCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgLy8gRklYTUU6
IFdoeSBkbyB3ZSBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHNldFNlbGVjdGVkUmFuZ2Ug
aGVyZT8KICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAKaW5kZXggOTYxNDQ5YjhmNDE2MDNlNWU1ZWNhYjVmY2FjYjM3MjUzMGI4NDdi
OC4uYmZjZGQ3NmI0YTUwOGY5YjgxODZiZTNmZmM1Nzc4NzA0OTVlYTEyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIwMSwxMiArMjAxLDEyIEBAIHZv
aWQgRnJhbWVTZWxlY3Rpb246Om1vdmVUbyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIGJhc2UsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihi
YXNlLmRlZXBFcXVpdmFsZW50KCksIGV4dGVudC5kZWVwRXF1aXZhbGVudCgpLCBiYXNlLmFmZmlu
aXR5KCksIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25z
KHVzZXJUcmlnZ2VyZWQpKTsKIH0KIAotdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNvbnN0
IFBvc2l0aW9uJiBwb3NpdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCB1
c2VyVHJpZ2dlcmVkKQordm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNvbnN0IFBvc2l0aW9u
JiBwb3NpdGlvbiwgQWZmaW5pdHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2Vy
ZWQpCiB7CiAgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb24sIGFmZmlu
aXR5LCBtX3NlbGVjdGlvbi5pc0RpcmVjdGlvbmFsKCkpLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0
aW9ucyh1c2VyVHJpZ2dlcmVkKSk7CiB9CiAKLXZvaWQgRnJhbWVTZWxlY3Rpb246Om1vdmVUbyhj
b25zdCBQb3NpdGlvbiYgYmFzZSwgY29uc3QgUG9zaXRpb24mIGV4dGVudCwgRUFmZmluaXR5IGFm
ZmluaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkKQordm9pZCBGcmFtZVNlbGVjdGlv
bjo6bW92ZVRvKGNvbnN0IFBvc2l0aW9uJiBiYXNlLCBjb25zdCBQb3NpdGlvbiYgZXh0ZW50LCBB
ZmZpbml0eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBj
b25zdCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiA9IHRydWU7CiAgICAgc2V0U2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24oYmFzZSwgZXh0ZW50LCBhZmZpbml0eSwgc2VsZWN0aW9uSGFzRGly
ZWN0aW9uKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnModXNlclRyaWdnZXJlZCkpOwpAQCAt
MTQ2MCwxMiArMTQ2MCwxMiBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRp
b24gYWx0ZXIsIHVuc2lnbmVkIHZlcnRpY2FsRGlzdGFuY2UsIFZlcnRpYwogICAgIGNhc2UgQWx0
ZXJhdGlvbk1vdmU6CiAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihkaXJlY3Rpb24gPT0g
RGlyZWN0aW9uVXAgPyBtX3NlbGVjdGlvbi5zdGFydCgpIDogbV9zZWxlY3Rpb24uZW5kKCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICB4UG9zID0gbGluZURpcmVjdGlvblBvaW50
Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25VcCA/IFNU
QVJUIDogRU5EKTsKLSAgICAgICAgbV9zZWxlY3Rpb24uc2V0QWZmaW5pdHkoZGlyZWN0aW9uID09
IERpcmVjdGlvblVwID8gVVBTVFJFQU0gOiBET1dOU1RSRUFNKTsKKyAgICAgICAgbV9zZWxlY3Rp
b24uc2V0QWZmaW5pdHkoZGlyZWN0aW9uID09IERpcmVjdGlvblVwID8gQWZmaW5pdHk6OlVwc3Ry
ZWFtIDogQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFs
dGVyYXRpb25FeHRlbmQ6CiAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlv
bi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHhQb3MgPSBsaW5l
RGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oRVhURU5UKTsKLSAgICAg
ICAgbV9zZWxlY3Rpb24uc2V0QWZmaW5pdHkoRE9XTlNUUkVBTSk7CisgICAgICAgIG1fc2VsZWN0
aW9uLnNldEFmZmluaXR5KEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0xNjA5LDEzICsxNjA5LDEzIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldEV4
dGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBFVXNlclRyaWdnZXJlZCB1CiAg
ICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obV9zZWxlY3Rpb24uYmFzZSgpLCBwb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBzZWxlY3Rpb25IYXNE
aXJlY3Rpb24pLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyh1c2VyVHJpZ2dlcmVkKSk7CiB9
CiAKLXZvaWQgRnJhbWVTZWxlY3Rpb246OnNldEJhc2UoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
LCBFQWZmaW5pdHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCit2b2lk
IEZyYW1lU2VsZWN0aW9uOjpzZXRCYXNlKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgQWZmaW5p
dHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgY29uc3Qg
Ym9vbCBzZWxlY3Rpb25IYXNEaXJlY3Rpb24gPSB0cnVlOwogICAgIHNldFNlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKHBvc2l0aW9uLCBtX3NlbGVjdGlvbi5leHRlbnQoKSwgYWZmaW5pdHksIHNl
bGVjdGlvbkhhc0RpcmVjdGlvbiksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKHVzZXJUcmln
Z2VyZWQpKTsKIH0KIAotdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0RXh0ZW50KGNvbnN0IFBvc2l0
aW9uJiBwb3NpdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJp
Z2dlcmVkKQordm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0RXh0ZW50KGNvbnN0IFBvc2l0aW9uJiBw
b3NpdGlvbiwgQWZmaW5pdHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQp
CiB7CiAgICAgY29uc3QgYm9vbCBzZWxlY3Rpb25IYXNEaXJlY3Rpb24gPSB0cnVlOwogICAgIHNl
dFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1fc2VsZWN0aW9uLmJhc2UoKSwgcG9zaXRpb24s
IGFmZmluaXR5LCBzZWxlY3Rpb25IYXNEaXJlY3Rpb24pLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0
aW9ucyh1c2VyVHJpZ2dlcmVkKSk7CkBAIC0yMDEwLDcgKzIwMTAsNyBAQCB2b2lkIEZyYW1lU2Vs
ZWN0aW9uOjpzZWxlY3RBbGwoKQogICAgIH0KIH0KIAotYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0
U2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBFQWZmaW5p
dHkgYWZmaW5pdHksIFNob3VsZENsb3NlVHlwaW5nIGNsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJl
ZCB1c2VyVHJpZ2dlcmVkKQorYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShj
b25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBBZmZpbml0eSBhZmZpbml0eSwgU2hv
dWxkQ2xvc2VUeXBpbmcgY2xvc2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQp
CiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM3OCwxOCAr
MjM3OCwxNSBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9u
UmV2ZWFsTW9kZSByZXZlYWxNb2RlLCBjb25zdCBTY3JvbAogICAgIGlmIChyZXZlYWxNb2RlID09
IFNlbGVjdGlvblJldmVhbE1vZGU6OkRvTm90UmV2ZWFsKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBpZiAoaXNOb25lKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIExheW91dFJlY3QgcmVjdDsK
ICAgICBib29sIGluc2lkZUZpeGVkID0gZmFsc2U7Ci0gICAgc3dpdGNoIChtX3NlbGVjdGlvbi5z
ZWxlY3Rpb25UeXBlKCkpIHsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9u
OgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVj
dGlvbjoKKyAgICBpZiAoaXNDYXJldCgpKQogICAgICAgICByZWN0ID0gYWJzb2x1dGVDYXJldEJv
dW5kcygmaW5zaWRlRml4ZWQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpc2libGVTZWxl
Y3Rpb246OlJhbmdlU2VsZWN0aW9uOgorICAgIGVsc2UKICAgICAgICAgcmVjdCA9IHJldmVhbEV4
dGVudE9wdGlvbiA9PSBSZXZlYWxFeHRlbnQgPyBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZXh0ZW50KCkpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSA6IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0
aW9uQm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50OjpObykpOwotICAgICAgICBicmVhazsKLSAg
ICB9CiAKICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgQVNT
RVJUKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpOwpAQCAtMjQyNSw3ICsyNDIyLDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoYXV0byogYm9keSA9IG1fZG9jdW1lbnQtPmJvZHkoKSkKLSAgICAgICAgc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGJvZHkp
LCBET1dOU1RSRUFNKSk7CisgICAgICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGZp
cnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShib2R5KSkpOwogfQogCiBib29sIEZyYW1lU2VsZWN0
aW9uOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2Vs
ZWN0aW9uKSBjb25zdApAQCAtMjUwNSw3ICsyNTAyLDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6
ZXhwYW5kU2VsZWN0aW9uVG9FbGVtZW50Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkKICAgICBh
dXRvIHJhbmdlID0gZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAgICAg
aWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKCpyYW5nZSwgRE9XTlNUUkVBTSkpOworICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKCpyYW5nZSkpOwogfQogCiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rp
b246OmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggMGFiNzAyMTgzYjNmYmRkMGMwM2Mz
NDkzMmJkYTYxODgyYzA2YTcyOS4uYWI2ZDEzZWQwMjNhNjdjYzdhYWY1MmQyNjYzZDQ4ZjE5NzBl
NzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaApAQCAtMTQ1LDE1
ICsxNDUsMTUgQEAgcHVibGljOgogICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVU
byhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2Vy
ZWQsIEN1cnNvckFsaWduT25TY3JvbGwgPSBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVRvKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7
Ci0gICAgdm9pZCBtb3ZlVG8oY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHksIEVVc2VyVHJpZ2dl
cmVkID0gTm90VXNlclRyaWdnZXJlZCk7Ci0gICAgdm9pZCBtb3ZlVG8oY29uc3QgUG9zaXRpb24m
LCBjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJp
Z2dlcmVkKTsKKyAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3NpdGlvbiYsIEFmZmluaXR5LCBFVXNl
clRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOworICAgIHZvaWQgbW92ZVRvKGNvbnN0IFBv
c2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBBZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RV
c2VyVHJpZ2dlcmVkKTsKICAgICB2b2lkIG1vdmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0IFBv
c2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwgYm9v
bCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9uUmV2ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3RhdGVD
aGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAKICAgICBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbjsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJ
bnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRl
ZCwgVGV4dEdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZENsb3NlVHlwaW5nIDogYm9vbCB7IE5vLCBZZXMg
fTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldFNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgRUFmZmluaXR5LCBTaG91bGRDbG9zZVR5cGluZywgRVVzZXJUcmln
Z2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldFNl
bGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgQWZmaW5pdHksIFNob3Vs
ZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0QWxsKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhcigpOwogICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21GcmFtZSgpOwpAQCAtMTc2LDkgKzE3
Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVuZChjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBF
VXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0QmFzZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBFVXNlclRyaWdnZXJlZCA9
IE5vdFVzZXJUcmlnZ2VyZWQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QmFzZShjb25z
dCBQb3NpdGlvbiYsIEVBZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVk
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhc2UoY29uc3QgUG9zaXRpb24mLCBBZmZp
bml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsKICAgICB2b2lkIHNldEV4
dGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmln
Z2VyZWQpOwotICAgIHZvaWQgc2V0RXh0ZW50KGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBF
VXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOworICAgIHZvaWQgc2V0RXh0ZW50KGNv
bnN0IFBvc2l0aW9uJiwgQWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJl
ZCk7CiAKICAgICAvLyBSZXR1cm4gdGhlIHJlbmRlcmVyIHRoYXQgaXMgcmVzcG9uc2libGUgZm9y
IHBhaW50aW5nIHRoZSBjYXJldCAoaW4gdGhlIHNlbGVjdGlvbiBzdGFydCBub2RlKQogICAgIFJl
bmRlckJsb2NrKiBjYXJldFJlbmRlcmVyV2l0aG91dFVwZGF0aW5nTGF5b3V0KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCmluZGV4
IDEyNzBkNTlkODI2MDFhN2MwZGE5OTc1M2QzZGFjYTY4MDgwMTVjMzMuLmViMjRlMDdlMjEzMDk0
MTU1NWRhZjVhOWEyMjJkNmIxNmMzNDA5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBJbmRl
bnRPdXRkZW50Q29tbWFuZDo6b3V0ZGVudFJlZ2lvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0
YXJ0T2ZTZWxlY3Rpb24KICAgICB3aGlsZSAoZW5kT2ZDdXJyZW50UGFyYWdyYXBoICE9IGVuZEFm
dGVyU2VsZWN0aW9uKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZk5leHRQYXJhZ3Jh
cGggPSBlbmRPZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgubmV4dCgpKTsKICAgICAg
ICAgaWYgKGVuZE9mQ3VycmVudFBhcmFncmFwaCA9PSBlbmRPZkxhc3RQYXJhZ3JhcGgpCi0gICAg
ICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihvcmlnaW5hbFNlbGVj
dGlvbkVuZCwgRE9XTlNUUkVBTSkpOworICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24ob3JpZ2luYWxTZWxlY3Rpb25FbmQpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGVuZE9mQ3VycmVudFBhcmFncmFwaCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCmlu
ZGV4IDI3MzU1ZTY2ZmI4OWQ1NTQyY2Q2YTliZWE4OGUyYzI2MmY1MDc4M2IuLjg4MGU3MDM1OTg5
YTZmYjJiZmE3NjhhOTZhYjBhODNmOWNmNGNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtMTA2LDEyICsxMDYsMTIgQEAg
dm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgaWYgKCFpc1N0
YXJ0T2ZQYXJhZ3JhcGgocG9zaXRpb25CZWZvcmVOb2RlKG5vZGVUb0luc2VydC5nZXQoKSkpKQog
ICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShub2RlVG9JbnNlcnQtPmNsb25lTm9kZShmYWxz
ZSksICpub2RlVG9JbnNlcnQpOwogICAgICAgICAKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShub2RlVG9JbnNlcnQu
Z2V0KCkpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsK
KyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBh
cmVudEFmdGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwg
ZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgLy8gSWYgd2UncmUgaW5z
ZXJ0aW5nIGFmdGVyIGFsbCBvZiB0aGUgcmVuZGVyZWQgdGV4dCBpbiBhIHRleHQgbm9kZSwgb3Ig
aW50byBhIG5vbi10ZXh0IG5vZGUsCiAgICAgLy8gYSBzaW1wbGUgaW5zZXJ0aW9uIGlzIHN1ZmZp
Y2llbnQuCiAgICAgfSBlbHNlIGlmIChwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
ID49IGNhcmV0TWF4T2Zmc2V0KCpwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpKSB8fCAhaXM8VGV4
dD4oKnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSB7CiAgICAgICAgIGluc2VydE5vZGVBdCgq
bm9kZVRvSW5zZXJ0LCBwb3NpdGlvbik7Ci0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobm9kZVRvSW5zZXJ0LmdldCgp
KSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAg
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRB
ZnRlck5vZGUobm9kZVRvSW5zZXJ0LmdldCgpKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGlu
Z1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgIH0gZWxzZSBpZiAoaXM8VGV4dD4o
KnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSB7CiAgICAgICAgIC8vIFNwbGl0IGEgdGV4dCBu
b2RlCiAgICAgICAgIFRleHQmIHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKnBvc2l0aW9uLmRl
cHJlY2F0ZWROb2RlKCkpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFr
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGVuZGluZ1Bvc2l0aW9u
LCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nUG9zaXRpb24sIEFm
ZmluaXR5OjpEb3duc3RyZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsK
ICAgICB9CiAKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgYSB0eXBpbmcg
c3R5bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5lc3RlZExp
c3RDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TmVzdGVkTGlzdENv
bW1hbmQuY3BwCmluZGV4IDc3NGY3NWQyNjc5ZmM3YzZhMTU4NDcxMzU4MzhlYmE4NTJhYTk2NmQu
LmU2M2RmNjAzOWMxMWUxNzBkMWFiNTIzNWFlNDA5Y2MyOGEzOGRlNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQuY3BwCkBAIC01Miw3
ICs1Miw3IEBAIHZvaWQgSW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlm
IChhdXRvIGVuY2xvc2luZ0l0ZW0gPSBtYWtlUmVmUHRyKGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFn
KGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLmRlZXBFcXVpdmFsZW50KCksIEhUTUxO
YW1lczo6bGlUYWcpKSkgewogICAgICAgICBhdXRvIG5ld0xpc3RJdGVtID0gSFRNTExJRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgICAgICBpbnNlcnROb2RlQWZ0ZXIobmV3TGlzdEl0
ZW0uY29weVJlZigpLCAqZW5jbG9zaW5nSXRlbSk7Ci0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlv
bih7IFBvc2l0aW9uIHsgbmV3TGlzdEl0ZW0ucHRyKCksIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVm
b3JlQ2hpbGRyZW4gfSwgRE9XTlNUUkVBTSB9KTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KHsgUG9zaXRpb24geyBuZXdMaXN0SXRlbS5wdHIoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVDaGlsZHJlbiB9LCBBZmZpbml0eTo6RG93bnN0cmVhbSB9KTsKIAogICAgICAgICBhdXRvIGNv
bW1hbmRUeXBlID0gbV90eXBlID09IFR5cGU6Ok9yZGVyZWRMaXN0ID8gSW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxDb21tYW5kOjpUeXBlOjpPcmRlcmVkTGlzdCA6IEluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsQ29tbWFuZDo6VHlwZTo6VW5vcmRlcmVkTGlzdDsKICAgICAgICAgYXBwbHlDb21t
YW5kVG9Db21wb3NpdGUoSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgY29tbWFuZFR5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IDViZWM0
MjYxYTUxNjc5N2JiZjk2NDViN2VjMTBjMmE0ZGE3OGY0NjAuLjc3Mjk0ZDQzMWYwNjBjMDI1MDUz
N2M1MTZjMjJlNDc5OGY0Yzg1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtMTUwLDEwICsx
NTAsOSBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmVPck9ycGhhbmVkKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBQb3NpdGlvbiBpbnNlcnRpb25Qb3NpdGlvbiA9IGVuZGluZ1NlbGVj
dGlvbigpLnN0YXJ0KCk7Ci0gICAgICAgIAotICAgIEVBZmZpbml0eSBhZmZpbml0eSA9IGVuZGlu
Z1NlbGVjdGlvbigpLmFmZmluaXR5KCk7Ci0gICAgICAgIAorICAgIGF1dG8gaW5zZXJ0aW9uUG9z
aXRpb24gPSBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpOworICAgIGF1dG8gYWZmaW5pdHkgPSBl
bmRpbmdTZWxlY3Rpb24oKS5hZmZpbml0eSgpOworCiAgICAgLy8gRGVsZXRlIHRoZSBjdXJyZW50
IHNlbGVjdGlvbi4KICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNSYW5nZSgpKSB7CiAgICAg
ICAgIGNhbGN1bGF0ZVN0eWxlQmVmb3JlSW5zZXJ0aW9uKGluc2VydGlvblBvc2l0aW9uKTsKQEAg
LTI0OSw3ICsyNDgsNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRv
QXBwbHkoKQogICAgICAgICAKICAgICAgICAgYXBwZW5kQmxvY2tQbGFjZWhvbGRlcihXVEZNb3Zl
KHBhcmVudCkpOwogCi0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KGZpcnN0UG9zaXRpb25Jbk5vZGUocGFyZW50UHRyKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0
aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUocGFyZW50UHRyKSwgQWZmaW5pdHk6OkRv
d25zdHJlYW0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIApAQCAtMjg3LDcgKzI4Niw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGFwcGVuZEJsb2NrUGxhY2Vo
b2xkZXIoY2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKGFuY2VzdG9ycywgKmJsb2NrVG9JbnNl
cnQpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgbmVlZCB0byBzZXQg
dGhlIG5ldyBlbmRpbmcgc2VsZWN0aW9uLgotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihpbnNlcnRpb25Qb3NpdGlvbiwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0
aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKGluc2VydGlvblBvc2l0aW9uLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5k
aW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMxMCw3ICszMDksNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1h
bmQ6OmRvQXBwbHkoKQogICAgICAgICAvLyBJZiB0aGUgaW5zZXJ0aW9uIHBvaW50IGlzIGEgYnJl
YWsgZWxlbWVudCwgdGhlcmUgaXMgbm90aGluZyBlbHNlCiAgICAgICAgIC8vIHdlIG5lZWQgdG8g
ZG8uCiAgICAgICAgIGlmICh2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgp
LT5yZW5kZXJlcigpLT5pc0JSKCkpIHsKLSAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKGluc2VydGlvblBvc2l0aW9uLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxl
Y3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKGluc2VydGlvblBvc2l0aW9uLCBBZmZpbml0eTo6RG93bnN0cmVh
bSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CkBAIC00MTAsNyArNDA5LDcgQEAgdm9pZCBJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgfQogICAgIH0KIAotICAg
IHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUo
YmxvY2tUb0luc2VydC5nZXQoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGly
ZWN0aW9uYWwoKSkpOworICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGZp
cnN0UG9zaXRpb25Jbk5vZGUoYmxvY2tUb0luc2VydC5nZXQoKSksIEFmZmluaXR5OjpEb3duc3Ry
ZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICBhcHBseVN0eWxl
QWZ0ZXJJbnNlcnRpb24oc3RhcnRCbG9jay5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKaW5kZXggMWJiMGQwNTI4NzBjNDUxMzY5OTQ3
MTlkMGVjMDY1YjNlZDA5NmQ0OC4uZTZhNmM5ZTQzZWExZDMyMGE1ZjkxMWRhOGY3YTdjZjFjOWZi
NGQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAK
QEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KCkKIAog
UG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRhYihjb25zdCBQb3NpdGlvbiYgcG9z
KQogewotICAgIFBvc2l0aW9uIGluc2VydFBvcyA9IFZpc2libGVQb3NpdGlvbihwb3MsIERPV05T
VFJFQU0pLmRlZXBFcXVpdmFsZW50KCk7CisgICAgUG9zaXRpb24gaW5zZXJ0UG9zID0gVmlzaWJs
ZVBvc2l0aW9uKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsKICAgICBpZiAoaW5zZXJ0UG9zLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gcG9zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5k
ZXJlZFBvc2l0aW9uLmNwcAppbmRleCBiZDBlZTFlMTkzNTcwYTBkNTBmYjYyY2IxYjJiNzAwMWZm
ZDZkNDdmLi5jNDI2OTFhOTM4OTZiYmY2ZmNjYmJiYTNiNjhkMGMwZTAxYTM1MTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcg
QEAgUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uKQogewogfQogCi1SZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5KQorUmVuZGVyZWRQ
b3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIEFmZmlu
aXR5IGFmZmluaXR5KQogICAgIDogbV9wcmV2aW91c0xlYWZPbkxpbmUodW5jYWNoZWRJbmxpbmVC
b3goKSkKICAgICAsIG1fbmV4dExlYWZPbkxpbmUodW5jYWNoZWRJbmxpbmVCb3goKSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKaW5kZXggNWQwOGI5OTRlYzEy
NzEzNjA5OTg0NjBlYzY2ZjlhN2EyNThjZWNkYy4uNmE1NDRkNTA4OTYwZmQ5YmQyYTE1YzlmOWRi
NDI2OTgyMjM1NDYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJl
ZFBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9u
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVuZGVyZWRQb3NpdGlvbiB7CiBwdWJsaWM6CiAg
ICAgUmVuZGVyZWRQb3NpdGlvbigpOwogICAgIGV4cGxpY2l0IFJlbmRlcmVkUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJik7Ci0gICAgZXhwbGljaXQgUmVuZGVyZWRQb3NpdGlvbihjb25z
dCBQb3NpdGlvbiYsIEVBZmZpbml0eSk7CisgICAgZXhwbGljaXQgUmVuZGVyZWRQb3NpdGlvbihj
b25zdCBQb3NpdGlvbiYsIEFmZmluaXR5KTsKICAgICBib29sIGlzRXF1aXZhbGVudChjb25zdCBS
ZW5kZXJlZFBvc2l0aW9uJikgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFtX3JlbmRlcmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDk5MzRhMTM1NGZhZTY1OTlhNDk3OTgyY2JhMDBl
YTY3MmYyZDY3OGQuLjNlMzZkMTRkYzk3MjM2MjUyNDgzMDA5ZWZkNTBlYjJiOTNlN2M4Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpk
b0FwcGx5KCkKICAgICBSZWZQdHI8Tm9kZT4gZW5kQlIgPSBpbnNlcnRpb25Qb3MuZG93bnN0cmVh
bSgpLmRlcHJlY2F0ZWROb2RlKCktPmhhc1RhZ05hbWUoYnJUYWcpID8gaW5zZXJ0aW9uUG9zLmRv
d25zdHJlYW0oKS5kZXByZWNhdGVkTm9kZSgpIDogbnVsbHB0cjsKICAgICBWaXNpYmxlUG9zaXRp
b24gb3JpZ2luYWxWaXNQb3NCZWZvcmVFbmRCUjsKICAgICBpZiAoZW5kQlIpCi0gICAgICAgIG9y
aWdpbmFsVmlzUG9zQmVmb3JlRW5kQlIgPSBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25CZWZvcmVO
b2RlKGVuZEJSLmdldCgpKSwgRE9XTlNUUkVBTSkucHJldmlvdXMoKTsKKyAgICAgICAgb3JpZ2lu
YWxWaXNQb3NCZWZvcmVFbmRCUiA9IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUo
ZW5kQlIuZ2V0KCkpKS5wcmV2aW91cygpOwogICAgIAogICAgIFJlZlB0cjxOb2RlPiBpbnNlcnRp
b25CbG9jayA9IGVuY2xvc2luZ0Jsb2NrKGluc2VydGlvblBvcy5kZXByZWNhdGVkTm9kZSgpKTsK
ICAgICAKQEAgLTE1OTYsOSArMTU5Niw5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmNvbXBsZXRlSFRNTFJlcGxhY2VtZW50KGNvbnN0IFBvc2l0aW9uICZsYXN0UG9zaXRpCiAgICAg
ICAgIG1fdmlzaWJsZVNlbGVjdGlvbkZvckluc2VydGVkVGV4dCA9IFZpc2libGVTZWxlY3Rpb24o
c3RhcnQsIGVuZCk7CiAKICAgICBpZiAobV9zZWxlY3RSZXBsYWNlbWVudCkKLSAgICAgICAgc2V0
RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQsIGVuZCwgU0VMX0RFRkFVTFRf
QUZGSU5JVFksIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydCwgZW5kLCBWaXNpYmxlU2Vs
ZWN0aW9uOjpkZWZhdWx0QWZmaW5pdHksIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwo
KSkpOwogICAgIGVsc2UKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oZW5kLCBTRUxfREVGQVVMVF9BRkZJTklUWSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rp
b25hbCgpKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGVu
ZCwgVmlzaWJsZVNlbGVjdGlvbjo6ZGVmYXVsdEFmZmluaXR5LCBlbmRpbmdTZWxlY3Rpb24oKS5p
c0RpcmVjdGlvbmFsKCkpKTsKIH0KIAogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bWVy
Z2VUZXh0Tm9kZXNBcm91bmRQb3NpdGlvbihQb3NpdGlvbiYgcG9zaXRpb24sIFBvc2l0aW9uJiBw
b3NpdGlvbk9ubHlUb0JlVXBkYXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEFmZmluaXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRBZmZpbml0eS5o
CmluZGV4IDk2YjIwNmViYzVmNTM2ODM0YWQ0NTU1Y2M3M2JhY2Y5NjAwNzM3NTIuLjhjMWY3OGI1
NzczMGNiOGU0ZDc1NzBhODIxZmJhZmE5NzU4MTJmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEFmZmluaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0QWZmaW5pdHkuaApAQCAtMzAsOSArMzAsNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBV
cHN0cmVhbSBtZWFucyBiZWZvcmUgYSBsaW5lIGJyZWFrLCBkb3duc3RyZWFtIG1lYW5zIGFmdGVy
IGEgbGluZSBicmVhay4KIGVudW0gY2xhc3MgQWZmaW5pdHkgOiBib29sIHsgVXBzdHJlYW0sIERv
d25zdHJlYW0gfTsKIAotLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBkZXByZWNhdGVkIG5hbWVzIGFm
dGVyIHJlbW92aW5nIGFsbCB1c2VzIG9mIHRoZW0uCi11c2luZyBFQWZmaW5pdHkgPSBBZmZpbml0
eTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBVUFNUUkVBTSA9IEFmZmluaXR5OjpVcHN0cmVhbTsK
LXN0YXRpYyBjb25zdGV4cHIgYXV0byBET1dOU1RSRUFNID0gQWZmaW5pdHk6OkRvd25zdHJlYW07
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAppbmRleCA4MDAwZThmNDVhNmJlMjY5Zjg4OWFkMjI5OWI1ZjFlYmYxZmYzNDY5Li40
ZjVjOTAxYmEyOGQyNjY5Y2NlYjNlYzQ0MzUxNzJlY2ZjZTc2MTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC05ODMsOCArOTgzLDggQEAgYm9vbCBUZXh0SXRl
cmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkKICAgICAvLyBhbmQgaW4gdGhh
dCBjYXNlIHdlJ2xsIGdldCBudWxsLiBXZSBkb24ndCB3YW50IHRvIHB1dCBpbiBuZXdsaW5lcyBh
dCB0aGUgc3RhcnQgaW4gdGhhdCBjYXNlLgogICAgIC8vIFRoZSBjdXJyUG9zLmlzTm90TnVsbCgp
IGNoZWNrIGlzIG5lZWRlZCBiZWNhdXNlIHBvc2l0aW9ucyBpbiBub24tSFRNTCBjb250ZW50CiAg
ICAgLy8gKGxpa2UgU1ZHKSBkbyBub3QgaGF2ZSB2aXNpYmxlIHBvc2l0aW9ucywgYW5kIHdlIGRv
bid0IHdhbnQgdG8gZW1pdCBmb3IgdGhlbSBlaXRoZXIuCi0gICAgVmlzaWJsZVBvc2l0aW9uIHN0
YXJ0UG9zID0gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKG1fc3RhcnRDb250YWluZXIsIG1fc3Rh
cnRPZmZzZXQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpLCBET1dOU1RSRUFN
KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gY3VyclBvcyA9IFZpc2libGVQb3NpdGlvbihwb3NpdGlv
bkJlZm9yZU5vZGUobV9ub2RlKSwgRE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHN0
YXJ0UG9zID0gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKG1fc3RhcnRDb250YWluZXIsIG1fc3Rh
cnRPZmZzZXQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpKTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gY3VyclBvcyA9IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUo
bV9ub2RlKSk7CiAgICAgcmV0dXJuIHN0YXJ0UG9zLmlzTm90TnVsbCgpICYmIGN1cnJQb3MuaXNO
b3ROdWxsKCkgJiYgIWluU2FtZUxpbmUoc3RhcnRQb3MsIGN1cnJQb3MpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCBkYzA0ZTI0NDk0NzY1Nzk1ZmEw
MGU4M2Q0OTlmMGQ0MTUwOTcyMzliLi45MGNjMTA1OTFiYzQwYjFkMzhhN2FiNjI3MzI0ZWVhYTI1
NjY2N2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTYy
MSw3ICs2MjEsNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6Om1ha2VFZGl0YWJsZVJvb3RFbXB0eSgp
CiAgICAgICAgIHJlbW92ZU5vZGUoKmNoaWxkKTsKIAogICAgIGFkZEJsb2NrUGxhY2Vob2xkZXJJ
Zk5lZWRlZChyb290KTsKLSAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihm
aXJzdFBvc2l0aW9uSW5Ob2RlKHJvb3QpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5p
c0RpcmVjdGlvbmFsKCkpKTsKKyAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihmaXJzdFBvc2l0aW9uSW5Ob2RlKHJvb3QpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5n
U2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTYzNCwxNCArNjM0LDE1IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRkCiAKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvblRvRGVsZXRlOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0
aW9uQWZ0ZXJVbmRvOwotICAgIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0gIWVuZGlu
Z1NlbGVjdGlvbigpLmlzQ2FyZXQoKTsKKyAgICBib29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50
cyA9IGZhbHNlOwogCi0gICAgc3dpdGNoIChlbmRpbmdTZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBl
KCkpIHsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uOgorICAgIEFT
U0VSVChlbmRpbmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5nZSgpKTsKKworICAgIGlmIChlbmRp
bmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsKICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBl
bmRpbmdTZWxlY3Rpb24oKTsKICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0gc2VsZWN0aW9u
VG9EZWxldGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Q2Fy
ZXRTZWxlY3Rpb246IHsKKyAgICAgICAgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0gdHJ1ZTsK
KyAgICB9IGVsc2UgewogICAgICAgICAvLyBBZnRlciBicmVha2luZyBvdXQgb2YgYW4gZW1wdHkg
bWFpbCBibG9ja3F1b3RlLCB3ZSBzdGlsbCB3YW50IGNvbnRpbnVlIHdpdGggdGhlIGRlbGV0aW9u
CiAgICAgICAgIC8vIHNvIGFjdHVhbCBjb250ZW50IHdpbGwgZ2V0IGRlbGV0ZWQsIGFuZCBub3Qg
anVzdCB0aGUgcXVvdGUgc3R5bGUuCiAgICAgICAgIGlmIChicmVha091dE9mRW1wdHlNYWlsQmxv
Y2txdW90ZWRQYXJhZ3JhcGgoKSkKQEAgLTY5MSw3ICs2OTIsNyBAQCB2b2lkIFR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNo
b3VsZEFkZAogICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgZ3JhbnVsYXJpdHkp
OwogICAgICAgICAvLyBJZiB0aGUgY2FyZXQgaXMganVzdCBhZnRlciBhIHRhYmxlLCBzZWxlY3Qg
dGhlIHRhYmxlIGFuZCBkb24ndCBkZWxldGUgYW55dGhpbmcuCiAgICAgICAgIH0gZWxzZSBpZiAo
Tm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsK
LSAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9u
QmVmb3JlTm9kZSh0YWJsZSksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0s
IGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICAgICAgc2V0RW5k
aW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKHRhYmxlKSwg
ZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1Nl
bGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09w
ZW5Db21tYW5kKERlbGV0ZUtleSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTcxMSwxMSArNzEyLDYgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBzaG91bGRBZGQKICAgICAgICAgICAgIC8v
IFdlIGNhbid0IGxldCB0aGUgVmlzaWJsZVNlbGVjdGlvbiBjbGFzcydzIHZhbGlkYXRpb24ga2lj
ayBpbiBvciBpdCdsbCBhZGp1c3QgZm9yIHVzIGJhc2VkIG9uCiAgICAgICAgICAgICAvLyB0aGUg
Y3VycmVudCBzdGF0ZSBvZiB0aGUgZG9jdW1lbnQgYW5kIHdlJ2xsIGdldCB0aGUgd3JvbmcgcmVz
dWx0LgogICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvLnNldFdpdGhvdXRWYWxpZGF0aW9u
KHN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCksIHNlbGVjdGlvblRvRGVsZXRlLmV4dGVudCgpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxl
Y3Rpb246Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgCiAgICAgQVNTRVJUKCFzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7CkBAIC03
MjgsMTAgKzcyNCwxMCBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNob3VsZEFkZAogI2VuZGlmCiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc2VsZWN0aW9uVG9EZWxldGUuaXNDYXJl
dCgpIHx8ICFkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNob3VsZERlbGV0ZVNlbGVjdGlvbihzZWxl
Y3Rpb25Ub0RlbGV0ZSkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmICghd2lsbEFk
ZFR5cGluZ1RvT3BlbkNvbW1hbmQoRGVsZXRlS2V5LCBncmFudWxhcml0eSwgeyB9LCBzZWxlY3Rp
b25Ub0RlbGV0ZS5maXJzdFJhbmdlKCkpKQogICAgICAgICByZXR1cm47CiAKQEAgLTc1OSwxNCAr
NzU1LDE1IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNoCiAKICAgICBWaXNpYmxlU2VsZWN0aW9u
IHNlbGVjdGlvblRvRGVsZXRlOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uQWZ0ZXJV
bmRvOwotICAgIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0gIWVuZGluZ1NlbGVjdGlv
bigpLmlzQ2FyZXQoKTsKKyAgICBib29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cyA9IGZhbHNl
OworCisgICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwogCi0g
ICAgc3dpdGNoIChlbmRpbmdTZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkpIHsKLSAgICBjYXNl
IFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uOgorICAgIGlmIChlbmRpbmdTZWxlY3Rp
b24oKS5pc1JhbmdlKCkpIHsKICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBlbmRpbmdTZWxl
Y3Rpb24oKTsKICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0gc2VsZWN0aW9uVG9EZWxldGU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rp
b246IHsKKyAgICAgICAgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0gdHJ1ZTsKKyAgICB9IGVs
c2UgewogICAgICAgICBtX3NtYXJ0RGVsZXRlID0gZmFsc2U7CiAKICAgICAgICAgLy8gSGFuZGxl
IGRlbGV0ZSBhdCBiZWdpbm5pbmctb2YtYmxvY2sgY2FzZS4KQEAgLTc5MCw3ICs3ODcsNyBAQCB2
b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgYm9vbCBzaAogICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIHRhYmxlczog
U2VsZWN0IHRoZSB0YWJsZSBmaXJzdCwgdGhlbiBwZXJmb3JtIHRoZSBkZWxldGlvbgogICAgICAg
ICBpZiAoZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCkgJiYgZG93bnN0cmVhbUVuZC5jb250
YWluZXJOb2RlKCktPnJlbmRlcmVyKCkgJiYgZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCkt
PnJlbmRlcmVyKCktPmlzVGFibGUoKQogICAgICAgICAgICAgJiYgZG93bnN0cmVhbUVuZC5jb21w
dXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkgPD0gY2FyZXRNaW5PZmZzZXQoKmRvd25zdHJlYW1F
bmQuY29udGFpbmVyTm9kZSgpKSkgewotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCksIHBvc2l0aW9uQWZ0ZXJOb2Rl
KGRvd25zdHJlYW1FbmQuY29udGFpbmVyTm9kZSgpKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0
aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgcG9zaXRpb25BZnRlck5v
ZGUoZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwg
ZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgICAgICAgICB0eXBpbmdB
ZGRlZFRvT3BlbkNvbW1hbmQoRm9yd2FyZERlbGV0ZUtleSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTgxOSwxMSArODE2LDYgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3
YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2gK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kby5zZXRXaXRob3V0
VmFsaWRhdGlvbihzdGFydGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIGV4dGVudCk7CiAgICAgICAg
IH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9T
ZWxlY3Rpb246Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgCiAgICAgQVNTRVJUKCFzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggZjMzZjAxOThi
MmQ0YzE4OWM3ODIyZGRlNjUwMGUwOWFkMjIyNmU1Mi4uZTg3MmM3NjUyNmZjMGQzMTJlNWYyZjUx
MTQzOTM2ODgwMzY0ZTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0
aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKLVZpc2libGVQb3NpdGlvbjo6VmlzaWJsZVBvc2l0aW9uKGNv
bnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5KQorVmlzaWJsZVBvc2l0
aW9uOjpWaXNpYmxlUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBh
ZmZpbml0eSkKICAgICA6IG1fZGVlcFBvc2l0aW9uIHsgY2Fub25pY2FsUG9zaXRpb24ocG9zaXRp
b24pIH0KIHsKICAgICBpZiAoYWZmaW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtICYmICFpc051
bGwoKSkgewpAQCAtOTEsMTYgKzkxLDE2IEBAIFZpc2libGVQb3NpdGlvbiBWaXNpYmxlUG9zaXRp
b246OnByZXZpb3VzKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlLCBib29sCiAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9CiAKLSAgICBWaXNpYmxlUG9zaXRp
b24gcHJldiA9IFZpc2libGVQb3NpdGlvbihwb3MsIERPV05TVFJFQU0pOworICAgIFZpc2libGVQ
b3NpdGlvbiBwcmV2ID0gcG9zOwogICAgIEFTU0VSVChwcmV2ICE9ICp0aGlzKTsKIAotI2lmbmRl
ZiBOREVCVUcKLSAgICAvLyB3ZSBzaG91bGQgYWx3YXlzIGJlIGFibGUgdG8gbWFrZSB0aGUgYWZm
aW5pdHkgRE9XTlNUUkVBTSwgYmVjYXVzZSBnb2luZyBwcmV2aW91cyBmcm9tIGFuCi0gICAgLy8g
VVBTVFJFQU0gcG9zaXRpb24gY2FuIG5ldmVyIHlpZWxkIGFub3RoZXIgVVBTVFJFQU0gcG9zaXRp
b24gKHVubGVzcyBsaW5lIHdyYXAgbGVuZ3RoIGlzIDAhKS4KLSAgICBpZiAocHJldi5pc05vdE51
bGwoKSAmJiBtX2FmZmluaXR5ID09IFVQU1RSRUFNKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlv
biB0ZW1wID0gcHJldjsKLSAgICAgICAgdGVtcC5zZXRBZmZpbml0eShVUFNUUkVBTSk7Ci0gICAg
ICAgIEFTU0VSVChpblNhbWVMaW5lKHRlbXAsIHByZXYpKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgIC8vIFdlIHNob3VsZCBhbHdheXMgYmUgYWJsZSB0byBtYWtlIHRoZSBhZmZpbml0eSBkb3du
c3RyZWFtLCBiZWNhdXNlIGdvaW5nIHByZXZpb3VzIGZyb20gYW4KKyAgICAvLyB1cHN0cmVhbSBw
b3NpdGlvbiBjYW4gbmV2ZXIgeWllbGQgYW5vdGhlciB1cHN0cmVhbSBwb3NpdGlvbiB1bmxlc3Mg
bGluZSB3cmFwIGxlbmd0aCBpcyAwLgorICAgIGlmIChwcmV2LmlzTm90TnVsbCgpICYmIG1fYWZm
aW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKSB7CisgICAgICAgIGF1dG8gdXBzdHJlYW1Db3B5
ID0gcHJldjsKKyAgICAgICAgdXBzdHJlYW1Db3B5LnNldEFmZmluaXR5KEFmZmluaXR5OjpVcHN0
cmVhbSk7CisgICAgICAgIEFTU0VSVChpblNhbWVMaW5lKHVwc3RyZWFtQ29weSwgcHJldikpOwog
ICAgIH0KICNlbmRpZgogCkBAIC0yNjMsNyArMjYzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFZpc2li
bGVQb3NpdGlvbjo6bGVmdChib29sIHN0YXlJbkVkaXRhYmxlQ29udGVudCwgYm9vbCogcmVhY2hl
ZEIKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIH0KIAotICAgIFZpc2li
bGVQb3NpdGlvbiBsZWZ0ID0gVmlzaWJsZVBvc2l0aW9uKHBvcywgRE9XTlNUUkVBTSk7CisgICAg
VmlzaWJsZVBvc2l0aW9uIGxlZnQgPSBwb3M7CiAgICAgQVNTRVJUKGxlZnQgIT0gKnRoaXMpOwog
CiAgICAgaWYgKCFzdGF5SW5FZGl0YWJsZUNvbnRlbnQpCkBAIC00MjksNyArNDI5LDcgQEAgVmlz
aWJsZVBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHQoYm9vbCBzdGF5SW5FZGl0YWJsZUNv
bnRlbnQsIGJvb2wqIHJlYWNoZWQKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwog
ICAgIH0KIAotICAgIFZpc2libGVQb3NpdGlvbiByaWdodCA9IFZpc2libGVQb3NpdGlvbihwb3Ms
IERPV05TVFJFQU0pOworICAgIFZpc2libGVQb3NpdGlvbiByaWdodCA9IHBvczsKICAgICBBU1NF
UlQocmlnaHQgIT0gKnRoaXMpOwogCiAgICAgaWYgKCFzdGF5SW5FZGl0YWJsZUNvbnRlbnQpCkBA
IC03NDEsMTMgKzc0MSwxMyBAQCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQ
b2ludChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIHJldHVybiBtYWtlQm91
bmRhcnlQb2ludChwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIEVBZmZpbml0eSBhZmZpbml0eSkKK1RleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBBZmZpbml0eSBhZmZpbml0eSkK
IHsKICAgICBzd2l0Y2ggKGFmZmluaXR5KSB7Ci0gICAgY2FzZSBVUFNUUkVBTToKKyAgICBjYXNl
IEFmZmluaXR5OjpVcHN0cmVhbToKICAgICAgICAgc3RyZWFtIDw8ICJ1cHN0cmVhbSI7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRE9XTlNUUkVBTToKKyAgICBjYXNlIEFmZmluaXR5OjpEb3du
c3RyZWFtOgogICAgICAgICBzdHJlYW0gPDwgImRvd25zdHJlYW0iOwogICAgICAgICBicmVhazsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRl
eCBhMTQ2ZGIyOGRkNjM1OTk0OGQ2ZGE2ZDUzODVkY2UwMWNlMGU3MTc2Li40M2RlZTBhMWRmODdm
MDY4ZTcwOGVkY2FjZjc0YmQwMDljYWIxMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTQ0LDIzICs0NCwyMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKCkKLSAgICA6IG1fYWZm
aW5pdHkoRE9XTlNUUkVBTSkKLSAgICAsIG1fc2VsZWN0aW9uVHlwZShOb1NlbGVjdGlvbikKLSAg
ICAsIG1fYmFzZUlzRmlyc3QodHJ1ZSkKKyAgICA6IG1fYmFzZUlzRmlyc3QodHJ1ZSkKICAgICAs
IG1faXNEaXJlY3Rpb25hbChmYWxzZSkKIHsKIH0KIAotVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJs
ZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wg
aXNEaXJlY3Rpb25hbCkKLSAgICA6IG1fYmFzZShwb3MpCi0gICAgLCBtX2V4dGVudChwb3MpCitW
aXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlv
biwgQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKKyAgICA6IG1fYmFzZShw
b3NpdGlvbikKKyAgICAsIG1fZXh0ZW50KHBvc2l0aW9uKQogICAgICwgbV9hZmZpbml0eShhZmZp
bml0eSkKICAgICAsIG1faXNEaXJlY3Rpb25hbChpc0RpcmVjdGlvbmFsKQogewogICAgIHZhbGlk
YXRlKCk7CiB9CiAKLVZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9z
aXRpb24mIGJhc2UsIGNvbnN0IFBvc2l0aW9uJiBleHRlbnQsIEVBZmZpbml0eSBhZmZpbml0eSwg
Ym9vbCBpc0RpcmVjdGlvbmFsKQorVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihj
b25zdCBQb3NpdGlvbiYgYmFzZSwgY29uc3QgUG9zaXRpb24mIGV4dGVudCwgQWZmaW5pdHkgYWZm
aW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKICAgICA6IG1fYmFzZShiYXNlKQogICAgICwgbV9l
eHRlbnQoZXh0ZW50KQogICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKQEAgLTY5LDEwICs2Nywx
MCBAQCBWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiBi
YXNlLCBjb25zdCBQb3NpdGlvbiYgZXh0ZW50LAogICAgIHZhbGlkYXRlKCk7CiB9CiAKLVZpc2li
bGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Ms
IGJvb2wgaXNEaXJlY3Rpb25hbCkKLSAgICA6IG1fYmFzZShwb3MuZGVlcEVxdWl2YWxlbnQoKSkK
LSAgICAsIG1fZXh0ZW50KHBvcy5kZWVwRXF1aXZhbGVudCgpKQotICAgICwgbV9hZmZpbml0eShw
b3MuYWZmaW5pdHkoKSkKK1Zpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBpc0RpcmVjdGlvbmFsKQorICAgIDogbV9i
YXNlKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpCisgICAgLCBtX2V4dGVudChwb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKQorICAgICwgbV9hZmZpbml0eShwb3NpdGlvbi5hZmZpbml0eSgpKQog
ICAgICwgbV9pc0RpcmVjdGlvbmFsKGlzRGlyZWN0aW9uYWwpCiB7CiAgICAgdmFsaWRhdGUoKTsK
QEAgLTg3LDcgKzg1LDcgQEAgVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGJhc2UsIGNvbnN0IFZpc2libGVQb3MKICAgICB2YWxpZGF0ZSgp
OwogfQogCi1WaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwpCitWaXNp
YmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwg
QWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKICAgICA6IG1fYmFzZShjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oJnJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLnN0
YXJ0T2Zmc2V0KCkpKQogICAgICwgbV9leHRlbnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KCZyYW5nZS5lbmRDb250YWluZXIoKSwgcmFuZ2UuZW5kT2Zmc2V0KCkpKQogICAgICwgbV9hZmZp
bml0eShhZmZpbml0eSkKQEAgLTEwMCw3ICs5OCw3IEBAIFZpc2libGVTZWxlY3Rpb246OlZpc2li
bGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHks
CiBWaXNpYmxlU2VsZWN0aW9uIFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50
c09mTm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghZWRpdGluZ0lnbm9yZXNDb250ZW50
KCpub2RlKSk7Ci0gICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluTm9k
ZShub2RlKSwgbGFzdFBvc2l0aW9uSW5Ob2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKKyAgICByZXR1
cm4gVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKG5vZGUpLCBsYXN0UG9zaXRp
b25Jbk5vZGUobm9kZSkpOwogfQogCiB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNldEJhc2UoY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMzE5LDEwICszMTcsMTAgQEAgdm9pZCBWaXNpYmxl
U2VsZWN0aW9uOjpzZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51
bGFyaXR5KFRleHQKICAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlv
bihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OiB7
Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc3RhcnQsIG1fYWZmaW5pdHkpOwot
ICAgICAgICAgICAgaWYgKGlzU3RhcnRPZkxpbmUocG9zKSAmJiBpc0VuZE9mRWRpdGFibGVPck5v
bkVkaXRhYmxlQ29udGVudChwb3MpKQotICAgICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2aW91
cygpOwotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgocG9zKS5kZWVwRXF1
aXZhbGVudCgpOworICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uKG1fc3RhcnQs
IG1fYWZmaW5pdHkpOworICAgICAgICAgICAgaWYgKGlzU3RhcnRPZkxpbmUocG9zaXRpb24pICYm
IGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KHBvc2l0aW9uKSkKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLnByZXZpb3VzKCk7CisgICAgICAgICAgICBtX3N0
YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChwb3NpdGlvbikuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3Jh
cGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJv
bSB0aGUgZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydApAQCAtMzczLDE1ICszNzEs
MTQgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjp1cGRhdGVTZWxlY3Rpb25UeXBlKCkKIHsKICAg
ICBpZiAobV9zdGFydC5pc051bGwoKSkgewogICAgICAgICBBU1NFUlQobV9lbmQuaXNOdWxsKCkp
OwotICAgICAgICBtX3NlbGVjdGlvblR5cGUgPSBOb1NlbGVjdGlvbjsKLSAgICB9IGVsc2UgaWYg
KG1fc3RhcnQgPT0gbV9lbmQgfHwgbV9zdGFydC51cHN0cmVhbSgpID09IG1fZW5kLnVwc3RyZWFt
KCkpIHsKLSAgICAgICAgbV9zZWxlY3Rpb25UeXBlID0gQ2FyZXRTZWxlY3Rpb247Ci0gICAgfSBl
bHNlCi0gICAgICAgIG1fc2VsZWN0aW9uVHlwZSA9IFJhbmdlU2VsZWN0aW9uOwotCi0gICAgLy8g
QWZmaW5pdHkgb25seSBtYWtlcyBzZW5zZSBmb3IgYSBjYXJldAotICAgIGlmIChtX3NlbGVjdGlv
blR5cGUgIT0gQ2FyZXRTZWxlY3Rpb24pCi0gICAgICAgIG1fYWZmaW5pdHkgPSBET1dOU1RSRUFN
OworICAgICAgICBtX3R5cGUgPSBUeXBlOjpOb25lOworICAgICAgICBtX2FmZmluaXR5ID0gQWZm
aW5pdHk6OkRvd25zdHJlYW07CisgICAgfSBlbHNlIGlmIChtX3N0YXJ0ID09IG1fZW5kIHx8IG1f
c3RhcnQudXBzdHJlYW0oKSA9PSBtX2VuZC51cHN0cmVhbSgpKQorICAgICAgICBtX3R5cGUgPSBU
eXBlOjpDYXJldDsKKyAgICBlbHNlIHsKKyAgICAgICAgbV90eXBlID0gVHlwZTo6UmFuZ2U7Cisg
ICAgICAgIG1fYWZmaW5pdHkgPSBBZmZpbml0eTo6RG93bnN0cmVhbTsKKyAgICB9CiB9CiAKIHZv
aWQgVmlzaWJsZVNlbGVjdGlvbjo6dmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQpAQCAtMzkyLDcgKzM4OSw3IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6dmFsaWRhdGUoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAgIGFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9z
c2luZ0VkaXRpbmdCb3VuZGFyaWVzKCk7CiAgICAgdXBkYXRlU2VsZWN0aW9uVHlwZSgpOwogCi0g
ICAgaWYgKHNlbGVjdGlvblR5cGUoKSA9PSBSYW5nZVNlbGVjdGlvbikgeworICAgIGlmIChpc1Jh
bmdlKCkpIHsKICAgICAgICAgLy8gIkNvbnN0cmFpbiIgdGhlIHNlbGVjdGlvbiB0byBiZSB0aGUg
c21hbGxlc3QgZXF1aXZhbGVudCByYW5nZSBvZiBub2Rlcy4KICAgICAgICAgLy8gVGhpcyBpcyBh
IHNvbWV3aGF0IGFyYml0cmFyeSBjaG9pY2UsIGJ1dCBleHBlcmllbmNlIHNob3dzIHRoYXQgaXQg
aXMKICAgICAgICAgLy8gdXNlZnVsIHRvIG1ha2UgdG8gbWFrZSB0aGUgc2VsZWN0aW9uICJjYW5v
bmljYWwiIChpZiBvbmx5IGZvcgpAQCAtNDIxLDcgKzQxOCw3IEBAIHZvaWQgVmlzaWJsZVNlbGVj
dGlvbjo6c2V0V2l0aG91dFZhbGlkYXRpb24oY29uc3QgUG9zaXRpb24mIGJhc2UsIGNvbnN0IFBv
c2l0aW9uCiB7CiAgICAgQVNTRVJUKCFiYXNlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoIWV4dGVu
dC5pc051bGwoKSk7Ci0gICAgQVNTRVJUKG1fYWZmaW5pdHkgPT0gRE9XTlNUUkVBTSk7CisgICAg
QVNTRVJUKG1fYWZmaW5pdHkgPT0gQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgIG1fYmFzZSA9
IGJhc2U7CiAgICAgbV9leHRlbnQgPSBleHRlbnQ7CiAgICAgbV9iYXNlSXNGaXJzdCA9IGJhc2Ug
PD0gZXh0ZW50OwpAQCAtNDMyLDcgKzQyOSw3IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0
V2l0aG91dFZhbGlkYXRpb24oY29uc3QgUG9zaXRpb24mIGJhc2UsIGNvbnN0IFBvc2l0aW9uCiAg
ICAgICAgIG1fc3RhcnQgPSBleHRlbnQ7CiAgICAgICAgIG1fZW5kID0gYmFzZTsKICAgICB9Ci0g
ICAgbV9zZWxlY3Rpb25UeXBlID0gYmFzZSA9PSBleHRlbnQgPyBDYXJldFNlbGVjdGlvbiA6IFJh
bmdlU2VsZWN0aW9uOworICAgIG1fdHlwZSA9IGJhc2UgPT0gZXh0ZW50ID8gVHlwZTo6Q2FyZXQg
OiBUeXBlOjpSYW5nZTsKIH0KIAogUG9zaXRpb24gVmlzaWJsZVNlbGVjdGlvbjo6YWRqdXN0UG9z
aXRpb25Gb3JFbmQoY29uc3QgUG9zaXRpb24mIGN1cnJlbnRQb3NpdGlvbiwgTm9kZSogc3RhcnRD
b250YWluZXJOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
U2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaApp
bmRleCA4NzZkZTE4Njk1NDNjNTI0ZWRkYzQ2NTM3ODg1ZjkxNGQ3ODNlZjUxLi4wM2I2NGRhMzNl
ZjM4ZGEzMDJjMzBhMTgxNGNlZjk1ODBlNmM3Yjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDUzICszMSw0NiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFBvc2l0aW9uOwotCi1zdHJ1Y3QgU2ltcGxlUmFuZ2U7Ci0KLWNv
bnN0IEVBZmZpbml0eSBTRUxfREVGQVVMVF9BRkZJTklUWSA9IERPV05TVFJFQU07CiBlbnVtIGNs
YXNzIFNlbGVjdGlvbkRpcmVjdGlvbiA6IHVpbnQ4X3QgeyBGb3J3YXJkLCBCYWNrd2FyZCwgUmln
aHQsIExlZnQgfTsKIAogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgZW51
bSBTZWxlY3Rpb25UeXBlIHsgTm9TZWxlY3Rpb24sIENhcmV0U2VsZWN0aW9uLCBSYW5nZVNlbGVj
dGlvbiB9OwotCiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbigpOwogCi0gICAg
VmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSwgYm9vbCBpc0RpcmVj
dGlvbmFsID0gZmFsc2UpOwotICAgIFZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mLCBj
b25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29sIGlz
RGlyZWN0aW9uYWwgPSBmYWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlv
bihjb25zdCBTaW1wbGVSYW5nZSYsIEVBZmZpbml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBi
b29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRl
ZmF1bHRBZmZpbml0eSA9IFZpc2libGVQb3NpdGlvbjo6ZGVmYXVsdEFmZmluaXR5OworCisgICAg
VmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYsIEFmZmluaXR5LCBib29sIGlzRGlyZWN0
aW9uYWwgPSBmYWxzZSk7CisgICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYsIGNv
bnN0IFBvc2l0aW9uJiwgQWZmaW5pdHkgPSBkZWZhdWx0QWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rp
b25hbCA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0
IFNpbXBsZVJhbmdlJiwgQWZmaW5pdHkgPSBkZWZhdWx0QWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rp
b25hbCA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkZyb21Db250ZW50
c09mTm9kZShOb2RlKik7CiAKLSAgICBTZWxlY3Rpb25UeXBlIHNlbGVjdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3NlbGVjdGlvblR5cGU7IH0KLQotICAgIHZvaWQgc2V0QWZmaW5pdHkoRUFm
ZmluaXR5IGFmZmluaXR5KSB7IG1fYWZmaW5pdHkgPSBhZmZpbml0eTsgfQotICAgIEVBZmZpbml0
eSBhZmZpbml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWZmaW5pdHk7IH0KKyAgICB2b2lkIHNldEFm
ZmluaXR5KEFmZmluaXR5IGFmZmluaXR5KSB7IG1fYWZmaW5pdHkgPSBhZmZpbml0eTsgfQorICAg
IEFmZmluaXR5IGFmZmluaXR5KCkgY29uc3QgeyByZXR1cm4gbV9hZmZpbml0eTsgfQogCiAgICAg
dm9pZCBzZXRCYXNlKGNvbnN0IFBvc2l0aW9uJik7CiAgICAgdm9pZCBzZXRCYXNlKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwogICAgIHZvaWQgc2V0RXh0ZW50KGNvbnN0IFBvc2l0aW9uJik7CiAg
ICAgdm9pZCBzZXRFeHRlbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci0gICAgCisKICAgICBQ
b3NpdGlvbiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgUG9zaXRpb24gZXh0
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnQ7IH0KICAgICBQb3NpdGlvbiBzdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KICAgICBQb3NpdGlvbiBlbmQoKSBjb25zdCB7IHJldHVy
biBtX2VuZDsgfQogICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQoKSBjb25z
dCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgaXNSYW5nZSgpID8gRE9XTlNUUkVB
TSA6IGFmZmluaXR5KCkpOyB9Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQoKSBjb25z
dCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24obV9lbmQsIGlzUmFuZ2UoKSA/IFVQU1RSRUFNIDog
YWZmaW5pdHkoKSk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUJhc2UoKSBjb25zdCB7
IHJldHVybiBWaXNpYmxlUG9zaXRpb24obV9iYXNlLCBpc1JhbmdlKCkgPyAoaXNCYXNlRmlyc3Qo
KSA/IFVQU1RSRUFNIDogRE9XTlNUUkVBTSkgOiBhZmZpbml0eSgpKTsgfQotICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlRXh0ZW50KCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG1f
ZXh0ZW50LCBpc1JhbmdlKCkgPyAoaXNCYXNlRmlyc3QoKSA/IERPV05TVFJFQU0gOiBVUFNUUkVB
TSkgOiBhZmZpbml0eSgpKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQoKSBj
b25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgaXNSYW5nZSgpID8gQWZmaW5p
dHk6OkRvd25zdHJlYW0gOiBhZmZpbml0eSgpKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlRW5kKCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBpc1JhbmdlKCkg
PyBBZmZpbml0eTo6VXBzdHJlYW0gOiBhZmZpbml0eSgpKTsgfQorICAgIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlQmFzZSgpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX2Jhc2UsIGlz
UmFuZ2UoKSA/IChpc0Jhc2VGaXJzdCgpID8gQWZmaW5pdHk6OlVwc3RyZWFtIDogQWZmaW5pdHk6
OkRvd25zdHJlYW0pIDogYWZmaW5pdHkoKSk7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZUV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX2V4dGVudCwgaXNSYW5n
ZSgpID8gKGlzQmFzZUZpcnN0KCkgPyBBZmZpbml0eTo6RG93bnN0cmVhbSA6IEFmZmluaXR5OjpV
cHN0cmVhbSkgOiBhZmZpbml0eSgpKTsgfQogCiAgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoKSBjb25zdCB7IHJldHVybiB7IHZpc2libGVTdGFydCgpLCB2aXNpYmxlRW5kKCkgfTsg
fQogCi0gICAgYm9vbCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBzZWxlY3Rpb25UeXBlKCkgPT0g
Tm9TZWxlY3Rpb247IH0KLSAgICBib29sIGlzQ2FyZXQoKSBjb25zdCB7IHJldHVybiBzZWxlY3Rp
b25UeXBlKCkgPT0gQ2FyZXRTZWxlY3Rpb247IH0KLSAgICBib29sIGlzUmFuZ2UoKSBjb25zdCB7
IHJldHVybiBzZWxlY3Rpb25UeXBlKCkgPT0gUmFuZ2VTZWxlY3Rpb247IH0KLSAgICBib29sIGlz
Q2FyZXRPclJhbmdlKCkgY29uc3QgeyByZXR1cm4gc2VsZWN0aW9uVHlwZSgpICE9IE5vU2VsZWN0
aW9uOyB9CisgICAgYm9vbCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6
Tm9uZTsgfQorICAgIGJvb2wgaXNDYXJldCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBl
OjpDYXJldDsgfQorICAgIGJvb2wgaXNSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBU
eXBlOjpSYW5nZTsgfQorICAgIGJvb2wgaXNDYXJldE9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAh
aXNOb25lKCk7IH0KICAgICBib29sIGlzTm9uT3JwaGFuZWRSYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IGlzUmFuZ2UoKSAmJiAhc3RhcnQoKS5pc09ycGhhbigpICYmICFlbmQoKS5pc09ycGhhbigpOyB9
CiAgICAgYm9vbCBpc05vbmVPck9ycGhhbmVkKCkgY29uc3QgeyByZXR1cm4gaXNOb25lKCkgfHwg
c3RhcnQoKS5pc09ycGhhbigpIHx8IGVuZCgpLmlzT3JwaGFuKCk7IH0KIApAQCAtMTI5LDM1ICsx
MjIsMzUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9zc2lu
Z0VkaXRpbmdCb3VuZGFyaWVzKCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25UeXBlKCk7CiAK
LSAgICAvLyBXZSBuZWVkIHRvIHN0b3JlIHRoZXNlIGFzIFBvc2l0aW9ucyBiZWNhdXNlIFZpc2li
bGVTZWxlY3Rpb24gaXMKLSAgICAvLyB1c2VkIHRvIHN0b3JlIHZhbHVlcyBpbiBlZGl0aW5nIGNv
bW1hbmRzIGZvciB1c2Ugd2hlbgotICAgIC8vIHVuZG9pbmcgdGhlIGNvbW1hbmQuIFdlIG5lZWQg
dG8gYmUgYWJsZSB0byBjcmVhdGUgYSBzZWxlY3Rpb24gdGhhdCwgd2hpbGUgY3VycmVudGx5Ci0g
ICAgLy8gaW52YWxpZCwgd2lsbCBiZSB2YWxpZCBvbmNlIHRoZSBjaGFuZ2VzIGFyZSB1bmRvbmUu
CisgICAgLy8gV2Ugc3RvcmUgdGhlc2UgYXMgUG9zaXRpb25zIGJlY2F1c2UgVmlzaWJsZVNlbGVj
dGlvbiBpcyB1c2VkIHRvIHN0b3JlIHZhbHVlcyBpbgorICAgIC8vIGVkaXRpbmcgY29tbWFuZHMg
Zm9yIHVzZSB3aGVuIHVuZG9pbmcgdGhlIGNvbW1hbmQuIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBz
dG9yZQorICAgIC8vIGEgc2VsZWN0aW9uIHRoYXQsIHdoaWxlIGN1cnJlbnRseSBpbnZhbGlkLCB3
aWxsIGJlIHZhbGlkIG9uY2UgdGhlIGNoYW5nZXMgYXJlIHVuZG9uZS4KKworICAgIFBvc2l0aW9u
IG1fYmFzZTsgLy8gV2hlcmUgdGhlIGZpcnN0IGNsaWNrIGhhcHBlbmVkLgorICAgIFBvc2l0aW9u
IG1fZXh0ZW50OyAvLyBXaGVyZSB0aGUgZW5kIGNsaWNrIGhhcHBlbmVkLgogCi0gICAgUG9zaXRp
b24gbV9iYXNlOyAgIC8vIFdoZXJlIHRoZSBmaXJzdCBjbGljayBoYXBwZW5lZAotICAgIFBvc2l0
aW9uIG1fZXh0ZW50OyAvLyBXaGVyZSB0aGUgZW5kIGNsaWNrIGhhcHBlbmVkCi0gICAgUG9zaXRp
b24gbV9zdGFydDsgIC8vIExlZnRtb3N0IHBvc2l0aW9uIHdoZW4gZXhwYW5kZWQgdG8gcmVzcGVj
dCBncmFudWxhcml0eQotICAgIFBvc2l0aW9uIG1fZW5kOyAgICAvLyBSaWdodG1vc3QgcG9zaXRp
b24gd2hlbiBleHBhbmRlZCB0byByZXNwZWN0IGdyYW51bGFyaXR5CisgICAgUG9zaXRpb24gbV9z
dGFydDsgLy8gTGVmdG1vc3QgcG9zaXRpb24gd2hlbiBleHBhbmRlZCB0byByZXNwZWN0IGdyYW51
bGFyaXR5LgorICAgIFBvc2l0aW9uIG1fZW5kOyAvLyBSaWdodG1vc3QgcG9zaXRpb24gd2hlbiBl
eHBhbmRlZCB0byByZXNwZWN0IGdyYW51bGFyaXR5LgogCi0gICAgRUFmZmluaXR5IG1fYWZmaW5p
dHk7ICAgICAgICAgICAvLyB0aGUgdXBzdHJlYW0vZG93bnN0cmVhbSBhZmZpbml0eSBvZiB0aGUg
Y2FyZXQKKyAgICBBZmZpbml0eSBtX2FmZmluaXR5IHsgZGVmYXVsdEFmZmluaXR5IH07CiAKLSAg
ICAvLyB0aGVzZSBhcmUgY2FjaGVkLCBjYW4gYmUgcmVjYWxjdWxhdGVkIGJ5IHZhbGlkYXRlKCkK
LSAgICBTZWxlY3Rpb25UeXBlIG1fc2VsZWN0aW9uVHlwZTsgLy8gTm9uZSwgQ2FyZXQsIFJhbmdl
Ci0gICAgYm9vbCBtX2Jhc2VJc0ZpcnN0IDogMTsgLy8gVHJ1ZSBpZiBiYXNlIGlzIGJlZm9yZSB0
aGUgZXh0ZW50CisgICAgLy8gVGhlc2UgYXJlIGNhY2hlZCwgY2FuIGJlIHJlY2FsY3VsYXRlZCBi
eSB2YWxpZGF0ZSgpCisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IE5vbmUsIENhcmV0
LCBSYW5nZSB9OworICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Tm9uZSB9OworICAgIGJvb2wgbV9i
YXNlSXNGaXJzdCA6IDE7IC8vIFRydWUgaWYgYmFzZSBpcyBiZWZvcmUgdGhlIGV4dGVudC4KICAg
ICBib29sIG1faXNEaXJlY3Rpb25hbCA6IDE7IC8vIE5vbi1kaXJlY3Rpb25hbCBpZ25vcmVzIG1f
YmFzZUlzRmlyc3QgYW5kIHNlbGVjdGlvbiBhbHdheXMgZXh0ZW5kcyBvbiBzaGlmdCArIGFycm93
IGtleS4KIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgYSwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgYikKIHsKLSAgICByZXR1cm4gYS5zdGFydCgp
ID09IGIuc3RhcnQoKSAmJiBhLmVuZCgpID09IGIuZW5kKCkgJiYgYS5hZmZpbml0eSgpID09IGIu
YWZmaW5pdHkoKSAmJiBhLmlzQmFzZUZpcnN0KCkgPT0gYi5pc0Jhc2VGaXJzdCgpCi0gICAgICAg
ICYmIGEuaXNEaXJlY3Rpb25hbCgpID09IGIuaXNEaXJlY3Rpb25hbCgpOworICAgIHJldHVybiBh
LnN0YXJ0KCkgPT0gYi5zdGFydCgpICYmIGEuZW5kKCkgPT0gYi5lbmQoKSAmJiBhLmFmZmluaXR5
KCkgPT0gYi5hZmZpbml0eSgpICYmIGEuaXNCYXNlRmlyc3QoKSA9PSBiLmlzQmFzZUZpcnN0KCkg
JiYgYS5pc0RpcmVjdGlvbmFsKCkgPT0gYi5pc0RpcmVjdGlvbmFsKCk7CiB9CiAKIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgYSwgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgYikKIHsKICAgICByZXR1cm4gIShhID09IGIpOwogfQotICAgIAorCiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggOWM1ZTE5MTk2ZDE3ODM1Y2NmYjg5
NzZlMDA0YjAxZjBjNzBjMWEyZi4uY2E4N2EyMGIzOWQwNTgzM2RkNTA5MzI0ODJlYTU4NzU4MTE1
N2M0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMjI4LDcg
KzIyOCw3IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxvZ2ljYWxseVByZXZpb3VzQm94KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0CiAgICAgICAgIGlmIChwb3NpdGlvbi5p
c051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFJlbmRlcmVkUG9zaXRpb24g
cmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwgRE9XTlNUUkVBTSk7CisgICAgICAgIFJlbmRlcmVk
UG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwgQWZmaW5pdHk6OkRvd25zdHJlYW0p
OwogICAgICAgICBSb290SW5saW5lQm94KiBwcmV2aW91c1Jvb3QgPSByZW5kZXJlZFBvc2l0aW9u
LnJvb3RCb3goKTsKICAgICAgICAgaWYgKCFwcmV2aW91c1Jvb3QpCiAgICAgICAgICAgICBicmVh
azsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgY29uc3QgSW5saW5lQm94KiBsb2dpY2FsbHlO
ZXh0Qm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLAogICAgICAgICBp
ZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBSZW5k
ZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zaXRpb24ocG9zaXRpb24sIERPV05TVFJFQU0pOworICAg
ICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zaXRpb24ocG9zaXRpb24sIEFmZmluaXR5
OjpEb3duc3RyZWFtKTsKICAgICAgICAgUm9vdElubGluZUJveCogbmV4dFJvb3QgPSByZW5kZXJl
ZFBvc2l0aW9uLnJvb3RCb3goKTsKICAgICAgICAgaWYgKCFuZXh0Um9vdCkKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzTGlu
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQKICAg
ICBFbGVtZW50KiByb290RWxlbWVudCA9IHJvb3RFZGl0YWJsZU9yRG9jdW1lbnRFbGVtZW50KCpu
b2RlLCBlZGl0YWJsZVR5cGUpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9z
aXRpb25Jbk5vZGUocm9vdEVsZW1lbnQpLCBET1dOU1RSRUFNKTsKKyAgICByZXR1cm4gZmlyc3RQ
b3NpdGlvbkluTm9kZShyb290RWxlbWVudCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBuZXh0TGlu
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGlu
ZURpcmVjdGlvblBvaW50LCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQpAQCAtMTA5OSw3ICsx
MDk5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGludCBsaW4KICAgICBFbGVtZW50KiByb290RWxlbWVu
dCA9IHJvb3RFZGl0YWJsZU9yRG9jdW1lbnRFbGVtZW50KCpub2RlLCBlZGl0YWJsZVR5cGUpOwog
ICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsK
LSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RQb3NpdGlvbkluTm9kZShyb290RWxlbWVu
dCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBsYXN0UG9zaXRpb25Jbk5vZGUocm9vdEVsZW1l
bnQpOwogfQogCiAvLyAtLS0tLS0tLS0KQEAgLTEyOTIsMTQgKzEyOTIsMTQgQEAgVmlzaWJsZVBv
c2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBFZGl0aW5n
Qm91bmRhcnlDcm9zc2kKICAgICBhdXRvKiBub2RlID0gZmluZFN0YXJ0T2ZQYXJhZ3JhcGgoc3Rh
cnROb2RlLCBoaWdoZXN0Um9vdCwgc3RhcnRCbG9jaywgb2Zmc2V0LCB0eXBlLCBib3VuZGFyeUNy
b3NzaW5nUnVsZSk7CiAgICAgCiAgICAgaWYgKGlzPFRleHQ+KG5vZGUpKQotICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGRvd25jYXN0PFRleHQ+KG5vZGUpLCBvZmZzZXQp
LCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKGRvd25jYXN0PFRleHQ+KG5v
ZGUpLCBvZmZzZXQpOwogICAgIAogICAgIGlmICh0eXBlID09IFBvc2l0aW9uOjpQb3NpdGlvbklz
T2Zmc2V0SW5BbmNob3IpIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gUG9zaXRpb246OlBvc2l0
aW9uSXNPZmZzZXRJbkFuY2hvciB8fCAhb2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbihQb3NpdGlvbihub2RlLCBvZmZzZXQsIHR5cGUpLCBET1dOU1RSRUFNKTsKKyAgICAg
ICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUsIG9mZnNldCwgdHlwZSk7CiAgICAgfQogICAgIAotICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24obm9kZSwgdHlwZSksIERPV05TVFJFQU0p
OworICAgIHJldHVybiBQb3NpdGlvbihub2RlLCB0eXBlKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9u
IGVuZE9mUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgRWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKQpAQCAtMTMyMywxMiArMTMyMywxMiBA
QCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
LCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZwogICAgIGF1dG8qIG5vZGUgPSBmaW5kRW5kT2ZQYXJh
Z3JhcGgoc3RhcnROb2RlLCBoaWdoZXN0Um9vdCwgc3RheUluc2lkZUJsb2NrLCBvZmZzZXQsIHR5
cGUsIGJvdW5kYXJ5Q3Jvc3NpbmdSdWxlKTsKICAgICAKICAgICBpZiAoaXM8VGV4dD4obm9kZSkp
Ci0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZG93bmNhc3Q8VGV4dD4o
bm9kZSksIG9mZnNldCksIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gUG9zaXRpb24oZG93
bmNhc3Q8VGV4dD4obm9kZSksIG9mZnNldCk7CiAgICAgCiAgICAgaWYgKHR5cGUgPT0gUG9zaXRp
b246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcikKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihQb3NpdGlvbihub2RlLCBvZmZzZXQsIHR5cGUpLCBET1dOU1RSRUFNKTsKKyAgICAgICAg
cmV0dXJuIFBvc2l0aW9uKG5vZGUsIG9mZnNldCwgdHlwZSk7CiAKLSAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIHR5cGUpLCBET1dOU1RSRUFNKTsKKyAgICByZXR1cm4g
UG9zaXRpb24obm9kZSwgdHlwZSk7CiB9CiAKIC8vIEZJWE1FOiBpc1N0YXJ0T2ZQYXJhZ3JhcGgo
c3RhcnRPZk5leHRQYXJhZ3JhcGgocG9zKSkgaXMgbm90IGFsd2F5cyB0cnVlCkBAIC0xNjE0LDcg
KzE2MTQsNyBAQCBib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbgogCiAgICAgICAgIGlmIChwcmV2Qm91
bmRhcnkgPT0gbmV4dEJvdW5kYXJ5KSB7CiAgICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBuZXh0
TGluZVBvc2l0aW9uKG5leHRCb3VuZGFyeSwgMCk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnku
c2V0QWZmaW5pdHkoVVBTVFJFQU0pOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNldEFmZmlu
aXR5KEFmZmluaXR5OjpVcHN0cmVhbSk7CiAgICAgICAgICAgICBpZiAoIWluU2FtZUxpbmUocHJl
dkJvdW5kYXJ5LCBuZXh0Qm91bmRhcnkpKQogICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9
IHZwLm5leHQoKTsKICAgICAgICAgfQpAQCAtMTgzNiw3ICsxODM2LDcgQEAgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZwLAogCiAgICAgICAgICAgICBpZiAocHJldkJvdW5kYXJ5ID09IG5leHRCb3VuZGFy
eSkgewogICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IG5leHRMaW5lUG9zaXRpb24obmV4
dEJvdW5kYXJ5LCAwKTsKLSAgICAgICAgICAgICAgICBuZXh0Qm91bmRhcnkuc2V0QWZmaW5pdHko
VVBTVFJFQU0pOworICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeS5zZXRBZmZpbml0eShBZmZp
bml0eTo6VXBzdHJlYW0pOwogICAgICAgICAgICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2Qm91
bmRhcnksIG5leHRCb3VuZGFyeSkpCiAgICAgICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9
IHZwLm5leHQoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCA3ZTRlZDJhY2RjNTU0MmY3NTY3NGRlNGZl
YWRjMDI5ZTBlNzIyOTFhLi45ZjAxNDk2NWRhMDkzY2IyZWI5ZjBmOTljYjUxNDZlZDc1ZGQzYTEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29r
dXAubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3Vw
Lm1tCkBAIC0zMjMsNyArMzIzLDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwg
TlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGUKICAgICBOU1VJ
bnRlZ2VyIGhpdEluZGV4OwogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmdWxsQ2hhcmFjdGVy
UmFuZ2U7CiAgICAgCi0gICAgaWYgKHNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJs
ZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb24pIHsKKyAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2Uo
KSkgewogICAgICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVTdGFy
dCgpOwogICAgICAgICBhdXRvIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMWVkM2I5ZjMwNzJi
Mzg4Y2UyMjUxN2I4ZWY3N2Q2MjdjYmU0MmM5Yi4uMjlmN2U3MjdmMmIyYWMyYjhmYmVkNTNlYTY5
ZjcyMmNkNDViN2FkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAg
LTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25z
dCBTaW1wbGVSYW5nZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRJ
bnNlcnROb2RlKE5vZGUmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNl
cnRBY3Rpb24pIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRJbnNlcnRU
ZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEVkaXRvcklu
c2VydEFjdGlvbikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgRUFmZmluaXR5LCBib29sKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4mLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBBZmZpbml0eSwgYm9vbCkg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShjb25z
dCBTdHlsZVByb3BlcnRpZXMmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGlkQXBwbHlTdHlsZSgpIGZpbmFsIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IGVjZjJhZWFkNmQ0ZWVjODdhMmVlZmEz
MzQzMmQwMDRhMjRjYTNmMTguLmM2ZWIyNmVhY2NkZmJkZmY4ODY5NTNiYTI5MGYxMDI4MWE2ZjFj
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTE3Miw3ICsxNzIsNyBA
QCB2b2lkIERPTVNlbGVjdGlvbjo6Y29sbGFwc2UoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0
KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKCpmcmFt
ZSgpKTsKLSAgICBwcm90ZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihub2RlLCBvZmZzZXQpLCBET1dOU1RSRUFNKTsKKyAgICBwcm90ZWN0
ZWRGcmFtZS0+c2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihu
b2RlLCBvZmZzZXQpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTVNlbGVjdGlvbjo6Y29sbGFwc2VUb0VuZCgpCkBAIC0xODUsNyArMTg1LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRE9NU2VsZWN0aW9uOjpjb2xsYXBzZVRvRW5kKCkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBSZWY8RnJhbWU+IHBy
b3RlY3RvcigqZnJhbWUpOwotICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlv
bigpLmVuZCgpLCBET1dOU1RSRUFNKTsKKyAgICBzZWxlY3Rpb24ubW92ZVRvKHNlbGVjdGlvbi5z
ZWxlY3Rpb24oKS5lbmQoKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgIHJldHVybiB7IH07
CiB9CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246
OmNvbGxhcHNlVG9TdGFydCgpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZyYW1lKTsKLSAgICBzZWxl
Y3Rpb24ubW92ZVRvKHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLCBET1dOU1RSRUFNKTsK
KyAgICBzZWxlY3Rpb24ubW92ZVRvKHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLCBBZmZp
bml0eTo6RG93bnN0cmVhbSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMjE3LDcgKzIxNyw3
IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpzZXRCYXNlQW5kRXh0ZW50KE5vZGUqIGJhc2VOb2RlLCB1
bnNpZ25lZCBiYXNlT2Zmc2V0LCBOb2RlKiBlCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxG
cmFtZT4gcHJvdGVjdGVkRnJhbWUoKmZyYW1lKCkpOwotICAgIHByb3RlY3RlZEZyYW1lLT5zZWxl
Y3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGJhc2VOb2RlLCBiYXNl
T2Zmc2V0KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGV4dGVudE5vZGUsIGV4dGVudE9m
ZnNldCksIERPV05TVFJFQU0pOworICAgIHByb3RlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3Zl
VG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGJhc2VOb2RlLCBiYXNlT2Zmc2V0KSwgY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGV4dGVudE5vZGUsIGV4dGVudE9mZnNldCksIEFmZmlu
aXR5OjpEb3duc3RyZWFtKTsKIH0KIAogdm9pZCBET01TZWxlY3Rpb246OnNldFBvc2l0aW9uKE5v
ZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIERPTVNl
bGVjdGlvbjo6c2V0UG9zaXRpb24oTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQogICAgICAg
ICByZXR1cm47CiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKCpmcmFtZSgpKTsKLSAg
ICBwcm90ZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihub2RlLCBvZmZzZXQpLCBET1dOU1RSRUFNKTsKKyAgICBwcm90ZWN0ZWRGcmFtZS0+
c2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBvZmZz
ZXQpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiB9CiAKIHZvaWQgRE9NU2VsZWN0aW9uOjptb2Rp
ZnkoY29uc3QgU3RyaW5nJiBhbHRlclN0cmluZywgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJp
bmcsIGNvbnN0IFN0cmluZyYgZ3JhbnVsYXJpdHlTdHJpbmcpCkBAIC0yOTAsNyArMjkwLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gRE9NU2VsZWN0aW9uOjpleHRlbmQoTm9kZSYgbm9kZSwgdW5zaWdu
ZWQgb2Zmc2V0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsK
ICAgICBpZiAoIWlzVmFsaWRGb3JQb3NpdGlvbigmbm9kZSkpCiAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldEV4dGVudChjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24oJm5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS5zZXRFeHRlbnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZub2RlLCBvZmZzZXQpLCBB
ZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKaW5kZXggOWRlNzA2NTRmMjBiNTgyM2Y3NjU2MDBlMTQxNmI5ZDhjM2E5
MWRmNS4uYTE3M2RhYWViMzA5OTJmOWE5YzE2NWM2MGM1Yzc5YTljYzUyNTIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2RlJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
RWRpdG9ySW5zZXJ0QWN0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNl
bGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgRUFmZmluaXR5LCBib29sIHN0aWxsU2Vs
ZWN0aW5nKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uo
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgdG9SYW5nZSwgQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0
aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3Vw
cHJlc3NQYXNzd29yZEVjaG8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBlYWM2ZjgyZTgxMzg0MWU4ZmNlZjYyMTc1
NjAzYTk3YTZhY2M3ZmFiLi5mOThiY2UxYmY0NjY5OGNhMGU1ZGFkYWJkNjQ5YzVmZDc1ODBmYTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02OTcsNyArNjk3LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb24odGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2Nh
bFBvaW50KCksIG51bGxwdHIpKTsKICAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQot
ICAgICAgICB2aXNpYmxlUG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKHRhcmdldE5vZGUpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgdmlzaWJsZVBv
c2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSh0YXJn
ZXROb2RlKSk7CiAgICAgUG9zaXRpb24gcG9zID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFs
ZW50KCk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5j
cHAKaW5kZXggMDZmN2I5NjNhZGQ3ZTM3MGZkMmVhNThmMDU5NWRiMmJlZWRmM2I3OC4uNjJhOWVh
NDBjY2NmYjhiNWVjZTM4NmM2MzZlNjM2YmNiMDNkOTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcApAQCAtNTI2LDggKzUyNiw3IEBAIGJvb2wgRm9jdXNDb250cm9s
bGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
LCBLZXliCiAgICAgc2V0Rm9jdXNlZEZyYW1lKG5ld0RvY3VtZW50LmZyYW1lKCkpOwogCiAgICAg
aWYgKGNhcmV0QnJvd3NpbmcpIHsKLSAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUoZWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gbmV3U2VsZWN0aW9uKHBvc2l0aW9uLCBwb3NpdGlvbiwgRE9XTlNUUkVBTSk7CisgICAg
ICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3Jl
Tm9kZShlbGVtZW50LmdldCgpKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgICAgICBpZiAo
ZnJhbWUuc2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpIHsK
ICAgICAgICAgICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudChBWFRleHRTdGF0ZUNo
YW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rpb25E
aXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25vd24s
IHRydWUgfSk7CiAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoVXNl
clRyaWdnZXJlZCksIGludGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA1NmRjNWQ3YTA4MGVl
YzkxYjFiNWVmMWIyOGMwNDNlZTZkNjQ0YWExLi5kN2RlZGZkNTkxYzM5ZWZkMDIyZDQ1N2UxMmJh
YTJmOGI4MzNiOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTg3OCw3ICs4NzgsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFj
ZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICAgICAgaWYgKHJhbmdlLmNvbGxhcHNlZCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNo
b3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNl
dFNlbGVjdGVkUmFuZ2UocmFuZ2UsIEFmZmluaXR5OjpEb3duc3RyZWFtLCBGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50VGV4dCwgRWRpdG9yOjpTZWxlY3RS
ZXBsYWNlbWVudDo6WWVzLCBFZGl0b3I6OlNtYXJ0UmVwbGFjZTo6Tm8sIEVkaXRBY3Rpb246Oklu
c2VydFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJh
bWVJT1MubW0KaW5kZXggOWJiOGU5MmNhYWM1Y2Y1MzJiNzliOTBlZWFiM2NmMjE1NDBhZmY0My4u
NmY3ZDlmNzAwNjYwMDc3OWQzNTczNWM4ZmEzYWQ1MWMzZTkzYjg5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9pb3MvRnJhbWVJT1MubW0KQEAgLTcyMiw3ICs3MjIsNyBAQCBOU0FycmF5ICpGcmFtZTo6aW50
ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAogICAgIGlmICghZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8qIHJvb3QgPSBzZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb24g
PyBkb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpIDogc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
cm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIGF1dG8qIHJvb3QgPSBzZWxlY3Rpb24oKS5pc05v
bmUoKSA/IGRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkgOiBzZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgYXV0byByYW5nZU9mUm9vdENvbnRlbnRz
ID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KTsKIAogICAgIGF1dG8gbWFy
a2Vyc0luUm9vdCA9IGRvY3VtZW50KCktPm1hcmtlcnMoKS5tYXJrZXJzSW5SYW5nZShyYW5nZU9m
Um9vdENvbnRlbnRzLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0
aXZlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAyZGY1
NmU2NWY1NjdkZWQ5M2E2NTY1MmM2OTNiNTI2YjE2OTJkMDMwLi42NTY2YTI5MWIxYTQ5NGVhYWMz
NTk1M2IyZjE1MTQ2ZjliOTFhMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTIxNjksOCArMjE2OSw4IEBAIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZv
clBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKFJlbmRlckJsb2NrJiBwYXJlbnQsCiAg
ICAgTGF5b3V0VW5pdCBjaGlsZE1pZGRsZSA9IHBhcmVudC5sb2dpY2FsV2lkdGhGb3JDaGlsZChj
aGlsZCkgLyAyOwogICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBwYXJlbnQuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IHBvaW50SW5DaGlsZENvb3JkaW5hdGVzLngoKSA6IHBvaW50SW5D
aGlsZENvb3JkaW5hdGVzLnkoKTsKICAgICBpZiAobG9naWNhbExlZnQgPCBjaGlsZE1pZGRsZSkK
LSAgICAgICAgcmV0dXJuIGFuY2VzdG9yLT5jcmVhdGVWaXNpYmxlUG9zaXRpb24oY2hpbGRFbGVt
ZW50LT5jb21wdXRlTm9kZUluZGV4KCksIERPV05TVFJFQU0pOwotICAgIHJldHVybiBhbmNlc3Rv
ci0+Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNoaWxkRWxlbWVudC0+Y29tcHV0ZU5vZGVJbmRleCgp
ICsgMSwgVVBTVFJFQU0pOworICAgICAgICByZXR1cm4gYW5jZXN0b3ItPmNyZWF0ZVZpc2libGVQ
b3NpdGlvbihjaGlsZEVsZW1lbnQtPmNvbXB1dGVOb2RlSW5kZXgoKSwgQWZmaW5pdHk6OkRvd25z
dHJlYW0pOworICAgIHJldHVybiBhbmNlc3Rvci0+Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNoaWxk
RWxlbWVudC0+Y29tcHV0ZU5vZGVJbmRleCgpICsgMSwgQWZmaW5pdHk6OlVwc3RyZWFtKTsKIH0K
IAogVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGlu
ZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIqKQpAQCAtMjIwNiw5ICsyMjA2LDkgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmUKICAgICAg
ICAgTGF5b3V0VW5pdCBwb2ludExvZ2ljYWxUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ID8gcG9pbnQueSgpIDogcG9pbnQueCgpOwogCiAgICAgICAgIGlmIChwb2ludExvZ2ljYWxUb3Ag
PCAwIHx8IChwb2ludExvZ2ljYWxUb3AgPCBsb2dpY2FsSGVpZ2h0KCkgJiYgcG9pbnRMb2dpY2Fs
TGVmdCA8IDApKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjYXJl
dE1pbk9mZnNldCgpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVWaXNp
YmxlUG9zaXRpb24oY2FyZXRNaW5PZmZzZXQoKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAg
ICAgICBpZiAocG9pbnRMb2dpY2FsVG9wID49IGxvZ2ljYWxIZWlnaHQoKSB8fCAocG9pbnRMb2dp
Y2FsVG9wID49IDAgJiYgcG9pbnRMb2dpY2FsTGVmdCA+PSBsb2dpY2FsV2lkdGgoKSkpCi0gICAg
ICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0TWF4T2Zmc2V0KCksIERP
V05TVFJFQU0pOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjYXJl
dE1heE9mZnNldCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgfSAKIAogICAgIExheW91
dFBvaW50IHBvaW50SW5Db250ZW50cyA9IHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBiYjA2MmM4NGQyN2VhM2I1YWI5MDBkMzcyY2Nm
Nzc2Njg0MTk1MTc5Li5mYWU3MzViOTQzZWRiNTY4NTVjMjdjM2EzMjBhOTdlOTBlZTYyZWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzQ4
Niw3ICszNDg2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25G
b3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBMYXlvdXQKICAgICBlbnN1cmVMaW5lQm94
ZXMoKTsKIAogICAgIGlmICghZmlyc3RSb290Qm94KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVW
aXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CisgICAgICAgIHJldHVybiBjcmVhdGVWaXNp
YmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogCiAgICAgYm9vbCBsaW5lc0Fy
ZUZsaXBwZWQgPSBzdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKTsKICAgICBib29s
IGJsb2Nrc0FyZUZsaXBwZWQgPSBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7
CkBAIC0zNTQ1LDcgKzM1NDUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpw
b3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAgICAgICAg
ICAgICAgICAgICAgICAgYm94ID0gbmV3Qm94OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAvLyB5IGNvb3JkaW5hdGUgaXMgYWJvdmUgZmlyc3Qgcm9vdCBsaW5lIGJveCwgc28g
cmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZmlyc3QKLSAgICAgICAgICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGJveCwgdHJ1ZSksIERPV05TVFJFQU0pOworICAg
ICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkZvckJveChib3gsIHRydWUpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTM1NjMsMTMgKzM1NjMsMTMgQEAgVmlzaWJsZVBvc2l0aW9u
IFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25z
dCBMYXlvdXQKICAgICAgICAgQVNTRVJUKG1vdmVDYXJldFRvQm91bmRhcnkpOwogICAgICAgICBJ
bmxpbmVCb3gqIGxvZ2ljYWxseUxhc3RCb3g7CiAgICAgICAgIGlmIChsYXN0Um9vdEJveFdpdGhD
aGlsZHJlbi0+Z2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxvZ2ljYWxseUxhc3RCb3gpKQotICAg
ICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkZvckJveChsb2dpY2FsbHlM
YXN0Qm94LCBmYWxzZSksIERPV05TVFJFQU0pOworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
Rm9yQm94KGxvZ2ljYWxseUxhc3RCb3gsIGZhbHNlKTsKICAgICB9CiAKICAgICAvLyBDYW4ndCBy
ZWFjaCB0aGlzLiBXZSBoYXZlIGEgcm9vdCBsaW5lIGJveCwgYnV0IGl0IGhhcyBubyBraWRzLgog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBBU1NFUlRfTk9UX1JFQUNIRUQoKSwgYnV0IGNsaWNr
aW5nIG9uIHBsYWNlaG9sZGVyIHRleHQKICAgICAvLyBzZWVtcyB0byBoaXQgdGhpcyBjb2RlIHBh
dGguCi0gICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFNKTsKKyAg
ICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsK
IH0KIAogUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
cmVhay5jcHAKaW5kZXggZjU4MDY4ODk0ZWI0ZjFhMzc0ZjE1NWVmMzQyYzFlZTU4MGMxOTZmYi4u
YWVjMWIzNDE2MmFjNzMxMTgzMzc5ODljMWExODhhZmIzMTAyYjZjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBi
b29sIFJlbmRlckxpbmVCcmVhazo6Y2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QKIFZpc2libGVQ
b3NpdGlvbiBSZW5kZXJMaW5lQnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopCiB7CiAgICAgZW5zdXJlTGluZUJv
eGVzKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFNKTsK
KyAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFt
KTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdo
dFN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCA5NmJkZjU0ZTVjM2EyMzM1MWRhYTlhNjEyMWIxOTA3OWU3M2M0OWU1Li45MzI1NTQ2YmM4
MmEyMDMwZWZhODE4Yzk3OWMzNjZjMzczZDEyYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTUxNiw3ICsxNTE2LDcgQEAgUG9zaXRpb24gUmVuZGVy
T2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKIAogVmlz
aWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikKIHsKLSAgICByZXR1cm4gY3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0TWluT2Zmc2V0KCksIERPV05TVFJFQU0pOworICAgIHJl
dHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNaW5PZmZzZXQoKSwgQWZmaW5pdHk6OkRv
d25zdHJlYW0pOwogfQogCiBib29sIFJlbmRlck9iamVjdDo6aXNDb21wb3NpdGVkKCkgY29uc3QK
QEAgLTE2NjUsNyArMTY2NSw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6
Om9mZnNldFBhcmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPFJlbmRlckJveE1vZGVsT2JqZWN0
PihjdXJyZW50KSA/IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihjdXJyZW50KSA6IG51
bGxwdHI7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQ
b3NpdGlvbihpbnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pdHkpIGNvbnN0CitWaXNpYmxlUG9z
aXRpb24gUmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9mZnNldCwgQWZm
aW5pdHkgYWZmaW5pdHkpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhpcyBpcyBhIG5vbi1hbm9ueW1v
dXMgcmVuZGVyZXIgaW4gYW4gZWRpdGFibGUgYXJlYSwgdGhlbiBpdCdzIHNpbXBsZS4KICAgICBp
ZiAoTm9kZSogbm9kZSA9IG5vblBzZXVkb05vZGUoKSkgewpAQCAtMTY5NSw3ICsxNjk1LDcgQEAg
VmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBv
ZmZzZXQsIEVBZmZpbml0eSBhZmZpbmkKICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IGNoaWxkOwogICAgICAgICB3aGlsZSAoKHJlbmRlcmVyID0gcmVuZGVyZXItPm5leHRJ
blByZU9yZGVyKHBhcmVudCkpKSB7CiAgICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRl
cmVyLT5ub25Qc2V1ZG9Ob2RlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSksIERPV05TVFJFQU0pOworICAg
ICAgICAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBGaW5kIG5vbi1hbm9ueW1vdXMgY29udGVudCBiZWZvcmUu
CkBAIC0xNzA0LDEyICsxNzA0LDEyIEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNy
ZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pCiAgICAgICAg
ICAgICBpZiAocmVuZGVyZXIgPT0gcGFyZW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9uUHNldWRvTm9kZSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5PckFmdGVy
Tm9kZShub2RlKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RQb3Np
dGlvbkluT3JBZnRlck5vZGUobm9kZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBVc2UgdGhl
IHBhcmVudCBpdHNlbGYgdW5sZXNzIGl0IHRvbyBpcyBhbm9ueW1vdXMuCiAgICAgICAgIGlmIChF
bGVtZW50KiBlbGVtZW50ID0gcGFyZW50LT5ub25Qc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShlbGVt
ZW50KSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICByZXR1cm4gZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKGVsZW1lbnQpOwogCiAgICAgICAgIC8vIFJlcGVhdCBhdCB0aGUgbmV4dCBsZXZl
bCB1cC4KICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7CkBAIC0xNzI1LDcgKzE3MjUsNyBAQCBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oY29uc3QgUG9z
aXRpb24mIHBvc2l0aW9uKSBjbwogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0
aW9uKTsKIAogICAgIEFTU0VSVCghbm9kZSgpKTsKLSAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKDAsIERPV05TVFJFQU0pOworICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24o
MCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyT2Jq
ZWN0OjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDUzNzdjYmU4YmQ2OTlhMmZhYzY5
YTJkYjE3YjRjY2M1YWFmOTE4MzEuLjE5MTI1ZmVmNzlmZmUyNjAwNGZmZTk5ODdlMWZmMGIzNDBk
ZGY5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTUxOCw3
ICs1MTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBvc2l0aW9uIHBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250
YWluZXIqKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBv
ZmZzZXQsIEVBZmZpbml0eSkgY29uc3Q7CisgICAgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2li
bGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBBZmZpbml0eSkgY29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwogCiAgICAg
Ly8gUmV0dXJucyB0aGUgY29udGFpbmluZyBibG9jayBsZXZlbCBlbGVtZW50IGZvciB0aGlzIGVs
ZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRl
eCA2ZDU1NGQzMGY5ZmJkODJmMjc5MzU1ZTUxY2RhOTE3ZDhjNjIyM2M1Li42MGM2OTBlZTkyZTlj
NWJkZjcxNzA4NGY2NzExYTBhYWJkZmM2YTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTYzMiwxNSArNjMyLDE1IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQsIGNvbnN0CiAgICAgTGF5b3V0VW5pdCBsaW5lRGlyZWN0aW9uUG9zaXRpb24gPSBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gcG9pbnQueCgpICsgeCgpIDogcG9pbnQueSgpICsgeSgpOwog
ICAgIAogICAgIGlmIChibG9ja0RpcmVjdGlvblBvc2l0aW9uIDwgdG9wKQotICAgICAgICByZXR1
cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0TWluT2Zmc2V0KCksIERPV05TVFJFQU0pOyAv
LyBjb29yZGluYXRlcyBhcmUgYWJvdmUKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3Np
dGlvbihjYXJldE1pbk9mZnNldCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7IC8vIGNvb3JkaW5h
dGVzIGFyZSBhYm92ZQogICAgIAogICAgIGlmIChibG9ja0RpcmVjdGlvblBvc2l0aW9uID49IGJv
dHRvbSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjYXJldE1heE9mZnNl
dCgpLCBET1dOU1RSRUFNKTsgLy8gY29vcmRpbmF0ZXMgYXJlIGJlbG93CisgICAgICAgIHJldHVy
biBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNYXhPZmZzZXQoKSwgQWZmaW5pdHk6OkRvd25z
dHJlYW0pOyAvLyBjb29yZGluYXRlcyBhcmUgYmVsb3cKICAgICAKICAgICBpZiAoZWxlbWVudCgp
KSB7CiAgICAgICAgIGlmIChsaW5lRGlyZWN0aW9uUG9zaXRpb24gPD0gbG9naWNhbExlZnQoKSAr
IChsb2dpY2FsV2lkdGgoKSAvIDIpKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQ
b3NpdGlvbigwLCBET1dOU1RSRUFNKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3Np
dGlvbigxLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9z
aXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOworICAgICAgICByZXR1cm4gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uKDEsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICB9CiAKICAgICByZXR1
cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50LCBmcmFnbWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKaW5kZXggYmIz
MWU3NjU2NjllZWNmOWNlZGJhOTM5NWFiMGU1NDBmYTJiN2Y2My4uNzhhZDJhNTFlZDgzMTA4Mzc5
ZDEyNmUwNTk5OWI2OWQwNGE1ZTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyBib29s
IGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChpbnQgcG9pbnRMaW5lRGlyZWN0aW9uLCBjb25z
dCBJbmxpbmVUZXh0CiAgICAgaWYgKCFib3gubmV4dExlYWZPbkxpbmVJZ25vcmluZ0xpbmVCcmVh
aygpKSB7CiAgICAgICAgIC8vIGJveCBpcyBsYXN0IG9uIGxpbmUKICAgICAgICAgLy8gYW5kIHRo
ZSB4IGNvb3JkaW5hdGUgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBsYXN0IHRleHQgYm94IHJpZ2h0
IGVkZ2UKLSAgICAgICAgLy8gZ2VuZXJhdGUgVmlzaWJsZVBvc2l0aW9uLCB1c2UgVVBTVFJFQU0g
YWZmaW5pdHkgaWYgcG9zc2libGUKKyAgICAgICAgLy8gZ2VuZXJhdGUgVmlzaWJsZVBvc2l0aW9u
LCB1c2UgQWZmaW5pdHk6OlVwc3RyZWFtIGFmZmluaXR5IGlmIHBvc3NpYmxlCiAgICAgICAgIHNo
b3VsZEFmZmluaXR5QmVEb3duc3RyZWFtID0gVXBzdHJlYW1JZlBvc2l0aW9uSXNOb3RBdFN0YXJ0
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb25BZnRlckFkanVzdGluZ09mZnNl
dEZvckJpRGkoY29uc3QgSW4KIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0TGluZUJveGVzOjpw
b3NpdGlvbkZvclBvaW50KGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZpcnN0IHx8ICFyZW5kZXJlci50ZXh0
KCkubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlci5jcmVhdGVWaXNpYmxlUG9zaXRp
b24oMCwgRE9XTlNUUkVBTSk7CisgICAgICAgIHJldHVybiByZW5kZXJlci5jcmVhdGVWaXNpYmxl
UG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogCiAgICAgTGF5b3V0VW5pdCBwb2lu
dExpbmVEaXJlY3Rpb24gPSBtX2ZpcnN0LT5pc0hvcml6b250YWwoKSA/IHBvaW50LngoKSA6IHBv
aW50LnkoKTsKICAgICBMYXlvdXRVbml0IHBvaW50QmxvY2tEaXJlY3Rpb24gPSBtX2ZpcnN0LT5p
c0hvcml6b250YWwoKSA/IHBvaW50LnkoKSA6IHBvaW50LngoKTsKQEAgLTMzOSw3ICszMzksNyBA
QCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dExpbmVCb3hlczo6cG9zaXRpb25Gb3JQb2ludChj
b25zdCBSZW5kZXJUZXh0JiByZW5kZXJlcgogICAgICAgICBsaW5lRGlyZWN0aW9uUG9pbnRGaXRz
SW5Cb3gocG9pbnRMaW5lRGlyZWN0aW9uLCAqbGFzdEJveCwgc2hvdWxkQWZmaW5pdHlCZURvd25z
dHJlYW0pOwogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3Rp
bmdPZmZzZXRGb3JCaURpKCpsYXN0Qm94LCBsYXN0Qm94LT5vZmZzZXRGb3JQb3NpdGlvbihwb2lu
dExpbmVEaXJlY3Rpb24pICsgbGFzdEJveC0+c3RhcnQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25z
dHJlYW0pOwogICAgIH0KLSAgICByZXR1cm4gcmVuZGVyZXIuY3JlYXRlVmlzaWJsZVBvc2l0aW9u
KDAsIERPV05TVFJFQU0pOworICAgIHJldHVybiByZW5kZXJlci5jcmVhdGVWaXNpYmxlUG9zaXRp
b24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogfQogCiB2b2lkIFJlbmRlclRleHRMaW5lQm94
ZXM6OnNldFNlbGVjdGlvblN0YXRlKFJlbmRlclRleHQmIHJlbmRlcmVyLCBSZW5kZXJPYmplY3Q6
OkhpZ2hsaWdodFN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwCmluZGV4IGUwNTYwZDdhNTJhOTUyNjRkNmEzZDU2ODJkNzkzNTY5NWMy
M2Y2MGMuLjc0ZWE1ZDVmNDcwNTE5OGUyZWMzOTc0OThmZjIyMDczMDRhNDcyMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTc5NSw3ICs3
OTUsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZVNlbGVjdGlvbihUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyQm94JiByZW5kZXJlcikKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZy
YW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQo
KSkgewogICAgICAgICB0cyA8PCAiY2FyZXQ6IHBvc2l0aW9uICIgPDwgc2VsZWN0aW9uLnN0YXJ0
KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8PCAiIG9mICIgPDwgbm9kZVBvc2l0aW9uKHNl
bGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOwotICAgICAgICBpZiAoc2VsZWN0aW9u
LmFmZmluaXR5KCkgPT0gVVBTVFJFQU0pCisgICAgICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHko
KSA9PSBBZmZpbml0eTo6VXBzdHJlYW0pCiAgICAgICAgICAgICB0cyA8PCAiICh1cHN0cmVhbSBh
ZmZpbml0eSkiOwogICAgICAgICB0cyA8PCAiXG4iOwogICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9u
LmlzUmFuZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZVRleHQuY3BwCmluZGV4IDNhYmE5MDk1YjAyMDI2NDkzMmQ1OWRiZTAyNGZjOWMx
NTVmZTBhNGEuLmQyMzY2ZmQ0M2Q2OWRkZTcxNGRhNzIyNGMyMzQ4OTMwZjJlYzU3M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0
LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wgUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y2hhcmFj
dGVyU3RhcnRzTmV3VGV4dENodW5rKGludCBwb3NpdGlvbikgY29uc3QKIFZpc2libGVQb3NpdGlv
biBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKQogewogICAgIGlmICghZmly
c3RUZXh0Qm94KCkgfHwgdGV4dCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZp
c2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2li
bGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKICAgICBmbG9hdCBiYXNlbGlu
ZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7CiAKQEAgLTIxNiw3
ICsyMTYsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsCiAgICAgfQogCiAgICAgaWYgKCFjbG9z
ZXN0RGlzdGFuY2VGcmFnbWVudCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlv
bigwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigw
LCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKICAgICBpbnQgb2Zmc2V0ID0gY2xvc2VzdERpc3Rh
bmNlQm94LT5vZmZzZXRGb3JQb3NpdGlvbkluRnJhZ21lbnQoKmNsb3Nlc3REaXN0YW5jZUZyYWdt
ZW50LCBhYnNvbHV0ZVBvaW50LngoKSAtIGNsb3Nlc3REaXN0YW5jZVBvc2l0aW9uLCB0cnVlKTsK
ICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKG9mZnNldCArIGNsb3Nlc3REaXN0YW5j
ZUJveC0+c3RhcnQoKSwgb2Zmc2V0ID4gMCA/IEFmZmluaXR5OjpVcHN0cmVhbSA6IEFmZmluaXR5
OjpEb3duc3RyZWFtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCmluZGV4IDBjMzhjMzdiN2EzODEzNTYwYjM0NjJiNjA3YzE4YjM0ZGJhYTk4YTEu
Ljk3NTU5ZmRjNjY4ZGQ3MDFmMDlkMjc0ZWEzMWYyNmEzNzQxYjM4NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDYwLDE0ICs0NjAs
MTQgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250ZW4KIHsKICAgICBSb290SW5saW5lQm94KiByb290
Qm94ID0gZmlyc3RSb290Qm94KCk7CiAgICAgaWYgKCFyb290Qm94KQotICAgICAgICByZXR1cm4g
Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gY3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAogICAgIEFTU0VS
VCghcm9vdEJveC0+bmV4dFJvb3RCb3goKSk7CiAgICAgQVNTRVJUKGNoaWxkcmVuSW5saW5lKCkp
OwogCiAgICAgSW5saW5lQm94KiBjbG9zZXN0Qm94ID0gZG93bmNhc3Q8U1ZHUm9vdElubGluZUJv
eD4oKnJvb3RCb3gpLmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlvbihwb2ludEluQ29udGVudHMp
OwogICAgIGlmICghY2xvc2VzdEJveCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3Np
dGlvbigwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlv
bigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKICAgICByZXR1cm4gY2xvc2VzdEJveC0+cmVu
ZGVyZXIoKS5wb3NpdGlvbkZvclBvaW50KHsgcG9pbnRJbkNvbnRlbnRzLngoKSwgTGF5b3V0VW5p
dChjbG9zZXN0Qm94LT55KCkpIH0sIGZyYWdtZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCBkODg1MTExZDlmNzUwMDBiZTdk
NjdlMDBiY2YwNzNhNDlhNjFlMzY2Li4yYzgwODI5YTQ2YmJmYmE2YjdlNzc1YzRiNzBiYmZmZDZl
YzIxM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SW5zZXJ0Tm9kZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydFRleHQoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCkgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkFmZmluaXR5LCBi
b29sKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZyhXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5o
CmluZGV4IDFjODA4ZWI5NDAzZDA4MDFkZmEwMWE5ZjU1NGIyMWE1YzNiNDQxZDEuLjhkODdjMzdh
ODNkZGNkMWE1Yzc3YmQ3NGZiMWM2MGU3MmZkZTViZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVB
UElDYXN0LmgKQEAgLTgyLDEyICs4MiwxMiBAQCBpbmxpbmUgV0tJbnNlcnRBY3Rpb25UeXBlIHRv
QVBJKFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiAgICAgcmV0dXJuIGtXS0lu
c2VydEFjdGlvblR5cGVkOwogfQogCi1pbmxpbmUgV0tBZmZpbml0eVR5cGUgdG9BUEkoV2ViQ29y
ZTo6RUFmZmluaXR5IGFmZmluaXR5KQoraW5saW5lIFdLQWZmaW5pdHlUeXBlIHRvQVBJKFdlYkNv
cmU6OkFmZmluaXR5IGFmZmluaXR5KQogewogICAgIHN3aXRjaCAoYWZmaW5pdHkpIHsKLSAgICBj
YXNlIFdlYkNvcmU6OlVQU1RSRUFNOgorICAgIGNhc2UgV2ViQ29yZTo6QWZmaW5pdHk6OlVwc3Ry
ZWFtOgogICAgICAgICByZXR1cm4ga1dLQWZmaW5pdHlVcHN0cmVhbTsKLSAgICBjYXNlIFdlYkNv
cmU6OkRPV05TVFJFQU06CisgICAgY2FzZSBXZWJDb3JlOjpBZmZpbml0eTo6RG93bnN0cmVhbToK
ICAgICAgICAgcmV0dXJuIGtXS0FmZmluaXR5RG93bnN0cmVhbTsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYzc3
NjI1MmViZDRhZTg4ODQ1YmU4YzY3NzhiNmVmNzMwZGZmMzE2Zi4uMjdmNDE3ZDhiMmUxNTNlMGE2
NTBjNzVlZDVmYjk3NTc0MmEyZTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bQpAQCAtNTY3LDcgKzU2Nyw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdL
V2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAg
ICByZXR1cm4gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgc2hvdWxkSW5zZXJ0
VGV4dDp0ZXh0IHJlcGxhY2luZ1JhbmdlOndyYXBwZXIoKldlYktpdDo6Y3JlYXRlSGFuZGxlKHJh
bmdlVG9SZXBsYWNlKSkgZ2l2ZW5BY3Rpb246dG9XSyhhY3Rpb24pXTsKICAgICAgICAgfQogCi0g
ICAgICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpFQWZmaW5pdHkg
YWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsCisgICAgICAgIGJvb2wgc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGls
bFNlbGVjdGluZykgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRl
TWV0aG9kcy5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtNTc1LDkgKzU3NSw5IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZToo
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAg
ICAgICAgICBhdXRvIGFwaUZyb21SYW5nZSA9IGFkb3B0TlMoW1tXS0RPTVJhbmdlIGFsbG9jXSBf
aW5pdFdpdGhJbXBsOmNyZWF0ZUxpdmVSYW5nZShmcm9tUmFuZ2UpLmdldCgpXSk7CiAgICAgICAg
ICAgICBhdXRvIGFwaVRvUmFuZ2UgPSBhZG9wdE5TKFtbV0tET01SYW5nZSBhbGxvY10gX2luaXRX
aXRoSW1wbDpjcmVhdGVMaXZlUmFuZ2UodG9SYW5nZSkuZ2V0KCldKTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICAgICAgICAgVUlUZXh0U3RvcmFnZURpcmVjdGlvbiBhcGlBZmZpbml0
eSA9IGFmZmluaXR5ID09IFdlYkNvcmU6OlVQU1RSRUFNID8gVUlUZXh0U3RvcmFnZURpcmVjdGlv
bkJhY2t3YXJkIDogVUlUZXh0U3RvcmFnZURpcmVjdGlvbkZvcndhcmQ7CisgICAgICAgICAgICBV
SVRleHRTdG9yYWdlRGlyZWN0aW9uIGFwaUFmZmluaXR5ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6
QWZmaW5pdHk6OlVwc3RyZWFtID8gVUlUZXh0U3RvcmFnZURpcmVjdGlvbkJhY2t3YXJkIDogVUlU
ZXh0U3RvcmFnZURpcmVjdGlvbkZvcndhcmQ7CiAjZWxzZQotICAgICAgICAgICAgTlNTZWxlY3Rp
b25BZmZpbml0eSBhcGlBZmZpbml0eSA9IGFmZmluaXR5ID09IFdlYkNvcmU6OlVQU1RSRUFNID8g
TlNTZWxlY3Rpb25BZmZpbml0eVVwc3RyZWFtIDogTlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW07CisgICAgICAgICAgICBOU1NlbGVjdGlvbkFmZmluaXR5IGFwaUFmZmluaXR5ID0gYWZmaW5p
dHkgPT0gV2ViQ29yZTo6QWZmaW5pdHk6OlVwc3RyZWFtID8gTlNTZWxlY3Rpb25BZmZpbml0eVVw
c3RyZWFtIDogTlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW07CiAjZW5kaWYKIAogICAgICAg
ICAgICAgcmV0dXJuIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2U6YXBpRnJvbVJhbmdlLmdldCgpIHRvUmFuZ2U6YXBpVG9SYW5nZS5n
ZXQoKSBhZmZpbml0eTphcGlBZmZpbml0eSBzdGlsbFNlbGVjdGluZzpzdGlsbFNlbGVjdGluZ107
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4
IGUzNDBhZjFjYmMzMDI5ZTU3YWJkYjIyZGM0ZjlhOWJkYzI1ZjA1MTAuLmI1NTQxOGRlZGNmODJl
MTE4OWZhNjQyMGVjYzBkZTA1ODMyZGVlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGREZWxldGVSYW5nZShXZWJQYWdlJiBwYWdlLCBj
b25zdCBPcHRpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHRvUmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGlu
ZykKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxl
Y3RlZFJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJv
bVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFm
ZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIGlmIChtX2NsaWVudC5zaG91bGRD
aGFuZ2VTZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRSYW5nZSh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShmcm9tUmFuZ2Up
LmdldCgpKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHRvUmFuZ2UpLmdldCgpKSwgdG9BUEkoYWZmaW5p
dHkpLCBzdGlsbFNlbGVjdGluZywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCBmM2EwZTc0NzY3MjBm
YjFiNWQ5Y2IxNzcxN2VkZDczOTk0OTdkYzFkLi5jYzA2YjFhZjk0NTE1ZGNlMTVjYmQ0M2FlZTZm
ZTEwYTYwNDVlMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRJbnNlcnRO
b2RlKFdlYlBhZ2UmLCBXZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiByYW5nZVRvUmVwbGFjZSwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBm
aW5hbDsKICAgICBib29sIHNob3VsZEluc2VydFRleHQoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIFdl
YkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7CiAgICAgYm9vbCBzaG91bGREZWxldGVS
YW5nZShXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7Ci0gICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYlBhZ2UmLCBjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpFQWZmaW5pdHksIGJvb2wg
c3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5n
ZShXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFu
Z2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29y
ZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxk
QXBwbHlTdHlsZShXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRC
ZWdpbkVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlm
aWNhdGlvbk5hbWUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBkYjk3YzBiMTdi
N2UxYTI0MTQyMThjMjU5NzhhYTk0NDYxODIxMTJkLi4wMDVmN2JlMGU1NWU4MTQzZGQwNjdjYmE0
MzMzNDEwYjYwMDdiMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM2LDcgKzEzNiw3
IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgT3B0aW9uYWw8U2ltcGxlCiAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoKS5zaG91bGRJbnNlcnRUZXh0KCptX3BhZ2UsIHRleHQsIHJhbmdl
VG9SZXBsYWNlLCBhY3Rpb24pOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwg
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHks
IGJvb2wgc3RpbGxTZWxlY3RpbmcpCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdl
U2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29u
c3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBBZmZpbml0eSBhZmZpbml0eSwgYm9v
bCBzdGlsbFNlbGVjdGluZykKIHsKICAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudCgpLnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoKm1fcGFnZSwgZnJvbVJhbmdl
LCB0b1JhbmdlLCBhZmZpbml0eSwgc3RpbGxTZWxlY3RpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IDIzZTM5NGYyN2VjMzI2OTI3OGM0NWI4ZTE0NGQzNmRjN2M3YmZkNmYuLmJhZDBjYjM3
MTJhNDM4NTIwYjU4ZTE2YjIwNDM2ZGVhODRkNTUwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoY29uc3Qg
V2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKICAgICBib29sIHNob3VsZEluc2VydE5vZGUo
V2ViQ29yZTo6Tm9kZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdl
YkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRJbnNlcnRU
ZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7Ci0gICAgYm9vbCBzaG91bGRDaGFu
Z2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJv
bVJhbmdlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdl
YkNvcmU6OkVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7CisgICAgYm9vbCBz
aG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRv
UmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbDsKICAg
ICAKICAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0
aWVzJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAg
dm9pZCBkaWRBcHBseVN0eWxlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggMWJkOTI4MmExODE5
YjRiNzg0NTBmMWU2MDVlODg2OGY0ZWVjNmRkMy4uZGM0YjVkYzQ5NDY2YTE1MjJiNTFlNjc1NjE4
NGZiNmRkM2U2MTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2Vi
UGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBF
ZGl0aW5nUmFuZ2UmIHJlCiAgICAgaWYgKHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9u
ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdS
YW5nZTo6dG9SYW5nZShmcmFtZSwgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpOwogICAgICAgICBp
ZiAocmVwbGFjZW1lbnRSYW5nZSkKLSAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uIHsgKnJlcGxhY2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxU
X0FGRklOSVRZIH0pOworICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24geyAqcmVwbGFjZW1lbnRSYW5nZSB9KTsKICAgICB9CiAKICAgICBp
ZiAob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTViMzA4ODVmMDljZTE5ODI1NjZlYjAxNmQ5MTNm
OGE5MGI2YTNjZi4uODUwMmZjOWQwMGEwYmEyZmEwNzJlM2FkNDNkOTIyYzFjNjdjMDBmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU0MzQs
NyArNTQzNCw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVuCiAgICAgaWYgKHJlcGxhY2VtZW50
RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIGlmIChhdXRvIHJl
cGxhY2VtZW50UmFuZ2UgPSBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50
RWRpdGluZ1JhbmdlLCBvcHRpb25zLmVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykpIHsKICAgICAg
ICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGlzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5
bmNocm9ub3VzbHkobV9pc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5
LCBvcHRpb25zLnN1cHByZXNzU2VsZWN0aW9uVXBkYXRlKTsKLSAgICAgICAgICAgIGZyYW1lLnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyZXBsYWNlbWVudFJhbmdl
LCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxhY2VtZW50UmFuZ2UpKTsKICAgICAg
ICAgICAgIHJlcGxhY2VzVGV4dCA9IHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxlbmd0aDsKICAg
ICAgICAgfQogICAgIH0KQEAgLTU1MDcsNyArNTUwNyw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q29t
cG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlv
blVuCiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRh
YmxlKCkpIHsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9
IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoYXV0byByZXBsYWNlbWVudFJhbmdlID0gRWRp
dGluZ1JhbmdlOjp0b1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSkpCi0gICAg
ICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oKnJlcGxhY2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgICAg
ICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJl
cGxhY2VtZW50UmFuZ2UpKTsKICAgICAgICAgfQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5zZXRD
b21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBoaWdobGlnaHRzLCBzZWxlY3Rpb24ubG9jYXRp
b24sIHNlbGVjdGlvbi5sb2NhdGlvbiArIHNlbGVjdGlvbi5sZW5ndGgpOwogICAgIH0KQEAgLTU1
NzIsNyArNTU3Miw3IEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91bmRpbmcoaW50NjRfdCBv
ZmZzZXQsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KQogICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2Ug
PSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHJv
b3ROb2RlKSwgY2hhcmFjdGVyUmFuZ2UpOwogCiAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNl
dElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7Ci0gICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlv
bigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlLCBTRUxfREVG
QVVMVF9BRkZJTklUWSkpOworICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb25SYW5nZSkpOwogICAgIHRhcmdldEZyYW1lLT5l
ZGl0b3IoKS5kZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoZmFsc2UpOwogICAgIHRhcmdl
dEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGZhbHNlKTsKICAgICBz
ZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNjQ1YzcxOTE0Y2YzYzI1Njg5OWI2MmNi
MWFiZWVjZDY2OGE2MmZiNy4uNTZlY2ZlMmZhODNkMGVjZjgzNTJhM2ZkOTk0MzQ4MDlkMDZjMmI0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KQEAgLTEwMDQsNyArMTAwNCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVF
ZGl0RHJhZygpCiAgICAgYXV0byBmcmFtZSA9IG1ha2VSZWYobV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKSk7CiAgICAgaWYgKGF1dG8gc2VsZWN0aW9uUmFuZ2Ug
PSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgewog
ICAgICAgICBtX3BlbmRpbmdJbWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90ID0gdmlzaWJsZUlt
YWdlRWxlbWVudHNJblJhbmdlV2l0aE5vbkxvYWRlZEltYWdlcygqc2VsZWN0aW9uUmFuZ2UpOwot
ICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShtYWtlU2ltcGxlUmFu
Z2Uoc2VsZWN0aW9uUmFuZ2UtPmVuZCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobWFrZVNpbXBsZVJhbmdlKHNlbGVjdGlvblJhbmdlLT5l
bmQpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlw
aW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBtX3JhbmdlRm9yRHJvcFNuYXBzaG90
ID0gV1RGTW92ZShzZWxlY3Rpb25SYW5nZSk7CiAgICAgfQogCkBAIC0yMDQ2LDcgKzIwNDYsNyBA
QCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaQogICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkg
ewogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICAgICAgaWYgKHBvc2l0aW9u
LmlzTm90TnVsbCgpKQotICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRS
YW5nZShtYWtlU2ltcGxlUmFuZ2UocG9zaXRpb24pLCBVUFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgICAg
ICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShtYWtlU2ltcGxlUmFuZ2Uo
cG9zaXRpb24pLCBBZmZpbml0eTo6VXBzdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICB9CiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KQEAgLTIwNjAsNyArMjA2MCw3IEBAIHZvaWQgV2ViUGFnZTo6bW92
ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSBncmFuCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IChpc0ZvcndhcmQpID8g
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpIDogZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CiAgICAgICAgIHBvc2l0aW9uID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBk
aXJlY3Rpb24pOwogICAgICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCi0gICAgICAgICAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG1ha2VTaW1wbGVSYW5nZShwb3Np
dGlvbiksIGlzRm9yd2FyZD8gVVBTVFJFQU0gOiBET1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CisgICAgICAg
ICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG1ha2VTaW1wbGVSYW5nZShw
b3NpdGlvbiksIGlzRm9yd2FyZD8gQWZmaW5pdHk6OlVwc3RyZWFtIDogQWZmaW5pdHk6OkRvd25z
dHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBV
c2VyVHJpZ2dlcmVkKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTIx
MjIsNyArMjEyMiw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXCiAgICAgYXV0byYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGF1
dG8gcmFuZ2UgPSByYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChmcmFtZSwgcG9pbnQsIGdyYW51
bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKICAgICBpZiAocmFuZ2Up
Ci0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoKnJhbmdlLCBVUFNU
UkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVz
ZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KCpyYW5nZSwgQWZmaW5pdHk6OlVwc3RyZWFtLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hv
dWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgbV9pbml0aWFsU2VsZWN0
aW9uID0gcmFuZ2U7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTIxNTUsNyArMjE1
NSw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91
bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmCiAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5ld1JhbmdlLT5zdGFydCk7CiAKICAgICBpZiAo
YXV0byByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5k
KSkKLSAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZSwgVVBT
VFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBV
c2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5n
ZShyYW5nZSwgQWZmaW5pdHk6OlVwc3RyZWFtLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hv
dWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2soc2VsZWN0aW9uU3RhcnQgPT0gaW5pdGlh
bFNlbGVjdGlvblN0YXJ0UG9zaXRpb24sIGNhbGxiYWNrSUQpKTsKIH0KQEAgLTIyMDQsNyArMjIw
NCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgYm9vCiAgICAgfQogICAgIAogICAgIGlmIChhdXRv
IHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpKQot
ICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBVUFNUUkVB
TSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJU
cmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJh
bmdlLCBBZmZpbml0eTo6VXBzdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRD
bG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhtX3NlbGVjdGlvbkFuY2hvciA9PSBTdGFydCwg
Y2FsbGJhY2tJRCkpOwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBs
YWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdU
ZXh0KQogICAgIGlmIChwbGFpblRleHRGb3JDb250ZXh0KHdvcmRSYW5nZSkgIT0gb2xkVGV4dCkK
ICAgICAgICAgcmV0dXJuOwogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNo
YW5nZXModHJ1ZSk7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSh3b3Jk
UmFuZ2UsIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBp
bmc6Olllcyk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSh3b3JkUmFu
Z2UsIEFmZmluaXR5OjpVcHN0cmVhbSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENs
b3NlVHlwaW5nOjpZZXMpOwogICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQobmV3VGV4dCwg
MCk7CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhmYWxzZSk7
CiB9CkBAIC0yMjgzLDcgKzIyODMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRl
eHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAKICAgICAv
LyBXZSBkb24ndCB3YW50IHRvIG5vdGlmeSB0aGUgY2xpZW50IHRoYXQgdGhlIHNlbGVjdGlvbiBo
YXMgY2hhbmdlZCB1bnRpbCB3ZSBhcmUgZG9uZSBpbnNlcnRpbmcgdGhlIG5ldyB0ZXh0LgogICAg
IGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7Ci0gICAgZnJh
bWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZSwgVVBTVFJFQU0sIFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBBZmZpbml0eTo6VXBzdHJlYW0sIFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICBmcmFtZS5l
ZGl0b3IoKS5pbnNlcnRUZXh0KG5ld1RleHQsIDApOwogICAgIGZyYW1lLmVkaXRvcigpLnNldEln
bm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogfQpAQCAtMjQxMCw5ICsyNDEwLDkgQEAgYm9v
bCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8v
IENvcnJlY3RseSBkZXRlcm1pbmUgYWZmaW5pdHksIHVzaW5nIGxvZ2ljIGN1cnJlbnRseSBvbmx5
IHByZXNlbnQgaW4gVmlzaWJsZVBvc2l0aW9uCi0gICAgRUFmZmluaXR5IGFmZmluaXR5ID0gRE9X
TlNUUkVBTTsKKyAgICBhdXRvIGFmZmluaXR5ID0gQWZmaW5pdHk6OkRvd25zdHJlYW07CiAgICAg
aWYgKHJhbmdlICYmIHJhbmdlLT5jb2xsYXBzZWQoKSkKLSAgICAgICAgYWZmaW5pdHkgPSBWaXNp
YmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJhbmdlLT5zdGFydCksIFVQ
U1RSRUFNKS5hZmZpbml0eSgpOworICAgICAgICBhZmZpbml0eSA9IFZpc2libGVQb3NpdGlvbihj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UtPnN0YXJ0KSwgQWZmaW5pdHk6OlVwc3Ry
ZWFtKS5hZmZpbml0eSgpOwogICAgIAogICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVk
UmFuZ2UocmFuZ2UsIGFmZmluaXR5LCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xv
c2VUeXBpbmc6Olllcyk7CiAgICAgaWYgKGNvcnJlY3Rpb24ubGVuZ3RoKCkpCkBAIC00MDUyLDcg
KzQwNTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90
IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdAogCiAgICAgYXV0byBuZXdTZWxlY3Rp
b25SYW5nZSA9IENoYXJhY3RlclJhbmdlKG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdldCgp
LCBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCkpOwogICAgIGF1dG8gdXBkYXRlZFNlbGVj
dGlvblJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cygqcm9vdCksIG5ld1NlbGVjdGlvblJhbmdlKTsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZSh1cGRhdGVkU2VsZWN0aW9uUmFuZ2UsIERPV05TVFJFQU0sIFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSh1cGRhdGVkU2Vs
ZWN0aW9uUmFuZ2UsIEFmZmluaXR5OjpEb3duc3RyZWFtLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQppbmRleCA3Y2FmY2JhYjc3NDI1ZWQwYjVhMDUzMGNk
MTA1NzkwNGExMDljZTgxLi45MGU4ZjE3ZDI5N2JiNzM5YjFkNzM5MTliYTVhNWY5MDU0MjAzODBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUlPUy5tbQpAQCAtMTU4LDIxICsxNTgsMjEgQEAgLSAoQ0dSZWN0KWNsb3Nlc3RDYXJl
dFJlY3RJbk1hcmtlZFRleHRSYW5nZUZvclBvaW50OihDR1BvaW50KXBvaW50CiAgICAgaWYgKHBv
aW50LnkgPCBmaXJzdFJlY3Qub3JpZ2luLnkpIHsKICAgICAgICAgcG9pbnQueSA9IGZpcnN0UmVj
dC5vcmlnaW4ueTsKICAgICAgICAgcG9zaXRpb24gPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JQ
b2ludDpwb2ludF07Ci0gICAgICAgIHBvc2l0aW9uLnNldEFmZmluaXR5KFVQU1RSRUFNKTsKKyAg
ICAgICAgcG9zaXRpb24uc2V0QWZmaW5pdHkoQWZmaW5pdHk6OlVwc3RyZWFtKTsKICAgICB9IGVs
c2UgaWYgKHBvaW50LnkgPj0gbGFzdFJlY3Qub3JpZ2luLnkpIHsKICAgICAgICAgcG9pbnQueSA9
IGxhc3RSZWN0Lm9yaWdpbi55OwogICAgICAgICBwb3NpdGlvbiA9IFtzZWxmIHZpc2libGVQb3Np
dGlvbkZvclBvaW50OnBvaW50XTsKLSAgICAgICAgcG9zaXRpb24uc2V0QWZmaW5pdHkoRE9XTlNU
UkVBTSk7CisgICAgICAgIHBvc2l0aW9uLnNldEFmZmluaXR5KEFmZmluaXR5OjpEb3duc3RyZWFt
KTsKICAgICB9IGVsc2UgewogICAgICAgICBwb3NpdGlvbiA9IFtzZWxmIHZpc2libGVQb3NpdGlv
bkZvclBvaW50OnBvaW50XTsKICAgICB9CiAKICAgICBpZiAocG9zaXRpb24gPT0gc3RhcnQgfHwg
cG9zaXRpb24gPCBzdGFydCkgewotICAgICAgICBzdGFydC5zZXRBZmZpbml0eShVUFNUUkVBTSk7
CisgICAgICAgIHN0YXJ0LnNldEFmZmluaXR5KEFmZmluaXR5OjpVcHN0cmVhbSk7CiAgICAgICAg
IHJldHVybiBzdGFydC5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAgICAgfQogICAgIGlmIChwb3Np
dGlvbiA+IGVuZCkgewotICAgICAgICBlbmQuc2V0QWZmaW5pdHkoRE9XTlNUUkVBTSk7CisgICAg
ICAgIGVuZC5zZXRBZmZpbml0eShBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgICAgIHJldHVy
biBlbmQuYWJzb2x1dGVDYXJldEJvdW5kcygpOwogICAgIH0KICAgICByZXR1cm4gcG9zaXRpb24u
YWJzb2x1dGVDYXJldEJvdW5kcygpOwpAQCAtNzQ1LDE2ICs3NDUsMTUgQEAgLSAodm9pZClzbWFy
dEV4dGVuZFJhbmdlZFNlbGVjdGlvbjooV2ViVGV4dFNtYXJ0RXh0ZW5kRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIAogICAgIEZyYW1lICpmcmFtZSA9IFtzZWxmIGNvcmVGcmFtZV07CiAgICAgRnJh
bWVTZWxlY3Rpb24mIGZyYW1lU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpOwotICAgIEVB
ZmZpbml0eSBhZmZpbml0eSA9IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmFmZmluaXR5KCk7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0KGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0
YXJ0KCksIGFmZmluaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kKGZyYW1lU2VsZWN0aW9u
LnNlbGVjdGlvbigpLmVuZCgpLCBhZmZpbml0eSk7CisgICAgYXV0byBzdGFydCA9IGZyYW1lU2Vs
ZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOworICAgIGF1dG8gZW5kID0gZnJhbWVT
ZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBi
YXNlKGZyYW1lLT5yYW5nZWRTZWxlY3Rpb25CYXNlKCkuYmFzZSgpKTsgIC8vIHNob3VsZCBlcXVh
bCBzdGFydCBvciBlbmQKIAogICAgIC8vIEJhc2UgbXVzdCBlcXVhbCBzdGFydCBvciBlbmQKICAg
ICBpZiAoYmFzZSAhPSBzdGFydCAmJiBiYXNlICE9IGVuZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmlzaWJsZVBvc2l0aW9uIGV4dGVudChmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5leHRl
bnQoKSwgYWZmaW5pdHkpOworICAgIGF1dG8gZXh0ZW50ID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0
aW9uKCkudmlzaWJsZUV4dGVudCgpOwogICAgIAogICAgIC8vIFdlIGRvbid0IHlldCBzdXBwb3J0
IHNtYXJ0IGV4dGVuc2lvbiBmb3IgbGFuZ3VhZ2VzIHdoaWNoCiAgICAgLy8gcmVxdWlyZSBjb250
ZXh0IGZvciB3b3JkIGJvdW5kYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCmluZGV4IDBmMTI4
YTZkZjllMDllM2I1YTEzZGFkMjA4ZDU4MzIxMGYzNWI4YjUuLjI3NzM2M2YxZDQ0NjQyOWIyYzY0
ZjYxM2Y2MmNkZGY2ODdmNmU2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KQEAgLTQ0NCw3
ICs0NDQsNyBAQCAtIChOU1NlbGVjdGlvbkFmZmluaXR5KWFmZmluaXR5CiAKIC0gKHZvaWQpc2V0
QWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpYWZmaW5pdHkKIHsKLSAgICByZWludGVycHJl
dF9jYXN0PFZpc2libGVQb3NpdGlvbiAqPihfaW50ZXJuYWwpLT5zZXRBZmZpbml0eSgoV2ViQ29y
ZTo6RUFmZmluaXR5KWFmZmluaXR5KTsKKyAgICByZWludGVycHJldF9jYXN0PFZpc2libGVQb3Np
dGlvbiAqPihfaW50ZXJuYWwpLT5zZXRBZmZpbml0eSgoV2ViQ29yZTo6QWZmaW5pdHkpYWZmaW5p
dHkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJ
S2l0RXh0ZW5zaW9ucy5tbQppbmRleCBhYzU5Y2QxMmJmYThhYWMwNmRiMmYwN2ZjMDViNWVlMTIw
OTMyYTI3Li5hMTY4MzU3MjhjODliZWIxYTlmMGIzM2JhZjEyNWZiYmU4MWY3ZjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAg
LTIyMyw3ICsyMjMsNyBAQCAtIChCT09MKWlzU2VsZWN0YWJsZUJsb2NrCiAKIC0gKERPTVJhbmdl
ICopcmFuZ2VPZkNvbnRhaW5pbmdQYXJhZ3JhcGgKIHsKLSAgICBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvcmUoc2VsZiksIDApLCBXZWJDb3Jl
OjpET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24oY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKGNvcmUoc2VsZiksIDApKTsKICAgICByZXR1cm4ga2l0KG1ha2VTaW1w
bGVSYW5nZShzdGFydE9mUGFyYWdyYXBoKHBvc2l0aW9uKSwgZW5kT2ZQYXJhZ3JhcGgocG9zaXRp
b24pKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGUzMTFhYjdmZjYzZTU2MmFjNzZhNzAw
NzgzNjJlZmYwZjE5NzlhMS4uMzQwMmYzOTFlNTI2YWFhNzYyMGRjZjFlMzQ4Mjg0ZTM0M2ViYzI1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IHNob3VsZEVuZEVkaXRpbmcoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKICAg
ICBib29sIHNob3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSYsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7
CiAgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmlu
YWw7Ci0gICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVj
dGluZykgZmluYWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5LCBib29sIHN0
aWxsU2VsZWN0aW5nKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBX
ZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKSBmaW5hbDsKQEAgLTIxNiw3
ICsyMTYsNyBAQCBwcml2YXRlOgogICAgIEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGUgbV9s
YXN0RWRpdG9yU3RhdGVXYXNDb250ZW50RWRpdGFibGUgeyBFZGl0b3JTdGF0ZUlzQ29udGVudEVk
aXRhYmxlOjpVbnNldCB9OwogfTsKIAotaW5saW5lIE5TU2VsZWN0aW9uQWZmaW5pdHkga2l0KFdl
YkNvcmU6OkVBZmZpbml0eSBhZmZpbml0eSkKK2lubGluZSBOU1NlbGVjdGlvbkFmZmluaXR5IGtp
dChXZWJDb3JlOjpBZmZpbml0eSBhZmZpbml0eSkKIHsKICAgICBzd2l0Y2ggKGFmZmluaXR5KSB7
CiAgICAgY2FzZSBXZWJDb3JlOjpBZmZpbml0eTo6VXBzdHJlYW06CkBAIC0yMjgsNyArMjI4LDcg
QEAgaW5saW5lIE5TU2VsZWN0aW9uQWZmaW5pdHkga2l0KFdlYkNvcmU6OkVBZmZpbml0eSBhZmZp
bml0eSkKICAgICByZXR1cm4gTlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW07CiB9CiAKLWlu
bGluZSBXZWJDb3JlOjpFQWZmaW5pdHkgY29yZShOU1NlbGVjdGlvbkFmZmluaXR5IGFmZmluaXR5
KQoraW5saW5lIFdlYkNvcmU6OkFmZmluaXR5IGNvcmUoTlNTZWxlY3Rpb25BZmZpbml0eSBhZmZp
bml0eSkKIHsKICAgICBzd2l0Y2ggKGFmZmluaXR5KSB7CiAgICAgY2FzZSBOU1NlbGVjdGlvbkFm
ZmluaXR5VXBzdHJlYW06CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggOTJmYThmYmUxMmY4ODI0MDJl
MzQ1Yzg3MjdlNzc1N2E5MDY4NDU5ZC4uMjhjYTFiOWFiYmU2NDZkOWUwNDBhNTYxNjdiZmIwM2Ri
Y2JhMzgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgV2Vi
RWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
T3B0aW9uYWw8U2ltcGxlCiAgICAgcmV0dXJuIFtbd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9y
d2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgc2hvdWxkSW5zZXJ0VGV4dDp0ZXh0IHJlcGxhY2luZ0RP
TVJhbmdlOmtpdChyYW5nZSkgZ2l2ZW5BY3Rpb246a2l0KGFjdGlvbildOwogfQogCi1ib29sIFdl
YkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiB0b1Jh
bmdlLCBFQWZmaW5pdHkgc2VsZWN0aW9uQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpCiti
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiB0b1JhbmdlLCBBZmZpbml0eSBzZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGlu
ZykKIHsKICAgICByZXR1cm4gW21fd2ViVmlldyBfc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTpraXQoZnJvbVJhbmdlKSB0b0RPTVJhbmdlOmtpdCh0b1JhbmdlKSBhZmZpbml0eTpraXQoc2Vs
ZWN0aW9uQWZmaW5pdHkpIHN0aWxsU2VsZWN0aW5nOnN0aWxsU2VsZWN0aW5nXTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDdiY2Q2MzI5OWYy
YjJlOWZlYzAyYTE0YTk5NDRiMGVlOGRlMDQzODYuLmE0MmQ0Nzc3Yzg4MTY2ZTRiMDg2ZmZkNjZl
MzU0N2U0ZTYyMWQ1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQpAQCAtNzE1LDcgKzcxNSw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBmb3JjZVVzCiAKIC0g
KE5TUmVjdClfY2FyZXRSZWN0QXRQb3NpdGlvbjooY29uc3QgV2ViQ29yZTo6UG9zaXRpb24mKXBv
cyBhZmZpbml0eTooTlNTZWxlY3Rpb25BZmZpbml0eSlhZmZpbml0eQogewotICAgIFdlYkNvcmU6
OlZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24ocG9zLCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpFQWZmaW5pdHk+KGFmZmluaXR5KSk7CisgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHZp
c2libGVQb3NpdGlvbihwb3MsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFmZmluaXR5PihhZmZpbml0
eSkpOwogICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb24uYWJzb2x1dGVDYXJldEJvdW5kcygpOwog
fQogCkBAIC0xMTMwLDcgKzExMzAsNyBAQCAtIChOU1JhbmdlKV9zZWxlY3RlZE5TUmFuZ2UKIC0g
KHZvaWQpX3NlbGVjdE5TUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKIHsKICAgICBpZiAoYXV0byBkb21S
YW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpyYW5nZV0pCi0gICAgICAgIF9wcml2YXRl
LT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihXZWJDb3JlOjpWaXNpYmxlU2Vs
ZWN0aW9uKCpkb21SYW5nZSwgV2ViQ29yZTo6U0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAg
ICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFdlYkNvcmU6
OlZpc2libGVTZWxlY3Rpb24oKmRvbVJhbmdlKSk7CiB9CiAKIC0gKEJPT0wpX2lzRGlzcGxheWlu
Z1N0YW5kYWxvbmVJbWFnZQpAQCAtMTcwMywzMSArMTcwMywzMSBAQCAtICh2b2lkKWdldERpY3Rh
dGlvblJlc3VsdFJhbmdlczooTlNBcnJheSAqKilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0Fy
cmF5ICoqKQogICAgIEFTU0VSVChvdXRSYW5nZXMpOwogICAgIGlmICghb3V0UmFuZ2VzKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyAqb3V0UmFuZ2VzIHNob3VsZCBub3QgYWxyZWFk
eSBwb2ludCB0byBhbiBhcnJheS4KICAgICBBU1NFUlQoISgqb3V0UmFuZ2VzKSk7CiAgICAgKm91
dFJhbmdlcyA9IG5pbDsKLSAgICAKKwogICAgIEFTU0VSVChvdXRNZXRhZGF0YXMpOwogICAgIGlm
ICghb3V0TWV0YWRhdGFzKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyAqbWV0YWRh
dGEgc2hvdWxkIG5vdCBhbHJlYWR5IHBvaW50IHRvIGFuIGFycmF5LgogICAgIEFTU0VSVCghKCpv
dXRNZXRhZGF0YXMpKTsKICAgICAqb3V0TWV0YWRhdGFzID0gbmlsOwotICAgIAorCiAgICAgTlNN
dXRhYmxlQXJyYXkgKnJhbmdlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgTlNNdXRh
YmxlQXJyYXkgKm1ldGFkYXRhcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgCisKICAg
ICBhdXRvKiBmcmFtZSA9IGNvcmUoc2VsZik7CiAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKIAotICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKLSAgICBXZWJDb3JlOjpFbGVtZW50KiByb290ID0gc2VsZWN0aW9u
LnNlbGVjdGlvblR5cGUoKSA9PSBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlv
biA/IGZyYW1lLT5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpIDogc2VsZWN0aW9uLnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKLSAgICAKKyAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgYXV0byByb290ID0gc2VsZWN0aW9uLmlzTm9uZSgp
ID8gZnJhbWUtPmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkgOiBzZWxlY3Rpb24ucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworCiAgICAgRE9NUmFuZ2UgKnByZXZpb3VzRE9NUmFuZ2UgPSBuaWw7
CiAgICAgaWQgcHJldmlvdXNNZXRhZGF0YSA9IG5pbDsKLSAgICAKKwogICAgIGZvciAoV2ViQ29y
ZTo6Tm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBXZWJDb3JlOjpOb2RlVHJhdmVyc2Fs
OjpuZXh0KCpub2RlKSkgewogICAgICAgICBhdXRvIG1hcmtlcnMgPSBkb2N1bWVudC0+bWFya2Vy
cygpLm1hcmtlcnNGb3IoKm5vZGUpOwogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IG1hcmtl
cnMpIHsKQEAgLTE3NDAsNyArMTc0MCw3IEBAIC0gKHZvaWQpZ2V0RGljdGF0aW9uUmVzdWx0UmFu
Z2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6KE5TQXJyYXkgKiopCiAgICAg
ICAgICAgICBBU1NFUlQobWV0YWRhdGEpOwogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBET01S
YW5nZSAqZG9tUmFuZ2UgPSBraXQobWFrZVNpbXBsZVJhbmdlKCpub2RlLCAqbWFya2VyKSk7CiAK
ICAgICAgICAgICAgIGlmIChtZXRhZGF0YSAhPSBwcmV2aW91c01ldGFkYXRhKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAyODI5MWNi
MjA1YjNmMzFhZjVlNWU5YmU5NTUzM2JiYjQyYjUxZWVlLi42MWRhODA5ZWVlYTJmNjU5YWUzNjc2
ZDlhOGFmOTA2MmUwZDcwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KQEAgLTY3MDcsNyArNjcwNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBXZWJSYW5nZUlzUmVsYXRpdmVUbyByYW5nZUlz
UmVsYXRpdmVUbyA9IG5lZWRUb1JlbW92ZVNvZnRTcGFjZSA/IFdlYlJhbmdlSXNSZWxhdGl2ZVRv
OjpQYXJhZ3JhcGggOiBXZWJSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290OwogICAgICAg
ICBpZiAoYXV0byBkb21SYW5nZSA9IFtbc2VsZiBfZnJhbWVdIF9jb252ZXJ0VG9ET01SYW5nZTpy
ZXBsYWNlbWVudFJhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOnJhbmdlSXNSZWxhdGl2ZVRvXSkgewog
ICAgICAgICAgICAgV2ViQ29yZTo6SWdub3JlU2VsZWN0aW9uQ2hhbmdlRm9yU2NvcGUgc2VsZWN0
aW9uQ2hhbmdlIHsgKmNvcmVGcmFtZSB9OwotICAgICAgICAgICAgY29yZUZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24oV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbigqZG9tUmFuZ2UsIFdl
YkNvcmU6OlNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgICAgICBjb3JlRnJhbWUtPnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKCpkb21SYW5n
ZSkpOwogICAgICAgICAgICAgcmVwbGFjZXNUZXh0ID0gcmVwbGFjZW1lbnRSYW5nZS5sZW5ndGg7
CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407844</attachid>
            <date>2020-09-02 18:23:24 -0700</date>
            <delta_ts>2020-09-02 21:05:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216102-20200902182323.patch</filename>
            <type>text/plain</type>
            <size>158877</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmEyNDAyMjMzZTQ0NmFl
YTM4OTUyMmNmZGJiYjZmMDc0MWM3ZWE5Yi4uMzRjODJjYTU5Yjg2N2VhOTQyMzFlMTEyZGNiYmEx
YzY3ZmFhNDNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNyBAQAorMjAyMC0wOS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEVBZmZpbml0eSwg
VVBTVFJFQU0sIERPV05TVFJFQU0sIFNFTF9ERUZBVUxUX0FGRklOSVRZLCBhbmQgVmlzaWJsZVNl
bGVjdGlvbjo6c2VsZWN0aW9uVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlckRh
dGEpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
Lmg6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtVGV4dE9w
ZXJhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvblJh
bmdlRm9yUmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnJlcGxhY2VUZXh0SW5SYW5nZSk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUgY29u
c3QpOiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIGNhbGwgdG8gUG9zaXRpb246OmVxdWFsLCBz
aW1wbGlmaWVkIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojpib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IFVzZSBBZmZpbml0eS4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3Np
dGlvbkZvckluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lIGNvbnN0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6
CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KTogVXNlIEFmZmluaXR5Lgor
ICAgICAgICAod29yZEF0UG9zaXRpb25Gb3JBdGtCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAo
c2VudGVuY2VBdFBvc2l0aW9uRm9yQXRrQm91bmRhcnkpOiBEaXR0by4KKyAgICAgICAgKGxpbmVB
dFBvc2l0aW9uRm9yQXRrQm91bmRhcnkpOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAgICAgICAgKG9iamVjdEZvY3VzZWRB
bmRDYXJldE9mZnNldFVuaWdub3JlZCk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0
ZUZvY3VzQXBwZWFyYW5jZSk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKworICAgICAgICAq
IGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cHJldmlvdXND
aGFyYWN0ZXJQb3NpdGlvbiBjb25zdCk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjpuZXh0Q2hhcmFjdGVyUG9zaXRpb24gY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uOjpsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRp
b24gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppbmxpbmVCb3hB
bmRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5QmxvY2tFbGVt
ZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseUJsb2NrRWxlbWVudENvbW1h
bmQ6OmZvcm1hdFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvQnJlYWtCbG9j
a3F1b3RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCcmVha0Jsb2NrcXVvdGVDb21t
YW5kOjpkb0FwcGx5KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3Zl
UGFyYWdyYXBoV2l0aENsb25lcyk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6IERpdHRvLgor
CisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c21hcnREZWxldGVQYXJhZ3JhcGhTcGFjZXJzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KTog
RGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Zmlyc3RJblNwZWNpYWxFbGVtZW50KTogUmVseSBvbiBkZWZhdWx0IGFmZmluaXR5LgorICAg
ICAgICAoV2ViQ29yZTo6bGFzdEluU3BlY2lhbEVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OnZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnZpc2libGVQb3NpdGlvbkFmdGVyTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKTogVXNlIEFmZmlu
aXR5LgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5kKTogVXNlIEFmZmluaXR5LgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpjYW5EZWxldGVSYW5nZSBjb25zdCk6IFJlbHkgb24gZGVmYXVsdCBhZmZp
bml0eS4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlTdHlsZSk6IFVzZSBpc05vbmUg
YW5kIGlzQ2FyZXQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5
bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOiBV
c2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKTogRGl0dG8uIFVzZSBpc0NhcmV0
LgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOiBSZWx5IG9uIGRlZmF1bHQg
YWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRl
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vob2xk
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2Ug
Y29uc3QpOiBEaXR0by4gQWxzbyBzaW1wbGlmeQorICAgICAgICByZWN0YW5nbGUgY2FsY3VsYXRp
b24gYXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNob3VsZENoYW5nZVNlbGVjdGlvbiBjb25zdCk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6ZmluZFN0cmluZyk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKwor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRv
TWFyayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFRvTWFyayk6IERp
dHRvLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vdmVUbyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246Om1vZGlmeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OnNldEJhc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpzZXRFeHRlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpzZXRTZWxlY3RlZFJhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6cmV2ZWFsU2VsZWN0aW9uKTogVXNlIGlzTm9uZSBhbmQgaXNDYXJldC4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSk6IFJlbHkgb24g
ZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpleHBh
bmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24pOiBEaXR0by4KKwor
ICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDogVXNlIEFmZmluaXR5LgorCisgICAg
ICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6b3V0ZGVudFJlZ2lvbik6IFJlbHkgb24gZGVmYXVsdCBh
ZmZpbml0eS4KKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KTogVXNl
IEFmZmluaXR5LgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQ6OmRvQXBwbHkpOiBE
aXR0by4KKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5k
Ojpkb0FwcGx5KTogVXNlIEFmZmluaXR5LgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0
VGFiKTogUmVseSBvbiBkZWZhdWx0IGFmZmluaXR5LgorCisgICAgICAgICogZWRpdGluZy9SZW5k
ZXJlZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OlJl
bmRlcmVkUG9zaXRpb24pOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICogZWRpdGluZy9SZW5kZXJl
ZFBvc2l0aW9uLmg6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
ZG9BcHBseSk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjb21wbGV0ZUhUTUxSZXBsYWNlbWVudCk6CisgICAgICAg
IFVzZSBWaXNpYmxlU2VsZWN0aW9uOjpkZWZhdWx0QWZmaW5pdHkuCisKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRBZmZpbml0eS5oOiBSZW1vdmVkIEVBZmZpbml0eSwgVVBTVFJFQU0sIERPV05TVFJF
QU0uCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKTogUmVseSBv
bgorICAgICAgICBkZWZhdWx0IGFmZmluaXR5LgorCisgICAgICAgICogZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Om1ha2VFZGl0YWJs
ZVJvb3RFbXB0eSk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOiBVc2UgaXNDYXJldE9yUmFuZ2UgYW5kIGlzUmFuZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZCk6
IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpWaXNpYmxlUG9zaXRpb24pOiBVc2UgQWZmaW5p
dHkuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnByZXZpb3VzIGNvbnN0KTog
UmVseSBvbiBkZWZhdWx0IGFmZmluaXR5LgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0
aW9uOjpsZWZ0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRp
b246OnJpZ2h0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTog
VXNlIEFmZmluaXR5LgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24pOiBV
c2UgQWZmaW5pdHkuIEFsc28gdXNlCisgICAgICAgIGluaXRpYWxpemUgaW4gdGhlIGNsYXNzIGRl
ZmluaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25G
cm9tQ29udGVudHNPZk5vZGUpOiBSZWx5IG9uCisgICAgICAgIGRlZmF1bHQgYWZmaW5pdHkuCisg
ICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFuZEVuZEZyb21CYXNl
QW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgUmVuYW1lIGZyb20gInBv
cyIgdG8gInBvc2l0aW9uIi4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OnVw
ZGF0ZVNlbGVjdGlvblR5cGUpOiBVcGRhdGUgZnJvbQorICAgICAgICBtX3NlbGVjdGlvblR5cGUg
dG8gbV90eXBlIGFuZCB1c2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2Vs
ZWN0aW9uOjp2YWxpZGF0ZSk6IFVzZSBpc1JhbmdlLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJs
ZVNlbGVjdGlvbjo6c2V0V2l0aG91dFZhbGlkYXRpb24pOiBVc2UgQWZmaW5pdHkgYW5kCisgICAg
ICAgIG1fdHlwZS4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oOiBSZW1v
dmVkIFNFTF9ERUZBVUxUX0FGRklOSVRZLCByZXBsYWNpbmcKKyAgICAgICAgaXQgd2l0aCBWaXNp
YmxlU2VsZWN0aW9uOjpkZWZhdWx0QWZmaW5pdHkuIFJlbW92ZWQgYm90aAorICAgICAgICBWaXNp
YmxlU2VsZWN0aW9uOjpTZWxlY3Rpb25UeXBlIGFuZCBWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rp
b25UeXBlLAorICAgICAgICByZXBsYWNpbmcgd2l0aCBwcml2YXRlIFZpc2libGVTZWxlY3Rpb246
OlR5cGUuIEFsc28gcmVuYW1lZAorICAgICAgICBtX3NlbGVjdGlvblR5cGUgdG8gbV90eXBlLgor
CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bG9naWNhbGx5UHJldmlvdXNCb3gpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjps
b2dpY2FsbHlOZXh0Qm94KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0xpbmVQ
b3NpdGlvbik6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRMaW5lUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZQYXJhZ3Jh
cGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmVuZE9mUGFyYWdyYXBoKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjp3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkpOiBVc2UgQWZmaW5p
dHkuCisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkpOiBE
aXR0by4KKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KTog
VXNlIGlzUmFuZ2UuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDogVXNlIEFm
ZmluaXR5LgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6Y29sbGFwc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVNlbGVjdGlvbjo6Y29sbGFwc2VUb0VuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2VsZWN0aW9uOjpjb2xsYXBzZVRvU3RhcnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RE9NU2VsZWN0aW9uOjpzZXRQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2VsZWN0aW9uOjpleHRlbmQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5o
OiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2spOgor
ICAgICAgICBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisKKyAgICAgICAgKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFu
Y2VGb2N1c0luRG9jdW1lbnRPcmRlcik6CisgICAgICAgIFVzZSBjb25zdHJ1Y3RvciB0aGF0IHRh
a2VzIGEgc2luZ2xlIFBvc2l0aW9uIGFuZCBBZmZpbml0eS4KKworICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmFuZ2VzKTogVXNlIEFmZmluaXR5Lgor
CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QgY29uc3QpOiBVc2UgaXNOb25lLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBv
c2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMpOiBVc2UgQWZmaW5pdHku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVu
KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQpOiBEaXR0by4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24gY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNl
ZDo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6
OnBvc2l0aW9uRm9yUG9pbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50KTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOiBEaXR0by4KKwog
MjAyMC0wOS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERv
bid0IG1vZGlmeSB0aGUgcmVzcG9uc2Ugd2hlbiBjcmVhdGluZyBhIENvbnZvbHZlck5vZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggNzNhNzBlMTExYTNmMGUyZGU0NjA1NTQyNDgxYjhmN2JhOWE2MWZlNS4uOGM0MmQx
ZWMyMDI2NzVhOWNkOTFjZTBlODU3N2JlODI0MzRiYjM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MiBAQAorMjAyMC0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIEVBZmZpbml0eSwgVVBTVFJFQU0sIERPV05TVFJFQU0sIFNFTF9ERUZBVUxUX0FG
RklOSVRZLCBhbmQgVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uVHlwZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJ
OjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdl
KTogVXNlIEFmZmluaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKTogRGl0by4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKTogRGl0
dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpOiBEaXR0by4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0Q29tcG9zaXRpb25Bc3luYyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkZWxldGVTdXJyb3VuZGluZyk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25j
bHVkZUVkaXREcmFnKTogVXNlIEFmZmluaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5
QXRQb2ludCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZVNlbGVjdGVkVGV4dCk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbCk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEpOiBEaXR0by4K
KwogMjAyMC0wOS0wMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgY3VzdG9tIGRvbWFpbiBmcm9tIFNhbWVTaXRlPXN0cmljdCBqYWlsIHByb3Rl
Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA5MDU0MDUwY2FjNjI4NTdhNzVh
ZDI0MWU0MWE3Y2ExZmNmMGY2NTNiLi5mMTQ1ZTg3YWFhMDFiMDdmNDViMDk3MTM5NWU4NjYyYzc5
NzE5M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjAtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBFQWZmaW5pdHksIFVQU1RSRUFNLCBET1dOU1RSRUFNLCBTRUxfREVGQVVMVF9BRkZJTklUWSwg
YW5kIFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvblR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjEwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1Mu
bW06CisgICAgICAgICgtW1dlYkZyYW1lIGNsb3Nlc3RDYXJldFJlY3RJbk1hcmtlZFRleHRSYW5n
ZUZvclBvaW50Ol0pOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICgtW1dlYkZyYW1lIHNtYXJ0RXh0
ZW5kUmFuZ2VkU2VsZWN0aW9uOl0pOiBVc2UgdmlzaWJsZVN0YXJ0L0VuZC9FeHRlbnQgc28gd2Ug
ZG9uJ3QKKyAgICAgICAgbmVlZCB0byB3cml0ZSBleHBsaWNpdCBjb2RlIHRvIGhhbmRsZSBhZmZp
bml0eS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViVmlzaWJsZVBvc2l0aW9uIHNldEFmZmluaXR5Ol0pOiBVc2UgQWZmaW5p
dHkuCisKIDIwMjAtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIENoYW5nZSBBZmZpbml0eSBpbnRvIGFuIGVudW0gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCBkMTE5MWY4MjhhMjI5YmQ5MzUzMjA1ZjkzZTBkNzgxNmUwMGFjODM4Li5i
NmZjMWYyZDMxNDkxNjBkZjgyMmQwOTVhNTQ5YTgxMGUzMjM4NDFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDktMDIgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBFQWZmaW5pdHksIFVQU1RSRUFNLCBE
T1dOU1RSRUFNLCBTRUxfREVGQVVMVF9BRkZJTklUWSwgYW5kIFZpc2libGVTZWxlY3Rpb246OnNl
bGVjdGlvblR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNjEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9kZSByYW5n
ZU9mQ29udGFpbmluZ1BhcmFncmFwaF0pOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKGtpdCk6
IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKGNvcmUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZy
YW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FyZXRSZWN0QXRQb3NpdGlvbjphZmZpbml0
eTpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkZyYW1lIF9zZWxlY3ROU1JhbmdlOl0pOiBSZWx5
IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisgICAgICAgICgtW1dlYkZyYW1lIGdldERpY3RhdGlvblJl
c3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6IFVzZSBpc05vbmUuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpbnNlcnRUZXh0Ol0p
OiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisKIDIwMjAtMDktMDIgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBBZmZpbml0eSBpbnRvIGFuIGVudW0g
Y2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IDI0NWE5NDdhZmYzYTExMzNmZDE1MTYxNTBlNmQwOGY2NWY2Y2NmZWYuLmJkMGM3MjBi
MGQ2NjUyZjJlOWEzNDdjZTAxZDczNzY5N2Y2NmZiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTg1Nyw3ICsxODU3LDcgQEAgQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXJE
YXRhKFRleHRNYXJrZXJEYXRhJgogICAgIENoYXJhY3Rlck9mZnNldCByZXN1bHQgPSBDaGFyYWN0
ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEubm9kZSwgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3Rh
cnRJbmRleCwgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0KTsKICAgICAvLyBXaGVuIHdl
IGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2libGVQb3NpdGlvbiBpcyB1cHN0cmVhbSwg
aXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxp
bmUuCiAgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQgc28gdGhhdCBp
dCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KLSAgICBpZiAodGV4dE1hcmtlckRhdGEuYWZmaW5pdHkg
PT0gVVBTVFJFQU0pCisgICAgaWYgKHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID09IEFmZmluaXR5
OjpVcHN0cmVhbSkKICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHJlc3Vs
dCwgZmFsc2UpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDQxNWM4MzRjMTU4YThjNDNlZjA1OTgzMDUz
YmI0YjVjOTIwYjZhMzQuLjE1MWY3M2I5YmY5ODYwMDgxYmQ4MTE2NDk0NGZiYjhhOWRlMTYzNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC02
NSw3ICs2NSw3IEBAIHN0cnVjdCBUZXh0TWFya2VyRGF0YSB7CiAgICAgaW50IGNoYXJhY3RlclN0
YXJ0SW5kZXggeyAwIH07CiAgICAgaW50IGNoYXJhY3Rlck9mZnNldCB7IDAgfTsKICAgICBib29s
IGlnbm9yZWQgeyBmYWxzZSB9OwotICAgIEVBZmZpbml0eSBhZmZpbml0eSB7IERPV05TVFJFQU0g
fTsKKyAgICBBZmZpbml0eSBhZmZpbml0eSB7IEFmZmluaXR5OjpEb3duc3RyZWFtIH07CiB9Owog
CiBzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDIwOWM5YjhjOTk4YzU2ZGZj
NGMzYTQ1NTM1YjQwNzVhNjY4ZTMxZjIuLmFiYmY1MGM0NWZkZTBiOWNlNjk5MWM2NmE5ZDAzYTA1
NzllYWQ5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNjkxLDcgKzY5MSw3IEBAIFZlY3RvcjxTdHJpbmc+IEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlUZXh0
T3BlcmF0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRl
eHRSYW5nZSA6IG9wZXJhdGlvbi50ZXh0UmFuZ2VzKSB7Ci0gICAgICAgIGlmICghZnJhbWUtPnNl
bGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UodGV4dFJhbmdlLCBET1dOU1RSRUFNLCBGcmFtZVNl
bGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcykpCisgICAgICAgIGlmICghZnJhbWUtPnNl
bGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UodGV4dFJhbmdlLCBBZmZpbml0eTo6RG93bnN0cmVh
bSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQodGV4dFJhbmdlKTsK
QEAgLTk1Nyw3ICs5NTcsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aQogICAgIGJvb2wgYWxy
ZWFkeUluT3JkZXI7CiAKICAgICAvLyB1cHN0cmVhbSBpcyBvcmRlcmVkIGJlZm9yZSBkb3duc3Ry
ZWFtIGZvciB0aGUgc2FtZSBwb3NpdGlvbgotICAgIGlmICh2aXNpYmxlUG9zMSA9PSB2aXNpYmxl
UG9zMiAmJiB2aXNpYmxlUG9zMi5hZmZpbml0eSgpID09IFVQU1RSRUFNKQorICAgIGlmICh2aXNp
YmxlUG9zMSA9PSB2aXNpYmxlUG9zMiAmJiB2aXNpYmxlUG9zMi5hZmZpbml0eSgpID09IEFmZmlu
aXR5OjpVcHN0cmVhbSkKICAgICAgICAgYWxyZWFkeUluT3JkZXIgPSBmYWxzZTsKIAogICAgIC8v
IHVzZSBzZWxlY3Rpb24gb3JkZXIgdG8gc2VlIGlmIHRoZSBwb3NpdGlvbnMgYXJlIGluIG9yZGVy
CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYQogICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgocmFuZ2Uuc3RhcnQpOwotICAgIHN0YXJ0UG9zaXRpb24uc2V0QWZmaW5pdHkoRE9XTlNU
UkVBTSk7CisgICAgc3RhcnRQb3NpdGlvbi5zZXRBZmZpbml0eShBZmZpbml0eTo6RG93bnN0cmVh
bSk7CiAgICAgcmV0dXJuIHsgc3RhcnRQb3NpdGlvbiwgdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgo
cmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGgpIH07CiB9CiAKQEAgLTIwMDMsNyArMjAwMyw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvCiAgICAgLy8gQWxzbyBvbmx5IGRvIHRoaXMgd2hlbiB0
aGUgZmllbGQgaXMgaW4gZWRpdGluZyBtb2RlLgogICAgIGF1dG8mIGZyYW1lID0gcmVuZGVyZXIo
KS0+ZnJhbWUoKTsKICAgICBpZiAoZWxlbWVudC5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKSB7Ci0g
ICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2VGb3JQbGFpblRl
eHRSYW5nZShyYW5nZSksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5
cGluZzo6WWVzKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShy
YW5nZUZvclBsYWluVGV4dFJhbmdlKHJhbmdlKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIEZyYW1l
U2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICAgICAgZnJhbWUuZWRpdG9y
KCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50U3RyaW5nLCBFZGl0b3I6OlNl
bGVjdFJlcGxhY2VtZW50OjpObywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Ok5vKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMmFjMTM0MmRhYzM0
NDQ0N2VkNTEzMjE4OWUwOGVmMzU5NTIzZmU5NC4uN2RhYTg4MDUyNmYxYWRkZmQ2ZmNiMmM1ZGZk
NjcxN2M2NmFhNTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yMDA0LDI3ICsyMDA0LDIx
IEBAIFZpc2libGVQb3NpdGlvblJhbmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2li
bGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRp
b25SYW5nZSgpOwogICAgIAogICAgIC8vIGl0ZXJhdGUgb3ZlciB0aGUgbGluZXMKLSAgICAvLyBG
SVhNRTogdGhpcyBpcyB3cm9uZyB3aGVuIGxpbmVOdW1iZXIgaXMgbGluZUNvdW50KzEsICBiZWNh
dXNlIG5leHRMaW5lUG9zaXRpb24gdGFrZXMgeW91IHRvIHRoZQotICAgIC8vIGxhc3Qgb2Zmc2V0
IG9mIHRoZSBsYXN0IGxpbmUKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IG1fcmVu
ZGVyZXItPnZpZXcoKS5wb3NpdGlvbkZvclBvaW50KEludFBvaW50KCksIG51bGxwdHIpOwotICAg
IFZpc2libGVQb3NpdGlvbiBzYXZlZFZpc2libGVQb3M7CisgICAgLy8gRklYTUU6IFRoaXMgaXMg
d3Jvbmcgd2hlbiBsaW5lTnVtYmVyIGlzIGxpbmVDb3VudCsxLCBiZWNhdXNlIG5leHRMaW5lUG9z
aXRpb24gdGFrZXMgeW91IHRvIHRoZSBsYXN0IG9mZnNldCBvZiB0aGUgbGFzdCBsaW5lLgorICAg
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IG1fcmVuZGVyZXItPnZpZXcoKS5wb3NpdGlvbkZv
clBvaW50KEludFBvaW50KCksIG51bGxwdHIpOwogICAgIHdoaWxlICgtLWxpbmVDb3VudCkgewot
ICAgICAgICBzYXZlZFZpc2libGVQb3MgPSB2aXNpYmxlUG9zOwotICAgICAgICB2aXNpYmxlUG9z
ID0gbmV4dExpbmVQb3NpdGlvbih2aXNpYmxlUG9zLCAwKTsKLSAgICAgICAgaWYgKHZpc2libGVQ
b3MuaXNOdWxsKCkKLSAgICAgICAgICAgIHx8IHZpc2libGVQb3MgPT0gc2F2ZWRWaXNpYmxlUG9z
Ci0gICAgICAgICAgICB8fCB2aXNpYmxlUG9zLmVxdWFscyhzYXZlZFZpc2libGVQb3MpKQorICAg
ICAgICBhdXRvIHByZXZpb3VzTGluZVBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgIHBvc2l0
aW9uID0gbmV4dExpbmVQb3NpdGlvbihwb3NpdGlvbiwgMCk7CisgICAgICAgIGlmIChwb3NpdGlv
bi5pc051bGwoKSB8fCBwb3NpdGlvbiA9PSBwcmV2aW91c0xpbmVQb3NpdGlvbikKICAgICAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOwogICAgIH0KLSAgICAKKwogICAgIC8v
IG1ha2UgYSBjYXJldCBzZWxlY3Rpb24gZm9yIHRoZSBtYXJrZXIgcG9zaXRpb24sIHRoZW4gZXh0
ZW5kIGl0IHRvIHRoZSBsaW5lCi0gICAgLy8gTk9URTogaWdub3JlcyByZXN1bHRzIG9mIHNlbC5t
b2RpZnkgYmVjYXVzZSBpdCByZXR1cm5zIGZhbHNlIHdoZW4KLSAgICAvLyBzdGFydGluZyBhdCBh
biBlbXB0eSBsaW5lLiAgVGhlIHJlc3VsdGluZyBzZWxlY3Rpb24gaW4gdGhhdCBjYXNlCi0gICAg
Ly8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCisgICAgLy8gTk9URTogSWdub3JlcyBy
ZXN1bHRzIG9mIHNlbC5tb2RpZnkgYmVjYXVzZSBpdCByZXR1cm5zIGZhbHNlIHdoZW4gc3RhcnRp
bmcgYXQgYW4gZW1wdHkgbGluZS4KKyAgICAvLyBUaGUgcmVzdWx0aW5nIHNlbGVjdGlvbiBpbiB0
aGF0IGNhc2Ugd2lsbCBiZSBhIGNhcmV0IGF0IHBvc2l0aW9uLgogICAgIEZyYW1lU2VsZWN0aW9u
IHNlbGVjdGlvbjsKLSAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
dmlzaWJsZVBvcykpOworICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24ocG9zaXRpb24pOwogICAg
IHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5KTsKLSAg
ICAKICAgICByZXR1cm4gc2VsZWN0aW9uLnNlbGVjdGlvbigpOwogfQogICAgIApAQCAtMjEzNCwx
MSArMjEyOCwxMSBAQCBJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kc0Zv
clZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQbwogICAgIGlmIChyZWN0Mi55KCkg
IT0gcmVjdDEueSgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZkZpcnN0TGluZSA9
IGVuZE9mTGluZShyYW5nZS5zdGFydCk7CiAgICAgICAgIGlmIChyYW5nZS5zdGFydCA9PSBlbmRP
ZkZpcnN0TGluZSkgewotICAgICAgICAgICAgcmFuZ2Uuc3RhcnQuc2V0QWZmaW5pdHkoRE9XTlNU
UkVBTSk7CisgICAgICAgICAgICByYW5nZS5zdGFydC5zZXRBZmZpbml0eShBZmZpbml0eTo6RG93
bnN0cmVhbSk7CiAgICAgICAgICAgICByZWN0MSA9IHJhbmdlLnN0YXJ0LmFic29sdXRlQ2FyZXRC
b3VuZHMoKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmFuZ2UuZW5kID09IGVuZE9mRmlyc3RM
aW5lKSB7Ci0gICAgICAgICAgICByYW5nZS5lbmQuc2V0QWZmaW5pdHkoVVBTVFJFQU0pOworICAg
ICAgICAgICAgcmFuZ2UuZW5kLnNldEFmZmluaXR5KEFmZmluaXR5OjpVcHN0cmVhbSk7CiAgICAg
ICAgICAgICByZWN0MiA9IHJhbmdlLmVuZC5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMjkyLDcgKzIyODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQgaW5kZQog
ICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIH0KICAgICBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbmRleFZhbHVlKTsK
LSAgICBwb3NpdGlvbi5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICBwb3NpdGlvbi5zZXRB
ZmZpbml0eShBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQog
CkBAIC0yMzQ3LDcgKzIzNDEsNyBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkIGxpbmVOdW1iZXIpCiAgICAgaW50IGlu
ZGV4MiA9IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGVuZFBvc2l0aW9uKTsKICAgICAKICAgICAv
LyBhZGQgb25lIHRvIHRoZSBlbmQgaW5kZXggZm9yIGEgbGluZSBicmVhayBub3QgY2F1c2VkIGJ5
IHNvZnQgbGluZSB3cmFwICh0byBtYXRjaCBBcHBLaXQpCi0gICAgaWYgKGVuZFBvc2l0aW9uLmFm
ZmluaXR5KCkgPT0gRE9XTlNUUkVBTSAmJiBlbmRQb3NpdGlvbi5uZXh0KCkuaXNOb3ROdWxsKCkp
CisgICAgaWYgKGVuZFBvc2l0aW9uLmFmZmluaXR5KCkgPT0gQWZmaW5pdHk6OkRvd25zdHJlYW0g
JiYgZW5kUG9zaXRpb24ubmV4dCgpLmlzTm90TnVsbCgpKQogICAgICAgICBpbmRleDIgKz0gMTsK
ICAgICAKICAgICAvLyByZXR1cm4gbmlsIHJhdGhlciB0aGFuIGFuIHplcm8tbGVuZ3RoIHJhbmdl
ICh0byBtYXRjaCBBcHBLaXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5k
ZXggODIwYjVhMTlkMzI0NmVhYzQ5MDMzMmMzNTUwMGMxMWY4YTkyMWYwYS4uZTEyNmNjY2E1N2Uy
ZjUxMmI4ZmIxMDM2NWY4OGIxZGY5YTcyZjNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcApAQCAtNDEzLDkgKzQxMyw5IEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9m
ZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAg
ICAgaW50IHJhbmdlTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQobm9kZVJhbmdlLCBUZXh0SXRlcmF0
b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAKICAgICAvLyBT
cGVjaWFsIGNhc2VzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgd2hlbiB3b3JraW5nIHdpdGggKl9F
TkQgYm91bmRhcmllcy4KLSAgICBpZiAoc2VsZWN0aW9uLmFmZmluaXR5KCkgPT0gVVBTVFJFQU0p
IHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydChub2RlUmFuZ2VTdGFydCwg
VVBTVFJFQU0pOwotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZChub2RlUmFuZ2VF
bmQsIFVQU1RSRUFNKTsKKyAgICBpZiAoc2VsZWN0aW9uLmFmZmluaXR5KCkgPT0gQWZmaW5pdHk6
OlVwc3RyZWFtKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQobm9kZVJh
bmdlU3RhcnQsIEFmZmluaXR5OjpVcHN0cmVhbSk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlRW5kKG5vZGVSYW5nZUVuZCwgQWZmaW5pdHk6OlVwc3RyZWFtKTsKIAogICAgICAgICAv
LyBXZSBuZWVkIHRvIGFkanVzdCBvZmZzZXRzIHdoZW4gZmluZGluZyB3cmFwcGVkIGxpbmVzIHNv
IHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIHRoZSBsaW5lIGlzIHByb3Bl
cmx5IHRha2luZyBpbnRvIGFjY291bnQgd2hlbiBjYWxjdWxhdGluZyB0aGUgb2Zmc2V0cy4KQEAg
LTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiB3b3JkQXRQb3NpdGlvbkZv
ckF0a0JvdW5kYXJ5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqCiAgICAgLy8gV2UgbWFyayB0
aGUgc2VsZWN0aW9uIGFzICd1cHN0cmVhbScgc28gd2UgY2FuIHVzZSB0aGF0IGluZm9ybWF0aW9u
IGxhdGVyLAogICAgIC8vIHdoZW4gZmluZGluZyB0aGUgYWN0dWFsIG9mZnNldHMgaW4gZ2V0U2Vs
ZWN0aW9uT2Zmc2V0c0Zvck9iamVjdCgpLgogICAgIGlmIChib3VuZGFyeVR5cGUgPT0gQVRLX1RF
WFRfQk9VTkRBUllfV09SRF9FTkQpCi0gICAgICAgIHNlbGVjdGVkV29yZC5zZXRBZmZpbml0eShV
UFNUUkVBTSk7CisgICAgICAgIHNlbGVjdGVkV29yZC5zZXRBZmZpbml0eShBZmZpbml0eTo6VXBz
dHJlYW0pOwogCiAgICAgcmV0dXJuIHNlbGVjdGVkV29yZDsKIH0KQEAgLTc1Miw3ICs3NTIsNyBA
QCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiBzZW50ZW5jZUF0UG9zaXRpb25Gb3JBdGtCb3VuZGFy
eShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZQogICAgIC8vIFdlIG1hcmsgdGhlIHNlbGVjdGlvbiBh
cyAndXBzdHJlYW0nIHNvIHdlIGNhbiB1c2UgdGhhdCBpbmZvcm1hdGlvbiBsYXRlciwKICAgICAv
LyB3aGVuIGZpbmRpbmcgdGhlIGFjdHVhbCBvZmZzZXRzIGluIGdldFNlbGVjdGlvbk9mZnNldHNG
b3JPYmplY3QoKS4KICAgICBpZiAoYm91bmRhcnlUeXBlID09IEFUS19URVhUX0JPVU5EQVJZX1NF
TlRFTkNFX0VORCkKLSAgICAgICAgc2VsZWN0ZWRTZW50ZW5jZS5zZXRBZmZpbml0eShVUFNUUkVB
TSk7CisgICAgICAgIHNlbGVjdGVkU2VudGVuY2Uuc2V0QWZmaW5pdHkoQWZmaW5pdHk6OlVwc3Ry
ZWFtKTsKIAogICAgIHJldHVybiBzZWxlY3RlZFNlbnRlbmNlOwogfQpAQCAtODI0LDcgKzgyNCw3
IEBAIHN0YXRpYyBWaXNpYmxlU2VsZWN0aW9uIGxpbmVBdFBvc2l0aW9uRm9yQXRrQm91bmRhcnko
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICAgICAgLy8gSW4gYWRkaXRpb24gdG8gY2hl
Y2tpbmcgdGhhdCB3ZSBhcmUgbm90IGF0IHRoZSBlbmQgb2YgYSBibG9jaywgd2UgbmVlZAogICAg
ICAgICAvLyB0byBjaGVjayB0aGF0IGVuZFBvc2l0aW9uIGhhcyBub3QgVVBTVFJFQU0gYWZmaW5p
dHksIHNpbmNlIHRoYXQgd291bGQKICAgICAgICAgLy8gY2F1c2UgdHJvdWJsZSBpbnNpZGUgb2Yg
dGV4dCBjb250cm9scyAod2Ugd291bGQgYmUgYWR2YW5jaW5nIHRvbyBtdWNoKS4KLSAgICAgICAg
aWYgKCFpc0VuZE9mQmxvY2soZW5kUG9zaXRpb24pICYmIGVuZFBvc2l0aW9uLmFmZmluaXR5KCkg
IT0gVVBTVFJFQU0pCisgICAgICAgIGlmICghaXNFbmRPZkJsb2NrKGVuZFBvc2l0aW9uKSAmJiBl
bmRQb3NpdGlvbi5hZmZpbml0eSgpICE9IEFmZmluaXR5OjpVcHN0cmVhbSkKICAgICAgICAgICAg
IGVuZFBvc2l0aW9uID0gZW5kUG9zaXRpb24ubmV4dCgpOwogICAgICAgICBicmVhazsKIApAQCAt
ODQ0LDcgKzg0NCw3IEBAIHN0YXRpYyBWaXNpYmxlU2VsZWN0aW9uIGxpbmVBdFBvc2l0aW9uRm9y
QXRrQm91bmRhcnkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICAvLyBXZSBtYXJrIHRo
ZSBzZWxlY3Rpb24gYXMgJ3Vwc3RyZWFtJyBzbyB3ZSBjYW4gdXNlIHRoYXQgaW5mb3JtYXRpb24g
bGF0ZXIsCiAgICAgLy8gd2hlbiBmaW5kaW5nIHRoZSBhY3R1YWwgb2Zmc2V0cyBpbiBnZXRTZWxl
Y3Rpb25PZmZzZXRzRm9yT2JqZWN0KCkuCiAgICAgaWYgKGJvdW5kYXJ5VHlwZSA9PSBBVEtfVEVY
VF9CT1VOREFSWV9MSU5FX0VORCkKLSAgICAgICAgc2VsZWN0ZWRMaW5lLnNldEFmZmluaXR5KFVQ
U1RSRUFNKTsKKyAgICAgICAgc2VsZWN0ZWRMaW5lLnNldEFmZmluaXR5KEFmZmluaXR5OjpVcHN0
cmVhbSk7CiAKICAgICByZXR1cm4gc2VsZWN0ZWRMaW5lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCmlu
ZGV4IDhmNDNmMzg1YzMzYTI0Mzc1OWYxMmNmNzRkNjI5MWZlZGU5M2UzMGUuLjVkYmI1MGU0NDUx
YWI0NjRkZGU5ZTZlNDM4OTZhOWZjOGJkNDRiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKQEAgLTIy
Myw3ICsyMjMsNyBAQCBBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVu
aWdub3JlZChBWENvcmVPYmplY3QqIHJlZmVyZW5jZU9iamVjdAogICAgIGlmICghc3RhcnROb2Rl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBv
c2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShzdGFydE5vZGUpLCBE
T1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZpc2libGVQ
b3NpdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoc3RhcnROb2RlKSk7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGVuZFBvc2l0aW9uID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnNlbGVjdGlvbigpLnZpc2li
bGVFbmQoKTsKIAogICAgIGlmIChzdGFydFBvc2l0aW9uID09IGVuZFBvc2l0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDcyMmRjZjRiZTdkMjY4MTlhMGM1NmY4M2Q1OWRmYTFmMDcyNGVl
ODEuLjNlMTNmOGE4ZTAxZmJiZDk5ZDcyZmFhYzZhMWRlOGM4NTQ4YzA2OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTMwOTMsNyArMzA5Myw3IEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRm9j
dXNBcHBlYXJhbmNlKFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSwgU2VsZWN0aW9uUmV2ZWFsTW9k
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXN0
b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24gaWYgdGhlcmUgaXMgb25lLgotICAgICAgICBWaXNp
YmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKHRoaXMpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgVmlzaWJsZVNlbGVj
dGlvbiBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZSh0aGlzKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigp
LnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKSB7CiAgICAgICAgICAgICBmcmFt
ZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246
OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEVsZW1lbnQ6OmRlZmF1bHRGb2N1c1RleHRT
dGF0ZUNoYW5nZUludGVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGNmNmQ1MWQz
YmE0NjI5YTllMmEzMDgxMjZiYWRhNWNkMmM3MWJlNmUuLjk0ZTBlOWMwNTFkYWRhZGE3M2U5ZTJm
NDc0NmM5ZjNhZDlhZTdhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNTU3LDcgKzU1
Nyw3IEBAIGJvb2wgUG9zaXRpb246OmF0RW5kT2ZUcmVlKCkgY29uc3QKIH0KIAogLy8gcmV0dXJu
IGZpcnN0IHByZWNlZGluZyBET00gcG9zaXRpb24gcmVuZGVyZWQgYXQgYSBkaWZmZXJlbnQgbG9j
YXRpb24sIG9yICJ0aGlzIgotUG9zaXRpb24gUG9zaXRpb246OnByZXZpb3VzQ2hhcmFjdGVyUG9z
aXRpb24oRUFmZmluaXR5IGFmZmluaXR5KSBjb25zdAorUG9zaXRpb24gUG9zaXRpb246OnByZXZp
b3VzQ2hhcmFjdGVyUG9zaXRpb24oQWZmaW5pdHkgYWZmaW5pdHkpIGNvbnN0CiB7CiAgICAgaWYg
KGlzTnVsbCgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNTg1LDcgKzU4NSw3IEBAIFBvc2l0
aW9uIFBvc2l0aW9uOjpwcmV2aW91c0NoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSBhZmZpbml0
eSkgY29uc3QKIH0KIAogLy8gcmV0dXJuIGZpcnN0IGZvbGxvd2luZyBwb3NpdGlvbiByZW5kZXJl
ZCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbiwgb3IgInRoaXMiCi1Qb3NpdGlvbiBQb3NpdGlvbjo6
bmV4dENoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSBhZmZpbml0eSkgY29uc3QKK1Bvc2l0aW9u
IFBvc2l0aW9uOjpuZXh0Q2hhcmFjdGVyUG9zaXRpb24oQWZmaW5pdHkgYWZmaW5pdHkpIGNvbnN0
CiB7CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTA5OCw3ICsx
MDk4LDcgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb24oY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogfQogCiAvLyBUaGlzIGFzc3VtZXMgdGhhdCBpdCBz
dGFydHMgaW4gZWRpdGFibGUgY29udGVudC4KLVBvc2l0aW9uIFBvc2l0aW9uOjpsZWFkaW5nV2hp
dGVzcGFjZVBvc2l0aW9uKEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBjb25zaWRlck5vbkNvbGxh
cHNpYmxlV2hpdGVzcGFjZSkgY29uc3QKK1Bvc2l0aW9uIFBvc2l0aW9uOjpsZWFkaW5nV2hpdGVz
cGFjZVBvc2l0aW9uKEFmZmluaXR5IGFmZmluaXR5LCBib29sIGNvbnNpZGVyTm9uQ29sbGFwc2li
bGVXaGl0ZXNwYWNlKSBjb25zdAogewogICAgIEFTU0VSVChpc0VkaXRhYmxlUG9zaXRpb24oKnRo
aXMpKTsKICAgICBpZiAoaXNOdWxsKCkpCkBAIC0xMTIwLDcgKzExMjAsNyBAQCBQb3NpdGlvbiBQ
b3NpdGlvbjo6bGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHksIGJv
b2wgY29uc2lkZXJObwogfQogCiAvLyBUaGlzIGFzc3VtZXMgdGhhdCBpdCBzdGFydHMgaW4gZWRp
dGFibGUgY29udGVudC4KLVBvc2l0aW9uIFBvc2l0aW9uOjp0cmFpbGluZ1doaXRlc3BhY2VQb3Np
dGlvbihFQWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UpIGNv
bnN0CitQb3NpdGlvbiBQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRpb24oQWZmaW5p
dHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGlzRWRpdGFibGVQb3NpdGlvbigqdGhpcykpOwogICAgIGlmIChpc051bGwoKSkKQEAg
LTExMzYsNyArMTEzNiw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp0cmFpbGluZ1doaXRlc3BhY2VQ
b3NpdGlvbihFQWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBzCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVCb3hBbmRPZmZzZXQo
RUFmZmluaXR5IGFmZmluaXR5KSBjb25zdAorSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0aW9uOjpp
bmxpbmVCb3hBbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHkpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGlubGluZUJveEFuZE9mZnNldChhZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbigpKTsKIH0KQEAg
LTEyMzEsMTQgKzEyMzEsMTQgQEAgSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVC
b3hBbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24KICAgICAgICAgICAg
ICAgICByZXR1cm4geyBib3gsIGNhcmV0T2Zmc2V0IH07CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGlmICgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPT0gY2FyZXRN
YXhPZmZzZXQpIF4gKGFmZmluaXR5ID09IERPV05TVFJFQU0pKQotICAgICAgICAgICAgICAgIHx8
ICgoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1pbk9mZnNldCkg
XiAoYWZmaW5pdHkgPT0gVVBTVFJFQU0pKQorICAgICAgICAgICAgaWYgKCgoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1heE9mZnNldCkgXiAoYWZmaW5pdHkgPT0g
QWZmaW5pdHk6OkRvd25zdHJlYW0pKQorICAgICAgICAgICAgICAgIHx8ICgoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1pbk9mZnNldCkgXiAoYWZmaW5pdHkgPT0g
QWZmaW5pdHk6OlVwc3RyZWFtKSkKICAgICAgICAgICAgICAgICB8fCAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1heE9mZnNldCAmJiBib3gtPm5leHRMZWFmT25M
aW5lKCkgJiYgYm94LT5uZXh0TGVhZk9uTGluZSgpLT5pc0xpbmVCcmVhaygpKSkKICAgICAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FuZGlkYXRlID0gYm94OwogICAgICAgICB9
Ci0gICAgICAgIGlmIChjYW5kaWRhdGUgJiYgY2FuZGlkYXRlID09IHRleHRSZW5kZXJlci5sYXN0
VGV4dEJveCgpICYmIGFmZmluaXR5ID09IERPV05TVFJFQU0pIHsKKyAgICAgICAgaWYgKGNhbmRp
ZGF0ZSAmJiBjYW5kaWRhdGUgPT0gdGV4dFJlbmRlcmVyLmxhc3RUZXh0Qm94KCkgJiYgYWZmaW5p
dHkgPT0gQWZmaW5pdHk6OkRvd25zdHJlYW0pIHsKICAgICAgICAgICAgIGJveCA9IHNlYXJjaEFo
ZWFkRm9yQmV0dGVyTWF0Y2goJnRleHRSZW5kZXJlcik7CiAgICAgICAgICAgICBpZiAoYm94KQog
ICAgICAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gYm94LT5jYXJldE1pbk9mZnNldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3Bw
CmluZGV4IDE2NzhjZTMyNzU4Yzk0OTk0Nzk4ZTVmNjA1Mzk0MzJiYTNjZjcyMmIuLjYzZjM3ZDJh
ODk0YmI5MWIyNjYxZGFhNTYyMzZhMTFiOWI4MDQ5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTExNyw3ICsxMTcs
NyBAQCB2b2lkIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6Zm9ybWF0U2VsZWN0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlNlbAogICAgICAgICBpbnNlcnROb2RlQXQoYmxvY2tx
dW90ZS5jb3B5UmVmKCksIHN0YXJ0KTsKICAgICAgICAgYXV0byBwbGFjZWhvbGRlciA9IEhUTUxC
UkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICAgICAgYXBwZW5kTm9kZShwbGFjZWhv
bGRlci5jb3B5UmVmKCksIFdURk1vdmUoYmxvY2txdW90ZSkpOwotICAgICAgICBzZXRFbmRpbmdT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUocGxhY2Vob2xkZXIu
cHRyKCkpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsK
KyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZv
cmVOb2RlKHBsYWNlaG9sZGVyLnB0cigpKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1Nl
bGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcApp
bmRleCBmZGYxMThjNWIzNGI1NGQ3ZDU2OGJkODc1YzVhZDIzZGY0OWY3MWI3Li4yMmIxOGI5Nzhm
YmEwZmM2OWMxYWQzOWVmYmQ2ZjI1OWNiY2NhZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9p
ZCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBJbnN0ZWFkLCBpbnNl
cnQgdGhlIGJyZWFrIGJlZm9yZSB0aGUgYmxvY2txdW90ZSwgdW5sZXNzIHRoZSBwb3NpdGlvbiBp
cyBhcyB0aGUgZW5kIG9mIHRoZSBxdW90ZWQgY29udGVudC4KICAgICBpZiAoaXNGaXJzdFZpc2li
bGVQb3NpdGlvbkluTm9kZSh2aXNpYmxlUG9zLCB0b3BCbG9ja3F1b3RlKSAmJiAhaXNMYXN0Vmlz
UG9zSW5Ob2RlKSB7CiAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoYnJlYWtOb2RlLmNvcHlSZWYo
KSwgKnRvcEJsb2NrcXVvdGUpOwotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoYnJlYWtOb2RlLnB0cigpKSwgRE9XTlNUUkVBTSwg
ZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgICAgIHNldEVuZGluZ1Nl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShicmVha05vZGUucHRy
KCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25h
bCgpKSk7CiAgICAgICAgIHJlYmFsYW5jZVdoaXRlc3BhY2UoKTsgICAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpk
b0FwcGx5KCkKIAogICAgIC8vIElmIHdlJ3JlIGluc2VydGluZyB0aGUgYnJlYWsgYXQgdGhlIGVu
ZCBvZiB0aGUgcXVvdGVkIGNvbnRlbnQsIHdlIGRvbid0IG5lZWQgdG8gYnJlYWsgdGhlIHF1b3Rl
LgogICAgIGlmIChpc0xhc3RWaXNQb3NJbk5vZGUpIHsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKGJyZWFrTm9kZS5wdHIoKSks
IERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAg
ICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUo
YnJlYWtOb2RlLnB0cigpKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1NlbGVjdGlvbigp
LmlzRGlyZWN0aW9uYWwoKSkpOwogICAgICAgICByZWJhbGFuY2VXaGl0ZXNwYWNlKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBCcmVha0Jsb2NrcXVv
dGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICBhZGRCbG9ja1BsYWNlaG9sZGVySWZOZWVkZWQoY2xv
bmVkQmxvY2txdW90ZS5wdHIoKSk7CiAgICAgCiAgICAgLy8gUHV0IHRoZSBzZWxlY3Rpb24gcmln
aHQgYmVmb3JlIHRoZSBicmVhay4KLSAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoYnJlYWtOb2RlLnB0cigpKSwgRE9XTlNUUkVBTSwgZW5k
aW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKGJyZWFrTm9kZS5wdHIoKSksIEFm
ZmluaXR5OjpEb3duc3RyZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsK
ICAgICByZWJhbGFuY2VXaGl0ZXNwYWNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggMmZjNjM4NDQ5ZDI4N2EwZjdlNDZj
ZGMyZjAyNmFjODYwYWNkOGUzNS4uZGM3MGJiYmYzMDhjNmM0M2Y2ZDQ0MWZlNTk0M2MwZDk0NWZj
ZmU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKQEAgLTEzNTgsNyArMTM1OCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1v
dmVQYXJhZ3JhcGhXaXRoQ2xvbmVzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPCiAKICAg
ICBjbG9uZVBhcmFncmFwaFVuZGVyTmV3RWxlbWVudChzdGFydCwgZW5kLCBvdXRlck5vZGUsIGJs
b2NrRWxlbWVudCk7CiAgICAgICAKLSAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihzdGFydCwgZW5kLCBET1dOU1RSRUFNKSk7CisgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oc3RhcnQsIGVuZCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgCiAgICAgLy8gVGhlcmUgYXJlIGJ1Z3MgaW4gZGVs
ZXRpb24gd2hlbiBpdCByZW1vdmVzIGEgZnVsbHkgc2VsZWN0ZWQgdGFibGUvbGlzdC4KQEAgLTE0
NDksNyArMTQ0OSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhz
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAKICAgICAvLyBGSVhNRSAo
NTA5ODkzMSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAiV2ViVmlld0luc2Vy
dEFjdGlvbk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBoZXJlLgogCi0gICAg
c2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQsIGVuZCwgRE9XTlNUUkVB
TSkpOworICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQp
KTsKICAgICBkb2N1bWVudCgpLmVkaXRvcigpLmNsZWFyTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
cihlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgZGVsZXRlU2VsZWN0aW9uKGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKTsKIApAQCAtMTUwNCw3ICsxNTA0LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFy
YWdyYXAKICAgICAgICAgLy8gb2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVybiBudWxs
KS4KICAgICAgICAgYXV0byBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNv
bHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplZGl0
YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKnN0YXJ0SW5kZXgsIFRleHRJdGVyYXRvckVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CiAgICAgICAgIGF1dG8g
ZW5kID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlv
bihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0
aW9uSW5kZXggKyAqZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zKSk7Ci0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbih7IHN0YXJ0
LCBlbmQsIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCB9KTsKKyAgICAgICAgc2V0
RW5kaW5nU2VsZWN0aW9uKHsgc3RhcnQsIGVuZCwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIG9yaWdp
bmFsSXNEaXJlY3Rpb25hbCB9KTsKICAgICB9CiB9CiAKQEAgLTE1NzUsNyArMTU3NSw3IEBAIGJv
b2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkKICAgICB9
CiAKICAgICBhcHBlbmRCbG9ja1BsYWNlaG9sZGVyKCpuZXdCbG9jayk7Ci0gICAgc2V0RW5kaW5n
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluTm9kZShuZXdCbG9jay5n
ZXQoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwor
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk5v
ZGUobmV3QmxvY2suZ2V0KCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9u
KCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAKICAgICBzdHlsZS0+cHJlcGFyZVRvQXBwbHlBdChlbmRp
bmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKICAgICBpZiAoIXN0eWxlLT5pc0VtcHR5KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwCmluZGV4IDQyMTM0NzE0
NTFkNjQ2YWMyNWQ3MjYwMzQwMDVjM2RmYmE4NTJmYTkuLmExMjAwZTlmM2I0MGIyOTM3NjQzOGFl
NGFjZDRiZWFlOGIwYmI3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3Jl
YXRlTGlua0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlu
a0NvbW1hbmQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgQ3JlYXRlTGlua0NvbW1hbmQ6OmRv
QXBwbHkoKQogICAgIGVsc2UgewogICAgICAgICBpbnNlcnROb2RlQXQoYW5jaG9yRWxlbWVudC5j
b3B5UmVmKCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgICAgICBhcHBlbmROb2Rl
KFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBtX3VybCksIGFuY2hvckVsZW1lbnQuY29weVJlZigp
KTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25J
blBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0aW9uSW5QYXJlbnRB
ZnRlck5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlv
bigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbihwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShhbmNob3JFbGVtZW50LnB0cigp
KSwgcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShhbmNob3JFbGVtZW50LnB0cigpKSwgQWZmaW5p
dHk6OkRvd25zdHJlYW0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKaW5kZXggYmFhN2U5N2VlYzMzNWFmZjU2ZWEyOGNjNWEzOGJlNmQzNzhjYjE0Yy4u
ZDBmNTZhZDUxOTlhNTM2ODZkYTk1NWJmMTU1N2I0YmFkZTJmYTMwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yMTMsNyAr
MjEzLDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzbWFydERlbGV0ZVBhcmFncmFw
aFNwYWNlcnMoKQogICAgICAgICBhdXRvIHBvc2l0aW9uID0gZW5kT2ZQYXJhZ3JhcGhCZWZvcmVT
dGFydC5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICBtX3Vwc3RyZWFtU3RhcnQgPSBwb3NpdGlv
bi51cHN0cmVhbSgpOwogICAgICAgICBtX2Rvd25zdHJlYW1TdGFydCA9IHBvc2l0aW9uLmRvd25z
dHJlYW0oKTsKLSAgICAgICAgbV9sZWFkaW5nV2hpdGVzcGFjZSA9IG1fdXBzdHJlYW1TdGFydC5s
ZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uKERPV05TVFJFQU0pOworICAgICAgICBtX2xlYWRpbmdX
aGl0ZXNwYWNlID0gbV91cHN0cmVhbVN0YXJ0LmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24oQWZm
aW5pdHk6OkRvd25zdHJlYW0pOwogICAgICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbk9uU21hcnRE
ZWxldGUobV91cHN0cmVhbVN0YXJ0LCBtX3Vwc3RyZWFtRW5kKTsKICAgICB9CiB9CkBAIC05MDAs
OCArOTAwLDggQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICB9
CiAKICAgICAvLyBzYXZlIHRoaXMgdG8gbGF0ZXIgbWFrZSB0aGUgc2VsZWN0aW9uIHdpdGgKLSAg
ICBFQWZmaW5pdHkgYWZmaW5pdHkgPSBtX3NlbGVjdGlvblRvRGVsZXRlLmFmZmluaXR5KCk7Ci0g
ICAgCisgICAgYXV0byBhZmZpbml0eSA9IG1fc2VsZWN0aW9uVG9EZWxldGUuYWZmaW5pdHkoKTsK
KwogICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBtX3NlbGVjdGlvblRvRGVsZXRlLmVuZCgp
LmRvd25zdHJlYW0oKTsKICAgICBtX25lZWRQbGFjZWhvbGRlciA9IGlzU3RhcnRPZlBhcmFncmFw
aChtX3NlbGVjdGlvblRvRGVsZXRlLnZpc2libGVTdGFydCgpLCBDYW5Dcm9zc0VkaXRpbmdCb3Vu
ZGFyeSkKICAgICAgICAgICAgICYmIGlzRW5kT2ZQYXJhZ3JhcGgobV9zZWxlY3Rpb25Ub0RlbGV0
ZS52aXNpYmxlRW5kKCksIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAKaW5kZXggYjIyNzdjZWM0MTdlZTg2M2NhNDIzYmEzZGFiMDRlZTIxMjYwZWM0
MS4uYTc4YTZmYjFiMDlhNWNiZjFlMTc0MjE0ZmE0ZjNhYTE3NjY0N2JlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC00MzMsOCArNDMzLDggQEAgc3RhdGljIEhUTUxFbGVtZW50
KiBmaXJzdEluU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIGZv
ciAoTm9kZSogbm9kZSA9IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCk7IG5vZGUgJiYgbm9kZS0+
cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IHJvb3RFZGl0YWJsZUVsZW1lbnQ7IG5vZGUgPSBub2Rl
LT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKCFpc1NwZWNpYWxIVE1MRWxlbWVudChub2Rl
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdlBvcyhw
b3NpdGlvbiwgRE9XTlNUUkVBTSk7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBmaXJzdEluRWxl
bWVudChmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSksIERPV05TVFJFQU0pOworICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdlBvcyhwb3NpdGlvbik7CisgICAgICAgIFZpc2libGVQb3Np
dGlvbiBmaXJzdEluRWxlbWVudChmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkpOwog
ICAgICAgICBpZiAoKGlzUmVuZGVyZWRUYWJsZShub2RlKSAmJiB2UG9zID09IGZpcnN0SW5FbGVt
ZW50Lm5leHQoKSkgfHwgdlBvcyA9PSBmaXJzdEluRWxlbWVudCkKICAgICAgICAgICAgIHJldHVy
biAmZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKTsKICAgICB9CkBAIC00NDcsOCArNDQ3LDgg
QEAgc3RhdGljIEhUTUxFbGVtZW50KiBsYXN0SW5TcGVjaWFsRWxlbWVudChjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24pCiAgICAgZm9yIChOb2RlKiBub2RlID0gcG9zaXRpb24uZGVwcmVjYXRlZE5v
ZGUoKTsgbm9kZSAmJiBub2RlLT5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gcm9vdEVkaXRhYmxl
RWxlbWVudDsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAoIWlzU3Bl
Y2lhbEhUTUxFbGVtZW50KG5vZGUpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFZp
c2libGVQb3NpdGlvbiB2UG9zKHBvc2l0aW9uLCBET1dOU1RSRUFNKTsKLSAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIGxhc3RJbkVsZW1lbnQobGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSwg
RE9XTlNUUkVBTSk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2UG9zKHBvc2l0aW9uKTsKKyAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIGxhc3RJbkVsZW1lbnQobGFzdFBvc2l0aW9uSW5PckFmdGVy
Tm9kZShub2RlKSk7CiAgICAgICAgIGlmICgoaXNSZW5kZXJlZFRhYmxlKG5vZGUpICYmIHZQb3Mg
PT0gbGFzdEluRWxlbWVudC5wcmV2aW91cygpKSB8fCB2UG9zID09IGxhc3RJbkVsZW1lbnQpCiAg
ICAgICAgICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9kZSk7CiAgICAgfQpA
QCAtNTA5LDcgKzUwOSw3IEBAIEVsZW1lbnQqIGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25CZWZvcmVOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUuaGFzQ2hpbGROb2Rl
cygpKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZSgmbm9kZSksIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSkpOwogICAgIEFTU0VSVChub2Rl
LnBhcmVudE5vZGUoKSk7CiAgICAgQVNTRVJUKCFub2RlLnBhcmVudE5vZGUoKS0+aXNTaGFkb3dS
b290KCkpOwogICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZSgmbm9kZSk7CkBA
IC01MTksNyArNTE5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkJlZm9yZU5v
ZGUoTm9kZSYgbm9kZSkKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25BZnRlck5vZGUo
Tm9kZSYgbm9kZSkKIHsKICAgICBpZiAobm9kZS5oYXNDaGlsZE5vZGVzKCkpCi0gICAgICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZSgmbm9kZSksIERP
V05TVFJFQU0pOworICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RQb3NpdGlvbklu
T3JBZnRlck5vZGUoJm5vZGUpKTsKICAgICBBU1NFUlQobm9kZS5wYXJlbnROb2RlKCkpOwogICAg
IEFTU0VSVCghbm9kZS5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKTsKICAgICByZXR1cm4g
cG9zaXRpb25JblBhcmVudEFmdGVyTm9kZSgmbm9kZSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWlu
ZXJOb2RlKiBzY29wZSkKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVz
aW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluZGV4KQogewogICAgIGlmIChp
bmRleCA8PSAwKQotICAgICAgICByZXR1cm4geyBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
Jm5vZGUpLCBET1dOU1RSRUFNIH07CisgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRpb25Jbk9y
QmVmb3JlTm9kZSgmbm9kZSkgfTsKIAogICAgIGF1dG8gcmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMobm9kZSk7CiAgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFuZ2UpOwpA
QCAtMTExMCw3ICsxMTEwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvcklu
ZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW4KICAgICAgICAgICAg
IHJldHVybiB7IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihpdC5yYW5nZSgpLnN0YXJ0KSB9
OwogICAgIH0KIAotICAgIHJldHVybiB7IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoaXQu
YXRFbmQoKSA/IHJhbmdlIDogaXQucmFuZ2UoKSkuZW5kKSwgVVBTVFJFQU0gfTsKKyAgICByZXR1
cm4geyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKGl0LmF0RW5kKCkgPyByYW5nZSA6IGl0
LnJhbmdlKCkpLmVuZCksIEFmZmluaXR5OjpVcHN0cmVhbSB9OwogfQogCiAvLyBEZXRlcm1pbmVz
IHdoZXRoZXIgdHdvIHBvc2l0aW9ucyBhcmUgdmlzaWJseSBuZXh0IHRvIGVhY2ggb3RoZXIgKGZp
cnN0IHRoZW4gc2Vjb25kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDRkNGE4Y2M0
NGY5MDEyZmNlYjRjOTQ0NzliMDU1OTE5YjU0NDdkMmMuLjM5MTNmMmVjODk1MjdmNjQzOTdkNWFh
NTk5ZTEzMzA0ODNkYjM1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI3MSw3
ICsyNzEsNyBAQCBWaXNpYmxlU2VsZWN0aW9uIEVkaXRvcjo6c2VsZWN0aW9uRm9yQ29tbWFuZChF
dmVudCogZXZlbnQpCiAgICAgICAgIGF1dG8gc3RhcnQgPSBzZWxlY3Rpb24uc3RhcnQoKTsKICAg
ICAgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8ICZ0YXJnZXQgIT0gZW5jbG9zaW5nVGV4dEZvcm1D
b250cm9sKHN0YXJ0KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gcmFuZ2UgPSB0YXJnZXQuc2Vs
ZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgKnJhbmdlLCBET1dOU1RSRUFNLCBz
ZWxlY3Rpb24uaXNEaXJlY3Rpb25hbCgpIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgKnJh
bmdlLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgc2VsZWN0aW9uLmlzRGlyZWN0aW9uYWwoKSB9Owog
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBzZWxlY3Rpb247CkBAIC01MTMsNyArNTEzLDcg
QEAgYm9vbCBFZGl0b3I6OmNhbkRlbGV0ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkg
Y29uc3QKIAogICAgIGlmIChyYW5nZS5jb2xsYXBzZWQoKSkgewogICAgICAgICAvLyBGSVhNRTog
V2Ugc29tZXRpbWVzIGFsbG93IGRlbGV0aW9ucyBhdCB0aGUgc3RhcnQgb2YgZWRpdGFibGUgcm9v
dHMsIGxpa2Ugd2hlbiB0aGUgY2FyZXQgaXMgaW4gYW4gZW1wdHkgbGlzdCBpdGVtLgotICAgICAg
ICBhdXRvIHByZXZpb3VzID0gVmlzaWJsZVBvc2l0aW9uIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKHJhbmdlLnN0YXJ0KSwgRE9XTlNUUkVBTSB9LnByZXZpb3VzKCk7CisgICAgICAgIGF1
dG8gcHJldmlvdXMgPSBWaXNpYmxlUG9zaXRpb24geyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24ocmFuZ2Uuc3RhcnQpIH0ucHJldmlvdXMoKTsKICAgICAgICAgaWYgKHByZXZpb3VzLmlzTnVs
bCgpIHx8IHByZXZpb3VzLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+cm9vdEVk
aXRhYmxlRWxlbWVudCgpICE9IHJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cm9vdEVkaXRhYmxlRWxl
bWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTk0MSwyOCArOTQx
LDI0IEBAIHZvaWQgRWRpdG9yOjphcHBseVN0eWxlKFJlZlB0cjxFZGl0aW5nU3R5bGU+JiYgc3R5
bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbiwKICAgICBpZiAoIXN0eWxlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIHNlbGVjdGlvblR5cGUgPSBtX2RvY3VtZW50LnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKTsKLSAgICBpZiAoc2VsZWN0aW9uVHlwZSA9PSBW
aXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbikKKyAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGlucHV0VHlwZU5h
bWUgPSBpbnB1dFR5cGVOYW1lRm9yRWRpdGluZ0FjdGlvbihlZGl0aW5nQWN0aW9uKTsKICAgICBT
dHJpbmcgaW5wdXRFdmVudERhdGEgPSBpbnB1dEV2ZW50RGF0YUZvckVkaXRpbmdTdHlsZUFuZEFj
dGlvbigqc3R5bGUsIGVkaXRpbmdBY3Rpb24pOwotICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50
ID0gbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50
KCk7CisgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtX2RvY3VtZW50LnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxlbWVudCAm
JiAhZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50KCplbGVtZW50LCBpbnB1dFR5cGVOYW1lLCBpbnB1
dEV2ZW50RGF0YSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxFZGl0aW5nU3R5bGU+IHN0
eWxlVG9BcHBseSA9IGNvbG9yRmlsdGVyTW9kZSA9PSBDb2xvckZpbHRlck1vZGU6OkludmVydENv
bG9yID8gc3R5bGUtPmludmVyc2VUcmFuc2Zvcm1Db2xvcklmTmVlZGVkKCplbGVtZW50KSA6IHN0
eWxlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuaXNO
b25lKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIHN3aXRjaCAoc2VsZWN0aW9uVHlwZSkgewot
ICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb246Ci0gICAgICAgIGNvbXB1
dGVBbmRTZXRUeXBpbmdTdHlsZShzdHlsZVRvQXBwbHkuZ2V0KCksIGVkaXRpbmdBY3Rpb24pOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9u
OgorICAgIGF1dG8gc3R5bGVUb0FwcGx5ID0gY29sb3JGaWx0ZXJNb2RlID09IENvbG9yRmlsdGVy
TW9kZTo6SW52ZXJ0Q29sb3IgPyBzdHlsZS0+aW52ZXJzZVRyYW5zZm9ybUNvbG9ySWZOZWVkZWQo
KmVsZW1lbnQpIDogc3R5bGUucmVsZWFzZU5vbk51bGwoKTsKKyAgICBpZiAobV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5pc0NhcmV0KCkpCisgICAgICAgIGNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShz
dHlsZVRvQXBwbHksIGVkaXRpbmdBY3Rpb24pOworICAgIGVsc2UKICAgICAgICAgQXBwbHlTdHls
ZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzdHlsZVRvQXBwbHkucHRyKCksIGVkaXRpbmdB
Y3Rpb24pLT5hcHBseSgpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBi
cmVhazsKLSAgICB9CiAKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5kaWRB
cHBseVN0eWxlKCk7CkBAIC05ODAsMTcgKzk3NiwxOSBAQCB2b2lkIEVkaXRvcjo6YXBwbHlQYXJh
Z3JhcGhTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rp
bwogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2VsZWN0aW9u
VHlwZSA9IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uVHlwZSgp
OwotICAgIGlmIChzZWxlY3Rpb25UeXBlID09IFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9u
KQorICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBTdHJpbmcgaW5wdXRUeXBlTmFtZSA9IGlucHV0VHlwZU5hbWVGb3JFZGl0aW5n
QWN0aW9uKGVkaXRpbmdBY3Rpb24pOwogICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSA9IGlucHV0
RXZlbnREYXRhRm9yRWRpdGluZ1N0eWxlQW5kQWN0aW9uKHN0eWxlLCBlZGl0aW5nQWN0aW9uKTsK
LSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIGF1dG8gZWxlbWVudCA9IG1ha2VS
ZWZQdHIobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVt
ZW50KCkpOwogICAgIGlmIChlbGVtZW50ICYmICFkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoKmVs
ZW1lbnQsIGlucHV0VHlwZU5hbWUsIGlucHV0RXZlbnREYXRhKSkKICAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgICAgICByZXR1cm47
CiAKICAgICBBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKHN0eWxlKS5wdHIoKSwgZWRpdGluZ0FjdGlvbiwgQXBwbHlTdHlsZUNvbW1hbmQ6
OkZvcmNlQmxvY2tQcm9wZXJ0aWVzKS0+YXBwbHkoKTsKKwogICAgIGNsaWVudCgpLT5kaWRBcHBs
eVN0eWxlKCk7CiAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgIGRpc3BhdGNoSW5wdXRFdmVudCgq
ZWxlbWVudCwgaW5wdXRUeXBlTmFtZSwgaW5wdXRFdmVudERhdGEpOwpAQCAtMjEzNyw3ICsyMTM1
LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0
ID0gc3RkOjptaW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRPZmZzZXQpOwog
ICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQsIGJhc2VP
ZmZzZXQgKyBzZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwogICAgICAgICAgICAgYXV0byBy
YW5nZSA9IFNpbXBsZVJhbmdlIHsgeyAqYmFzZU5vZGUsIHN0YXJ0IH0sIHsgKmJhc2VOb2RlLCBl
bmQgfSB9OwotICAgICAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKHJhbmdlLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
Ok5vKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5n
ZShyYW5nZSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6Tm8pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMjI3LDcgKzIyMjUsNyBAQCB2
b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCiAgICAgLy8gSWYgc3BlbGxpbmdTZWFyY2hSYW5nZSBzdGFydHMgaW4gdGhlIG1pZGRs
ZSBvZiBhIHdvcmQsIGFkdmFuY2UgdG8gdGhlIG5leHQgd29yZCBzbyB3ZSBzdGFydCBjaGVja2lu
ZwogICAgIC8vIGF0IGEgd29yZCBib3VuZGFyeS4gR29pbmcgYmFjayBieSBvbmUgY2hhciBhbmQg
dGhlbiBmb3J3YXJkIGJ5IGEgd29yZCBkb2VzIHRoZSB0cmljay4KICAgICBpZiAoc3RhcnRlZFdp
dGhTZWxlY3Rpb24pIHsKLSAgICAgICAgYXV0byBvbmVCZWZvcmVTdGFydCA9IFZpc2libGVQb3Np
dGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3BlbGxpbmdTZWFyY2hSYW5nZS5zdGFy
dCksIERPV05TVFJFQU0pLnByZXZpb3VzKCk7CisgICAgICAgIGF1dG8gb25lQmVmb3JlU3RhcnQg
PSBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHNwZWxsaW5nU2Vh
cmNoUmFuZ2Uuc3RhcnQpKS5wcmV2aW91cygpOwogICAgICAgICBpZiAob25lQmVmb3JlU3RhcnQu
aXNOb3ROdWxsKCkpCiAgICAgICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLnN0YXJ0ID0gKm1h
a2VCb3VuZGFyeVBvaW50KGVuZE9mV29yZChvbmVCZWZvcmVTdGFydCkpOwogICAgICAgICAvLyBl
bHNlIHdlIHdlcmUgYWxyZWFkeSBhdCB0aGUgc3RhcnQgb2YgdGhlIGVkaXRhYmxlIG5vZGUKQEAg
LTIzMDgsNyArMjMwNiw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
Ym9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4
NTkxOTA6IFRoaXMgZ2V0cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhl
IGVuZCBvZiBhIHBhcmFncmFwaC4KICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSByZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UoZ3JhbW1hclNlYXJjaFJhbmdlLCB7IHVuZ3JhbW1hdGljYWxQaHJh
c2Uub2Zmc2V0ICsgdW5ncmFtbWF0aWNhbFBocmFzZS5kZXRhaWwucmFuZ2UubG9jYXRpb24sIHVu
Z3JhbW1hdGljYWxQaHJhc2UuZGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKLSAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYWRHcmFtbWFy
UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlKSk7CiAg
ICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAg
IAogICAgICAgICBjbGllbnQoKS0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKHVu
Z3JhbW1hdGljYWxQaHJhc2UucGhyYXNlLCB1bmdyYW1tYXRpY2FsUGhyYXNlLmRldGFpbCk7CkBA
IC0yMzE4LDcgKzIzMTYsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8vIGEgbWFya2VyIHNvIHdlIGRy
YXcgdGhlIHJlZCBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCiAgICAgICAgIGF1dG8gbWlzc3Bl
bGxpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdlLCB7
IG1pc3NwZWxsZWRXb3JkLm9mZnNldCwgbWlzc3BlbGxlZFdvcmQud29yZC5sZW5ndGgoKSB9KTsK
LSAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihtaXNzcGVsbGluZ1JhbmdlLCBET1dOU1RSRUFNKSk7CisgICAgICAgIG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5n
ZSkpOwogICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwog
ICAgICAgICAKICAgICAgICAgY2xpZW50KCktPnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxl
ZFdvcmQobWlzc3BlbGxlZFdvcmQud29yZCk7CkBAIC0yNTc0LDcgKzI1NzIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgd29yZFN0YXJ0LAogCiAgICAgLy8gSWYgYXV0b2NvcnJlY3RlZCB3b3JkIGlzIG5vbiBl
bXB0eSwgcmVwbGFjZSB0aGUgbWlzc3BlbGxlZCB3b3JkIGJ5IHRoaXMgd29yZC4KICAgICBpZiAo
IWF1dG9jb3JyZWN0ZWRTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFZpc2libGVTZWxlY3Rp
b24gbmV3U2VsZWN0aW9uKCptaXNzcGVsbGluZ1JhbmdlLCBET1dOU1RSRUFNKTsKKyAgICAgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oKm1pc3NwZWxsaW5nUmFuZ2UpOwogICAgICAg
ICBpZiAobmV3U2VsZWN0aW9uICE9IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkp
IHsKICAgICAgICAgICAgIGlmICghbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zaG91bGRDaGFuZ2VT
ZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzgz
LDcgKzI3ODEsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxD
aGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIGJvb2wgcmVzdG9yZVNl
bGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CiAKICAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxh
Y2VtZW50IHx8IHNob3VsZE1hcmtTcGVsbGluZyB8fCBzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24p
IHsKLSAgICAgICAgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uVHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uKSB7CisgICAgICAg
IGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewogICAgICAgICAgICAgLy8g
QXR0ZW1wdCB0byBzYXZlIHRoZSBjYXJldCBwb3NpdGlvbiBzbyB3ZSBjYW4gcmVzdG9yZSBpdCBs
YXRlciBpZiBuZWVkZWQKICAgICAgICAgICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2Rv
Y3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpOwogICAgICAgICAgICAgc2VsZWN0
aW9uT2Zmc2V0ID0gcGFyYWdyYXBoLm9mZnNldFRvKGNhcmV0UG9zaXRpb24pLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwpAQCAtMjg2NCw3ICsyODYyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBs
YWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2UocmFuZ2VUb1JlcGxhY2UsIERPV05T
VFJFQU0pOworICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2Uo
cmFuZ2VUb1JlcGxhY2UpOwogICAgICAgICAgICAgaWYgKHNlbGVjdGlvblRvUmVwbGFjZSAhPSBt
X2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb25U
b1JlcGxhY2UpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI5MTAsNyArMjkw
OCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgIGV4dGVuZGVkUGFyYWdyYXBo
LmV4cGFuZFJhbmdlVG9OZXh0RW5kKCk7CiAgICAgICAgIGlmIChyZXN0b3JlU2VsZWN0aW9uQWZ0
ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBoLnJhbmdlTGVu
Z3RoKCkpIHsKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFn
cmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKLSAgICAgICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzZWxl
Y3Rpb25SYW5nZS5lbmQpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQuc2Vs
ZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzZWxlY3Rpb25SYW5n
ZS5lbmQpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBJZiB0aGlzIGZhaWxzIGZvciBhbnkgcmVhc29uLCB0aGUgZmFsbGJhY2sgaXMgdG8g
Z28gb25lIHBvc2l0aW9uIGJleW9uZCB0aGUgbGFzdCByZXBsYWNlbWVudAogICAgICAgICAgICAg
bV9kb2N1bWVudC5zZWxlY3Rpb24oKS5tb3ZlVG8obV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5lbmQoKSk7CkBAIC0zMTU3LDcgKzMxNTUsNyBAQCB2b2lkIEVkaXRvcjo6dHJhbnNw
b3NlKCkKICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHByZXZpb3VzLCBuZXh0KTsK
ICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBu
ZXdTZWxlY3Rpb24oKnJhbmdlLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbigqcmFuZ2UpOwogCiAgICAgLy8gVHJhbnNwb3NlIHRoZSB0d28gY2hhcmFjdGVy
cy4KICAgICBTdHJpbmcgdGV4dCA9IHBsYWluVGV4dCgqcmFuZ2UpOwpAQCAtMzI5NSw3ICszMjkz
LDcgQEAgUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0VGV4dFBs
YWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUKICAgICBpZiAoIXBsYWNlaG9sZGVyLT5wYXJl
bnROb2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9kb2N1bWVudC5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7IHBvc2l0aW9uSW5QYXJlbnRC
ZWZvcmVOb2RlKHBsYWNlaG9sZGVyLnB0cigpKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkgfSwgRnJh
bWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKFVzZXJUcmlnZ2VyZWQpKTsK
KyAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
IHsgcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUocGxhY2Vob2xkZXIucHRyKCkpIH0sIEZyYW1l
U2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKSk7CiAK
ICAgICByZXR1cm4gcGxhY2Vob2xkZXI7CiB9CkBAIC0zMzE2LDcgKzMzMTQsNyBAQCB2b2lkIEVk
aXRvcjo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmIHBsYWNl
aG9sZGVyKQogCiAgICAgLy8gVG8gbWF0Y2ggdGhlIExlZ2FjeSBXZWJLaXQgaW1wbGVtZW50YXRp
b24sIHNldCB0aGUgdGV4dCBpbnNlcnRpb24gcG9pbnQgdG8gYmUgYmVmb3JlIHdoZXJlIHRoZSBw
bGFjZWhvbGRlciB1c2UgdG8gYmUuCiAgICAgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuaXNG
b2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0gc2F2ZWRS
b290RWRpdGFibGVFbGVtZW50KQotICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uIHsgc2F2ZWRQb3NpdGlvbkJlZm9yZVBsYWNlaG9sZGVy
LCBTRUxfREVGQVVMVF9BRkZJTklUWSB9LCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVj
dGlvbk9wdGlvbnMoVXNlclRyaWdnZXJlZCkpOworICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlv
bigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uIHsgc2F2ZWRQb3NpdGlvbkJlZm9yZVBs
YWNlaG9sZGVyIH0sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhV
c2VyVHJpZ2dlcmVkKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsYXBzZUNhcmV0V2lk
dGgoSW50UmVjdCYgcmVjdCkKQEAgLTMzMzIsNDAgKzMzMzAsMzYgQEAgSW50UmVjdCBFZGl0b3I6
OmZpcnN0UmVjdEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkgY29uc3QKIHsKICAg
ICByYW5nZS5zdGFydC5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCi0gICAgVmlzaWJsZVBv
c2l0aW9uIHN0YXJ0VmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihy
YW5nZS5zdGFydCksIERPV05TVFJFQU0pOworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydChjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2Uuc3RhcnQpKTsKIAogICAgIGlmIChyYW5nZS5j
b2xsYXBzZWQoKSkgewogICAgICAgICAvLyBGSVhNRTogR2V0dGluZyBjYXJldCByZWN0IGFuZCBy
ZW1vdmluZyBjYXJldCB3aWR0aCBpcyBhIHZlcnkgcm91bmRhYm91dCB3YXkgdG8gZ2V0IGNvbGxh
cHNlZCByYW5nZSBsb2NhdGlvbi4KICAgICAgICAgLy8gSW4gcGFydGljdWxhciwgd2lkdGggYWRq
dXN0bWVudCBkb2Vzbid0IHdvcmsgZm9yIHJvdGF0ZWQgdGV4dC4KLSAgICAgICAgSW50UmVjdCBz
dGFydENhcmV0UmVjdCA9IFJlbmRlcmVkUG9zaXRpb24oc3RhcnRWaXNpYmxlUG9zaXRpb24pLmFi
c29sdXRlUmVjdCgpOworICAgICAgICBJbnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gUmVuZGVyZWRQ
b3NpdGlvbihzdGFydCkuYWJzb2x1dGVSZWN0KCk7CiAgICAgICAgIGNvbGxhcHNlQ2FyZXRXaWR0
aChzdGFydENhcmV0UmVjdCk7CiAgICAgICAgIHJldHVybiBzdGFydENhcmV0UmVjdDsKICAgICB9
CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihyYW5nZS5lbmQpLCBVUFNUUkVBTSk7CisgICAgVmlzaWJsZVBvc2l0aW9u
IGVuZChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UuZW5kKSwgQWZmaW5pdHk6OlVw
c3RyZWFtKTsKIAotICAgIGlmIChpblNhbWVMaW5lKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRW
aXNpYmxlUG9zaXRpb24pKQorICAgIGlmIChpblNhbWVMaW5lKHN0YXJ0LCBlbmQpKQogICAgICAg
ICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdCh1bml0ZWRCb3VuZGluZ0JveGVzKFJlbmRlck9iamVj
dDo6YWJzb2x1dGVUZXh0UXVhZHMocmFuZ2UpKSk7CiAKICAgICBMYXlvdXRVbml0IGV4dHJhV2lk
dGhUb0VuZE9mTGluZTsKLSAgICBJbnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gUmVuZGVyZWRQb3Np
dGlvbihzdGFydFZpc2libGVQb3NpdGlvbikuYWJzb2x1dGVSZWN0KCZleHRyYVdpZHRoVG9FbmRP
ZkxpbmUpOworICAgIEludFJlY3Qgc3RhcnRDYXJldFJlY3QgPSBSZW5kZXJlZFBvc2l0aW9uKHN0
YXJ0KS5hYnNvbHV0ZVJlY3QoJmV4dHJhV2lkdGhUb0VuZE9mTGluZSk7CiAgICAgaWYgKHN0YXJ0
Q2FyZXRSZWN0ID09IEludFJlY3QoKSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAogICAg
IC8vIFdoZW4gc3RhcnQgYW5kIGVuZCBhcmVuJ3Qgb24gdGhlIHNhbWUgbGluZSwgd2Ugd2FudCB0
byBnbyBmcm9tIHN0YXJ0IHRvIHRoZSBlbmQgb2YgaXRzIGxpbmUuCi0gICAgYm9vbCB0ZXh0SXNI
b3Jpem9udGFsID0gc3RhcnRDYXJldFJlY3Qud2lkdGgoKSA9PSBjYXJldFdpZHRoOwotICAgIHJl
dHVybiB0ZXh0SXNIb3Jpem9udGFsID8KLSAgICAgICAgSW50UmVjdChzdGFydENhcmV0UmVjdC54
KCksCi0gICAgICAgICAgICBzdGFydENhcmV0UmVjdC55KCksCi0gICAgICAgICAgICBzdGFydENh
cmV0UmVjdC53aWR0aCgpICsgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lLAotICAgICAgICAgICAgc3Rh
cnRDYXJldFJlY3QuaGVpZ2h0KCkpIDoKLSAgICAgICAgSW50UmVjdChzdGFydENhcmV0UmVjdC54
KCksCi0gICAgICAgICAgICBzdGFydENhcmV0UmVjdC55KCksCi0gICAgICAgICAgICBzdGFydENh
cmV0UmVjdC53aWR0aCgpLAotICAgICAgICAgICAgc3RhcnRDYXJldFJlY3QuaGVpZ2h0KCkgKyBl
eHRyYVdpZHRoVG9FbmRPZkxpbmUpOworICAgIGF1dG8gcmVzdWx0ID0gc3RhcnRDYXJldFJlY3Q7
CisgICAgaWYgKHN0YXJ0Q2FyZXRSZWN0LndpZHRoKCkgPT0gY2FyZXRXaWR0aCkKKyAgICAgICAg
cmVzdWx0LmV4cGFuZChleHRyYVdpZHRoVG9FbmRPZkxpbmUsIDApOworICAgIGVsc2UKKyAgICAg
ICAgcmVzdWx0LmV4cGFuZCgwLCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWJvb2wgRWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdT
ZWxlY3Rpb24sIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgY29uc3QK
K2Jvb2wgRWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEFm
ZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdAogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKSAmJiBtX2RvY3VtZW50
LmZyYW1lKCktPnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrc0Rpc2FibGVkKCkpCkBAIC0zNDYyLDcg
KzM0NTYsNyBAQCBib29sIEVkaXRvcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwg
RmluZE9wdGlvbnMgb3B0aW9ucykKICAgICBpZiAoIXJlc3VsdFJhbmdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKCpyZXN1bHRSYW5nZSwgRE9XTlNUUkVBTSkpOworICAgIG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlc3VsdFJhbmdlKSk7
CiAKICAgICBpZiAoIShvcHRpb25zLmNvbnRhaW5zKERvTm90UmV2ZWFsU2VsZWN0aW9uKSkpCiAg
ICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCBhYTM1MTVjNGU4ODE4MWY4YWEzYzk4MDA1MGYyNTBmYzhjMjgy
NGQ5Li4yOTBjMmZjMWNmZjQ5ZjkxOTFlZWJlZWRjOWIyZWM0ZGRlMWE3YWEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKQEAgLTQ2Miw3ICs0NjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWxl
Y3Rpb25XaWxsQ2hhbmdlKCk7CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgT3B0aW9uU2V0PEZyYW1lU2VsZWN0
aW9uOjpTZXRTZWxlY3Rpb25PcHRpb24+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZUVkaXRvclVJTm93SWZTY2hlZHVsZWQoKTsKLSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIG5ld1NlbGVjdGlvbiwgRUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25z
dDsKKyAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBvbGRTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgQWZm
aW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHVu
c2lnbmVkIGNvdW50TWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIGxpbWl0LCBib29sIG1hcmtNYXRj
aGVzLCBWZWN0b3I8U2ltcGxlUmFuZ2U+Kik7CiAgICAgYm9vbCBtYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXJrZWRU
ZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAKaW5kZXggMmQzZTk1ZDBmYzE2NGViZjYxMWZiNGU0YzAwMTk5YzAwYTU1
ODZjMS4uM2ZjMDJlYjY0ZGFmYjk4YzNlMGNhMWZiMWQ3MWU2OTFiYzQyOWZlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvTWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QKICAgICBhdXRvIG1hcmtSYW5nZSA9IGVkaXRvci5tYXJrKCku
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9u
LnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKG1hcmtSYW5nZSAmJiBz
ZWxlY3Rpb25SYW5nZSkgewotICAgICAgICBpZiAoIXNlbGVjdGlvbi5zZXRTZWxlY3RlZFJhbmdl
KHVuaW9uUmFuZ2UoKm1hcmtSYW5nZSwgKnNlbGVjdGlvblJhbmdlKSwgRE9XTlNUUkVBTSwgRnJh
bWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpKQorICAgICAgICBpZiAoIXNlbGVj
dGlvbi5zZXRTZWxlY3RlZFJhbmdlKHVuaW9uUmFuZ2UoKm1hcmtSYW5nZSwgKnNlbGVjdGlvblJh
bmdlKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5
cGluZzo6WWVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZWRpdG9y
LnBlcmZvcm1EZWxldGUoKTsKQEAgLTEwNDUsNyArMTA0NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVTZWxlY3RUb01hcmsoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0CiAgICAgICAgIFBBTDo6c3lzdGVtQmVlcCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIHNlbGVjdGlvbi5zZXRTZWxlY3RlZFJhbmdlKHVuaW9uUmFuZ2UoKm1hcmtS
YW5nZSwgKnNlbGVjdGlvblJhbmdlKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3Vs
ZENsb3NlVHlwaW5nOjpZZXMpOworICAgIHNlbGVjdGlvbi5zZXRTZWxlY3RlZFJhbmdlKHVuaW9u
UmFuZ2UoKm1hcmtSYW5nZSwgKnNlbGVjdGlvblJhbmdlKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0s
IEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICAvLyBGSVhNRTog
V2h5IGRvIHdlIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gc2V0U2VsZWN0ZWRSYW5nZSBo
ZXJlPwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcAppbmRleCA5NjE0NDliOGY0MTYwM2U1ZTVlY2FiNWZjYWNiMzcyNTMwYjg0N2I4
Li5iZmNkZDc2YjRhNTA4ZjliODE4NmJlM2ZmYzU3Nzg3MDQ5NWVhMTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjAxLDEyICsyMDEsMTIgQEAgdm9p
ZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYmFzZSwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJgogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGJh
c2UuZGVlcEVxdWl2YWxlbnQoKSwgZXh0ZW50LmRlZXBFcXVpdmFsZW50KCksIGJhc2UuYWZmaW5p
dHkoKSwgc2VsZWN0aW9uSGFzRGlyZWN0aW9uKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMo
dXNlclRyaWdnZXJlZCkpOwogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjptb3ZlVG8oY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVz
ZXJUcmlnZ2VyZWQpCit2b2lkIEZyYW1lU2VsZWN0aW9uOjptb3ZlVG8oY29uc3QgUG9zaXRpb24m
IHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJl
ZCkKIHsKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbiwgYWZmaW5p
dHksIG1fc2VsZWN0aW9uLmlzRGlyZWN0aW9uYWwoKSksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRp
b25zKHVzZXJUcmlnZ2VyZWQpKTsKIH0KIAotdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNv
bnN0IFBvc2l0aW9uJiBiYXNlLCBjb25zdCBQb3NpdGlvbiYgZXh0ZW50LCBFQWZmaW5pdHkgYWZm
aW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCit2b2lkIEZyYW1lU2VsZWN0aW9u
Ojptb3ZlVG8oY29uc3QgUG9zaXRpb24mIGJhc2UsIGNvbnN0IFBvc2l0aW9uJiBleHRlbnQsIEFm
ZmluaXR5IGFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkKQogewogICAgIGNv
bnN0IGJvb2wgc2VsZWN0aW9uSGFzRGlyZWN0aW9uID0gdHJ1ZTsKICAgICBzZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihiYXNlLCBleHRlbnQsIGFmZmluaXR5LCBzZWxlY3Rpb25IYXNEaXJl
Y3Rpb24pLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyh1c2VyVHJpZ2dlcmVkKSk7CkBAIC0x
NDYwLDEyICsxNDYwLDEyIEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlv
biBhbHRlciwgdW5zaWduZWQgdmVydGljYWxEaXN0YW5jZSwgVmVydGljCiAgICAgY2FzZSBBbHRl
cmF0aW9uTW92ZToKICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKGRpcmVjdGlvbiA9PSBE
aXJlY3Rpb25VcCA/IG1fc2VsZWN0aW9uLnN0YXJ0KCkgOiBtX3NlbGVjdGlvbi5lbmQoKSwgbV9z
ZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHhQb3MgPSBsaW5lRGlyZWN0aW9uUG9pbnRG
b3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oZGlyZWN0aW9uID09IERpcmVjdGlvblVwID8gU1RB
UlQgOiBFTkQpOwotICAgICAgICBtX3NlbGVjdGlvbi5zZXRBZmZpbml0eShkaXJlY3Rpb24gPT0g
RGlyZWN0aW9uVXAgPyBVUFNUUkVBTSA6IERPV05TVFJFQU0pOworICAgICAgICBtX3NlbGVjdGlv
bi5zZXRBZmZpbml0eShkaXJlY3Rpb24gPT0gRGlyZWN0aW9uVXAgPyBBZmZpbml0eTo6VXBzdHJl
YW0gOiBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWx0
ZXJhdGlvbkV4dGVuZDoKICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9u
LmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgeFBvcyA9IGxpbmVE
aXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihFWFRFTlQpOwotICAgICAg
ICBtX3NlbGVjdGlvbi5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICAgICAgbV9zZWxlY3Rp
b24uc2V0QWZmaW5pdHkoQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTE2MDksMTMgKzE2MDksMTMgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0RXh0
ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIEVVc2VyVHJpZ2dlcmVkIHUKICAg
ICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtX3NlbGVjdGlvbi5iYXNlKCksIHBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCksIHBvc2l0aW9uLmFmZmluaXR5KCksIHNlbGVjdGlvbkhhc0Rp
cmVjdGlvbiksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKHVzZXJUcmlnZ2VyZWQpKTsKIH0K
IAotdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0QmFzZShjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24s
IEVBZmZpbml0eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKK3ZvaWQg
RnJhbWVTZWxlY3Rpb246OnNldEJhc2UoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0
eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBjb25zdCBi
b29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiA9IHRydWU7CiAgICAgc2V0U2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24ocG9zaXRpb24sIG1fc2VsZWN0aW9uLmV4dGVudCgpLCBhZmZpbml0eSwgc2Vs
ZWN0aW9uSGFzRGlyZWN0aW9uKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnModXNlclRyaWdn
ZXJlZCkpOwogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRFeHRlbnQoY29uc3QgUG9zaXRp
b24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmln
Z2VyZWQpCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRFeHRlbnQoY29uc3QgUG9zaXRpb24mIHBv
c2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkK
IHsKICAgICBjb25zdCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiA9IHRydWU7CiAgICAgc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obV9zZWxlY3Rpb24uYmFzZSgpLCBwb3NpdGlvbiwg
YWZmaW5pdHksIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRp
b25zKHVzZXJUcmlnZ2VyZWQpKTsKQEAgLTIwMTAsNyArMjAxMCw3IEBAIHZvaWQgRnJhbWVTZWxl
Y3Rpb246OnNlbGVjdEFsbCgpCiAgICAgfQogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRT
ZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVBZmZpbml0
eSBhZmZpbml0eSwgU2hvdWxkQ2xvc2VUeXBpbmcgY2xvc2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVk
IHVzZXJUcmlnZ2VyZWQpCitib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKGNv
bnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBTaG91
bGRDbG9zZVR5cGluZyBjbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkK
IHsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzc4LDE4ICsy
Mzc4LDE1IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbihTZWxlY3Rpb25S
ZXZlYWxNb2RlIHJldmVhbE1vZGUsIGNvbnN0IFNjcm9sCiAgICAgaWYgKHJldmVhbE1vZGUgPT0g
U2VsZWN0aW9uUmV2ZWFsTW9kZTo6RG9Ob3RSZXZlYWwpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmIChpc05vbmUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgTGF5b3V0UmVjdCByZWN0Owog
ICAgIGJvb2wgaW5zaWRlRml4ZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKG1fc2VsZWN0aW9uLnNl
bGVjdGlvblR5cGUoKSkgewotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0
aW9uOgorICAgIGlmIChpc0NhcmV0KCkpCiAgICAgICAgIHJlY3QgPSBhYnNvbHV0ZUNhcmV0Qm91
bmRzKCZpbnNpZGVGaXhlZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlzaWJsZVNlbGVj
dGlvbjo6UmFuZ2VTZWxlY3Rpb246CisgICAgZWxzZQogICAgICAgICByZWN0ID0gcmV2ZWFsRXh0
ZW50T3B0aW9uID09IFJldmVhbEV4dGVudCA/IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5l
eHRlbnQoKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpIDogZW5jbG9zaW5nSW50UmVjdChzZWxlY3Rp
b25Cb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Ok5vKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KIAogICAgIFBvc2l0aW9uIHN0YXJ0ID0gbV9zZWxlY3Rpb24uc3RhcnQoKTsKICAgICBBU1NF
UlQoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSk7CkBAIC0yNDI1LDcgKzI0MjIsNyBAQCB2b2lkIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChhdXRvKiBib2R5ID0gbV9kb2N1bWVudC0+Ym9keSgpKQotICAgICAgICBzZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoYm9keSks
IERPV05TVFJFQU0pKTsKKyAgICAgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZmly
c3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGJvZHkpKSk7CiB9CiAKIGJvb2wgRnJhbWVTZWxlY3Rp
b246OnNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxl
Y3Rpb24pIGNvbnN0CkBAIC0yNTA1LDcgKzI1MDIsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpl
eHBhbmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQogICAgIGF1
dG8gcmFuZ2UgPSBlbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKICAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oKnJhbmdlLCBET1dOU1RSRUFNKSk7CisgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oKnJhbmdlKSk7CiB9CiAKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFtZVNlbGVjdGlv
bjo6ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCAwYWI3MDIxODNiM2ZiZGQwYzAzYzM0
OTMyYmRhNjE4ODJjMDZhNzI5Li5hYjZkMTNlZDAyM2E2N2NjN2FhZjUyZDI2NjNkNDhmMTk3MGU3
MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0xNDUsMTUg
KzE0NSwxNSBAQCBwdWJsaWM6CiAgICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVRv
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJl
ZCwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG8oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsK
LSAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSwgRVVzZXJUcmlnZ2Vy
ZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsKLSAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3NpdGlvbiYs
IGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmln
Z2VyZWQpOworICAgIHZvaWQgbW92ZVRvKGNvbnN0IFBvc2l0aW9uJiwgQWZmaW5pdHksIEVVc2Vy
VHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CisgICAgdm9pZCBtb3ZlVG8oY29uc3QgUG9z
aXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIEFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVz
ZXJUcmlnZ2VyZWQpOwogICAgIHZvaWQgbW92ZVdpdGhvdXRWYWxpZGF0aW9uVG8oY29uc3QgUG9z
aXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIGJvb2wgc2VsZWN0aW9uSGFzRGlyZWN0aW9uLCBib29s
IHNob3VsZFNldEZvY3VzLCBTZWxlY3Rpb25SZXZlYWxNb2RlLCBjb25zdCBBWFRleHRTdGF0ZUNo
YW5nZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKIAogICAgIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uOyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+ID0gZGVmYXVsdFNldFNlbGVjdGlv
bk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgPSBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVk
LCBUZXh0R3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkQ2xvc2VUeXBpbmcgOiBib29sIHsgTm8sIFllcyB9
OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBFQWZmaW5pdHksIFNob3VsZENsb3NlVHlwaW5nLCBFVXNlclRyaWdn
ZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2Vs
ZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBBZmZpbml0eSwgU2hvdWxk
Q2xvc2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZWxlY3RBbGwoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyKCk7CiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCk7CkBAIC0xNzYsOSArMTc2
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RW5kKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVV
c2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRCYXNlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0g
Tm90VXNlclRyaWdnZXJlZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCYXNlKGNvbnN0
IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QmFzZShjb25zdCBQb3NpdGlvbiYsIEFmZmlu
aXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIHZvaWQgc2V0RXh0
ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdn
ZXJlZCk7Ci0gICAgdm9pZCBzZXRFeHRlbnQoY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHksIEVV
c2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CisgICAgdm9pZCBzZXRFeHRlbnQoY29u
c3QgUG9zaXRpb24mLCBBZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVk
KTsKIAogICAgIC8vIFJldHVybiB0aGUgcmVuZGVyZXIgdGhhdCBpcyByZXNwb25zaWJsZSBmb3Ig
cGFpbnRpbmcgdGhlIGNhcmV0IChpbiB0aGUgc2VsZWN0aW9uIHN0YXJ0IG5vZGUpCiAgICAgUmVu
ZGVyQmxvY2sqIGNhcmV0UmVuZGVyZXJXaXRob3V0VXBkYXRpbmdMYXlvdXQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKaW5kZXgg
MTI3MGQ1OWQ4MjYwMWE3YzBkYTk5NzUzZDNkYWNhNjgwODAxNWMzMy4uZWIyNGUwN2UyMTMwOTQx
NTU1ZGFmNWE5YTIyMmQ2YjE2YzM0MDllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEluZGVu
dE91dGRlbnRDb21tYW5kOjpvdXRkZW50UmVnaW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3Rh
cnRPZlNlbGVjdGlvbgogICAgIHdoaWxlIChlbmRPZkN1cnJlbnRQYXJhZ3JhcGggIT0gZW5kQWZ0
ZXJTZWxlY3Rpb24pIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mTmV4dFBhcmFncmFw
aCA9IGVuZE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBhcmFncmFwaC5uZXh0KCkpOwogICAgICAg
ICBpZiAoZW5kT2ZDdXJyZW50UGFyYWdyYXBoID09IGVuZE9mTGFzdFBhcmFncmFwaCkKLSAgICAg
ICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG9yaWdpbmFsU2VsZWN0
aW9uRW5kLCBET1dOU1RSRUFNKSk7CisgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihvcmlnaW5hbFNlbGVjdGlvbkVuZCkpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5kT2ZDdXJyZW50UGFyYWdyYXBoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5k
ZXggMjczNTVlNjZmYjg5ZDU1NDJjZDZhOWJlYTg4ZTJjMjYyZjUwNzgzYi4uODgwZTcwMzU5ODlh
NmZiMmJmYTc2OGE5NmFiMGE4M2Y5Y2Y0Y2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB2
b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBpZiAoIWlzU3Rh
cnRPZlBhcmFncmFwaChwb3NpdGlvbkJlZm9yZU5vZGUobm9kZVRvSW5zZXJ0LmdldCgpKSkpCiAg
ICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGVUb0luc2VydC0+Y2xvbmVOb2RlKGZhbHNl
KSwgKm5vZGVUb0luc2VydCk7CiAgICAgICAgIAotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGVUb0luc2VydC5n
ZXQoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwor
ICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkluUGFy
ZW50QWZ0ZXJOb2RlKG5vZGVUb0luc2VydC5nZXQoKSksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBl
bmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAvLyBJZiB3ZSdyZSBpbnNl
cnRpbmcgYWZ0ZXIgYWxsIG9mIHRoZSByZW5kZXJlZCB0ZXh0IGluIGEgdGV4dCBub2RlLCBvciBp
bnRvIGEgbm9uLXRleHQgbm9kZSwKICAgICAvLyBhIHNpbXBsZSBpbnNlcnRpb24gaXMgc3VmZmlj
aWVudC4KICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkg
Pj0gY2FyZXRNYXhPZmZzZXQoKnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpIHx8ICFpczxUZXh0
PigqcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KCpu
b2RlVG9JbnNlcnQsIHBvc2l0aW9uKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkp
LCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEFm
dGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5n
U2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgfSBlbHNlIGlmIChpczxUZXh0Pigq
cG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgLy8gU3BsaXQgYSB0ZXh0IG5v
ZGUKICAgICAgICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqcG9zaXRpb24uZGVw
cmVjYXRlZE5vZGUoKSk7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtD
b21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nUG9zaXRpb24s
IERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAg
ICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdQb3NpdGlvbiwgQWZm
aW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwog
ICAgIH0KIAogICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBhIHR5cGluZyBz
dHlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TmVzdGVkTGlz
dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROZXN0ZWRMaXN0Q29t
bWFuZC5jcHAKaW5kZXggNzc0Zjc1ZDI2NzlmYzdjNmExNTg0NzEzNTgzOGViYTg1MmFhOTY2ZC4u
ZTYzZGY2MDM5YzExZTE3MGQxYWI1MjM1YWU0MDljYzI4YTM4ZGU0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgdm9pZCBJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYg
KGF1dG8gZW5jbG9zaW5nSXRlbSA9IG1ha2VSZWZQdHIoZW5jbG9zaW5nRWxlbWVudFdpdGhUYWco
ZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKSwgSFRNTE5h
bWVzOjpsaVRhZykpKSB7CiAgICAgICAgIGF1dG8gbmV3TGlzdEl0ZW0gPSBIVE1MTElFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIGluc2VydE5vZGVBZnRlcihuZXdMaXN0SXRl
bS5jb3B5UmVmKCksICplbmNsb3NpbmdJdGVtKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KHsgUG9zaXRpb24geyBuZXdMaXN0SXRlbS5wdHIoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVDaGlsZHJlbiB9LCBET1dOU1RSRUFNIH0pOworICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
eyBQb3NpdGlvbiB7IG5ld0xpc3RJdGVtLnB0cigpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9y
ZUNoaWxkcmVuIH0sIEFmZmluaXR5OjpEb3duc3RyZWFtIH0pOwogCiAgICAgICAgIGF1dG8gY29t
bWFuZFR5cGUgPSBtX3R5cGUgPT0gVHlwZTo6T3JkZXJlZExpc3QgPyBJbmNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbENvbW1hbmQ6OlR5cGU6Ok9yZGVyZWRMaXN0IDogSW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxDb21tYW5kOjpUeXBlOjpVbm9yZGVyZWRMaXN0OwogICAgICAgICBhcHBseUNvbW1h
bmRUb0NvbXBvc2l0ZShJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmNyZWF0ZShk
b2N1bWVudCgpLCBjb21tYW5kVHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXggNWJlYzQy
NjFhNTE2Nzk3YmJmOTY0NWI3ZWMxMGMyYTRkYTc4ZjQ2MC4uNzcyOTRkNDMxZjA2MGMwMjUwNTM3
YzUxNmMyMmU0Nzk4ZjRjODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCkBAIC0xNTAsMTAgKzE1
MCw5IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZU9yT3JwaGFuZWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIFBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uID0gZW5kaW5nU2VsZWN0
aW9uKCkuc3RhcnQoKTsKLSAgICAgICAgCi0gICAgRUFmZmluaXR5IGFmZmluaXR5ID0gZW5kaW5n
U2VsZWN0aW9uKCkuYWZmaW5pdHkoKTsKLSAgICAgICAgCisgICAgYXV0byBpbnNlcnRpb25Qb3Np
dGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCk7CisgICAgYXV0byBhZmZpbml0eSA9IGVu
ZGluZ1NlbGVjdGlvbigpLmFmZmluaXR5KCk7CisKICAgICAvLyBEZWxldGUgdGhlIGN1cnJlbnQg
c2VsZWN0aW9uLgogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsKICAgICAg
ICAgY2FsY3VsYXRlU3R5bGVCZWZvcmVJbnNlcnRpb24oaW5zZXJ0aW9uUG9zaXRpb24pOwpAQCAt
MjQ5LDcgKzI0OCw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9B
cHBseSgpCiAgICAgICAgIAogICAgICAgICBhcHBlbmRCbG9ja1BsYWNlaG9sZGVyKFdURk1vdmUo
cGFyZW50KSk7CiAKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
Zmlyc3RQb3NpdGlvbkluTm9kZShwYXJlbnRQdHIpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rp
b24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluTm9kZShwYXJlbnRQdHIpLCBBZmZpbml0eTo6RG93
bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCkBAIC0yODcsNyArMjg2LDcgQEAgdm9pZCBJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgYXBwZW5kQmxvY2tQbGFjZWhv
bGRlcihjbG9uZUhpZXJhcmNoeVVuZGVyTmV3QmxvY2soYW5jZXN0b3JzLCAqYmxvY2tUb0luc2Vy
dCkpOwogICAgICAgICAKICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHNldCB0
aGUgbmV3IGVuZGluZyBzZWxlY3Rpb24uCi0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKGluc2VydGlvblBvc2l0aW9uLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rp
b24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oaW5zZXJ0aW9uUG9zaXRpb24sIEFmZmluaXR5OjpEb3duc3RyZWFtLCBlbmRp
bmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzEwLDcgKzMwOSw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIElmIHRoZSBpbnNlcnRpb24gcG9pbnQgaXMgYSBicmVh
ayBlbGVtZW50LCB0aGVyZSBpcyBub3RoaW5nIGVsc2UKICAgICAgICAgLy8gd2UgbmVlZCB0byBk
by4KICAgICAgICAgaWYgKHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCkt
PnJlbmRlcmVyKCktPmlzQlIoKSkgewotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oaW5zZXJ0aW9uUG9zaXRpb24sIERPV05TVFJFQU0sIGVuZGluZ1NlbGVj
dGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24oaW5zZXJ0aW9uUG9zaXRpb24sIEFmZmluaXR5OjpEb3duc3RyZWFt
LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KQEAgLTQxMCw3ICs0MDksNyBAQCB2b2lkIEluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
c2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluTm9kZShi
bG9ja1RvSW5zZXJ0LmdldCgpKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJl
Y3Rpb25hbCgpKSk7CisgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZmly
c3RQb3NpdGlvbkluTm9kZShibG9ja1RvSW5zZXJ0LmdldCgpKSwgQWZmaW5pdHk6OkRvd25zdHJl
YW0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgIGFwcGx5U3R5bGVB
ZnRlckluc2VydGlvbihzdGFydEJsb2NrLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCAxYmIwZDA1Mjg3MGM0NTEzNjk5NDcx
OWQwZWMwNjViM2VkMDk2ZDQ4Li5lNmE2YzllNDNlYTFkMzIwYTVmOTExZGE4ZjdhN2NmMWM5ZmI0
ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApA
QCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgSW5zZXJ0VGV4dENvbW1hbmQ6OmRvQXBwbHkoKQogCiBQ
b3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3Mp
CiB7Ci0gICAgUG9zaXRpb24gaW5zZXJ0UG9zID0gVmlzaWJsZVBvc2l0aW9uKHBvcywgRE9XTlNU
UkVBTSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICBQb3NpdGlvbiBpbnNlcnRQb3MgPSBWaXNpYmxl
UG9zaXRpb24ocG9zKS5kZWVwRXF1aXZhbGVudCgpOwogICAgIGlmIChpbnNlcnRQb3MuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBwb3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRl
cmVkUG9zaXRpb24uY3BwCmluZGV4IGJkMGVlMWUxOTM1NzBhMGQ1MGZiNjJjYjFiMmI3MDAxZmZk
NmQ0N2YuLmM0MjY5MWE5Mzg5NmJiZjZmY2NiYmJhM2I2OGQwYzBlMDFhMzUxMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAtNjgsNyArNjgsNyBA
QCBSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcG9zaXRpb24pCiB7CiB9CiAKLVJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24o
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHkpCitSZW5kZXJlZFBv
c2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgQWZmaW5p
dHkgYWZmaW5pdHkpCiAgICAgOiBtX3ByZXZpb3VzTGVhZk9uTGluZSh1bmNhY2hlZElubGluZUJv
eCgpKQogICAgICwgbV9uZXh0TGVhZk9uTGluZSh1bmNhY2hlZElubGluZUJveCgpKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAppbmRleCA1ZDA4Yjk5NGVjMTI3
MTM2MDk5ODQ2MGVjNjZmOWE3YTI1OGNlY2RjLi42YTU0NGQ1MDg5NjBmZDliZDJhMTVjOWY5ZGI0
MjY5ODIyMzU0NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
aApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBSZW5kZXJlZFBvc2l0aW9uIHsKIHB1YmxpYzoKICAg
ICBSZW5kZXJlZFBvc2l0aW9uKCk7CiAgICAgZXhwbGljaXQgUmVuZGVyZWRQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mKTsKLSAgICBleHBsaWNpdCBSZW5kZXJlZFBvc2l0aW9uKGNvbnN0
IFBvc2l0aW9uJiwgRUFmZmluaXR5KTsKKyAgICBleHBsaWNpdCBSZW5kZXJlZFBvc2l0aW9uKGNv
bnN0IFBvc2l0aW9uJiwgQWZmaW5pdHkpOwogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IFJl
bmRlcmVkUG9zaXRpb24mKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIW1fcmVuZGVyZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggOTkzNGExMzU0ZmFlNjU5OWE0OTc5ODJjYmEwMGVh
NjcyZjJkNjc4ZC4uM2UzNmQxNGRjOTcyMzYyNTI0ODMwMDllZmQ1MGViMmI5M2U3YzhjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRv
QXBwbHkoKQogICAgIFJlZlB0cjxOb2RlPiBlbmRCUiA9IGluc2VydGlvblBvcy5kb3duc3RyZWFt
KCkuZGVwcmVjYXRlZE5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykgPyBpbnNlcnRpb25Qb3MuZG93
bnN0cmVhbSgpLmRlcHJlY2F0ZWROb2RlKCkgOiBudWxscHRyOwogICAgIFZpc2libGVQb3NpdGlv
biBvcmlnaW5hbFZpc1Bvc0JlZm9yZUVuZEJSOwogICAgIGlmIChlbmRCUikKLSAgICAgICAgb3Jp
Z2luYWxWaXNQb3NCZWZvcmVFbmRCUiA9IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJlZm9yZU5v
ZGUoZW5kQlIuZ2V0KCkpLCBET1dOU1RSRUFNKS5wcmV2aW91cygpOworICAgICAgICBvcmlnaW5h
bFZpc1Bvc0JlZm9yZUVuZEJSID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShl
bmRCUi5nZXQoKSkpLnByZXZpb3VzKCk7CiAgICAgCiAgICAgUmVmUHRyPE5vZGU+IGluc2VydGlv
bkJsb2NrID0gZW5jbG9zaW5nQmxvY2soaW5zZXJ0aW9uUG9zLmRlcHJlY2F0ZWROb2RlKCkpOwog
ICAgIApAQCAtMTU5Niw5ICsxNTk2LDkgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
Y29tcGxldGVIVE1MUmVwbGFjZW1lbnQoY29uc3QgUG9zaXRpb24gJmxhc3RQb3NpdGkKICAgICAg
ICAgbV92aXNpYmxlU2VsZWN0aW9uRm9ySW5zZXJ0ZWRUZXh0ID0gVmlzaWJsZVNlbGVjdGlvbihz
dGFydCwgZW5kKTsKIAogICAgIGlmIChtX3NlbGVjdFJlcGxhY2VtZW50KQotICAgICAgICBzZXRF
bmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydCwgZW5kLCBTRUxfREVGQVVMVF9B
RkZJTklUWSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIFZpc2libGVTZWxl
Y3Rpb246OmRlZmF1bHRBZmZpbml0eSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgp
KSk7CiAgICAgZWxzZQotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihlbmQsIFNFTF9ERUZBVUxUX0FGRklOSVRZLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlv
bmFsKCkpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5k
LCBWaXNpYmxlU2VsZWN0aW9uOjpkZWZhdWx0QWZmaW5pdHksIGVuZGluZ1NlbGVjdGlvbigpLmlz
RGlyZWN0aW9uYWwoKSkpOwogfQogCiB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjptZXJn
ZVRleHROb2Rlc0Fyb3VuZFBvc2l0aW9uKFBvc2l0aW9uJiBwb3NpdGlvbiwgUG9zaXRpb24mIHBv
c2l0aW9uT25seVRvQmVVcGRhdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0QWZmaW5pdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEFmZmluaXR5LmgK
aW5kZXggOTZiMjA2ZWJjNWY1MzY4MzRhZDQ1NTVjYzczYmFjZjk2MDA3Mzc1Mi4uOGMxZjc4YjU3
NzMwY2I4ZTRkNzU3MGE4MjFmYmFmYTk3NTgxMmY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0QWZmaW5pdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRBZmZpbml0eS5oCkBAIC0zMCw5ICszMCw0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFVw
c3RyZWFtIG1lYW5zIGJlZm9yZSBhIGxpbmUgYnJlYWssIGRvd25zdHJlYW0gbWVhbnMgYWZ0ZXIg
YSBsaW5lIGJyZWFrLgogZW51bSBjbGFzcyBBZmZpbml0eSA6IGJvb2wgeyBVcHN0cmVhbSwgRG93
bnN0cmVhbSB9OwogCi0vLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGRlcHJlY2F0ZWQgbmFtZXMgYWZ0
ZXIgcmVtb3ZpbmcgYWxsIHVzZXMgb2YgdGhlbS4KLXVzaW5nIEVBZmZpbml0eSA9IEFmZmluaXR5
Owotc3RhdGljIGNvbnN0ZXhwciBhdXRvIFVQU1RSRUFNID0gQWZmaW5pdHk6OlVwc3RyZWFtOwot
c3RhdGljIGNvbnN0ZXhwciBhdXRvIERPV05TVFJFQU0gPSBBZmZpbml0eTo6RG93bnN0cmVhbTsK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IDgwMDBlOGY0NWE2YmUyNjlmODg5YWQyMjk5YjVmMWViZjFmZjM0NjkuLjRm
NWM5MDFiYTI4ZDI2NjljY2ViM2VjNDQzNTE3MmVjZmNlNzYxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTk4Myw4ICs5ODMsOCBAQCBib29sIFRleHRJdGVy
YXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKQogICAgIC8vIGFuZCBpbiB0aGF0
IGNhc2Ugd2UnbGwgZ2V0IG51bGwuIFdlIGRvbid0IHdhbnQgdG8gcHV0IGluIG5ld2xpbmVzIGF0
IHRoZSBzdGFydCBpbiB0aGF0IGNhc2UuCiAgICAgLy8gVGhlIGN1cnJQb3MuaXNOb3ROdWxsKCkg
Y2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgcG9zaXRpb25zIGluIG5vbi1IVE1MIGNvbnRlbnQKICAg
ICAvLyAobGlrZSBTVkcpIGRvIG5vdCBoYXZlIHZpc2libGUgcG9zaXRpb25zLCBhbmQgd2UgZG9u
J3Qgd2FudCB0byBlbWl0IGZvciB0aGVtIGVpdGhlci4KLSAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnRQb3MgPSBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24obV9zdGFydENvbnRhaW5lciwgbV9zdGFy
dE9mZnNldCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciksIERPV05TVFJFQU0p
OwotICAgIFZpc2libGVQb3NpdGlvbiBjdXJyUG9zID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9u
QmVmb3JlTm9kZShtX25vZGUpLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnRQb3MgPSBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24obV9zdGFydENvbnRhaW5lciwgbV9zdGFy
dE9mZnNldCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcikpOworICAgIFZpc2li
bGVQb3NpdGlvbiBjdXJyUG9zID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZSht
X25vZGUpKTsKICAgICByZXR1cm4gc3RhcnRQb3MuaXNOb3ROdWxsKCkgJiYgY3VyclBvcy5pc05v
dE51bGwoKSAmJiAhaW5TYW1lTGluZShzdGFydFBvcywgY3VyclBvcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IGRjMDRlMjQ0OTQ3NjU3OTVmYTAw
ZTgzZDQ5OWYwZDQxNTA5NzIzOWIuLjkwY2MxMDU5MWJjNDBiMWQzOGE3YWI2MjczMjRlZWFhMjU2
NjY3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNjIx
LDcgKzYyMSw3IEBAIGJvb2wgVHlwaW5nQ29tbWFuZDo6bWFrZUVkaXRhYmxlUm9vdEVtcHR5KCkK
ICAgICAgICAgcmVtb3ZlTm9kZSgqY2hpbGQpOwogCiAgICAgYWRkQmxvY2tQbGFjZWhvbGRlcklm
TmVlZGVkKHJvb3QpOwotICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGZp
cnN0UG9zaXRpb25Jbk5vZGUocm9vdCksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlz
RGlyZWN0aW9uYWwoKSkpOworICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KGZpcnN0UG9zaXRpb25Jbk5vZGUocm9vdCksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBlbmRpbmdT
ZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
NjM0LDE0ICs2MzQsMTUgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBzaG91bGRBZGQKIAogICAgIFZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uVG9EZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b25BZnRlclVuZG87Ci0gICAgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSAhZW5kaW5n
U2VsZWN0aW9uKCkuaXNDYXJldCgpOworICAgIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRz
ID0gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKGVuZGluZ1NlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUo
KSkgewotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246CisgICAgQVNT
RVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOworCisgICAgaWYgKGVuZGlu
Z1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkgewogICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IGVu
ZGluZ1NlbGVjdGlvbigpOwogICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8gPSBzZWxlY3Rpb25U
b0RlbGV0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJl
dFNlbGVjdGlvbjogeworICAgICAgICBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSB0cnVlOwor
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFmdGVyIGJyZWFraW5nIG91dCBvZiBhbiBlbXB0eSBt
YWlsIGJsb2NrcXVvdGUsIHdlIHN0aWxsIHdhbnQgY29udGludWUgd2l0aCB0aGUgZGVsZXRpb24K
ICAgICAgICAgLy8gc28gYWN0dWFsIGNvbnRlbnQgd2lsbCBnZXQgZGVsZXRlZCwgYW5kIG5vdCBq
dXN0IHRoZSBxdW90ZSBzdHlsZS4KICAgICAgICAgaWYgKGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9j
a3F1b3RlZFBhcmFncmFwaCgpKQpAQCAtNjkxLDcgKzY5Miw3IEBAIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2hv
dWxkQWRkCiAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBncmFudWxhcml0eSk7
CiAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgdGFibGUsIHNlbGVjdCB0
aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KICAgICAgICAgfSBlbHNlIGlmIChO
b2RlKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUodmlzaWJsZVN0YXJ0KSkgewot
ICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25C
ZWZvcmVOb2RlKHRhYmxlKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgRE9XTlNUUkVBTSwg
ZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgICAgICAgICBzZXRFbmRp
bmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUodGFibGUpLCBl
bmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2Vs
ZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgICAgICAgICB0eXBpbmdBZGRlZFRvT3Bl
bkNvbW1hbmQoRGVsZXRlS2V5KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
NzExLDExICs3MTIsNiBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNob3VsZEFkZAogICAgICAgICAgICAgLy8g
V2UgY2FuJ3QgbGV0IHRoZSBWaXNpYmxlU2VsZWN0aW9uIGNsYXNzJ3MgdmFsaWRhdGlvbiBraWNr
IGluIG9yIGl0J2xsIGFkanVzdCBmb3IgdXMgYmFzZWQgb24KICAgICAgICAgICAgIC8vIHRoZSBj
dXJyZW50IHN0YXRlIG9mIHRoZSBkb2N1bWVudCBhbmQgd2UnbGwgZ2V0IHRoZSB3cm9uZyByZXN1
bHQuCiAgICAgICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8uc2V0V2l0aG91dFZhbGlkYXRpb24o
c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgc2VsZWN0aW9uVG9EZWxldGUuZXh0ZW50KCkpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVj
dGlvbjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAKICAgICBBU1NFUlQoIXNlbGVjdGlvblRvRGVsZXRlLmlzTm9uZSgpKTsKQEAgLTcy
OCwxMCArNzI0LDEwIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRkCiAjZW5kaWYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5pc0NhcmV0
KCkgfHwgIWRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2hvdWxkRGVsZXRlU2VsZWN0aW9uKHNlbGVj
dGlvblRvRGVsZXRlKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKCF3aWxsQWRk
VHlwaW5nVG9PcGVuQ29tbWFuZChEZWxldGVLZXksIGdyYW51bGFyaXR5LCB7IH0sIHNlbGVjdGlv
blRvRGVsZXRlLmZpcnN0UmFuZ2UoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzU5LDE0ICs3
NTUsMTUgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2gKIAogICAgIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uVG9EZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVu
ZG87Ci0gICAgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSAhZW5kaW5nU2VsZWN0aW9u
KCkuaXNDYXJldCgpOworICAgIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0gZmFsc2U7
CisKKyAgICBBU1NFUlQoZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2UoKSk7CiAKLSAg
ICBzd2l0Y2ggKGVuZGluZ1NlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKSkgewotICAgIGNhc2Ug
VmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246CisgICAgaWYgKGVuZGluZ1NlbGVjdGlv
bigpLmlzUmFuZ2UoKSkgewogICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IGVuZGluZ1NlbGVj
dGlvbigpOwogICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8gPSBzZWxlY3Rpb25Ub0RlbGV0ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlv
bjogeworICAgICAgICBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSB0cnVlOworICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fc21hcnREZWxldGUgPSBmYWxzZTsKIAogICAgICAgICAvLyBIYW5kbGUg
ZGVsZXRlIGF0IGJlZ2lubmluZy1vZi1ibG9jayBjYXNlLgpAQCAtNzkwLDcgKzc4Nyw3IEBAIHZv
aWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBib29sIHNoCiAgICAgICAgIC8vIFdoZW4gZGVsZXRpbmcgdGFibGVzOiBT
ZWxlY3QgdGhlIHRhYmxlIGZpcnN0LCB0aGVuIHBlcmZvcm0gdGhlIGRlbGV0aW9uCiAgICAgICAg
IGlmIChkb3duc3RyZWFtRW5kLmNvbnRhaW5lck5vZGUoKSAmJiBkb3duc3RyZWFtRW5kLmNvbnRh
aW5lck5vZGUoKS0+cmVuZGVyZXIoKSAmJiBkb3duc3RyZWFtRW5kLmNvbnRhaW5lck5vZGUoKS0+
cmVuZGVyZXIoKS0+aXNUYWJsZSgpCiAgICAgICAgICAgICAmJiBkb3duc3RyZWFtRW5kLmNvbXB1
dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA8PSBjYXJldE1pbk9mZnNldCgqZG93bnN0cmVhbUVu
ZC5jb250YWluZXJOb2RlKCkpKSB7Ci0gICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgcG9zaXRpb25BZnRlck5vZGUo
ZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCkpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rp
b24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLCBwb3NpdGlvbkFmdGVyTm9k
ZShkb3duc3RyZWFtRW5kLmNvbnRhaW5lck5vZGUoKSksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBl
bmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAgICAgICAgIHR5cGluZ0Fk
ZGVkVG9PcGVuQ29tbWFuZChGb3J3YXJkRGVsZXRlS2V5KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtODE5LDExICs4MTYsNiBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndh
cmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBzaAog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvLnNldFdpdGhvdXRW
YWxpZGF0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgZXh0ZW50KTsKICAgICAgICAg
fQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpOb1Nl
bGVjdGlvbjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICAKICAgICBBU1NFUlQoIXNlbGVjdGlvblRvRGVsZXRlLmlzTm9uZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBmMzNmMDE5OGIy
ZDRjMTg5Yzc4MjJkZGU2NTAwZTA5YWQyMjI2ZTUyLi5lODcyYzc2NTI2ZmMwZDMxMmU1ZjJmNTEx
NDM5MzY4ODAzNjRlNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotVmlzaWJsZVBvc2l0aW9uOjpWaXNpYmxlUG9zaXRpb24oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHkpCitWaXNpYmxlUG9zaXRp
b246OlZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIEFmZmluaXR5IGFm
ZmluaXR5KQogICAgIDogbV9kZWVwUG9zaXRpb24geyBjYW5vbmljYWxQb3NpdGlvbihwb3NpdGlv
bikgfQogewogICAgIGlmIChhZmZpbml0eSA9PSBBZmZpbml0eTo6VXBzdHJlYW0gJiYgIWlzTnVs
bCgpKSB7CkBAIC05MSwxNiArOTEsMTYgQEAgVmlzaWJsZVBvc2l0aW9uIFZpc2libGVQb3NpdGlv
bjo6cHJldmlvdXMoRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUsIGJvb2wKICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIH0KIAotICAgIFZpc2libGVQb3NpdGlv
biBwcmV2ID0gVmlzaWJsZVBvc2l0aW9uKHBvcywgRE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVBv
c2l0aW9uIHByZXYgPSBwb3M7CiAgICAgQVNTRVJUKHByZXYgIT0gKnRoaXMpOwogCi0jaWZuZGVm
IE5ERUJVRwotICAgIC8vIHdlIHNob3VsZCBhbHdheXMgYmUgYWJsZSB0byBtYWtlIHRoZSBhZmZp
bml0eSBET1dOU1RSRUFNLCBiZWNhdXNlIGdvaW5nIHByZXZpb3VzIGZyb20gYW4KLSAgICAvLyBV
UFNUUkVBTSBwb3NpdGlvbiBjYW4gbmV2ZXIgeWllbGQgYW5vdGhlciBVUFNUUkVBTSBwb3NpdGlv
biAodW5sZXNzIGxpbmUgd3JhcCBsZW5ndGggaXMgMCEpLgotICAgIGlmIChwcmV2LmlzTm90TnVs
bCgpICYmIG1fYWZmaW5pdHkgPT0gVVBTVFJFQU0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHRlbXAgPSBwcmV2OwotICAgICAgICB0ZW1wLnNldEFmZmluaXR5KFVQU1RSRUFNKTsKLSAgICAg
ICAgQVNTRVJUKGluU2FtZUxpbmUodGVtcCwgcHJldikpOworI2lmIEFTU0VSVF9FTkFCTEVECisg
ICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIG1ha2UgdGhlIGFmZmluaXR5IGRvd25z
dHJlYW0sIGJlY2F1c2UgZ29pbmcgcHJldmlvdXMgZnJvbSBhbgorICAgIC8vIHVwc3RyZWFtIHBv
c2l0aW9uIGNhbiBuZXZlciB5aWVsZCBhbm90aGVyIHVwc3RyZWFtIHBvc2l0aW9uIHVubGVzcyBs
aW5lIHdyYXAgbGVuZ3RoIGlzIDAuCisgICAgaWYgKHByZXYuaXNOb3ROdWxsKCkgJiYgbV9hZmZp
bml0eSA9PSBBZmZpbml0eTo6VXBzdHJlYW0pIHsKKyAgICAgICAgYXV0byB1cHN0cmVhbUNvcHkg
PSBwcmV2OworICAgICAgICB1cHN0cmVhbUNvcHkuc2V0QWZmaW5pdHkoQWZmaW5pdHk6OlVwc3Ry
ZWFtKTsKKyAgICAgICAgQVNTRVJUKGluU2FtZUxpbmUodXBzdHJlYW1Db3B5LCBwcmV2KSk7CiAg
ICAgfQogI2VuZGlmCiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBWaXNpYmxlUG9zaXRpb24gVmlzaWJs
ZVBvc2l0aW9uOjpsZWZ0KGJvb2wgc3RheUluRWRpdGFibGVDb250ZW50LCBib29sKiByZWFjaGVk
QgogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQogCi0gICAgVmlzaWJs
ZVBvc2l0aW9uIGxlZnQgPSBWaXNpYmxlUG9zaXRpb24ocG9zLCBET1dOU1RSRUFNKTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gbGVmdCA9IHBvczsKICAgICBBU1NFUlQobGVmdCAhPSAqdGhpcyk7CiAK
ICAgICBpZiAoIXN0YXlJbkVkaXRhYmxlQ29udGVudCkKQEAgLTQyOSw3ICs0MjksNyBAQCBWaXNp
YmxlUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodChib29sIHN0YXlJbkVkaXRhYmxlQ29u
dGVudCwgYm9vbCogcmVhY2hlZAogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAg
ICAgfQogCi0gICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0ID0gVmlzaWJsZVBvc2l0aW9uKHBvcywg
RE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0ID0gcG9zOwogICAgIEFTU0VS
VChyaWdodCAhPSAqdGhpcyk7CiAKICAgICBpZiAoIXN0YXlJbkVkaXRhYmxlQ29udGVudCkKQEAg
LTc0MSwxMyArNzQxLDEzIEBAIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBv
aW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgcmV0dXJuIG1ha2VCb3Vu
ZGFyeVBvaW50KHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgRUFmZmluaXR5IGFmZmluaXR5KQorVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIEFmZmluaXR5IGFmZmluaXR5KQog
ewogICAgIHN3aXRjaCAoYWZmaW5pdHkpIHsKLSAgICBjYXNlIFVQU1RSRUFNOgorICAgIGNhc2Ug
QWZmaW5pdHk6OlVwc3RyZWFtOgogICAgICAgICBzdHJlYW0gPDwgInVwc3RyZWFtIjsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBET1dOU1RSRUFNOgorICAgIGNhc2UgQWZmaW5pdHk6OkRvd25z
dHJlYW06CiAgICAgICAgIHN0cmVhbSA8PCAiZG93bnN0cmVhbSI7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCmluZGV4
IGExNDZkYjI4ZGQ2MzU5OTQ4ZDZkYTZkNTM4NWRjZTAxY2UwZTcxNzYuLjQzZGVlMGExZGY4N2Yw
NjhlNzA4ZWRjYWNmNzRiZDAwOWNhYjEwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtNDQsMjMgKzQ0LDIxIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oKQotICAgIDogbV9hZmZp
bml0eShET1dOU1RSRUFNKQotICAgICwgbV9zZWxlY3Rpb25UeXBlKE5vU2VsZWN0aW9uKQotICAg
ICwgbV9iYXNlSXNGaXJzdCh0cnVlKQorICAgIDogbV9iYXNlSXNGaXJzdCh0cnVlKQogICAgICwg
bV9pc0RpcmVjdGlvbmFsKGZhbHNlKQogewogfQogCi1WaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxl
U2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3MsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBp
c0RpcmVjdGlvbmFsKQotICAgIDogbV9iYXNlKHBvcykKLSAgICAsIG1fZXh0ZW50KHBvcykKK1Zp
c2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
LCBBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQorICAgIDogbV9iYXNlKHBv
c2l0aW9uKQorICAgICwgbV9leHRlbnQocG9zaXRpb24pCiAgICAgLCBtX2FmZmluaXR5KGFmZmlu
aXR5KQogICAgICwgbV9pc0RpcmVjdGlvbmFsKGlzRGlyZWN0aW9uYWwpCiB7CiAgICAgdmFsaWRh
dGUoKTsKIH0KIAotVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3Np
dGlvbiYgYmFzZSwgY29uc3QgUG9zaXRpb24mIGV4dGVudCwgRUFmZmluaXR5IGFmZmluaXR5LCBi
b29sIGlzRGlyZWN0aW9uYWwpCitWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNv
bnN0IFBvc2l0aW9uJiBiYXNlLCBjb25zdCBQb3NpdGlvbiYgZXh0ZW50LCBBZmZpbml0eSBhZmZp
bml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQogICAgIDogbV9iYXNlKGJhc2UpCiAgICAgLCBtX2V4
dGVudChleHRlbnQpCiAgICAgLCBtX2FmZmluaXR5KGFmZmluaXR5KQpAQCAtNjksMTAgKzY3LDEw
IEBAIFZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mIGJh
c2UsIGNvbnN0IFBvc2l0aW9uJiBleHRlbnQsCiAgICAgdmFsaWRhdGUoKTsKIH0KIAotVmlzaWJs
ZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvcywg
Ym9vbCBpc0RpcmVjdGlvbmFsKQotICAgIDogbV9iYXNlKHBvcy5kZWVwRXF1aXZhbGVudCgpKQot
ICAgICwgbV9leHRlbnQocG9zLmRlZXBFcXVpdmFsZW50KCkpCi0gICAgLCBtX2FmZmluaXR5KHBv
cy5hZmZpbml0eSgpKQorVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGlzRGlyZWN0aW9uYWwpCisgICAgOiBtX2Jh
c2UocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkKKyAgICAsIG1fZXh0ZW50KHBvc2l0aW9uLmRl
ZXBFcXVpdmFsZW50KCkpCisgICAgLCBtX2FmZmluaXR5KHBvc2l0aW9uLmFmZmluaXR5KCkpCiAg
ICAgLCBtX2lzRGlyZWN0aW9uYWwoaXNEaXJlY3Rpb25hbCkKIHsKICAgICB2YWxpZGF0ZSgpOwpA
QCAtODcsNyArODUsNyBAQCBWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYmFzZSwgY29uc3QgVmlzaWJsZVBvcwogICAgIHZhbGlkYXRlKCk7
CiB9CiAKLVZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFu
Z2UmIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKK1Zpc2li
bGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBB
ZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQogICAgIDogbV9iYXNlKGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgcmFuZ2Uuc3Rh
cnRPZmZzZXQoKSkpCiAgICAgLCBtX2V4dGVudChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
JnJhbmdlLmVuZENvbnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSkpCiAgICAgLCBtX2FmZmlu
aXR5KGFmZmluaXR5KQpAQCAtMTAwLDcgKzk4LDcgQEAgVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJs
ZVNlbGVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwK
IFZpc2libGVTZWxlY3Rpb24gVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRz
T2ZOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKCFlZGl0aW5nSWdub3Jlc0NvbnRlbnQo
Km5vZGUpKTsKLSAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2Rl
KG5vZGUpLCBsYXN0UG9zaXRpb25Jbk5vZGUobm9kZSksIERPV05TVFJFQU0pOworICAgIHJldHVy
biBWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZSksIGxhc3RQb3NpdGlv
bkluTm9kZShub2RlKSk7CiB9CiAKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0QmFzZShjb25z
dCBQb3NpdGlvbiYgcG9zaXRpb24pCkBAIC0zMTksMTAgKzMxNywxMCBAQCB2b2lkIFZpc2libGVT
ZWxlY3Rpb246OnNldFN0YXJ0QW5kRW5kRnJvbUJhc2VBbmRFeHRlbnRSZXNwZWN0aW5nR3JhbnVs
YXJpdHkoVGV4dAogICAgICAgICAgICAgbV9lbmQgPSBlbmRPZkxpbmUoVmlzaWJsZVBvc2l0aW9u
KG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6IHsK
LSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zdGFydCwgbV9hZmZpbml0eSk7Ci0g
ICAgICAgICAgICBpZiAoaXNTdGFydE9mTGluZShwb3MpICYmIGlzRW5kT2ZFZGl0YWJsZU9yTm9u
RWRpdGFibGVDb250ZW50KHBvcykpCi0gICAgICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3Vz
KCk7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChwb3MpLmRlZXBFcXVp
dmFsZW50KCk7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24obV9zdGFydCwg
bV9hZmZpbml0eSk7CisgICAgICAgICAgICBpZiAoaXNTdGFydE9mTGluZShwb3NpdGlvbikgJiYg
aXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQocG9zaXRpb24pKQorICAgICAgICAg
ICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24ucHJldmlvdXMoKTsKKyAgICAgICAgICAgIG1fc3Rh
cnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvc2l0aW9uKS5kZWVwRXF1aXZhbGVudCgpOwogICAgICAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFncmFw
aChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gSW5jbHVkZSB0aGUgInBhcmFncmFwaCBicmVhayIgKHRoZSBzcGFjZSBmcm9t
IHRoZSBlbmQgb2YgdGhpcyBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0CkBAIC0zNzMsMTUgKzM3MSwx
NCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnVwZGF0ZVNlbGVjdGlvblR5cGUoKQogewogICAg
IGlmIChtX3N0YXJ0LmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2VuZC5pc051bGwoKSk7
Ci0gICAgICAgIG1fc2VsZWN0aW9uVHlwZSA9IE5vU2VsZWN0aW9uOwotICAgIH0gZWxzZSBpZiAo
bV9zdGFydCA9PSBtX2VuZCB8fCBtX3N0YXJ0LnVwc3RyZWFtKCkgPT0gbV9lbmQudXBzdHJlYW0o
KSkgewotICAgICAgICBtX3NlbGVjdGlvblR5cGUgPSBDYXJldFNlbGVjdGlvbjsKLSAgICB9IGVs
c2UKLSAgICAgICAgbV9zZWxlY3Rpb25UeXBlID0gUmFuZ2VTZWxlY3Rpb247Ci0KLSAgICAvLyBB
ZmZpbml0eSBvbmx5IG1ha2VzIHNlbnNlIGZvciBhIGNhcmV0Ci0gICAgaWYgKG1fc2VsZWN0aW9u
VHlwZSAhPSBDYXJldFNlbGVjdGlvbikKLSAgICAgICAgbV9hZmZpbml0eSA9IERPV05TVFJFQU07
CisgICAgICAgIG1fdHlwZSA9IFR5cGU6Ok5vbmU7CisgICAgICAgIG1fYWZmaW5pdHkgPSBBZmZp
bml0eTo6RG93bnN0cmVhbTsKKyAgICB9IGVsc2UgaWYgKG1fc3RhcnQgPT0gbV9lbmQgfHwgbV9z
dGFydC51cHN0cmVhbSgpID09IG1fZW5kLnVwc3RyZWFtKCkpCisgICAgICAgIG1fdHlwZSA9IFR5
cGU6OkNhcmV0OworICAgIGVsc2UgeworICAgICAgICBtX3R5cGUgPSBUeXBlOjpSYW5nZTsKKyAg
ICAgICAgbV9hZmZpbml0eSA9IEFmZmluaXR5OjpEb3duc3RyZWFtOworICAgIH0KIH0KIAogdm9p
ZCBWaXNpYmxlU2VsZWN0aW9uOjp2YWxpZGF0ZShUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkp
CkBAIC0zOTIsNyArMzg5LDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjp2YWxpZGF0ZShUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgYWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3Nz
aW5nRWRpdGluZ0JvdW5kYXJpZXMoKTsKICAgICB1cGRhdGVTZWxlY3Rpb25UeXBlKCk7CiAKLSAg
ICBpZiAoc2VsZWN0aW9uVHlwZSgpID09IFJhbmdlU2VsZWN0aW9uKSB7CisgICAgaWYgKGlzUmFu
Z2UoKSkgewogICAgICAgICAvLyAiQ29uc3RyYWluIiB0aGUgc2VsZWN0aW9uIHRvIGJlIHRoZSBz
bWFsbGVzdCBlcXVpdmFsZW50IHJhbmdlIG9mIG5vZGVzLgogICAgICAgICAvLyBUaGlzIGlzIGEg
c29tZXdoYXQgYXJiaXRyYXJ5IGNob2ljZSwgYnV0IGV4cGVyaWVuY2Ugc2hvd3MgdGhhdCBpdCBp
cwogICAgICAgICAvLyB1c2VmdWwgdG8gbWFrZSB0byBtYWtlIHRoZSBzZWxlY3Rpb24gImNhbm9u
aWNhbCIgKGlmIG9ubHkgZm9yCkBAIC00MjEsNyArNDE4LDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0
aW9uOjpzZXRXaXRob3V0VmFsaWRhdGlvbihjb25zdCBQb3NpdGlvbiYgYmFzZSwgY29uc3QgUG9z
aXRpb24KIHsKICAgICBBU1NFUlQoIWJhc2UuaXNOdWxsKCkpOwogICAgIEFTU0VSVCghZXh0ZW50
LmlzTnVsbCgpKTsKLSAgICBBU1NFUlQobV9hZmZpbml0eSA9PSBET1dOU1RSRUFNKTsKKyAgICBB
U1NFUlQobV9hZmZpbml0eSA9PSBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgbV9iYXNlID0g
YmFzZTsKICAgICBtX2V4dGVudCA9IGV4dGVudDsKICAgICBtX2Jhc2VJc0ZpcnN0ID0gYmFzZSA8
PSBleHRlbnQ7CkBAIC00MzIsNyArNDI5LDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjpzZXRX
aXRob3V0VmFsaWRhdGlvbihjb25zdCBQb3NpdGlvbiYgYmFzZSwgY29uc3QgUG9zaXRpb24KICAg
ICAgICAgbV9zdGFydCA9IGV4dGVudDsKICAgICAgICAgbV9lbmQgPSBiYXNlOwogICAgIH0KLSAg
ICBtX3NlbGVjdGlvblR5cGUgPSBiYXNlID09IGV4dGVudCA/IENhcmV0U2VsZWN0aW9uIDogUmFu
Z2VTZWxlY3Rpb247CisgICAgbV90eXBlID0gYmFzZSA9PSBleHRlbnQgPyBUeXBlOjpDYXJldCA6
IFR5cGU6OlJhbmdlOwogfQogCiBQb3NpdGlvbiBWaXNpYmxlU2VsZWN0aW9uOjphZGp1c3RQb3Np
dGlvbkZvckVuZChjb25zdCBQb3NpdGlvbiYgY3VycmVudFBvc2l0aW9uLCBOb2RlKiBzdGFydENv
bnRhaW5lck5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCmlu
ZGV4IDg3NmRlMTg2OTU0M2M1MjRlZGRjNDY1Mzc4ODVmOTE0ZDc4M2VmNTEuLjAzYjY0ZGEzM2Vm
MzhkYTMwMmMzMGExODE0Y2VmOTU4MGU2YzdiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNTMgKzMxLDQ2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgUG9zaXRpb247Ci0KLXN0cnVjdCBTaW1wbGVSYW5nZTsKLQotY29u
c3QgRUFmZmluaXR5IFNFTF9ERUZBVUxUX0FGRklOSVRZID0gRE9XTlNUUkVBTTsKIGVudW0gY2xh
c3MgU2VsZWN0aW9uRGlyZWN0aW9uIDogdWludDhfdCB7IEZvcndhcmQsIEJhY2t3YXJkLCBSaWdo
dCwgTGVmdCB9OwogCiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVt
IFNlbGVjdGlvblR5cGUgeyBOb1NlbGVjdGlvbiwgQ2FyZXRTZWxlY3Rpb24sIFJhbmdlU2VsZWN0
aW9uIH07Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKCk7CiAKLSAgICBW
aXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBib29sIGlzRGlyZWN0
aW9uYWwgPSBmYWxzZSk7Ci0gICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYsIGNv
bnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNE
aXJlY3Rpb25hbCA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9u
KGNvbnN0IFNpbXBsZVJhbmdlJiwgRUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJv
b2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVm
YXVsdEFmZmluaXR5ID0gVmlzaWJsZVBvc2l0aW9uOjpkZWZhdWx0QWZmaW5pdHk7CisKKyAgICBW
aXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgQWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rp
b25hbCA9IGZhbHNlKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29u
c3QgUG9zaXRpb24mLCBBZmZpbml0eSA9IGRlZmF1bHRBZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlv
bmFsID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3Qg
U2ltcGxlUmFuZ2UmLCBBZmZpbml0eSA9IGRlZmF1bHRBZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlv
bmFsID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogICAgIFdFQkNP
UkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uRnJvbUNvbnRlbnRz
T2ZOb2RlKE5vZGUqKTsKIAotICAgIFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0aW9uVHlwZTsgfQotCi0gICAgdm9pZCBzZXRBZmZpbml0eShFQWZm
aW5pdHkgYWZmaW5pdHkpIHsgbV9hZmZpbml0eSA9IGFmZmluaXR5OyB9Ci0gICAgRUFmZmluaXR5
IGFmZmluaXR5KCkgY29uc3QgeyByZXR1cm4gbV9hZmZpbml0eTsgfQorICAgIHZvaWQgc2V0QWZm
aW5pdHkoQWZmaW5pdHkgYWZmaW5pdHkpIHsgbV9hZmZpbml0eSA9IGFmZmluaXR5OyB9CisgICAg
QWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdCB7IHJldHVybiBtX2FmZmluaXR5OyB9CiAKICAgICB2
b2lkIHNldEJhc2UoY29uc3QgUG9zaXRpb24mKTsKICAgICB2b2lkIHNldEJhc2UoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJik7CiAgICAgdm9pZCBzZXRFeHRlbnQoY29uc3QgUG9zaXRpb24mKTsKICAg
ICB2b2lkIHNldEV4dGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLSAgICAKKwogICAgIFBv
c2l0aW9uIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICBQb3NpdGlvbiBleHRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2V4dGVudDsgfQogICAgIFBvc2l0aW9uIHN0YXJ0KCkgY29u
c3QgeyByZXR1cm4gbV9zdGFydDsgfQogICAgIFBvc2l0aW9uIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5kOyB9CiAgICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCgpIGNvbnN0
IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBpc1JhbmdlKCkgPyBET1dOU1RSRUFN
IDogYWZmaW5pdHkoKSk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCgpIGNvbnN0
IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX2VuZCwgaXNSYW5nZSgpID8gVVBTVFJFQU0gOiBh
ZmZpbml0eSgpKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlQmFzZSgpIGNvbnN0IHsg
cmV0dXJuIFZpc2libGVQb3NpdGlvbihtX2Jhc2UsIGlzUmFuZ2UoKSA/IChpc0Jhc2VGaXJzdCgp
ID8gVVBTVFJFQU0gOiBET1dOU1RSRUFNKSA6IGFmZmluaXR5KCkpOyB9Ci0gICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVFeHRlbnQoKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24obV9l
eHRlbnQsIGlzUmFuZ2UoKSA/IChpc0Jhc2VGaXJzdCgpID8gRE9XTlNUUkVBTSA6IFVQU1RSRUFN
KSA6IGFmZmluaXR5KCkpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBpc1JhbmdlKCkgPyBBZmZpbml0
eTo6RG93bnN0cmVhbSA6IGFmZmluaXR5KCkpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVFbmQoKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24obV9lbmQsIGlzUmFuZ2UoKSA/
IEFmZmluaXR5OjpVcHN0cmVhbSA6IGFmZmluaXR5KCkpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVCYXNlKCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG1fYmFzZSwgaXNS
YW5nZSgpID8gKGlzQmFzZUZpcnN0KCkgPyBBZmZpbml0eTo6VXBzdHJlYW0gOiBBZmZpbml0eTo6
RG93bnN0cmVhbSkgOiBhZmZpbml0eSgpKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
RXh0ZW50KCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG1fZXh0ZW50LCBpc1Jhbmdl
KCkgPyAoaXNCYXNlRmlyc3QoKSA/IEFmZmluaXR5OjpEb3duc3RyZWFtIDogQWZmaW5pdHk6OlVw
c3RyZWFtKSA6IGFmZmluaXR5KCkpOyB9CiAKICAgICBvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25S
YW5nZSgpIGNvbnN0IHsgcmV0dXJuIHsgdmlzaWJsZVN0YXJ0KCksIHZpc2libGVFbmQoKSB9OyB9
CiAKLSAgICBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGlvblR5cGUoKSA9PSBO
b1NlbGVjdGlvbjsgfQotICAgIGJvb2wgaXNDYXJldCgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGlv
blR5cGUoKSA9PSBDYXJldFNlbGVjdGlvbjsgfQotICAgIGJvb2wgaXNSYW5nZSgpIGNvbnN0IHsg
cmV0dXJuIHNlbGVjdGlvblR5cGUoKSA9PSBSYW5nZVNlbGVjdGlvbjsgfQotICAgIGJvb2wgaXND
YXJldE9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiBzZWxlY3Rpb25UeXBlKCkgIT0gTm9TZWxlY3Rp
b247IH0KKyAgICBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpO
b25lOyB9CisgICAgYm9vbCBpc0NhcmV0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6
OkNhcmV0OyB9CisgICAgYm9vbCBpc1JhbmdlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OlJhbmdlOyB9CisgICAgYm9vbCBpc0NhcmV0T3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuICFp
c05vbmUoKTsgfQogICAgIGJvb2wgaXNOb25PcnBoYW5lZFJhbmdlKCkgY29uc3QgeyByZXR1cm4g
aXNSYW5nZSgpICYmICFzdGFydCgpLmlzT3JwaGFuKCkgJiYgIWVuZCgpLmlzT3JwaGFuKCk7IH0K
ICAgICBib29sIGlzTm9uZU9yT3JwaGFuZWQoKSBjb25zdCB7IHJldHVybiBpc05vbmUoKSB8fCBz
dGFydCgpLmlzT3JwaGFuKCkgfHwgZW5kKCkuaXNPcnBoYW4oKTsgfQogCkBAIC0xMjksMzUgKzEy
MiwzNSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3NzaW5n
RWRpdGluZ0JvdW5kYXJpZXMoKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvblR5cGUoKTsKIAot
ICAgIC8vIFdlIG5lZWQgdG8gc3RvcmUgdGhlc2UgYXMgUG9zaXRpb25zIGJlY2F1c2UgVmlzaWJs
ZVNlbGVjdGlvbiBpcwotICAgIC8vIHVzZWQgdG8gc3RvcmUgdmFsdWVzIGluIGVkaXRpbmcgY29t
bWFuZHMgZm9yIHVzZSB3aGVuCi0gICAgLy8gdW5kb2luZyB0aGUgY29tbWFuZC4gV2UgbmVlZCB0
byBiZSBhYmxlIHRvIGNyZWF0ZSBhIHNlbGVjdGlvbiB0aGF0LCB3aGlsZSBjdXJyZW50bHkKLSAg
ICAvLyBpbnZhbGlkLCB3aWxsIGJlIHZhbGlkIG9uY2UgdGhlIGNoYW5nZXMgYXJlIHVuZG9uZS4K
KyAgICAvLyBXZSBzdG9yZSB0aGVzZSBhcyBQb3NpdGlvbnMgYmVjYXVzZSBWaXNpYmxlU2VsZWN0
aW9uIGlzIHVzZWQgdG8gc3RvcmUgdmFsdWVzIGluCisgICAgLy8gZWRpdGluZyBjb21tYW5kcyBm
b3IgdXNlIHdoZW4gdW5kb2luZyB0aGUgY29tbWFuZC4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIHN0
b3JlCisgICAgLy8gYSBzZWxlY3Rpb24gdGhhdCwgd2hpbGUgY3VycmVudGx5IGludmFsaWQsIHdp
bGwgYmUgdmFsaWQgb25jZSB0aGUgY2hhbmdlcyBhcmUgdW5kb25lLgorCisgICAgUG9zaXRpb24g
bV9iYXNlOyAvLyBXaGVyZSB0aGUgZmlyc3QgY2xpY2sgaGFwcGVuZWQuCisgICAgUG9zaXRpb24g
bV9leHRlbnQ7IC8vIFdoZXJlIHRoZSBlbmQgY2xpY2sgaGFwcGVuZWQuCiAKLSAgICBQb3NpdGlv
biBtX2Jhc2U7ICAgLy8gV2hlcmUgdGhlIGZpcnN0IGNsaWNrIGhhcHBlbmVkCi0gICAgUG9zaXRp
b24gbV9leHRlbnQ7IC8vIFdoZXJlIHRoZSBlbmQgY2xpY2sgaGFwcGVuZWQKLSAgICBQb3NpdGlv
biBtX3N0YXJ0OyAgLy8gTGVmdG1vc3QgcG9zaXRpb24gd2hlbiBleHBhbmRlZCB0byByZXNwZWN0
IGdyYW51bGFyaXR5Ci0gICAgUG9zaXRpb24gbV9lbmQ7ICAgIC8vIFJpZ2h0bW9zdCBwb3NpdGlv
biB3aGVuIGV4cGFuZGVkIHRvIHJlc3BlY3QgZ3JhbnVsYXJpdHkKKyAgICBQb3NpdGlvbiBtX3N0
YXJ0OyAvLyBMZWZ0bW9zdCBwb3NpdGlvbiB3aGVuIGV4cGFuZGVkIHRvIHJlc3BlY3QgZ3JhbnVs
YXJpdHkuCisgICAgUG9zaXRpb24gbV9lbmQ7IC8vIFJpZ2h0bW9zdCBwb3NpdGlvbiB3aGVuIGV4
cGFuZGVkIHRvIHJlc3BlY3QgZ3JhbnVsYXJpdHkuCiAKLSAgICBFQWZmaW5pdHkgbV9hZmZpbml0
eTsgICAgICAgICAgIC8vIHRoZSB1cHN0cmVhbS9kb3duc3RyZWFtIGFmZmluaXR5IG9mIHRoZSBj
YXJldAorICAgIEFmZmluaXR5IG1fYWZmaW5pdHkgeyBkZWZhdWx0QWZmaW5pdHkgfTsKIAotICAg
IC8vIHRoZXNlIGFyZSBjYWNoZWQsIGNhbiBiZSByZWNhbGN1bGF0ZWQgYnkgdmFsaWRhdGUoKQot
ICAgIFNlbGVjdGlvblR5cGUgbV9zZWxlY3Rpb25UeXBlOyAvLyBOb25lLCBDYXJldCwgUmFuZ2UK
LSAgICBib29sIG1fYmFzZUlzRmlyc3QgOiAxOyAvLyBUcnVlIGlmIGJhc2UgaXMgYmVmb3JlIHRo
ZSBleHRlbnQKKyAgICAvLyBUaGVzZSBhcmUgY2FjaGVkLCBjYW4gYmUgcmVjYWxjdWxhdGVkIGJ5
IHZhbGlkYXRlKCkKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTm9uZSwgQ2FyZXQs
IFJhbmdlIH07CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAgYm9vbCBtX2Jh
c2VJc0ZpcnN0IDogMTsgLy8gVHJ1ZSBpZiBiYXNlIGlzIGJlZm9yZSB0aGUgZXh0ZW50LgogICAg
IGJvb2wgbV9pc0RpcmVjdGlvbmFsIDogMTsgLy8gTm9uLWRpcmVjdGlvbmFsIGlnbm9yZXMgbV9i
YXNlSXNGaXJzdCBhbmQgc2VsZWN0aW9uIGFsd2F5cyBleHRlbmRzIG9uIHNoaWZ0ICsgYXJyb3cg
a2V5LgogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBhLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBiKQogewotICAgIHJldHVybiBhLnN0YXJ0KCkg
PT0gYi5zdGFydCgpICYmIGEuZW5kKCkgPT0gYi5lbmQoKSAmJiBhLmFmZmluaXR5KCkgPT0gYi5h
ZmZpbml0eSgpICYmIGEuaXNCYXNlRmlyc3QoKSA9PSBiLmlzQmFzZUZpcnN0KCkKLSAgICAgICAg
JiYgYS5pc0RpcmVjdGlvbmFsKCkgPT0gYi5pc0RpcmVjdGlvbmFsKCk7CisgICAgcmV0dXJuIGEu
c3RhcnQoKSA9PSBiLnN0YXJ0KCkgJiYgYS5lbmQoKSA9PSBiLmVuZCgpICYmIGEuYWZmaW5pdHko
KSA9PSBiLmFmZmluaXR5KCkgJiYgYS5pc0Jhc2VGaXJzdCgpID09IGIuaXNCYXNlRmlyc3QoKSAm
JiBhLmlzRGlyZWN0aW9uYWwoKSA9PSBiLmlzRGlyZWN0aW9uYWwoKTsKIH0KIAogaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBhLCBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7CiB9Ci0gICAgCisKIFdFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA5YzVlMTkxOTZkMTc4MzVjY2ZiODk3
NmUwMDRiMDFmMGM3MGMxYTJmLi5jYTg3YTIwYjM5ZDA1ODMzZGQ1MDkzMjQ4MmVhNTg3NTgxMTU3
YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0yMjgsNyAr
MjI4LDcgQEAgc3RhdGljIGNvbnN0IElubGluZUJveCogbG9naWNhbGx5UHJldmlvdXNCb3goY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXQKICAgICAgICAgaWYgKHBvc2l0aW9uLmlz
TnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiBy
ZW5kZXJlZFBvc2l0aW9uKHBvc2l0aW9uLCBET1dOU1RSRUFNKTsKKyAgICAgICAgUmVuZGVyZWRQ
b3NpdGlvbiByZW5kZXJlZFBvc2l0aW9uKHBvc2l0aW9uLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7
CiAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdCA9IHJlbmRlcmVkUG9zaXRpb24u
cm9vdEJveCgpOwogICAgICAgICBpZiAoIXByZXZpb3VzUm9vdCkKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxvZ2ljYWxseU5l
eHRCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCiAgICAgICAgIGlm
IChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFJlbmRl
cmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwgRE9XTlNUUkVBTSk7CisgICAg
ICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwgQWZmaW5pdHk6
OkRvd25zdHJlYW0pOwogICAgICAgICBSb290SW5saW5lQm94KiBuZXh0Um9vdCA9IHJlbmRlcmVk
UG9zaXRpb24ucm9vdEJveCgpOwogICAgICAgICBpZiAoIW5leHRSb290KQogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5l
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGludAogICAg
IEVsZW1lbnQqIHJvb3RFbGVtZW50ID0gcm9vdEVkaXRhYmxlT3JEb2N1bWVudEVsZW1lbnQoKm5v
ZGUsIGVkaXRhYmxlVHlwZSk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3Np
dGlvbkluTm9kZShyb290RWxlbWVudCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBmaXJzdFBv
c2l0aW9uSW5Ob2RlKHJvb3RFbGVtZW50KTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5l
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGludCBsaW5l
RGlyZWN0aW9uUG9pbnQsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCkBAIC0xMDk5LDcgKzEw
OTksNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50IGxpbgogICAgIEVsZW1lbnQqIHJvb3RFbGVtZW50
ID0gcm9vdEVkaXRhYmxlT3JEb2N1bWVudEVsZW1lbnQoKm5vZGUsIGVkaXRhYmxlVHlwZSk7CiAg
ICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwot
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5Ob2RlKHJvb3RFbGVtZW50
KSwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIGxhc3RQb3NpdGlvbkluTm9kZShyb290RWxlbWVu
dCk7CiB9CiAKIC8vIC0tLS0tLS0tLQpAQCAtMTI5MiwxNCArMTI5MiwxNCBAQCBWaXNpYmxlUG9z
aXRpb24gc3RhcnRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEVkaXRpbmdC
b3VuZGFyeUNyb3NzaQogICAgIGF1dG8qIG5vZGUgPSBmaW5kU3RhcnRPZlBhcmFncmFwaChzdGFy
dE5vZGUsIGhpZ2hlc3RSb290LCBzdGFydEJsb2NrLCBvZmZzZXQsIHR5cGUsIGJvdW5kYXJ5Q3Jv
c3NpbmdSdWxlKTsKICAgICAKICAgICBpZiAoaXM8VGV4dD4obm9kZSkpCi0gICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZG93bmNhc3Q8VGV4dD4obm9kZSksIG9mZnNldCks
IERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gUG9zaXRpb24oZG93bmNhc3Q8VGV4dD4obm9k
ZSksIG9mZnNldCk7CiAgICAgCiAgICAgaWYgKHR5cGUgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNP
ZmZzZXRJbkFuY2hvcikgewogICAgICAgICBBU1NFUlQodHlwZSA9PSBQb3NpdGlvbjo6UG9zaXRp
b25Jc09mZnNldEluQW5jaG9yIHx8ICFvZmZzZXQpOwotICAgICAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKFBvc2l0aW9uKG5vZGUsIG9mZnNldCwgdHlwZSksIERPV05TVFJFQU0pOworICAgICAg
ICByZXR1cm4gUG9zaXRpb24obm9kZSwgb2Zmc2V0LCB0eXBlKTsKICAgICB9CiAgICAgCi0gICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihub2RlLCB0eXBlKSwgRE9XTlNUUkVBTSk7
CisgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUsIHR5cGUpOwogfQogCiBWaXNpYmxlUG9zaXRpb24g
ZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBFZGl0aW5nQm91bmRhcnlD
cm9zc2luZ1J1bGUgYm91bmRhcnlDcm9zc2luZ1J1bGUpCkBAIC0xMzIzLDEyICsxMzIzLDEyIEBA
IFZpc2libGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMs
IEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nCiAgICAgYXV0byogbm9kZSA9IGZpbmRFbmRPZlBhcmFn
cmFwaChzdGFydE5vZGUsIGhpZ2hlc3RSb290LCBzdGF5SW5zaWRlQmxvY2ssIG9mZnNldCwgdHlw
ZSwgYm91bmRhcnlDcm9zc2luZ1J1bGUpOwogICAgIAogICAgIGlmIChpczxUZXh0Pihub2RlKSkK
LSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihkb3duY2FzdDxUZXh0Pihu
b2RlKSwgb2Zmc2V0KSwgRE9XTlNUUkVBTSk7CisgICAgICAgIHJldHVybiBQb3NpdGlvbihkb3du
Y2FzdDxUZXh0Pihub2RlKSwgb2Zmc2V0KTsKICAgICAKICAgICBpZiAodHlwZSA9PSBQb3NpdGlv
bjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKFBvc2l0aW9uKG5vZGUsIG9mZnNldCwgdHlwZSksIERPV05TVFJFQU0pOworICAgICAgICBy
ZXR1cm4gUG9zaXRpb24obm9kZSwgb2Zmc2V0LCB0eXBlKTsKIAotICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oUG9zaXRpb24obm9kZSwgdHlwZSksIERPV05TVFJFQU0pOworICAgIHJldHVybiBQ
b3NpdGlvbihub2RlLCB0eXBlKTsKIH0KIAogLy8gRklYTUU6IGlzU3RhcnRPZlBhcmFncmFwaChz
dGFydE9mTmV4dFBhcmFncmFwaChwb3MpKSBpcyBub3QgYWx3YXlzIHRydWUKQEAgLTE2MTQsNyAr
MTYxNCw3IEBAIGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdnAsIFRleHRHcmFudWxhcml0eSBncmFuCiAKICAgICAgICAgaWYgKHByZXZCb3Vu
ZGFyeSA9PSBuZXh0Qm91bmRhcnkpIHsKICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IG5leHRM
aW5lUG9zaXRpb24obmV4dEJvdW5kYXJ5LCAwKTsKLSAgICAgICAgICAgIG5leHRCb3VuZGFyeS5z
ZXRBZmZpbml0eShVUFNUUkVBTSk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkuc2V0QWZmaW5p
dHkoQWZmaW5pdHk6OlVwc3RyZWFtKTsKICAgICAgICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2
Qm91bmRhcnksIG5leHRCb3VuZGFyeSkpCiAgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0g
dnAubmV4dCgpOwogICAgICAgICB9CkBAIC0xODM2LDcgKzE4MzYsNyBAQCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgdnAsCiAKICAgICAgICAgICAgIGlmIChwcmV2Qm91bmRhcnkgPT0gbmV4dEJvdW5kYXJ5
KSB7CiAgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gbmV4dExpbmVQb3NpdGlvbihuZXh0
Qm91bmRhcnksIDApOwotICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeS5zZXRBZmZpbml0eShV
UFNUUkVBTSk7CisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNldEFmZmluaXR5KEFmZmlu
aXR5OjpVcHN0cmVhbSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpblNhbWVMaW5lKHByZXZCb3Vu
ZGFyeSwgbmV4dEJvdW5kYXJ5KSkKICAgICAgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0g
dnAubmV4dCgpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IDdlNGVkMmFjZGM1NTQyZjc1Njc0ZGU0ZmVh
ZGMwMjllMGU3MjI5MWEuLjlmMDE0OTY1ZGEwOTNjYjJlYjlmMGY5OWNiNTE0NmVkNzVkZDNhMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1
cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAu
bW0KQEAgLTMyMyw3ICszMjMsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBO
U0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZQogICAgIE5TVUlu
dGVnZXIgaGl0SW5kZXg7CiAgICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZ1bGxDaGFyYWN0ZXJS
YW5nZTsKICAgICAKLSAgICBpZiAoc2VsZWN0aW9uLnNlbGVjdGlvblR5cGUoKSA9PSBWaXNpYmxl
U2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbikgeworICAgIGlmIChzZWxlY3Rpb24uaXNSYW5nZSgp
KSB7CiAgICAgICAgIGF1dG8gc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0
KCk7CiAgICAgICAgIGF1dG8gc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uLnZpc2libGVFbmQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAxZWQzYjlmMzA3MmIz
ODhjZTIyNTE3YjhlZjc3ZDYyN2NiZTQyYzliLi4yOWY3ZTcyN2YyYjJhYzJiOGZiZWQ1M2VhNjlm
NzIyY2Q0NWI3YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
MjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0
IFNpbXBsZVJhbmdlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNob3VsZElu
c2VydE5vZGUoTm9kZSYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEVkaXRvckluc2Vy
dEFjdGlvbikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNob3VsZEluc2VydFRl
eHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5z
ZXJ0QWN0aW9uKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBFQWZmaW5pdHksIGJvb2wpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEFmZmluaXR5LCBib29sKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0
IFN0eWxlUHJvcGVydGllcyYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkaWRBcHBseVN0eWxlKCkgZmluYWwgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggZWNmMmFlYWQ2ZDRlZWM4N2EyZWVmYTMz
NDMyZDAwNGEyNGNhM2YxOC4uYzZlYjI2ZWFjY2RmYmRmZjg4Njk1M2JhMjkwZjEwMjgxYTZmMWNh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgRE9NU2VsZWN0aW9uOjpjb2xsYXBzZShOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUoKmZyYW1l
KCkpOwotICAgIHByb3RlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOworICAgIHByb3RlY3Rl
ZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIG9mZnNldCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRE9NU2VsZWN0aW9uOjpjb2xsYXBzZVRvRW5kKCkKQEAgLTE4NSw3ICsxODUsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmNvbGxhcHNlVG9FbmQoKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdG9yKCpmcmFtZSk7Ci0gICAgc2VsZWN0aW9uLm1vdmVUbyhzZWxlY3Rpb24uc2VsZWN0aW9u
KCkuZW5kKCksIERPV05TVFJFQU0pOworICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNl
bGVjdGlvbigpLmVuZCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgcmV0dXJuIHsgfTsK
IH0KIApAQCAtMTk5LDcgKzE5OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVNlbGVjdGlvbjo6
Y29sbGFwc2VUb1N0YXJ0KCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwotICAgIHNlbGVj
dGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0pOwor
ICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCksIEFmZmlu
aXR5OjpEb3duc3RyZWFtKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0yMTcsNyArMjE3LDcg
QEAgdm9pZCBET01TZWxlY3Rpb246OnNldEJhc2VBbmRFeHRlbnQoTm9kZSogYmFzZU5vZGUsIHVu
c2lnbmVkIGJhc2VPZmZzZXQsIE5vZGUqIGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZy
YW1lPiBwcm90ZWN0ZWRGcmFtZSgqZnJhbWUoKSk7Ci0gICAgcHJvdGVjdGVkRnJhbWUtPnNlbGVj
dGlvbigpLm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oYmFzZU5vZGUsIGJhc2VP
ZmZzZXQpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZXh0ZW50Tm9kZSwgZXh0ZW50T2Zm
c2V0KSwgRE9XTlNUUkVBTSk7CisgICAgcHJvdGVjdGVkRnJhbWUtPnNlbGVjdGlvbigpLm1vdmVU
byhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oYmFzZU5vZGUsIGJhc2VPZmZzZXQpLCBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZXh0ZW50Tm9kZSwgZXh0ZW50T2Zmc2V0KSwgQWZmaW5p
dHk6OkRvd25zdHJlYW0pOwogfQogCiB2b2lkIERPTVNlbGVjdGlvbjo6c2V0UG9zaXRpb24oTm9k
ZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgRE9NU2Vs
ZWN0aW9uOjpzZXRQb3NpdGlvbihOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUoKmZyYW1lKCkpOwotICAg
IHByb3RlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOworICAgIHByb3RlY3RlZEZyYW1lLT5z
ZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG9mZnNl
dCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIH0KIAogdm9pZCBET01TZWxlY3Rpb246Om1vZGlm
eShjb25zdCBTdHJpbmcmIGFsdGVyU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmlu
ZywgY29uc3QgU3RyaW5nJiBncmFudWxhcml0eVN0cmluZykKQEAgLTI5MCw3ICsyOTAsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmV4dGVuZChOb2RlJiBub2RlLCB1bnNpZ25l
ZCBvZmZzZXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9Owog
ICAgIGlmICghaXNWYWxpZEZvclBvc2l0aW9uKCZub2RlKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0RXh0ZW50KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbigmbm9kZSwgb2Zmc2V0KSwgRE9XTlNUUkVBTSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LnNldEV4dGVudChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oJm5vZGUsIG9mZnNldCksIEFm
ZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAppbmRleCA5ZGU3MDY1NGYyMGI1ODIzZjc2NTYwMGUxNDE2YjlkOGMzYTkx
ZGY1Li5hMTczZGFhZWIzMDk5MmY5YTljMTY1YzYwYzVjNzlhOWNjNTI1MjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVS
YW5nZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBF
ZGl0b3JJbnNlcnRBY3Rpb24pID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBFQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxl
Y3RpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShj
b25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiB0b1JhbmdlLCBBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRp
b24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXBw
cmVzc1Bhc3N3b3JkRWNobygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGVhYzZmODJlODEzODQxZThmY2VmNjIxNzU2
MDNhOTdhNmFjYzdmYWIuLmY5OGJjZTFiZjQ2Njk4Y2EwZTVkYWRhYmQ2NDljNWZkNzU4MGZhMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTY5Nyw3ICs2OTcsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UgogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbih0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2Fs
UG9pbnQoKSwgbnVsbHB0cikpOwogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCi0g
ICAgICAgIHZpc2libGVQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5P
ckJlZm9yZU5vZGUodGFyZ2V0Tm9kZSksIERPV05TVFJFQU0pOworICAgICAgICB2aXNpYmxlUG9z
aXRpb24gPSBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHRhcmdl
dE5vZGUpKTsKICAgICBQb3NpdGlvbiBwb3MgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gbV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cAppbmRleCAwNmY3Yjk2M2FkZDdlMzcwZmQyZWE1OGYwNTk1ZGIyYmVlZGYzYjc4Li42MmE5ZWE0
MGNjY2ZiOGI1ZWNlMzg2YzYzNmU2MzZiY2IwM2Q5ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCkBAIC01MjYsOCArNTI2LDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xs
ZXI6OmFkdmFuY2VGb2N1c0luRG9jdW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24s
IEtleWIKICAgICBzZXRGb2N1c2VkRnJhbWUobmV3RG9jdW1lbnQuZnJhbWUoKSk7CiAKICAgICBp
ZiAoY2FyZXRCcm93c2luZykgewotICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IGZpcnN0UG9z
aXRpb25Jbk9yQmVmb3JlTm9kZShlbGVtZW50LmdldCgpKTsKLSAgICAgICAgVmlzaWJsZVNlbGVj
dGlvbiBuZXdTZWxlY3Rpb24ocG9zaXRpb24sIHBvc2l0aW9uLCBET1dOU1RSRUFNKTsKKyAgICAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKGVsZW1lbnQuZ2V0KCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgICAgIGlmIChm
cmFtZS5zZWxlY3Rpb24oKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewog
ICAgICAgICAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRlQ2hh
bmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwg
dHJ1ZSB9KTsKICAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdT
ZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2Vy
VHJpZ2dlcmVkKSwgaW50ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDU2ZGM1ZDdhMDgwZWVj
OTFiMWI1ZWYxYjI4YzA0M2VlNmQ2NDRhYTEuLmQ3ZGVkZmQ1OTFjMzllZmQwMjJkNDU3ZTEyYmFh
MmY4YjgzM2I5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODc4LDcgKzg3OCw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNl
bWVudFJhbmdlPiYgcmFuZ2VzCiAgICAgICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2VkKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hv
dWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0ZWRSYW5nZShyYW5nZSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIEZyYW1lU2VsZWN0aW9u
OjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5y
ZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZW1lbnRUZXh0LCBFZGl0b3I6OlNlbGVjdFJl
cGxhY2VtZW50OjpZZXMsIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlvbjo6SW5z
ZXJ0UmVwbGFjZW1lbnQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQppbmRleCA5YmI4ZTkyY2FhYzVjZjUzMmI3OWI5MGVlYWIzY2YyMTU0MGFmZjQzLi42
ZjdkOWY3MDA2NjAwNzc5ZDM1NzM1YzhmYTNhZDUxYzNlOTNiODkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9GcmFtZUlPUy5tbQpAQCAtNzIyLDcgKzcyMiw3IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRl
cnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byogcm9vdCA9IHNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnNlbGVjdGlvblR5cGUoKSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbiA/
IGRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkgOiBzZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5y
b290RWRpdGFibGVFbGVtZW50KCk7CisgICAgYXV0byogcm9vdCA9IHNlbGVjdGlvbigpLmlzTm9u
ZSgpID8gZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSA6IHNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBhdXRvIHJhbmdlT2ZSb290Q29udGVudHMg
PSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpOwogCiAgICAgYXV0byBtYXJr
ZXJzSW5Sb290ID0gZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNJblJhbmdlKHJhbmdlT2ZS
b290Q29udGVudHMsIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDJkZjU2
ZTY1ZjU2N2RlZDkzYTY1NjUyYzY5M2I1MjZiMTY5MmQwMzAuLjY1NjZhMjkxYjFhNDk0ZWFhYzM1
OTUzYjJmMTUxNDZmOWI5MWExOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMjE2OSw4ICsyMTY5LDggQEAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9y
UG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoUmVuZGVyQmxvY2smIHBhcmVudCwKICAg
ICBMYXlvdXRVbml0IGNoaWxkTWlkZGxlID0gcGFyZW50LmxvZ2ljYWxXaWR0aEZvckNoaWxkKGNo
aWxkKSAvIDI7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHBhcmVudC5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gcG9pbnRJbkNoaWxkQ29vcmRpbmF0ZXMueCgpIDogcG9pbnRJbkNo
aWxkQ29vcmRpbmF0ZXMueSgpOwogICAgIGlmIChsb2dpY2FsTGVmdCA8IGNoaWxkTWlkZGxlKQot
ICAgICAgICByZXR1cm4gYW5jZXN0b3ItPmNyZWF0ZVZpc2libGVQb3NpdGlvbihjaGlsZEVsZW1l
bnQtPmNvbXB1dGVOb2RlSW5kZXgoKSwgRE9XTlNUUkVBTSk7Ci0gICAgcmV0dXJuIGFuY2VzdG9y
LT5jcmVhdGVWaXNpYmxlUG9zaXRpb24oY2hpbGRFbGVtZW50LT5jb21wdXRlTm9kZUluZGV4KCkg
KyAxLCBVUFNUUkVBTSk7CisgICAgICAgIHJldHVybiBhbmNlc3Rvci0+Y3JlYXRlVmlzaWJsZVBv
c2l0aW9uKGNoaWxkRWxlbWVudC0+Y29tcHV0ZU5vZGVJbmRleCgpLCBBZmZpbml0eTo6RG93bnN0
cmVhbSk7CisgICAgcmV0dXJuIGFuY2VzdG9yLT5jcmVhdGVWaXNpYmxlUG9zaXRpb24oY2hpbGRF
bGVtZW50LT5jb21wdXRlTm9kZUluZGV4KCkgKyAxLCBBZmZpbml0eTo6VXBzdHJlYW0pOwogfQog
CiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5l
Q2hpbGRyZW4oY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5l
ciopCkBAIC0yMjA2LDkgKzIyMDYsOSBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZQogICAgICAg
ICBMYXlvdXRVbml0IHBvaW50TG9naWNhbFRvcCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBwb2ludC55KCkgOiBwb2ludC54KCk7CiAKICAgICAgICAgaWYgKHBvaW50TG9naWNhbFRvcCA8
IDAgfHwgKHBvaW50TG9naWNhbFRvcCA8IGxvZ2ljYWxIZWlnaHQoKSAmJiBwb2ludExvZ2ljYWxM
ZWZ0IDwgMCkpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0
TWluT2Zmc2V0KCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2li
bGVQb3NpdGlvbihjYXJldE1pbk9mZnNldCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAg
ICAgIGlmIChwb2ludExvZ2ljYWxUb3AgPj0gbG9naWNhbEhlaWdodCgpIHx8IChwb2ludExvZ2lj
YWxUb3AgPj0gMCAmJiBwb2ludExvZ2ljYWxMZWZ0ID49IGxvZ2ljYWxXaWR0aCgpKSkKLSAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNYXhPZmZzZXQoKSwgRE9X
TlNUUkVBTSk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0
TWF4T2Zmc2V0KCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICB9IAogCiAgICAgTGF5b3V0
UG9pbnQgcG9pbnRJbkNvbnRlbnRzID0gcG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGJiMDYyYzg0ZDI3ZWEzYjVhYjkwMGQzNzJjY2Y3
NzY2ODQxOTUxNzkuLmZhZTczNWI5NDNlZGI1Njg1NWMyN2MzYTMyMGE5N2U5MGVlNjJlYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zNDg2
LDcgKzM0ODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZv
clBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAgIGVuc3VyZUxpbmVCb3hl
cygpOwogCiAgICAgaWYgKCFmaXJzdFJvb3RCb3goKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZp
c2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2li
bGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKICAgICBib29sIGxpbmVzQXJl
RmxpcHBlZCA9IHN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpOwogICAgIGJvb2wg
YmxvY2tzQXJlRmxpcHBlZCA9IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsK
QEAgLTM1NDUsNyArMzU0NSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBv
c2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgICAg
ICAgICAgICAgICAgICBib3ggPSBuZXdCb3g7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBhYm92ZSBmaXJzdCByb290IGxpbmUgYm94LCBzbyBy
ZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdAotICAgICAgICAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3goYm94LCB0cnVlKSwgRE9XTlNUUkVBTSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yQm94KGJveCwgdHJ1ZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIApAQCAtMzU2MywxMyArMzU2MywxMyBAQCBWaXNpYmxlUG9zaXRpb24g
UmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0
IExheW91dAogICAgICAgICBBU1NFUlQobW92ZUNhcmV0VG9Cb3VuZGFyeSk7CiAgICAgICAgIElu
bGluZUJveCogbG9naWNhbGx5TGFzdEJveDsKICAgICAgICAgaWYgKGxhc3RSb290Qm94V2l0aENo
aWxkcmVuLT5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbGx5TGFzdEJveCkpCi0gICAg
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxvZ2ljYWxseUxh
c3RCb3gsIGZhbHNlKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25G
b3JCb3gobG9naWNhbGx5TGFzdEJveCwgZmFsc2UpOwogICAgIH0KIAogICAgIC8vIENhbid0IHJl
YWNoIHRoaXMuIFdlIGhhdmUgYSByb290IGxpbmUgYm94LCBidXQgaXQgaGFzIG5vIGtpZHMuCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLCBidXQgY2xpY2tp
bmcgb24gcGxhY2Vob2xkZXIgdGV4dAogICAgIC8vIHNlZW1zIHRvIGhpdCB0aGlzIGNvZGUgcGF0
aC4KLSAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOworICAg
IHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwog
fQogCiBQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmNwcAppbmRleCBmNTgwNjg4OTRlYjRmMWEzNzRmMTU1ZWYzNDJjMWVlNTgwYzE5NmZiLi5h
ZWMxYjM0MTYyYWM3MzExODMzNzk4OWMxYTE4OGFmYjMxMDJiNmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIGJv
b2wgUmVuZGVyTGluZUJyZWFrOjpjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdAogVmlzaWJsZVBv
c2l0aW9uIFJlbmRlckxpbmVCcmVhazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikKIHsKICAgICBlbnN1cmVMaW5lQm94
ZXMoKTsKLSAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOwor
ICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0p
OwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0
U3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDk2YmRmNTRlNWMzYTIzMzUxZGFhOWE2MTIxYjE5MDc5ZTczYzQ5ZTUuLjkzMjU1NDZiYzgy
YTIwMzBlZmE4MThjOTc5YzM2NmMzNzNkMTJiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNTE2LDcgKzE1MTYsNyBAQCBQb3NpdGlvbiBSZW5kZXJP
YmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogCiBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKQogewotICAgIHJldHVybiBjcmVh
dGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgcmV0
dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjYXJldE1pbk9mZnNldCgpLCBBZmZpbml0eTo6RG93
bnN0cmVhbSk7CiB9CiAKIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0NvbXBvc2l0ZWQoKSBjb25zdApA
QCAtMTY2NSw3ICsxNjY1LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6
b2Zmc2V0UGFyZW50KCkgY29uc3QKICAgICByZXR1cm4gaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+
KGN1cnJlbnQpID8gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGN1cnJlbnQpIDogbnVs
bHB0cjsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBv
c2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0eSkgY29uc3QKK1Zpc2libGVQb3Np
dGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBBZmZp
bml0eSBhZmZpbml0eSkgY29uc3QKIHsKICAgICAvLyBJZiB0aGlzIGlzIGEgbm9uLWFub255bW91
cyByZW5kZXJlciBpbiBhbiBlZGl0YWJsZSBhcmVhLCB0aGVuIGl0J3Mgc2ltcGxlLgogICAgIGlm
IChOb2RlKiBub2RlID0gbm9uUHNldWRvTm9kZSgpKSB7CkBAIC0xNjk1LDcgKzE2OTUsNyBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9m
ZnNldCwgRUFmZmluaXR5IGFmZmluaQogICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gY2hpbGQ7CiAgICAgICAgIHdoaWxlICgocmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dElu
UHJlT3JkZXIocGFyZW50KSkpIHsKICAgICAgICAgICAgIGlmIChOb2RlKiBub2RlID0gcmVuZGVy
ZXItPm5vblBzZXVkb05vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSwgRE9XTlNUUkVBTSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIEZpbmQgbm9uLWFub255bW91cyBjb250ZW50IGJlZm9yZS4K
QEAgLTE3MDQsMTIgKzE3MDQsMTIgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbmkKICAgICAgICAg
ICAgIGlmIChyZW5kZXJlciA9PSBwYXJlbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJO
b2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFBvc2l0
aW9uSW5PckFmdGVyTm9kZShub2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFVzZSB0aGUg
cGFyZW50IGl0c2VsZiB1bmxlc3MgaXQgdG9vIGlzIGFub255bW91cy4KICAgICAgICAgaWYgKEVs
ZW1lbnQqIGVsZW1lbnQgPSBwYXJlbnQtPm5vblBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGVsZW1l
bnQpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5PckJl
Zm9yZU5vZGUoZWxlbWVudCk7CiAKICAgICAgICAgLy8gUmVwZWF0IGF0IHRoZSBuZXh0IGxldmVs
IHVwLgogICAgICAgICBjaGlsZCA9IHBhcmVudDsKQEAgLTE3MjUsNyArMTcyNSw3IEBAIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24pIGNvCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRp
b24pOwogCiAgICAgQVNTRVJUKCFub2RlKCkpOwotICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9z
aXRpb24oMCwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigw
LCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJPYmpl
Y3Q6OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNTM3N2NiZThiZDY5OWEyZmFjNjlh
MmRiMTdiNGNjYzVhYWY5MTgzMS4uMTkxMjVmZWY3OWZmZTI2MDA0ZmZlOTk4N2UxZmYwYjM0MGRk
ZjlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNTE4LDcg
KzUxOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRh
aW5lciopOwotICAgIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9m
ZnNldCwgRUFmZmluaXR5KSBjb25zdDsKKyAgICBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJs
ZVBvc2l0aW9uKGludCBvZmZzZXQsIEFmZmluaXR5KSBjb25zdDsKICAgICBWaXNpYmxlUG9zaXRp
b24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CiAKICAgICAv
LyBSZXR1cm5zIHRoZSBjb250YWluaW5nIGJsb2NrIGxldmVsIGVsZW1lbnQgZm9yIHRoaXMgZWxl
bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4
IDZkNTU0ZDMwZjlmYmQ4MmYyNzkzNTVlNTFjZGE5MTdkOGM2MjIzYzUuLjYwYzY5MGVlOTJlOWM1
YmRmNzE3MDg0ZjY3MTFhMGFhYmRmYzZhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNjMyLDE1ICs2MzIsMTUgQEAgVmlzaWJsZVBvc2l0aW9u
IFJlbmRlclJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCwgY29uc3QKICAgICBMYXlvdXRVbml0IGxpbmVEaXJlY3Rpb25Qb3NpdGlvbiA9IGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBwb2ludC54KCkgKyB4KCkgOiBwb2ludC55KCkgKyB5KCk7CiAg
ICAgCiAgICAgaWYgKGJsb2NrRGlyZWN0aW9uUG9zaXRpb24gPCB0b3ApCi0gICAgICAgIHJldHVy
biBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7IC8v
IGNvb3JkaW5hdGVzIGFyZSBhYm92ZQorICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0
aW9uKGNhcmV0TWluT2Zmc2V0KCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsgLy8gY29vcmRpbmF0
ZXMgYXJlIGFib3ZlCiAgICAgCiAgICAgaWYgKGJsb2NrRGlyZWN0aW9uUG9zaXRpb24gPj0gYm90
dG9tKQotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0TWF4T2Zmc2V0
KCksIERPV05TVFJFQU0pOyAvLyBjb29yZGluYXRlcyBhcmUgYmVsb3cKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZVZpc2libGVQb3NpdGlvbihjYXJldE1heE9mZnNldCgpLCBBZmZpbml0eTo6RG93bnN0
cmVhbSk7IC8vIGNvb3JkaW5hdGVzIGFyZSBiZWxvdwogICAgIAogICAgIGlmIChlbGVtZW50KCkp
IHsKICAgICAgICAgaWYgKGxpbmVEaXJlY3Rpb25Qb3NpdGlvbiA8PSBsb2dpY2FsTGVmdCgpICsg
KGxvZ2ljYWxXaWR0aCgpIC8gMikpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKDAsIERPV05TVFJFQU0pOwotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0
aW9uKDEsIERPV05TVFJFQU0pOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3Np
dGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CisgICAgICAgIHJldHVybiBjcmVhdGVWaXNp
YmxlUG9zaXRpb24oMSwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgIH0KIAogICAgIHJldHVy
biBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIGZyYWdtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAppbmRleCBiYjMx
ZTc2NTY2OWVlY2Y5Y2VkYmE5Mzk1YWIwZTU0MGZhMmI3ZjYzLi43OGFkMmE1MWVkODMxMDgzNzlk
MTI2ZTA1OTk5YjY5ZDA0YTVlODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIGJvb2wg
bGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KGludCBwb2ludExpbmVEaXJlY3Rpb24sIGNvbnN0
IElubGluZVRleHQKICAgICBpZiAoIWJveC5uZXh0TGVhZk9uTGluZUlnbm9yaW5nTGluZUJyZWFr
KCkpIHsKICAgICAgICAgLy8gYm94IGlzIGxhc3Qgb24gbGluZQogICAgICAgICAvLyBhbmQgdGhl
IHggY29vcmRpbmF0ZSBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIGxhc3QgdGV4dCBib3ggcmlnaHQg
ZWRnZQotICAgICAgICAvLyBnZW5lcmF0ZSBWaXNpYmxlUG9zaXRpb24sIHVzZSBVUFNUUkVBTSBh
ZmZpbml0eSBpZiBwb3NzaWJsZQorICAgICAgICAvLyBnZW5lcmF0ZSBWaXNpYmxlUG9zaXRpb24s
IHVzZSBBZmZpbml0eTo6VXBzdHJlYW0gYWZmaW5pdHkgaWYgcG9zc2libGUKICAgICAgICAgc2hv
dWxkQWZmaW5pdHlCZURvd25zdHJlYW0gPSBVcHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0U3RhcnQ7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zmc2V0
Rm9yQmlEaShjb25zdCBJbgogVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHRMaW5lQm94ZXM6OnBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIW1fZmlyc3QgfHwgIXJlbmRlcmVyLnRleHQo
KS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVZpc2libGVQb3NpdGlv
bigwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVZpc2libGVQ
b3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKICAgICBMYXlvdXRVbml0IHBvaW50
TGluZURpcmVjdGlvbiA9IG1fZmlyc3QtPmlzSG9yaXpvbnRhbCgpID8gcG9pbnQueCgpIDogcG9p
bnQueSgpOwogICAgIExheW91dFVuaXQgcG9pbnRCbG9ja0RpcmVjdGlvbiA9IG1fZmlyc3QtPmlz
SG9yaXpvbnRhbCgpID8gcG9pbnQueSgpIDogcG9pbnQueCgpOwpAQCAtMzM5LDcgKzMzOSw3IEBA
IFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50KGNv
bnN0IFJlbmRlclRleHQmIHJlbmRlcmVyCiAgICAgICAgIGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJ
bkJveChwb2ludExpbmVEaXJlY3Rpb24sICpsYXN0Qm94LCBzaG91bGRBZmZpbml0eUJlRG93bnN0
cmVhbSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25BZnRlckFkanVzdGlu
Z09mZnNldEZvckJpRGkoKmxhc3RCb3gsIGxhc3RCb3gtPm9mZnNldEZvclBvc2l0aW9uKHBvaW50
TGluZURpcmVjdGlvbikgKyBsYXN0Qm94LT5zdGFydCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0
cmVhbSk7CiAgICAgfQotICAgIHJldHVybiByZW5kZXJlci5jcmVhdGVWaXNpYmxlUG9zaXRpb24o
MCwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVZpc2libGVQb3NpdGlv
bigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hl
czo6c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIFJlbmRlck9iamVjdDo6
SGlnaGxpZ2h0U3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKaW5kZXggZTA1NjBkN2E1MmE5NTI2NGQ2YTNkNTY4MmQ3OTM1Njk1YzIz
ZjYwYy4uNzRlYTVkNWY0NzA1MTk4ZTJlYzM5NzQ5OGZmMjIwNzMwNGE0NzIyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNzk1LDcgKzc5
NSw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlU2VsZWN0aW9uKFRleHRTdHJlYW0mIHRzLCBjb25zdCBS
ZW5kZXJCb3gmIHJlbmRlcmVyKQogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZnJh
bWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgp
KSB7CiAgICAgICAgIHRzIDw8ICJjYXJldDogcG9zaXRpb24gIiA8PCBzZWxlY3Rpb24uc3RhcnQo
KS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDw8ICIgb2YgIiA8PCBub2RlUG9zaXRpb24oc2Vs
ZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7Ci0gICAgICAgIGlmIChzZWxlY3Rpb24u
YWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkKKyAgICAgICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0eSgp
ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKICAgICAgICAgICAgIHRzIDw8ICIgKHVwc3RyZWFtIGFm
ZmluaXR5KSI7CiAgICAgICAgIHRzIDw8ICJcbiI7CiAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24u
aXNSYW5nZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggM2FiYTkwOTViMDIwMjY0OTMyZDU5ZGJlMDI0ZmM5YzE1
NWZlMGE0YS4uZDIzNjZmZDQzZDY5ZGRlNzE0ZGE3MjI0YzIzNDg5MzBmMmVjNTczZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQu
Y3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0
ZXJTdGFydHNOZXdUZXh0Q2h1bmsoaW50IHBvc2l0aW9uKSBjb25zdAogVmlzaWJsZVBvc2l0aW9u
IFJlbmRlclNWR0lubGluZVRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopCiB7CiAgICAgaWYgKCFmaXJz
dFRleHRCb3goKSB8fCB0ZXh0KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJs
ZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAogICAgIGZsb2F0IGJhc2VsaW5l
ID0gbV9zY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKIApAQCAtMjE2LDcg
KzIxNiw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwKICAgICB9CiAKICAgICBpZiAoIWNsb3Nl
c3REaXN0YW5jZUZyYWdtZW50KQotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9u
KDAsIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAs
IEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAogICAgIGludCBvZmZzZXQgPSBjbG9zZXN0RGlzdGFu
Y2VCb3gtPm9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVudCgqY2xvc2VzdERpc3RhbmNlRnJhZ21l
bnQsIGFic29sdXRlUG9pbnQueCgpIC0gY2xvc2VzdERpc3RhbmNlUG9zaXRpb24sIHRydWUpOwog
ICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24ob2Zmc2V0ICsgY2xvc2VzdERpc3RhbmNl
Qm94LT5zdGFydCgpLCBvZmZzZXQgPiAwID8gQWZmaW5pdHk6OlVwc3RyZWFtIDogQWZmaW5pdHk6
OkRvd25zdHJlYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5jcHAKaW5kZXggMGMzOGMzN2I3YTM4MTM1NjBiMzQ2MmI2MDdjMThiMzRkYmFhOThhMS4u
OTc1NTlmZGM2NjhkZDcwMWYwOWQyNzRlYTMxZjI2YTM3NDFiMzg2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00NjAsMTQgKzQ2MCwx
NCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbgogewogICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RC
b3ggPSBmaXJzdFJvb3RCb3goKTsKICAgICBpZiAoIXJvb3RCb3gpCi0gICAgICAgIHJldHVybiBj
cmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogCiAgICAgQVNTRVJU
KCFyb290Qm94LT5uZXh0Um9vdEJveCgpKTsKICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7
CiAKICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSBkb3duY2FzdDxTVkdSb290SW5saW5lQm94
Pigqcm9vdEJveCkuY2xvc2VzdExlYWZDaGlsZEZvclBvc2l0aW9uKHBvaW50SW5Db250ZW50cyk7
CiAgICAgaWYgKCFjbG9zZXN0Qm94KQotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0
aW9uKDAsIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9u
KDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAogICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5k
ZXJlcigpLnBvc2l0aW9uRm9yUG9pbnQoeyBwb2ludEluQ29udGVudHMueCgpLCBMYXlvdXRVbml0
KGNsb3Nlc3RCb3gtPnkoKSkgfSwgZnJhZ21lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IGQ4ODUxMTFkOWY3NTAwMGJlN2Q2
N2UwMGJjZjA3M2E0OWE2MWUzNjYuLjJjODA4MjlhNDZiYmZiYTZiN2U3NzVjNGI3MGJiZmZkNmVj
MjEzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJ
bnNlcnROb2RlKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RUFmZmluaXR5LCBib29sKSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6QWZmaW5pdHksIGJv
b2wpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMmLCBjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgK
aW5kZXggMWM4MDhlYjk0MDNkMDgwMWRmYTAxYTlmNTU0YjIxYTVjM2I0NDFkMS4uOGQ4N2MzN2E4
M2RkY2QxYTVjNzdiZDc0ZmIxYzYwZTcyZmRlNWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQ
SUNhc3QuaApAQCAtODIsMTIgKzgyLDEyIEBAIGlubGluZSBXS0luc2VydEFjdGlvblR5cGUgdG9B
UEkoV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKICAgICByZXR1cm4ga1dLSW5z
ZXJ0QWN0aW9uVHlwZWQ7CiB9CiAKLWlubGluZSBXS0FmZmluaXR5VHlwZSB0b0FQSShXZWJDb3Jl
OjpFQWZmaW5pdHkgYWZmaW5pdHkpCitpbmxpbmUgV0tBZmZpbml0eVR5cGUgdG9BUEkoV2ViQ29y
ZTo6QWZmaW5pdHkgYWZmaW5pdHkpCiB7CiAgICAgc3dpdGNoIChhZmZpbml0eSkgewotICAgIGNh
c2UgV2ViQ29yZTo6VVBTVFJFQU06CisgICAgY2FzZSBXZWJDb3JlOjpBZmZpbml0eTo6VXBzdHJl
YW06CiAgICAgICAgIHJldHVybiBrV0tBZmZpbml0eVVwc3RyZWFtOwotICAgIGNhc2UgV2ViQ29y
ZTo6RE9XTlNUUkVBTToKKyAgICBjYXNlIFdlYkNvcmU6OkFmZmluaXR5OjpEb3duc3RyZWFtOgog
ICAgICAgICByZXR1cm4ga1dLQWZmaW5pdHlEb3duc3RyZWFtOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBjNzc2
MjUyZWJkNGFlODg4NDViZThjNjc3OGI2ZWY3MzBkZmYzMTZmLi4yN2Y0MTdkOGIyZTE1M2UwYTY1
MGM3NWVkNWZiOTc1NzQyYTJlMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CkBAIC01NjcsNyArNTY3LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAg
IHJldHVybiBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBzaG91bGRJbnNlcnRU
ZXh0OnRleHQgcmVwbGFjaW5nUmFuZ2U6d3JhcHBlcigqV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFu
Z2VUb1JlcGxhY2UpKSBnaXZlbkFjdGlvbjp0b1dLKGFjdGlvbildOwogICAgICAgICB9CiAKLSAg
ICAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkVBZmZpbml0eSBh
ZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWwKKyAgICAgICAgYm9vbCBzaG91bGRD
aGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxs
U2VsZWN0aW5nKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVN
ZXRob2RzLnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC01NzUsOSArNTc1LDkgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihp
ZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAg
ICAgICAgIGF1dG8gYXBpRnJvbVJhbmdlID0gYWRvcHROUyhbW1dLRE9NUmFuZ2UgYWxsb2NdIF9p
bml0V2l0aEltcGw6Y3JlYXRlTGl2ZVJhbmdlKGZyb21SYW5nZSkuZ2V0KCldKTsKICAgICAgICAg
ICAgIGF1dG8gYXBpVG9SYW5nZSA9IGFkb3B0TlMoW1tXS0RPTVJhbmdlIGFsbG9jXSBfaW5pdFdp
dGhJbXBsOmNyZWF0ZUxpdmVSYW5nZSh0b1JhbmdlKS5nZXQoKV0pOwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgICAgICAgICBVSVRleHRTdG9yYWdlRGlyZWN0aW9uIGFwaUFmZmluaXR5
ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6VVBTVFJFQU0gPyBVSVRleHRTdG9yYWdlRGlyZWN0aW9u
QmFja3dhcmQgOiBVSVRleHRTdG9yYWdlRGlyZWN0aW9uRm9yd2FyZDsKKyAgICAgICAgICAgIFVJ
VGV4dFN0b3JhZ2VEaXJlY3Rpb24gYXBpQWZmaW5pdHkgPSBhZmZpbml0eSA9PSBXZWJDb3JlOjpB
ZmZpbml0eTo6VXBzdHJlYW0gPyBVSVRleHRTdG9yYWdlRGlyZWN0aW9uQmFja3dhcmQgOiBVSVRl
eHRTdG9yYWdlRGlyZWN0aW9uRm9yd2FyZDsKICNlbHNlCi0gICAgICAgICAgICBOU1NlbGVjdGlv
bkFmZmluaXR5IGFwaUFmZmluaXR5ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6VVBTVFJFQU0gPyBO
U1NlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW0gOiBOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bTsKKyAgICAgICAgICAgIE5TU2VsZWN0aW9uQWZmaW5pdHkgYXBpQWZmaW5pdHkgPSBhZmZpbml0
eSA9PSBXZWJDb3JlOjpBZmZpbml0eTo6VXBzdHJlYW0gPyBOU1NlbGVjdGlvbkFmZmluaXR5VXBz
dHJlYW0gOiBOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbTsKICNlbmRpZgogCiAgICAgICAg
ICAgICByZXR1cm4gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZTphcGlGcm9tUmFuZ2UuZ2V0KCkgdG9SYW5nZTphcGlUb1JhbmdlLmdl
dCgpIGFmZmluaXR5OmFwaUFmZmluaXR5IHN0aWxsU2VsZWN0aW5nOnN0aWxsU2VsZWN0aW5nXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXgg
ZTM0MGFmMWNiYzMwMjllNTdhYmRiMjJkYzRmOWE5YmRjMjVmMDUxMC4uYjU1NDE4ZGVkY2Y4MmUx
MTg5ZmE2NDIwZWNjMGRlMDU4MzJkZWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IE9wdGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29u
c3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgdG9SYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5n
KQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVj
dGVkUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBmcm9t
UmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgQWZmaW5pdHkgYWZm
aW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpCiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2UpCiAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKGZyb21SYW5nZSku
Z2V0KCkpLCB0b0FQSShjcmVhdGVIYW5kbGUodG9SYW5nZSkuZ2V0KCkpLCB0b0FQSShhZmZpbml0
eSksIHN0aWxsU2VsZWN0aW5nLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IGYzYTBlNzQ3NjcyMGZi
MWI1ZDljYjE3NzE3ZWRkNzM5OTQ5N2RjMWQuLmNjMDZiMWFmOTQ1MTVkY2UxNWNiZDQzYWVlNmZl
MTBhNjA0NWUzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZEluc2VydE5v
ZGUoV2ViUGFnZSYsIFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZp
bmFsOwogICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZVRvUmVwbGFjZSwgV2Vi
Q29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKICAgICBib29sIHNob3VsZERlbGV0ZVJh
bmdlKFdlYlBhZ2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5h
bDsKLSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCBz
dGlsbFNlbGVjdGluZykgZmluYWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdl
KFdlYlBhZ2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGZyb21SYW5n
ZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3Jl
OjpBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7CiAgICAgYm9vbCBzaG91bGRB
cHBseVN0eWxlKFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMmLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZEJl
Z2luRWRpdGluZyhXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5h
bDsKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZp
Y2F0aW9uTmFtZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGRiOTdjMGIxN2I3
ZTFhMjQxNDIxOGMyNTk3OGFhOTQ0NjE4MjExMmQuLjAwNWY3YmUwZTU1ZTgxNDNkZDA2N2NiYTQz
MzM0MTBiNjAwN2IxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzYsNyArMTM2LDcg
QEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1wbGUKICAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudCgpLnNob3VsZEluc2VydFRleHQoKm1fcGFnZSwgdGV4dCwgcmFuZ2VU
b1JlcGxhY2UsIGFjdGlvbik7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFu
Z2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBj
b25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwg
Ym9vbCBzdGlsbFNlbGVjdGluZykKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29s
IHN0aWxsU2VsZWN0aW5nKQogewogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KCkuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSgqbV9wYWdlLCBmcm9tUmFuZ2Us
IHRvUmFuZ2UsIGFmZmluaXR5LCBzdGlsbFNlbGVjdGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggMjNlMzk0ZjI3ZWMzMjY5Mjc4YzQ1YjhlMTQ0ZDM2ZGM3YzdiZmQ2Zi4uYmFkMGNiMzcx
MmE0Mzg1MjBiNThlMTZiMjA0MzZkZWE4NGQ1NTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAt
NTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25zdCBX
ZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShX
ZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2Vi
Q29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKICAgICBib29sIHNob3VsZEluc2VydFRl
eHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
V2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9t
UmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2Vi
Q29yZTo6RUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbDsKKyAgICBib29sIHNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9S
YW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOwogICAg
IAogICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRp
ZXMmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2
b2lkIGRpZEFwcGx5U3R5bGUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCAxYmQ5MjgyYTE4MTli
NGI3ODQ1MGYxZTYwNWU4ODY4ZjRlZWM2ZGQzLi5kYzRiNWRjNDk0NjZhMTUyMmI1MWU2NzU2MTg0
ZmI2ZGQzZTYxNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBXZWJQ
YWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmUKICAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRpb24g
IT0gbm90Rm91bmQpIHsKICAgICAgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gRWRpdGluZ1Jh
bmdlOjp0b1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSk7CiAgICAgICAgIGlm
IChyZXBsYWNlbWVudFJhbmdlKQotICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24geyAqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRf
QUZGSU5JVFkgfSk7CisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdlIH0pOwogICAgIH0KIAogICAgIGlm
IChvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxNWIzMDg4NWYwOWNlMTk4MjU2NmViMDE2ZDkxM2Y4
YTkwYjZhM2NmLi44NTAyZmM5ZDAwYTBiYTJmYTA3MmUzYWQ0M2Q5MjJjMWM2N2MwMGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTQzNCw3
ICs1NDM0LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4KICAgICBpZiAocmVwbGFjZW1lbnRF
ZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgaWYgKGF1dG8gcmVw
bGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShmcmFtZSwgcmVwbGFjZW1lbnRF
ZGl0aW5nUmFuZ2UsIG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKSkgewogICAgICAg
ICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNTZWxlY3RpbmdUZXh0V2hpbGVJbnNlcnRpbmdBc3lu
Y2hyb25vdXNseShtX2lzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNocm9ub3VzbHks
IG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpOwotICAgICAgICAgICAgZnJhbWUuc2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxhY2VtZW50UmFuZ2Us
IFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSkpOwogICAgICAg
ICAgICAgcmVwbGFjZXNUZXh0ID0gcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubGVuZ3RoOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNTUwNyw3ICs1NTA3LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDb21w
b3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9u
VW4KICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFi
bGUoKSkgewogICAgICAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0g
bm90Rm91bmQpIHsKICAgICAgICAgICAgIGlmIChhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBFZGl0
aW5nUmFuZ2U6OnRvUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKSkKLSAgICAg
ICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAg
ICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVw
bGFjZW1lbnRSYW5nZSkpOwogICAgICAgICB9CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnNldENv
bXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIGhpZ2hsaWdodHMsIHNlbGVjdGlvbi5sb2NhdGlv
biwgc2VsZWN0aW9uLmxvY2F0aW9uICsgc2VsZWN0aW9uLmxlbmd0aCk7CiAgICAgfQpAQCAtNTU3
Miw3ICs1NTcyLDcgQEAgdm9pZCBXZWJQYWdlOjpkZWxldGVTdXJyb3VuZGluZyhpbnQ2NF90IG9m
ZnNldCwgdW5zaWduZWQgY2hhcmFjdGVyQ291bnQpCiAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMocm9v
dE5vZGUpLCBjaGFyYWN0ZXJSYW5nZSk7CiAKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0
SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc2VsZWN0aW9uUmFuZ2UsIFNFTF9ERUZB
VUxUX0FGRklOSVRZKSk7CisgICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlKSk7CiAgICAgdGFyZ2V0RnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShmYWxzZSk7CiAgICAgdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogICAgIHNl
bmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA2NDVjNzE5MTRjZjNjMjU2ODk5YjYyY2Ix
YWJlZWNkNjY4YTYyZmI3Li41NmVjZmUyZmE4M2QwZWNmODM1MmEzZmQ5OTQzNDgwOWQwNmMyYjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb25jbHVkZUVk
aXREcmFnKCkKICAgICBhdXRvIGZyYW1lID0gbWFrZVJlZihtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpKTsKICAgICBpZiAoYXV0byBzZWxlY3Rpb25SYW5nZSA9
IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7CiAg
ICAgICAgIG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QgPSB2aXNpYmxlSW1h
Z2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzKCpzZWxlY3Rpb25SYW5nZSk7Ci0g
ICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG1ha2VTaW1wbGVSYW5n
ZShzZWxlY3Rpb25SYW5nZS0+ZW5kKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3Vs
ZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS0+c2VsZWN0
aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShtYWtlU2ltcGxlUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UtPmVu
ZCksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBp
bmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgICAgIG1fcmFuZ2VGb3JEcm9wU25hcHNob3Qg
PSBXVEZNb3ZlKHNlbGVjdGlvblJhbmdlKTsKICAgICB9CiAKQEAgLTIwNDYsNyArMjA0Niw3IEBA
IHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pCiAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKSB7
CiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHko
cG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgICAgICBpZiAocG9zaXRpb24u
aXNOb3ROdWxsKCkpCi0gICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKG1ha2VTaW1wbGVSYW5nZShwb3NpdGlvbiksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CisgICAgICAg
ICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG1ha2VTaW1wbGVSYW5nZShw
b3NpdGlvbiksIEFmZmluaXR5OjpVcHN0cmVhbSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNo
b3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogICAgIH0KICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogfQpAQCAtMjA2MCw3ICsyMDYwLDcgQEAgdm9pZCBXZWJQYWdlOjptb3Zl
U2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
IGdyYW4KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gKGlzRm9yd2FyZCkgPyBm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkgOiBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKICAgICAgICAgcG9zaXRpb24gPSBwb3Np
dGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgZ3JhbnVsYXJpdHksIGRp
cmVjdGlvbik7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkKLSAgICAgICAgICAg
IGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobWFrZVNpbXBsZVJhbmdlKHBvc2l0
aW9uKSwgaXNGb3J3YXJkPyBVUFNUUkVBTSA6IERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobWFrZVNpbXBsZVJhbmdlKHBv
c2l0aW9uKSwgaXNGb3J3YXJkPyBBZmZpbml0eTo6VXBzdHJlYW0gOiBBZmZpbml0eTo6RG93bnN0
cmVhbSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVz
ZXJUcmlnZ2VyZWQpOwogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAtMjEy
Miw3ICsyMTIyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICBhdXRvJiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgYXV0
byByYW5nZSA9IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KGZyYW1lLCBwb2ludCwgZ3JhbnVs
YXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogICAgIGlmIChyYW5nZSkK
LSAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSgqcmFuZ2UsIFVQU1RS
RUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNl
clRyaWdnZXJlZCk7CisgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uo
KnJhbmdlLCBBZmZpbml0eTo6VXBzdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICBtX2luaXRpYWxTZWxlY3Rp
b24gPSByYW5nZTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAtMjE1NSw3ICsyMTU1
LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3Vu
ZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYKICAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obmV3UmFuZ2UtPnN0YXJ0KTsKIAogICAgIGlmIChh
dXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQp
KQotICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBVUFNU
UkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVz
ZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KHJhbmdlLCBBZmZpbml0eTo6VXBzdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFydCA9PSBpbml0aWFs
U2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMjIwNCw3ICsyMjA0
LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib28KICAgICB9CiAgICAgCiAgICAgaWYgKGF1dG8g
cmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkpCi0g
ICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UsIFVQU1RSRUFN
LCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRy
aWdnZXJlZCk7CisgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFu
Z2UsIEFmZmluaXR5OjpVcHN0cmVhbSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENs
b3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0LCBj
YWxsYmFja0lEKSk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxh
Y2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1Rl
eHQpCiAgICAgaWYgKHBsYWluVGV4dEZvckNvbnRleHQod29yZFJhbmdlKSAhPSBvbGRUZXh0KQog
ICAgICAgICByZXR1cm47CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hh
bmdlcyh0cnVlKTsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHdvcmRS
YW5nZSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGlu
Zzo6WWVzKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHdvcmRSYW5n
ZSwgQWZmaW5pdHk6OlVwc3RyZWFtLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xv
c2VUeXBpbmc6Olllcyk7CiAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dChuZXdUZXh0LCAw
KTsKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGZhbHNlKTsK
IH0KQEAgLTIyODMsNyArMjI4Myw3IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4
dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIAogICAgIC8v
IFdlIGRvbid0IHdhbnQgdG8gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUgc2VsZWN0aW9uIGhh
cyBjaGFuZ2VkIHVudGlsIHdlIGFyZSBkb25lIGluc2VydGluZyB0aGUgbmV3IHRleHQuCiAgICAg
ZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBVUFNUUkVBTSwgV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgIGZyYW1lLnNlbGVj
dGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UsIEFmZmluaXR5OjpVcHN0cmVhbSwgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOwogICAgIGZyYW1lLmVk
aXRvcigpLmluc2VydFRleHQobmV3VGV4dCwgMCk7CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdu
b3JlU2VsZWN0aW9uQ2hhbmdlcyhmYWxzZSk7CiB9CkBAIC0yNDEwLDkgKzI0MTAsOSBAQCBib29s
IFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGNvcnJl
Y3Rpb24sIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8g
Q29ycmVjdGx5IGRldGVybWluZSBhZmZpbml0eSwgdXNpbmcgbG9naWMgY3VycmVudGx5IG9ubHkg
cHJlc2VudCBpbiBWaXNpYmxlUG9zaXRpb24KLSAgICBFQWZmaW5pdHkgYWZmaW5pdHkgPSBET1dO
U1RSRUFNOworICAgIGF1dG8gYWZmaW5pdHkgPSBBZmZpbml0eTo6RG93bnN0cmVhbTsKICAgICBp
ZiAocmFuZ2UgJiYgcmFuZ2UtPmNvbGxhcHNlZCgpKQotICAgICAgICBhZmZpbml0eSA9IFZpc2li
bGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UtPnN0YXJ0KSwgVVBT
VFJFQU0pLmFmZmluaXR5KCk7CisgICAgICAgIGFmZmluaXR5ID0gVmlzaWJsZVBvc2l0aW9uKGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyYW5nZS0+c3RhcnQpLCBBZmZpbml0eTo6VXBzdHJl
YW0pLmFmZmluaXR5KCk7CiAgICAgCiAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRS
YW5nZShyYW5nZSwgYWZmaW5pdHksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzKTsKICAgICBpZiAoY29ycmVjdGlvbi5sZW5ndGgoKSkKQEAgLTQwNTIsNyAr
NDA1Miw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3Qg
bG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0CiAKICAgICBhdXRvIG5ld1NlbGVjdGlv
blJhbmdlID0gQ2hhcmFjdGVyUmFuZ2UobmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0KCks
IG5ld1NlbGVjdGlvbkxlbmd0aC51bnNhZmVHZXQoKSk7CiAgICAgYXV0byB1cGRhdGVkU2VsZWN0
aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKCpyb290KSwgbmV3U2VsZWN0aW9uUmFuZ2UpOwotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKHVwZGF0ZWRTZWxlY3Rpb25SYW5nZSwgRE9XTlNUUkVBTSwgV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2Vy
ZWQpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHVwZGF0ZWRTZWxl
Y3Rpb25SYW5nZSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCmluZGV4IDdjYWZjYmFiNzc0MjVlZDBiNWEwNTMwY2Qx
MDU3OTA0YTEwOWNlODEuLjkwZThmMTdkMjk3YmI3MzliMWQ3MzkxOWJhNWE1ZjkwNTQyMDM4MGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lSU9TLm1tCkBAIC0xNTgsMjEgKzE1OCwyMSBAQCAtIChDR1JlY3QpY2xvc2VzdENhcmV0
UmVjdEluTWFya2VkVGV4dFJhbmdlRm9yUG9pbnQ6KENHUG9pbnQpcG9pbnQKICAgICBpZiAocG9p
bnQueSA8IGZpcnN0UmVjdC5vcmlnaW4ueSkgewogICAgICAgICBwb2ludC55ID0gZmlyc3RSZWN0
Lm9yaWdpbi55OwogICAgICAgICBwb3NpdGlvbiA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclBv
aW50OnBvaW50XTsKLSAgICAgICAgcG9zaXRpb24uc2V0QWZmaW5pdHkoVVBTVFJFQU0pOworICAg
ICAgICBwb3NpdGlvbi5zZXRBZmZpbml0eShBZmZpbml0eTo6VXBzdHJlYW0pOwogICAgIH0gZWxz
ZSBpZiAocG9pbnQueSA+PSBsYXN0UmVjdC5vcmlnaW4ueSkgewogICAgICAgICBwb2ludC55ID0g
bGFzdFJlY3Qub3JpZ2luLnk7CiAgICAgICAgIHBvc2l0aW9uID0gW3NlbGYgdmlzaWJsZVBvc2l0
aW9uRm9yUG9pbnQ6cG9pbnRdOwotICAgICAgICBwb3NpdGlvbi5zZXRBZmZpbml0eShET1dOU1RS
RUFNKTsKKyAgICAgICAgcG9zaXRpb24uc2V0QWZmaW5pdHkoQWZmaW5pdHk6OkRvd25zdHJlYW0p
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHBvc2l0aW9uID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQ6cG9pbnRdOwogICAgIH0KIAogICAgIGlmIChwb3NpdGlvbiA9PSBzdGFydCB8fCBw
b3NpdGlvbiA8IHN0YXJ0KSB7Ci0gICAgICAgIHN0YXJ0LnNldEFmZmluaXR5KFVQU1RSRUFNKTsK
KyAgICAgICAgc3RhcnQuc2V0QWZmaW5pdHkoQWZmaW5pdHk6OlVwc3RyZWFtKTsKICAgICAgICAg
cmV0dXJuIHN0YXJ0LmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKICAgICB9CiAgICAgaWYgKHBvc2l0
aW9uID4gZW5kKSB7Ci0gICAgICAgIGVuZC5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICAg
ICAgZW5kLnNldEFmZmluaXR5KEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICAgICAgcmV0dXJu
IGVuZC5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAgICAgfQogICAgIHJldHVybiBwb3NpdGlvbi5h
YnNvbHV0ZUNhcmV0Qm91bmRzKCk7CkBAIC03NDUsMTYgKzc0NSwxNSBAQCAtICh2b2lkKXNtYXJ0
RXh0ZW5kUmFuZ2VkU2VsZWN0aW9uOihXZWJUZXh0U21hcnRFeHRlbmREaXJlY3Rpb24pZGlyZWN0
aW9uCiAgICAgCiAgICAgRnJhbWUgKmZyYW1lID0gW3NlbGYgY29yZUZyYW1lXTsKICAgICBGcmFt
ZVNlbGVjdGlvbiYgZnJhbWVTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgRUFm
ZmluaXR5IGFmZmluaXR5ID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuYWZmaW5pdHkoKTsK
LSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3Rh
cnQoKSwgYWZmaW5pdHkpOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmQoZnJhbWVTZWxlY3Rpb24u
c2VsZWN0aW9uKCkuZW5kKCksIGFmZmluaXR5KTsKKyAgICBhdXRvIHN0YXJ0ID0gZnJhbWVTZWxl
Y3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CisgICAgYXV0byBlbmQgPSBmcmFtZVNl
bGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGJh
c2UoZnJhbWUtPnJhbmdlZFNlbGVjdGlvbkJhc2UoKS5iYXNlKCkpOyAgLy8gc2hvdWxkIGVxdWFs
IHN0YXJ0IG9yIGVuZAogCiAgICAgLy8gQmFzZSBtdXN0IGVxdWFsIHN0YXJ0IG9yIGVuZAogICAg
IGlmIChiYXNlICE9IHN0YXJ0ICYmIGJhc2UgIT0gZW5kKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWaXNpYmxlUG9zaXRpb24gZXh0ZW50KGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmV4dGVu
dCgpLCBhZmZpbml0eSk7CisgICAgYXV0byBleHRlbnQgPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rp
b24oKS52aXNpYmxlRXh0ZW50KCk7CiAgICAgCiAgICAgLy8gV2UgZG9uJ3QgeWV0IHN1cHBvcnQg
c21hcnQgZXh0ZW5zaW9uIGZvciBsYW5ndWFnZXMgd2hpY2gKICAgICAvLyByZXF1aXJlIGNvbnRl
eHQgZm9yIHdvcmQgYm91bmRhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggMGYxMjhh
NmRmOWUwOWUzYjVhMTNkYWQyMDhkNTgzMjEwZjM1YjhiNS4uMjc3MzYzZjFkNDQ2NDI5YjJjNjRm
NjEzZjYyY2RkZjY4N2Y2ZTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIC0gKE5TU2VsZWN0aW9uQWZmaW5pdHkpYWZmaW5pdHkKIAogLSAodm9pZClzZXRB
ZmZpbml0eTooTlNTZWxlY3Rpb25BZmZpbml0eSlhZmZpbml0eQogewotICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8VmlzaWJsZVBvc2l0aW9uICo+KF9pbnRlcm5hbCktPnNldEFmZmluaXR5KChXZWJDb3Jl
OjpFQWZmaW5pdHkpYWZmaW5pdHkpOworICAgIHJlaW50ZXJwcmV0X2Nhc3Q8VmlzaWJsZVBvc2l0
aW9uICo+KF9pbnRlcm5hbCktPnNldEFmZmluaXR5KChXZWJDb3JlOjpBZmZpbml0eSlhZmZpbml0
eSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tCmluZGV4IGFjNTljZDEyYmZhOGFhYzA2ZGIyZjA3ZmMwNWI1ZWUxMjA5
MzJhMjcuLmExNjgzNTcyOGM4OWJlYjFhOWYwYjMzYmFmMTI1ZmJiZTgxZjdmNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAt
MjIzLDcgKzIyMyw3IEBAIC0gKEJPT0wpaXNTZWxlY3RhYmxlQmxvY2sKIAogLSAoRE9NUmFuZ2Ug
KilyYW5nZU9mQ29udGFpbmluZ1BhcmFncmFwaAogewotICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29yZShzZWxmKSwgMCksIFdlYkNvcmU6
OkRPV05TVFJFQU0pOworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbihjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24oY29yZShzZWxmKSwgMCkpOwogICAgIHJldHVybiBraXQobWFrZVNpbXBs
ZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGgocG9zaXRpb24pLCBlbmRPZlBhcmFncmFwaChwb3NpdGlv
bikpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBkZTMxMWFiN2ZmNjNlNTYyYWM3NmE3MDA3
ODM2MmVmZjBmMTk3OWExLi4zNDAyZjM5MWU1MjZhYWE3NjIwZGNmMWUzNDgyODRlMzQzZWJjMjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
c2hvdWxkRW5kRWRpdGluZyhjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogICAg
IGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsK
ICAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5h
bDsKLSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6RUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0
aW5nKSBmaW5hbDsKKyAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wgc3Rp
bGxTZWxlY3RpbmcpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFdl
YkNvcmU6OlN0eWxlUHJvcGVydGllcyYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQXBwbHlTdHlsZSgpIGZpbmFsOwpAQCAtMjE2LDcg
KzIxNiw3IEBAIHByaXZhdGU6CiAgICAgRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZSBtX2xh
c3RFZGl0b3JTdGF0ZVdhc0NvbnRlbnRFZGl0YWJsZSB7IEVkaXRvclN0YXRlSXNDb250ZW50RWRp
dGFibGU6OlVuc2V0IH07CiB9OwogCi1pbmxpbmUgTlNTZWxlY3Rpb25BZmZpbml0eSBraXQoV2Vi
Q29yZTo6RUFmZmluaXR5IGFmZmluaXR5KQoraW5saW5lIE5TU2VsZWN0aW9uQWZmaW5pdHkga2l0
KFdlYkNvcmU6OkFmZmluaXR5IGFmZmluaXR5KQogewogICAgIHN3aXRjaCAoYWZmaW5pdHkpIHsK
ICAgICBjYXNlIFdlYkNvcmU6OkFmZmluaXR5OjpVcHN0cmVhbToKQEAgLTIyOCw3ICsyMjgsNyBA
QCBpbmxpbmUgTlNTZWxlY3Rpb25BZmZpbml0eSBraXQoV2ViQ29yZTo6RUFmZmluaXR5IGFmZmlu
aXR5KQogICAgIHJldHVybiBOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbTsKIH0KIAotaW5s
aW5lIFdlYkNvcmU6OkVBZmZpbml0eSBjb3JlKE5TU2VsZWN0aW9uQWZmaW5pdHkgYWZmaW5pdHkp
CitpbmxpbmUgV2ViQ29yZTo6QWZmaW5pdHkgY29yZShOU1NlbGVjdGlvbkFmZmluaXR5IGFmZmlu
aXR5KQogewogICAgIHN3aXRjaCAoYWZmaW5pdHkpIHsKICAgICBjYXNlIE5TU2VsZWN0aW9uQWZm
aW5pdHlVcHN0cmVhbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA5MmZhOGZiZTEyZjg4MjQwMmUz
NDVjODcyN2U3NzU3YTkwNjg0NTlkLi4yOGNhMWI5YWJiZTY0NmQ5ZTA0MGE1NjE2N2JmYjAzZGJj
YmEzODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC0zMDAsNyArMzAwLDcgQEAgYm9vbCBXZWJF
ZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBP
cHRpb25hbDxTaW1wbGUKICAgICByZXR1cm4gW1t3ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3
YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBzaG91bGRJbnNlcnRUZXh0OnRleHQgcmVwbGFjaW5nRE9N
UmFuZ2U6a2l0KHJhbmdlKSBnaXZlbkFjdGlvbjpraXQoYWN0aW9uKV07CiB9CiAKLWJvb2wgV2Vi
RWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFu
Z2UsIEVBZmZpbml0eSBzZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykKK2Jv
b2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHRvUmFuZ2UsIEFmZmluaXR5IHNlbGVjdGlvbkFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5n
KQogewogICAgIHJldHVybiBbbV93ZWJWaWV3IF9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdl
OmtpdChmcm9tUmFuZ2UpIHRvRE9NUmFuZ2U6a2l0KHRvUmFuZ2UpIGFmZmluaXR5OmtpdChzZWxl
Y3Rpb25BZmZpbml0eSkgc3RpbGxTZWxlY3Rpbmc6c3RpbGxTZWxlY3RpbmddOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggN2JjZDYzMjk5ZjJi
MmU5ZmVjMDJhMTRhOTk0NGIwZWU4ZGUwNDM4Ni4uYTQyZDQ3NzdjODgxNjZlNGIwODZmZmQ2NmUz
NTQ3ZTRlNjIxZDUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC03MTUsNyArNzE1LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvcmNlVXMKIAogLSAo
TlNSZWN0KV9jYXJldFJlY3RBdFBvc2l0aW9uOihjb25zdCBXZWJDb3JlOjpQb3NpdGlvbiYpcG9z
IGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KWFmZmluaXR5CiB7Ci0gICAgV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbihwb3MsIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkVBZmZpbml0eT4oYWZmaW5pdHkpKTsKKyAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uKHBvcywgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWZmaW5pdHk+KGFmZmluaXR5
KSk7CiAgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbi5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiB9
CiAKQEAgLTExMzAsNyArMTEzMCw3IEBAIC0gKE5TUmFuZ2UpX3NlbGVjdGVkTlNSYW5nZQogLSAo
dm9pZClfc2VsZWN0TlNSYW5nZTooTlNSYW5nZSlyYW5nZQogewogICAgIGlmIChhdXRvIGRvbVJh
bmdlID0gW3NlbGYgX2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlXSkKLSAgICAgICAgX3ByaXZhdGUt
PmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFdlYkNvcmU6OlZpc2libGVTZWxl
Y3Rpb24oKmRvbVJhbmdlLCBXZWJDb3JlOjpTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgICAg
ICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oV2ViQ29yZTo6
VmlzaWJsZVNlbGVjdGlvbigqZG9tUmFuZ2UpKTsKIH0KIAogLSAoQk9PTClfaXNEaXNwbGF5aW5n
U3RhbmRhbG9uZUltYWdlCkBAIC0xNzAzLDMxICsxNzAzLDMxIEBAIC0gKHZvaWQpZ2V0RGljdGF0
aW9uUmVzdWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6KE5TQXJy
YXkgKiopCiAgICAgQVNTRVJUKG91dFJhbmdlcyk7CiAgICAgaWYgKCFvdXRSYW5nZXMpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vICpvdXRSYW5nZXMgc2hvdWxkIG5vdCBhbHJlYWR5
IHBvaW50IHRvIGFuIGFycmF5LgogICAgIEFTU0VSVCghKCpvdXRSYW5nZXMpKTsKICAgICAqb3V0
UmFuZ2VzID0gbmlsOwotICAgIAorCiAgICAgQVNTRVJUKG91dE1ldGFkYXRhcyk7CiAgICAgaWYg
KCFvdXRNZXRhZGF0YXMpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vICptZXRhZGF0
YSBzaG91bGQgbm90IGFscmVhZHkgcG9pbnQgdG8gYW4gYXJyYXkuCiAgICAgQVNTRVJUKCEoKm91
dE1ldGFkYXRhcykpOwogICAgICpvdXRNZXRhZGF0YXMgPSBuaWw7Ci0gICAgCisKICAgICBOU011
dGFibGVBcnJheSAqcmFuZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBOU011dGFi
bGVBcnJheSAqbWV0YWRhdGFzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICAKKwogICAg
IGF1dG8qIGZyYW1lID0gY29yZShzZWxmKTsKICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpOwogCi0gICAgY29uc3QgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpOwotICAgIFdlYkNvcmU6OkVsZW1lbnQqIHJvb3QgPSBzZWxlY3Rpb24u
c2VsZWN0aW9uVHlwZSgpID09IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9u
ID8gZnJhbWUtPmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkgOiBzZWxlY3Rpb24ucm9vdEVk
aXRhYmxlRWxlbWVudCgpOwotICAgIAorICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBhdXRvIHJvb3QgPSBzZWxlY3Rpb24uaXNOb25lKCkg
PyBmcmFtZS0+ZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSA6IHNlbGVjdGlvbi5yb290RWRp
dGFibGVFbGVtZW50KCk7CisKICAgICBET01SYW5nZSAqcHJldmlvdXNET01SYW5nZSA9IG5pbDsK
ICAgICBpZCBwcmV2aW91c01ldGFkYXRhID0gbmlsOwotICAgIAorCiAgICAgZm9yIChXZWJDb3Jl
OjpOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IFdlYkNvcmU6Ok5vZGVUcmF2ZXJzYWw6
Om5leHQoKm5vZGUpKSB7CiAgICAgICAgIGF1dG8gbWFya2VycyA9IGRvY3VtZW50LT5tYXJrZXJz
KCkubWFya2Vyc0Zvcigqbm9kZSk7CiAgICAgICAgIGZvciAoYXV0byogbWFya2VyIDogbWFya2Vy
cykgewpAQCAtMTc0MCw3ICsxNzQwLDcgQEAgLSAodm9pZClnZXREaWN0YXRpb25SZXN1bHRSYW5n
ZXM6KE5TQXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFkYXRhczooTlNBcnJheSAqKikKICAgICAg
ICAgICAgIEFTU0VSVChtZXRhZGF0YSk7CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIERPTVJh
bmdlICpkb21SYW5nZSA9IGtpdChtYWtlU2ltcGxlUmFuZ2UoKm5vZGUsICptYXJrZXIpKTsKIAog
ICAgICAgICAgICAgaWYgKG1ldGFkYXRhICE9IHByZXZpb3VzTWV0YWRhdGEpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDI4MjkxY2Iy
MDViM2YzMWFmNWU1ZTliZTk1NTMzYmJiNDJiNTFlZWUuLjYxZGE4MDllZWVhMmY2NTlhZTM2NzZk
OWE4YWY5MDYyZTBkNzAxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtNjcwNyw3ICs2NzA3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFdlYlJhbmdlSXNSZWxhdGl2ZVRvIHJhbmdlSXNS
ZWxhdGl2ZVRvID0gbmVlZFRvUmVtb3ZlU29mdFNwYWNlID8gV2ViUmFuZ2VJc1JlbGF0aXZlVG86
OlBhcmFncmFwaCA6IFdlYlJhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3Q7CiAgICAgICAg
IGlmIChhdXRvIGRvbVJhbmdlID0gW1tzZWxmIF9mcmFtZV0gX2NvbnZlcnRUb0RPTVJhbmdlOnJl
cGxhY2VtZW50UmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86cmFuZ2VJc1JlbGF0aXZlVG9dKSB7CiAg
ICAgICAgICAgICBXZWJDb3JlOjpJZ25vcmVTZWxlY3Rpb25DaGFuZ2VGb3JTY29wZSBzZWxlY3Rp
b25DaGFuZ2UgeyAqY29yZUZyYW1lIH07Ci0gICAgICAgICAgICBjb3JlRnJhbWUtPnNlbGVjdGlv
bigpLnNldFNlbGVjdGlvbihXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKCpkb21SYW5nZSwgV2Vi
Q29yZTo6U0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAgIGNvcmVGcmFtZS0+c2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24oKmRvbVJhbmdl
KSk7CiAgICAgICAgICAgICByZXBsYWNlc1RleHQgPSByZXBsYWNlbWVudFJhbmdlLmxlbmd0aDsK
ICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407862</attachid>
            <date>2020-09-02 21:05:28 -0700</date>
            <delta_ts>2020-09-03 14:36:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216102-20200902210527.patch</filename>
            <type>text/plain</type>
            <size>162577</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVhODU0MWVhMWNjMzU0
OGIwYTMzMmQ0YTEwNzkwNmVlZjM4ZTc2Mi4uOWNhZGJmZmFlNzVmZmViMDI2ZjIwZjQ3NzFkYjNl
ZmQ4NmU0MThlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNyBAQAorMjAyMC0wOS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEVBZmZpbml0eSwg
VVBTVFJFQU0sIERPV05TVFJFQU0sIFNFTF9ERUZBVUxUX0FGRklOSVRZLCBhbmQgVmlzaWJsZVNl
bGVjdGlvbjo6c2VsZWN0aW9uVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlckRh
dGEpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
Lmg6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwZXJmb3JtVGV4dE9w
ZXJhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JVbm9yZGVyZWRQb3NpdGlvbnMgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvblJh
bmdlRm9yUmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnJlcGxhY2VUZXh0SW5SYW5nZSk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUgY29u
c3QpOiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIGNhbGwgdG8gUG9zaXRpb246OmVxdWFsLCBz
aW1wbGlmaWVkIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojpib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25zdCk6IFVzZSBBZmZpbml0eS4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3Np
dGlvbkZvckluZGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lIGNvbnN0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6
CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KTogVXNlIEFmZmluaXR5Lgor
ICAgICAgICAod29yZEF0UG9zaXRpb25Gb3JBdGtCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAo
c2VudGVuY2VBdFBvc2l0aW9uRm9yQXRrQm91bmRhcnkpOiBEaXR0by4KKyAgICAgICAgKGxpbmVB
dFBvc2l0aW9uRm9yQXRrQm91bmRhcnkpOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAgICAgICAgKG9iamVjdEZvY3VzZWRB
bmRDYXJldE9mZnNldFVuaWdub3JlZCk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0
ZUZvY3VzQXBwZWFyYW5jZSk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKworICAgICAgICAq
IGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cHJldmlvdXND
aGFyYWN0ZXJQb3NpdGlvbiBjb25zdCk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjpuZXh0Q2hhcmFjdGVyUG9zaXRpb24gY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uOjpsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRp
b24gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppbmxpbmVCb3hB
bmRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5QmxvY2tFbGVt
ZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseUJsb2NrRWxlbWVudENvbW1h
bmQ6OmZvcm1hdFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvQnJlYWtCbG9j
a3F1b3RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCcmVha0Jsb2NrcXVvdGVDb21t
YW5kOjpkb0FwcGx5KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3Zl
UGFyYWdyYXBoV2l0aENsb25lcyk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6IERpdHRvLgor
CisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c21hcnREZWxldGVQYXJhZ3JhcGhTcGFjZXJzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KTog
RGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Zmlyc3RJblNwZWNpYWxFbGVtZW50KTogUmVseSBvbiBkZWZhdWx0IGFmZmluaXR5LgorICAg
ICAgICAoV2ViQ29yZTo6bGFzdEluU3BlY2lhbEVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OnZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnZpc2libGVQb3NpdGlvbkFmdGVyTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKTogVXNlIEFmZmlu
aXR5LgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5kKTogVXNlIEFmZmluaXR5LgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpjYW5EZWxldGVSYW5nZSBjb25zdCk6IFJlbHkgb24gZGVmYXVsdCBhZmZp
bml0eS4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlTdHlsZSk6IFVzZSBpc05vbmUg
YW5kIGlzQ2FyZXQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5
bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOiBV
c2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKTogRGl0dG8uIFVzZSBpc0NhcmV0
LgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOiBSZWx5IG9uIGRlZmF1bHQg
YWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRl
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vob2xk
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2Ug
Y29uc3QpOiBEaXR0by4gQWxzbyBzaW1wbGlmeQorICAgICAgICByZWN0YW5nbGUgY2FsY3VsYXRp
b24gYXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNob3VsZENoYW5nZVNlbGVjdGlvbiBjb25zdCk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6ZmluZFN0cmluZyk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKwor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRv
TWFyayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFRvTWFyayk6IERp
dHRvLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246Om1vdmVUbyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246Om1vZGlmeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OnNldEJhc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpzZXRFeHRlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpzZXRTZWxlY3RlZFJhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6cmV2ZWFsU2VsZWN0aW9uKTogVXNlIGlzTm9uZSBhbmQgaXNDYXJldC4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSk6IFJlbHkgb24g
ZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpleHBh
bmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24pOiBEaXR0by4KKwor
ICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDogVXNlIEFmZmluaXR5LgorCisgICAg
ICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6b3V0ZGVudFJlZ2lvbik6IFJlbHkgb24gZGVmYXVsdCBh
ZmZpbml0eS4KKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KTogVXNl
IEFmZmluaXR5LgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQ6OmRvQXBwbHkpOiBE
aXR0by4KKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5k
Ojpkb0FwcGx5KTogVXNlIEFmZmluaXR5LgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0
VGFiKTogUmVseSBvbiBkZWZhdWx0IGFmZmluaXR5LgorCisgICAgICAgICogZWRpdGluZy9SZW5k
ZXJlZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OlJl
bmRlcmVkUG9zaXRpb24pOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICogZWRpdGluZy9SZW5kZXJl
ZFBvc2l0aW9uLmg6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
ZG9BcHBseSk6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjb21wbGV0ZUhUTUxSZXBsYWNlbWVudCk6CisgICAgICAg
IFVzZSBWaXNpYmxlU2VsZWN0aW9uOjpkZWZhdWx0QWZmaW5pdHkuCisKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRBZmZpbml0eS5oOiBSZW1vdmVkIEVBZmZpbml0eSwgVVBTVFJFQU0sIERPV05TVFJF
QU0uCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKTogUmVseSBv
bgorICAgICAgICBkZWZhdWx0IGFmZmluaXR5LgorCisgICAgICAgICogZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Om1ha2VFZGl0YWJs
ZVJvb3RFbXB0eSk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOiBVc2UgaXNDYXJldE9yUmFuZ2UgYW5kIGlzUmFuZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZCk6
IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpWaXNpYmxlUG9zaXRpb24pOiBVc2UgQWZmaW5p
dHkuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnByZXZpb3VzIGNvbnN0KTog
UmVseSBvbiBkZWZhdWx0IGFmZmluaXR5LgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0
aW9uOjpsZWZ0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRp
b246OnJpZ2h0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTog
VXNlIEFmZmluaXR5LgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24pOiBV
c2UgQWZmaW5pdHkuIEFsc28gdXNlCisgICAgICAgIGluaXRpYWxpemUgaW4gdGhlIGNsYXNzIGRl
ZmluaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25G
cm9tQ29udGVudHNPZk5vZGUpOiBSZWx5IG9uCisgICAgICAgIGRlZmF1bHQgYWZmaW5pdHkuCisg
ICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFuZEVuZEZyb21CYXNl
QW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgUmVuYW1lIGZyb20gInBv
cyIgdG8gInBvc2l0aW9uIi4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OnVw
ZGF0ZVNlbGVjdGlvblR5cGUpOiBVcGRhdGUgZnJvbQorICAgICAgICBtX3NlbGVjdGlvblR5cGUg
dG8gbV90eXBlIGFuZCB1c2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2Vs
ZWN0aW9uOjp2YWxpZGF0ZSk6IFVzZSBpc1JhbmdlLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJs
ZVNlbGVjdGlvbjo6c2V0V2l0aG91dFZhbGlkYXRpb24pOiBVc2UgQWZmaW5pdHkgYW5kCisgICAg
ICAgIG1fdHlwZS4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oOiBSZW1v
dmVkIFNFTF9ERUZBVUxUX0FGRklOSVRZLCByZXBsYWNpbmcKKyAgICAgICAgaXQgd2l0aCBWaXNp
YmxlU2VsZWN0aW9uOjpkZWZhdWx0QWZmaW5pdHkuIFJlbW92ZWQgYm90aAorICAgICAgICBWaXNp
YmxlU2VsZWN0aW9uOjpTZWxlY3Rpb25UeXBlIGFuZCBWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rp
b25UeXBlLAorICAgICAgICByZXBsYWNpbmcgd2l0aCBwcml2YXRlIFZpc2libGVTZWxlY3Rpb246
OlR5cGUuIEFsc28gcmVuYW1lZAorICAgICAgICBtX3NlbGVjdGlvblR5cGUgdG8gbV90eXBlLgor
CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bG9naWNhbGx5UHJldmlvdXNCb3gpOiBVc2UgQWZmaW5pdHkuCisgICAgICAgIChXZWJDb3JlOjps
b2dpY2FsbHlOZXh0Qm94KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0xpbmVQ
b3NpdGlvbik6IFJlbHkgb24gZGVmYXVsdCBhZmZpbml0eS4KKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRMaW5lUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZQYXJhZ3Jh
cGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmVuZE9mUGFyYWdyYXBoKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjp3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkpOiBVc2UgQWZmaW5p
dHkuCisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkpOiBE
aXR0by4KKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KTog
VXNlIGlzUmFuZ2UuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDogVXNlIEFm
ZmluaXR5LgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6Y29sbGFwc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVNlbGVjdGlvbjo6Y29sbGFwc2VUb0VuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2VsZWN0aW9uOjpjb2xsYXBzZVRvU3RhcnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RE9NU2VsZWN0aW9uOjpzZXRQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2VsZWN0aW9uOjpleHRlbmQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5o
OiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2spOgor
ICAgICAgICBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisKKyAgICAgICAgKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFu
Y2VGb2N1c0luRG9jdW1lbnRPcmRlcik6CisgICAgICAgIFVzZSBjb25zdHJ1Y3RvciB0aGF0IHRh
a2VzIGEgc2luZ2xlIFBvc2l0aW9uIGFuZCBBZmZpbml0eS4KKworICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmFuZ2VzKTogVXNlIEFmZmluaXR5Lgor
CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QgY29uc3QpOiBVc2UgaXNOb25lLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBv
c2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMpOiBVc2UgQWZmaW5pdHku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVu
KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQpOiBEaXR0by4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24gY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNl
ZDo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6
OnBvc2l0aW9uRm9yUG9pbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50KTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOiBEaXR0by4KKwog
MjAyMC0wOS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENo
b29zZSBhZGVxdWF0ZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIENvbnZvbHZlck5vZGUncyBvdXRw
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNzNhNzBlMTExYTNmMGUyZGU0NjA1NTQyNDgxYjhmN2JhOWE2MWZlNS4u
OGM0MmQxZWMyMDI2NzVhOWNkOTFjZTBlODU3N2JlODI0MzRiYjM1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMC0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIEVBZmZpbml0eSwgVVBTVFJFQU0sIERPV05TVFJFQU0sIFNFTF9ERUZB
VUxUX0FGRklOSVRZLCBhbmQgVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uVHlwZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAg
ICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKTogVXNlIEFmZmluaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKTogRGl0
by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpd
KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpOiBEaXR0by4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6c2hv
dWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6IERpdHRvLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHku
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Bc3luYyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkZWxldGVTdXJyb3VuZGluZyk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aWRDb25jbHVkZUVkaXREcmFnKTogVXNlIEFmZmluaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51
bGFyaXR5QXRQb2ludCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZVNlbGVjdGVkVGV4dCk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbCk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEpOiBE
aXR0by4KKwogMjAyMC0wOS0wMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgY3VzdG9tIGRvbWFpbiBmcm9tIFNhbWVTaXRlPXN0cmljdCBqYWls
IHByb3RlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA5MDU0MDUwY2FjNjI4
NTdhNzVhZDI0MWU0MWE3Y2ExZmNmMGY2NTNiLi5mMTQ1ZTg3YWFhMDFiMDdmNDViMDk3MTM5NWU4
NjYyYzc5NzE5M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjAtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBFQWZmaW5pdHksIFVQU1RSRUFNLCBET1dOU1RSRUFNLCBTRUxfREVGQVVMVF9BRkZJ
TklUWSwgYW5kIFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvblR5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjEwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVJT1MubW06CisgICAgICAgICgtW1dlYkZyYW1lIGNsb3Nlc3RDYXJldFJlY3RJbk1hcmtlZFRl
eHRSYW5nZUZvclBvaW50Ol0pOiBVc2UgQWZmaW5pdHkuCisgICAgICAgICgtW1dlYkZyYW1lIHNt
YXJ0RXh0ZW5kUmFuZ2VkU2VsZWN0aW9uOl0pOiBVc2UgdmlzaWJsZVN0YXJ0L0VuZC9FeHRlbnQg
c28gd2UgZG9uJ3QKKyAgICAgICAgbmVlZCB0byB3cml0ZSBleHBsaWNpdCBjb2RlIHRvIGhhbmRs
ZSBhZmZpbml0eS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViVmlzaWJsZVBvc2l0aW9uIHNldEFmZmluaXR5Ol0pOiBVc2Ug
QWZmaW5pdHkuCisKIDIwMjAtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIENoYW5nZSBBZmZpbml0eSBpbnRvIGFuIGVudW0gY2xhc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBkMTE5MWY4MjhhMjI5YmQ5MzUzMjA1ZjkzZTBkNzgxNmUwMGFj
ODM4Li5iNmZjMWYyZDMxNDkxNjBkZjgyMmQwOTVhNTQ5YTgxMGUzMjM4NDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDktMDIgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBFQWZmaW5pdHksIFVQU1RS
RUFNLCBET1dOU1RSRUFNLCBTRUxfREVGQVVMVF9BRkZJTklUWSwgYW5kIFZpc2libGVTZWxlY3Rp
b246OnNlbGVjdGlvblR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNjEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9k
ZSByYW5nZU9mQ29udGFpbmluZ1BhcmFncmFwaF0pOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KGtpdCk6IFVzZSBBZmZpbml0eS4KKyAgICAgICAgKGNvcmUpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3
L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FyZXRSZWN0QXRQb3NpdGlvbjph
ZmZpbml0eTpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkZyYW1lIF9zZWxlY3ROU1JhbmdlOl0p
OiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisgICAgICAgICgtW1dlYkZyYW1lIGdldERpY3Rh
dGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6IFVzZSBpc05vbmUuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpbnNlcnRU
ZXh0Ol0pOiBSZWx5IG9uIGRlZmF1bHQgYWZmaW5pdHkuCisKIDIwMjAtMDktMDIgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBBZmZpbml0eSBpbnRvIGFu
IGVudW0gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBiZDRkNjAyODhjZGYy
ZDQ1YTE2ODM2ZmIxYmJkNzIyNzM4NDI3MWM4Li4zMmRjNDk3ZjM2NTYzNTg0ZWNhOGYxM2Q2ODc3
Y2E5MzhhZDZkMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjAtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBFQWZmaW5pdHksIFVQU1RSRUFNLCBET1dOU1RSRUFNLCBTRUxfREVGQVVMVF9BRkZJ
TklUWSwgYW5kIFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvblR5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjEwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKHRvV2ViU2VsZWN0aW9uQWZmaW5pdHkpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6IFVz
ZSBBZmZpbml0eS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDog
RGl0dG8uCisKIDIwMjAtMDktMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBjb21wYXJlUG9zaXRpb25zIGFuZCBtYWtlIFZpc2libGVQb3NpdGlvbiBp
bXByb3ZlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCmluZGV4IDI0NWE5NDdhZmYzYTExMzNmZDE1MTYxNTBlNmQwOGY2NWY2Y2NmZWYuLmJk
MGM3MjBiMGQ2NjUyZjJlOWEzNDdjZTAxZDczNzY5N2Y2NmZiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTg1Nyw3ICsxODU3LDcg
QEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvclRleHRN
YXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJgogICAgIENoYXJhY3Rlck9mZnNldCByZXN1bHQgPSBD
aGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEubm9kZSwgdGV4dE1hcmtlckRhdGEuY2hhcmFj
dGVyU3RhcnRJbmRleCwgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0KTsKICAgICAvLyBX
aGVuIHdlIGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2libGVQb3NpdGlvbiBpcyB1cHN0
cmVhbSwgaXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZp
b3VzIGxpbmUuCiAgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQgc28g
dGhhdCBpdCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KLSAgICBpZiAodGV4dE1hcmtlckRhdGEuYWZm
aW5pdHkgPT0gVVBTVFJFQU0pCisgICAgaWYgKHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID09IEFm
ZmluaXR5OjpVcHN0cmVhbSkKICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0
KHJlc3VsdCwgZmFsc2UpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDQxNWM4MzRjMTU4YThjNDNlZjA1
OTgzMDUzYmI0YjVjOTIwYjZhMzQuLjE1MWY3M2I5YmY5ODYwMDgxYmQ4MTE2NDk0NGZiYjhhOWRl
MTYzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBUZXh0TWFya2VyRGF0YSB7CiAgICAgaW50IGNoYXJh
Y3RlclN0YXJ0SW5kZXggeyAwIH07CiAgICAgaW50IGNoYXJhY3Rlck9mZnNldCB7IDAgfTsKICAg
ICBib29sIGlnbm9yZWQgeyBmYWxzZSB9OwotICAgIEVBZmZpbml0eSBhZmZpbml0eSB7IERPV05T
VFJFQU0gfTsKKyAgICBBZmZpbml0eSBhZmZpbml0eSB7IEFmZmluaXR5OjpEb3duc3RyZWFtIH07
CiB9OwogCiBzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDIwOWM5YjhjOTk4
YzU2ZGZjNGMzYTQ1NTM1YjQwNzVhNjY4ZTMxZjIuLmFiYmY1MGM0NWZkZTBiOWNlNjk5MWM2NmE5
ZDAzYTA1NzllYWQ5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNjkxLDcgKzY5MSw3IEBAIFZlY3RvcjxTdHJp
bmc+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxp
dHlUZXh0T3BlcmF0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHRleHRSYW5nZSA6IG9wZXJhdGlvbi50ZXh0UmFuZ2VzKSB7Ci0gICAgICAgIGlmICghZnJh
bWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UodGV4dFJhbmdlLCBET1dOU1RSRUFNLCBG
cmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcykpCisgICAgICAgIGlmICghZnJh
bWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UodGV4dFJhbmdlLCBBZmZpbml0eTo6RG93
bnN0cmVhbSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQodGV4dFJh
bmdlKTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aQogICAgIGJv
b2wgYWxyZWFkeUluT3JkZXI7CiAKICAgICAvLyB1cHN0cmVhbSBpcyBvcmRlcmVkIGJlZm9yZSBk
b3duc3RyZWFtIGZvciB0aGUgc2FtZSBwb3NpdGlvbgotICAgIGlmICh2aXNpYmxlUG9zMSA9PSB2
aXNpYmxlUG9zMiAmJiB2aXNpYmxlUG9zMi5hZmZpbml0eSgpID09IFVQU1RSRUFNKQorICAgIGlm
ICh2aXNpYmxlUG9zMSA9PSB2aXNpYmxlUG9zMiAmJiB2aXNpYmxlUG9zMi5hZmZpbml0eSgpID09
IEFmZmluaXR5OjpVcHN0cmVhbSkKICAgICAgICAgYWxyZWFkeUluT3JkZXIgPSBmYWxzZTsKIAog
ICAgIC8vIHVzZSBzZWxlY3Rpb24gb3JkZXIgdG8gc2VlIGlmIHRoZSBwb3NpdGlvbnMgYXJlIGlu
IG9yZGVyCkBAIC0xMTQ2LDcgKzExNDYsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0
aW9uRm9ySW5kZXgocmFuZ2Uuc3RhcnQpOwotICAgIHN0YXJ0UG9zaXRpb24uc2V0QWZmaW5pdHko
RE9XTlNUUkVBTSk7CisgICAgc3RhcnRQb3NpdGlvbi5zZXRBZmZpbml0eShBZmZpbml0eTo6RG93
bnN0cmVhbSk7CiAgICAgcmV0dXJuIHsgc3RhcnRQb3NpdGlvbiwgdmlzaWJsZVBvc2l0aW9uRm9y
SW5kZXgocmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGgpIH07CiB9CiAKQEAgLTIwMDMsNyArMjAw
Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvCiAgICAgLy8gQWxzbyBvbmx5IGRvIHRoaXMg
d2hlbiB0aGUgZmllbGQgaXMgaW4gZWRpdGluZyBtb2RlLgogICAgIGF1dG8mIGZyYW1lID0gcmVu
ZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoZWxlbWVudC5zaG91bGRVc2VJbnB1dE1ldGhvZCgp
KSB7Ci0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2VGb3JQ
bGFpblRleHRSYW5nZShyYW5nZSksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRD
bG9zZVR5cGluZzo6WWVzKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRS
YW5nZShyYW5nZUZvclBsYWluVGV4dFJhbmdlKHJhbmdlKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0s
IEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICAgICAgZnJhbWUu
ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50U3RyaW5nLCBFZGl0
b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpObywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Ok5vKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMmFjMTM0
MmRhYzM0NDQ0N2VkNTEzMjE4OWUwOGVmMzU5NTIzZmU5NC4uN2RhYTg4MDUyNmYxYWRkZmQ2ZmNi
MmM1ZGZkNjcxN2M2NmFhNTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yMDA0LDI3ICsy
MDA0LDIxIEBAIFZpc2libGVQb3NpdGlvblJhbmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpCiAgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb25SYW5nZSgpOwogICAgIAogICAgIC8vIGl0ZXJhdGUgb3ZlciB0aGUgbGluZXMKLSAg
ICAvLyBGSVhNRTogdGhpcyBpcyB3cm9uZyB3aGVuIGxpbmVOdW1iZXIgaXMgbGluZUNvdW50KzEs
ICBiZWNhdXNlIG5leHRMaW5lUG9zaXRpb24gdGFrZXMgeW91IHRvIHRoZQotICAgIC8vIGxhc3Qg
b2Zmc2V0IG9mIHRoZSBsYXN0IGxpbmUKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9
IG1fcmVuZGVyZXItPnZpZXcoKS5wb3NpdGlvbkZvclBvaW50KEludFBvaW50KCksIG51bGxwdHIp
OwotICAgIFZpc2libGVQb3NpdGlvbiBzYXZlZFZpc2libGVQb3M7CisgICAgLy8gRklYTUU6IFRo
aXMgaXMgd3Jvbmcgd2hlbiBsaW5lTnVtYmVyIGlzIGxpbmVDb3VudCsxLCBiZWNhdXNlIG5leHRM
aW5lUG9zaXRpb24gdGFrZXMgeW91IHRvIHRoZSBsYXN0IG9mZnNldCBvZiB0aGUgbGFzdCBsaW5l
LgorICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IG1fcmVuZGVyZXItPnZpZXcoKS5wb3Np
dGlvbkZvclBvaW50KEludFBvaW50KCksIG51bGxwdHIpOwogICAgIHdoaWxlICgtLWxpbmVDb3Vu
dCkgewotICAgICAgICBzYXZlZFZpc2libGVQb3MgPSB2aXNpYmxlUG9zOwotICAgICAgICB2aXNp
YmxlUG9zID0gbmV4dExpbmVQb3NpdGlvbih2aXNpYmxlUG9zLCAwKTsKLSAgICAgICAgaWYgKHZp
c2libGVQb3MuaXNOdWxsKCkKLSAgICAgICAgICAgIHx8IHZpc2libGVQb3MgPT0gc2F2ZWRWaXNp
YmxlUG9zCi0gICAgICAgICAgICB8fCB2aXNpYmxlUG9zLmVxdWFscyhzYXZlZFZpc2libGVQb3Mp
KQorICAgICAgICBhdXRvIHByZXZpb3VzTGluZVBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAg
IHBvc2l0aW9uID0gbmV4dExpbmVQb3NpdGlvbihwb3NpdGlvbiwgMCk7CisgICAgICAgIGlmIChw
b3NpdGlvbi5pc051bGwoKSB8fCBwb3NpdGlvbiA9PSBwcmV2aW91c0xpbmVQb3NpdGlvbikKICAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOwogICAgIH0KLSAgICAKKwog
ICAgIC8vIG1ha2UgYSBjYXJldCBzZWxlY3Rpb24gZm9yIHRoZSBtYXJrZXIgcG9zaXRpb24sIHRo
ZW4gZXh0ZW5kIGl0IHRvIHRoZSBsaW5lCi0gICAgLy8gTk9URTogaWdub3JlcyByZXN1bHRzIG9m
IHNlbC5tb2RpZnkgYmVjYXVzZSBpdCByZXR1cm5zIGZhbHNlIHdoZW4KLSAgICAvLyBzdGFydGlu
ZyBhdCBhbiBlbXB0eSBsaW5lLiAgVGhlIHJlc3VsdGluZyBzZWxlY3Rpb24gaW4gdGhhdCBjYXNl
Ci0gICAgLy8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCisgICAgLy8gTk9URTogSWdu
b3JlcyByZXN1bHRzIG9mIHNlbC5tb2RpZnkgYmVjYXVzZSBpdCByZXR1cm5zIGZhbHNlIHdoZW4g
c3RhcnRpbmcgYXQgYW4gZW1wdHkgbGluZS4KKyAgICAvLyBUaGUgcmVzdWx0aW5nIHNlbGVjdGlv
biBpbiB0aGF0IGNhc2Ugd2lsbCBiZSBhIGNhcmV0IGF0IHBvc2l0aW9uLgogICAgIEZyYW1lU2Vs
ZWN0aW9uIHNlbGVjdGlvbjsKLSAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24odmlzaWJsZVBvcykpOworICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24ocG9zaXRpb24p
OwogICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQs
IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5
KTsKLSAgICAKICAgICByZXR1cm4gc2VsZWN0aW9uLnNlbGVjdGlvbigpOwogfQogICAgIApAQCAt
MjEzNCwxMSArMjEyOCwxMSBAQCBJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJv
dW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQbwogICAgIGlmIChyZWN0
Mi55KCkgIT0gcmVjdDEueSgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZkZpcnN0
TGluZSA9IGVuZE9mTGluZShyYW5nZS5zdGFydCk7CiAgICAgICAgIGlmIChyYW5nZS5zdGFydCA9
PSBlbmRPZkZpcnN0TGluZSkgewotICAgICAgICAgICAgcmFuZ2Uuc3RhcnQuc2V0QWZmaW5pdHko
RE9XTlNUUkVBTSk7CisgICAgICAgICAgICByYW5nZS5zdGFydC5zZXRBZmZpbml0eShBZmZpbml0
eTo6RG93bnN0cmVhbSk7CiAgICAgICAgICAgICByZWN0MSA9IHJhbmdlLnN0YXJ0LmFic29sdXRl
Q2FyZXRCb3VuZHMoKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmFuZ2UuZW5kID09IGVuZE9m
Rmlyc3RMaW5lKSB7Ci0gICAgICAgICAgICByYW5nZS5lbmQuc2V0QWZmaW5pdHkoVVBTVFJFQU0p
OworICAgICAgICAgICAgcmFuZ2UuZW5kLnNldEFmZmluaXR5KEFmZmluaXR5OjpVcHN0cmVhbSk7
CiAgICAgICAgICAgICByZWN0MiA9IHJhbmdlLmVuZC5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMjkyLDcgKzIyODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQg
aW5kZQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIH0KICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbmRleFZh
bHVlKTsKLSAgICBwb3NpdGlvbi5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICBwb3NpdGlv
bi5zZXRBZmZpbml0eShBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgcmV0dXJuIHBvc2l0aW9u
OwogfQogCkBAIC0yMzQ3LDcgKzIzNDEsNyBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkIGxpbmVOdW1iZXIpCiAgICAg
aW50IGluZGV4MiA9IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGVuZFBvc2l0aW9uKTsKICAgICAK
ICAgICAvLyBhZGQgb25lIHRvIHRoZSBlbmQgaW5kZXggZm9yIGEgbGluZSBicmVhayBub3QgY2F1
c2VkIGJ5IHNvZnQgbGluZSB3cmFwICh0byBtYXRjaCBBcHBLaXQpCi0gICAgaWYgKGVuZFBvc2l0
aW9uLmFmZmluaXR5KCkgPT0gRE9XTlNUUkVBTSAmJiBlbmRQb3NpdGlvbi5uZXh0KCkuaXNOb3RO
dWxsKCkpCisgICAgaWYgKGVuZFBvc2l0aW9uLmFmZmluaXR5KCkgPT0gQWZmaW5pdHk6OkRvd25z
dHJlYW0gJiYgZW5kUG9zaXRpb24ubmV4dCgpLmlzTm90TnVsbCgpKQogICAgICAgICBpbmRleDIg
Kz0gMTsKICAgICAKICAgICAvLyByZXR1cm4gbmlsIHJhdGhlciB0aGFuIGFuIHplcm8tbGVuZ3Ro
IHJhbmdlICh0byBtYXRjaCBBcHBLaXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHAKaW5kZXggODIwYjVhMTlkMzI0NmVhYzQ5MDMzMmMzNTUwMGMxMWY4YTkyMWYwYS4uZTEyNmNj
Y2E1N2UyZjUxMmI4ZmIxMDM2NWY4OGIxZGY5YTcyZjNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcApAQCAtNDEzLDkgKzQxMyw5IEBAIHN0YXRpYyB2b2lkIGdldFNlbGVj
dGlvbk9mZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlz
aWJsCiAgICAgaW50IHJhbmdlTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQobm9kZVJhbmdlLCBUZXh0
SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAKICAg
ICAvLyBTcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgd2hlbiB3b3JraW5nIHdp
dGggKl9FTkQgYm91bmRhcmllcy4KLSAgICBpZiAoc2VsZWN0aW9uLmFmZmluaXR5KCkgPT0gVVBT
VFJFQU0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydChub2RlUmFuZ2VT
dGFydCwgVVBTVFJFQU0pOwotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZChub2Rl
UmFuZ2VFbmQsIFVQU1RSRUFNKTsKKyAgICBpZiAoc2VsZWN0aW9uLmFmZmluaXR5KCkgPT0gQWZm
aW5pdHk6OlVwc3RyZWFtKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQo
bm9kZVJhbmdlU3RhcnQsIEFmZmluaXR5OjpVcHN0cmVhbSk7CisgICAgICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlRW5kKG5vZGVSYW5nZUVuZCwgQWZmaW5pdHk6OlVwc3RyZWFtKTsKIAogICAg
ICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCBvZmZzZXRzIHdoZW4gZmluZGluZyB3cmFwcGVkIGxp
bmVzIHNvIHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIHRoZSBsaW5lIGlz
IHByb3Blcmx5IHRha2luZyBpbnRvIGFjY291bnQgd2hlbiBjYWxjdWxhdGluZyB0aGUgb2Zmc2V0
cy4KQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiB3b3JkQXRQb3Np
dGlvbkZvckF0a0JvdW5kYXJ5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqCiAgICAgLy8gV2Ug
bWFyayB0aGUgc2VsZWN0aW9uIGFzICd1cHN0cmVhbScgc28gd2UgY2FuIHVzZSB0aGF0IGluZm9y
bWF0aW9uIGxhdGVyLAogICAgIC8vIHdoZW4gZmluZGluZyB0aGUgYWN0dWFsIG9mZnNldHMgaW4g
Z2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdCgpLgogICAgIGlmIChib3VuZGFyeVR5cGUgPT0g
QVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQpCi0gICAgICAgIHNlbGVjdGVkV29yZC5zZXRBZmZp
bml0eShVUFNUUkVBTSk7CisgICAgICAgIHNlbGVjdGVkV29yZC5zZXRBZmZpbml0eShBZmZpbml0
eTo6VXBzdHJlYW0pOwogCiAgICAgcmV0dXJuIHNlbGVjdGVkV29yZDsKIH0KQEAgLTc1Miw3ICs3
NTIsNyBAQCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiBzZW50ZW5jZUF0UG9zaXRpb25Gb3JBdGtC
b3VuZGFyeShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZQogICAgIC8vIFdlIG1hcmsgdGhlIHNlbGVj
dGlvbiBhcyAndXBzdHJlYW0nIHNvIHdlIGNhbiB1c2UgdGhhdCBpbmZvcm1hdGlvbiBsYXRlciwK
ICAgICAvLyB3aGVuIGZpbmRpbmcgdGhlIGFjdHVhbCBvZmZzZXRzIGluIGdldFNlbGVjdGlvbk9m
ZnNldHNGb3JPYmplY3QoKS4KICAgICBpZiAoYm91bmRhcnlUeXBlID09IEFUS19URVhUX0JPVU5E
QVJZX1NFTlRFTkNFX0VORCkKLSAgICAgICAgc2VsZWN0ZWRTZW50ZW5jZS5zZXRBZmZpbml0eShV
UFNUUkVBTSk7CisgICAgICAgIHNlbGVjdGVkU2VudGVuY2Uuc2V0QWZmaW5pdHkoQWZmaW5pdHk6
OlVwc3RyZWFtKTsKIAogICAgIHJldHVybiBzZWxlY3RlZFNlbnRlbmNlOwogfQpAQCAtODI0LDcg
KzgyNCw3IEBAIHN0YXRpYyBWaXNpYmxlU2VsZWN0aW9uIGxpbmVBdFBvc2l0aW9uRm9yQXRrQm91
bmRhcnkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICAgICAgLy8gSW4gYWRkaXRpb24g
dG8gY2hlY2tpbmcgdGhhdCB3ZSBhcmUgbm90IGF0IHRoZSBlbmQgb2YgYSBibG9jaywgd2UgbmVl
ZAogICAgICAgICAvLyB0byBjaGVjayB0aGF0IGVuZFBvc2l0aW9uIGhhcyBub3QgVVBTVFJFQU0g
YWZmaW5pdHksIHNpbmNlIHRoYXQgd291bGQKICAgICAgICAgLy8gY2F1c2UgdHJvdWJsZSBpbnNp
ZGUgb2YgdGV4dCBjb250cm9scyAod2Ugd291bGQgYmUgYWR2YW5jaW5nIHRvbyBtdWNoKS4KLSAg
ICAgICAgaWYgKCFpc0VuZE9mQmxvY2soZW5kUG9zaXRpb24pICYmIGVuZFBvc2l0aW9uLmFmZmlu
aXR5KCkgIT0gVVBTVFJFQU0pCisgICAgICAgIGlmICghaXNFbmRPZkJsb2NrKGVuZFBvc2l0aW9u
KSAmJiBlbmRQb3NpdGlvbi5hZmZpbml0eSgpICE9IEFmZmluaXR5OjpVcHN0cmVhbSkKICAgICAg
ICAgICAgIGVuZFBvc2l0aW9uID0gZW5kUG9zaXRpb24ubmV4dCgpOwogICAgICAgICBicmVhazsK
IApAQCAtODQ0LDcgKzg0NCw3IEBAIHN0YXRpYyBWaXNpYmxlU2VsZWN0aW9uIGxpbmVBdFBvc2l0
aW9uRm9yQXRrQm91bmRhcnkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICAvLyBXZSBt
YXJrIHRoZSBzZWxlY3Rpb24gYXMgJ3Vwc3RyZWFtJyBzbyB3ZSBjYW4gdXNlIHRoYXQgaW5mb3Jt
YXRpb24gbGF0ZXIsCiAgICAgLy8gd2hlbiBmaW5kaW5nIHRoZSBhY3R1YWwgb2Zmc2V0cyBpbiBn
ZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KCkuCiAgICAgaWYgKGJvdW5kYXJ5VHlwZSA9PSBB
VEtfVEVYVF9CT1VOREFSWV9MSU5FX0VORCkKLSAgICAgICAgc2VsZWN0ZWRMaW5lLnNldEFmZmlu
aXR5KFVQU1RSRUFNKTsKKyAgICAgICAgc2VsZWN0ZWRMaW5lLnNldEFmZmluaXR5KEFmZmluaXR5
OjpVcHN0cmVhbSk7CiAKICAgICByZXR1cm4gc2VsZWN0ZWRMaW5lOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwu
Y3BwCmluZGV4IDhmNDNmMzg1YzMzYTI0Mzc1OWYxMmNmNzRkNjI5MWZlZGU5M2UzMGUuLjVkYmI1
MGU0NDUxYWI0NjRkZGU5ZTZlNDM4OTZhOWZjOGJkNDRiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAK
QEAgLTIyMyw3ICsyMjMsNyBAQCBBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9m
ZnNldFVuaWdub3JlZChBWENvcmVPYmplY3QqIHJlZmVyZW5jZU9iamVjdAogICAgIGlmICghc3Rh
cnROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZpc2libGVQb3NpdGlvbiBz
dGFydFBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShzdGFydE5v
ZGUpLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZp
c2libGVQb3NpdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoc3RhcnROb2RlKSk7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGVuZFBvc2l0aW9uID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnNlbGVjdGlvbigp
LnZpc2libGVFbmQoKTsKIAogICAgIGlmIChzdGFydFBvc2l0aW9uID09IGVuZFBvc2l0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDcyMmRjZjRiZTdkMjY4MTlhMGM1NmY4M2Q1OWRmYTFm
MDcyNGVlODEuLjNlMTNmOGE4ZTAxZmJiZDk5ZDcyZmFhYzZhMWRlOGM4NTQ4YzA2OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTMwOTMsNyArMzA5Myw3IEBAIHZvaWQgRWxlbWVudDo6dXBk
YXRlRm9jdXNBcHBlYXJhbmNlKFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSwgU2VsZWN0aW9uUmV2
ZWFsTW9kCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCByZXN0b3JlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24gaWYgdGhlcmUgaXMgb25lLgotICAgICAg
ICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24oZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKHRoaXMpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZSh0aGlzKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZnJhbWUtPnNlbGVj
dGlvbigpLnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKSB7CiAgICAgICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxl
Y3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEVsZW1lbnQ6OmRlZmF1bHRGb2N1
c1RleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGNm
NmQ1MWQzYmE0NjI5YTllMmEzMDgxMjZiYWRhNWNkMmM3MWJlNmUuLjk0ZTBlOWMwNTFkYWRhZGE3
M2U5ZTJmNDc0NmM5ZjNhZDlhZTdhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNTU3
LDcgKzU1Nyw3IEBAIGJvb2wgUG9zaXRpb246OmF0RW5kT2ZUcmVlKCkgY29uc3QKIH0KIAogLy8g
cmV0dXJuIGZpcnN0IHByZWNlZGluZyBET00gcG9zaXRpb24gcmVuZGVyZWQgYXQgYSBkaWZmZXJl
bnQgbG9jYXRpb24sIG9yICJ0aGlzIgotUG9zaXRpb24gUG9zaXRpb246OnByZXZpb3VzQ2hhcmFj
dGVyUG9zaXRpb24oRUFmZmluaXR5IGFmZmluaXR5KSBjb25zdAorUG9zaXRpb24gUG9zaXRpb246
OnByZXZpb3VzQ2hhcmFjdGVyUG9zaXRpb24oQWZmaW5pdHkgYWZmaW5pdHkpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNTg1LDcgKzU4NSw3IEBA
IFBvc2l0aW9uIFBvc2l0aW9uOjpwcmV2aW91c0NoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSBh
ZmZpbml0eSkgY29uc3QKIH0KIAogLy8gcmV0dXJuIGZpcnN0IGZvbGxvd2luZyBwb3NpdGlvbiBy
ZW5kZXJlZCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbiwgb3IgInRoaXMiCi1Qb3NpdGlvbiBQb3Np
dGlvbjo6bmV4dENoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSBhZmZpbml0eSkgY29uc3QKK1Bv
c2l0aW9uIFBvc2l0aW9uOjpuZXh0Q2hhcmFjdGVyUG9zaXRpb24oQWZmaW5pdHkgYWZmaW5pdHkp
IGNvbnN0CiB7CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTA5
OCw3ICsxMDk4LDcgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb24o
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogfQogCiAvLyBUaGlzIGFzc3VtZXMgdGhh
dCBpdCBzdGFydHMgaW4gZWRpdGFibGUgY29udGVudC4KLVBvc2l0aW9uIFBvc2l0aW9uOjpsZWFk
aW5nV2hpdGVzcGFjZVBvc2l0aW9uKEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBjb25zaWRlck5v
bkNvbGxhcHNpYmxlV2hpdGVzcGFjZSkgY29uc3QKK1Bvc2l0aW9uIFBvc2l0aW9uOjpsZWFkaW5n
V2hpdGVzcGFjZVBvc2l0aW9uKEFmZmluaXR5IGFmZmluaXR5LCBib29sIGNvbnNpZGVyTm9uQ29s
bGFwc2libGVXaGl0ZXNwYWNlKSBjb25zdAogewogICAgIEFTU0VSVChpc0VkaXRhYmxlUG9zaXRp
b24oKnRoaXMpKTsKICAgICBpZiAoaXNOdWxsKCkpCkBAIC0xMTIwLDcgKzExMjAsNyBAQCBQb3Np
dGlvbiBQb3NpdGlvbjo6bGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5p
dHksIGJvb2wgY29uc2lkZXJObwogfQogCiAvLyBUaGlzIGFzc3VtZXMgdGhhdCBpdCBzdGFydHMg
aW4gZWRpdGFibGUgY29udGVudC4KLVBvc2l0aW9uIFBvc2l0aW9uOjp0cmFpbGluZ1doaXRlc3Bh
Y2VQb3NpdGlvbihFQWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3Bh
Y2UpIGNvbnN0CitQb3NpdGlvbiBQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRpb24o
QWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzRWRpdGFibGVQb3NpdGlvbigqdGhpcykpOwogICAgIGlmIChpc051bGwo
KSkKQEAgLTExMzYsNyArMTEzNiw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp0cmFpbGluZ1doaXRl
c3BhY2VQb3NpdGlvbihFQWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBzCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVCb3hBbmRP
ZmZzZXQoRUFmZmluaXR5IGFmZmluaXR5KSBjb25zdAorSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0
aW9uOjppbmxpbmVCb3hBbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHkpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGlubGluZUJveEFuZE9mZnNldChhZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbigpKTsK
IH0KQEAgLTEyMzEsMTQgKzEyMzEsMTQgQEAgSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0aW9uOjpp
bmxpbmVCb3hBbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24KICAgICAg
ICAgICAgICAgICByZXR1cm4geyBib3gsIGNhcmV0T2Zmc2V0IH07CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmICgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPT0g
Y2FyZXRNYXhPZmZzZXQpIF4gKGFmZmluaXR5ID09IERPV05TVFJFQU0pKQotICAgICAgICAgICAg
ICAgIHx8ICgoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1pbk9m
ZnNldCkgXiAoYWZmaW5pdHkgPT0gVVBTVFJFQU0pKQorICAgICAgICAgICAgaWYgKCgoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1heE9mZnNldCkgXiAoYWZmaW5p
dHkgPT0gQWZmaW5pdHk6OkRvd25zdHJlYW0pKQorICAgICAgICAgICAgICAgIHx8ICgoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1pbk9mZnNldCkgXiAoYWZmaW5p
dHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKSkKICAgICAgICAgICAgICAgICB8fCAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1heE9mZnNldCAmJiBib3gtPm5leHRM
ZWFmT25MaW5lKCkgJiYgYm94LT5uZXh0TGVhZk9uTGluZSgpLT5pc0xpbmVCcmVhaygpKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FuZGlkYXRlID0gYm94OwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChjYW5kaWRhdGUgJiYgY2FuZGlkYXRlID09IHRleHRSZW5kZXJl
ci5sYXN0VGV4dEJveCgpICYmIGFmZmluaXR5ID09IERPV05TVFJFQU0pIHsKKyAgICAgICAgaWYg
KGNhbmRpZGF0ZSAmJiBjYW5kaWRhdGUgPT0gdGV4dFJlbmRlcmVyLmxhc3RUZXh0Qm94KCkgJiYg
YWZmaW5pdHkgPT0gQWZmaW5pdHk6OkRvd25zdHJlYW0pIHsKICAgICAgICAgICAgIGJveCA9IHNl
YXJjaEFoZWFkRm9yQmV0dGVyTWF0Y2goJnRleHRSZW5kZXJlcik7CiAgICAgICAgICAgICBpZiAo
Ym94KQogICAgICAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gYm94LT5jYXJldE1pbk9mZnNldCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1h
bmQuY3BwCmluZGV4IDE2NzhjZTMyNzU4Yzk0OTk0Nzk4ZTVmNjA1Mzk0MzJiYTNjZjcyMmIuLjYz
ZjM3ZDJhODk0YmI5MWIyNjYxZGFhNTYyMzZhMTFiOWI4MDQ5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6Zm9ybWF0U2VsZWN0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlNlbAogICAgICAgICBpbnNlcnROb2RlQXQo
YmxvY2txdW90ZS5jb3B5UmVmKCksIHN0YXJ0KTsKICAgICAgICAgYXV0byBwbGFjZWhvbGRlciA9
IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICAgICAgYXBwZW5kTm9kZShw
bGFjZWhvbGRlci5jb3B5UmVmKCksIFdURk1vdmUoYmxvY2txdW90ZSkpOwotICAgICAgICBzZXRF
bmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUocGxhY2Vo
b2xkZXIucHRyKCkpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFs
KCkpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRp
b25CZWZvcmVOb2RlKHBsYWNlaG9sZGVyLnB0cigpKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVu
ZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5k
LmNwcAppbmRleCBmZGYxMThjNWIzNGI1NGQ3ZDU2OGJkODc1YzVhZDIzZGY0OWY3MWI3Li4yMmIx
OGI5NzhmYmEwZmM2OWMxYWQzOWVmYmQ2ZjI1OWNiY2NhZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgdm9pZCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBJbnN0ZWFk
LCBpbnNlcnQgdGhlIGJyZWFrIGJlZm9yZSB0aGUgYmxvY2txdW90ZSwgdW5sZXNzIHRoZSBwb3Np
dGlvbiBpcyBhcyB0aGUgZW5kIG9mIHRoZSBxdW90ZWQgY29udGVudC4KICAgICBpZiAoaXNGaXJz
dFZpc2libGVQb3NpdGlvbkluTm9kZSh2aXNpYmxlUG9zLCB0b3BCbG9ja3F1b3RlKSAmJiAhaXNM
YXN0VmlzUG9zSW5Ob2RlKSB7CiAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoYnJlYWtOb2RlLmNv
cHlSZWYoKSwgKnRvcEJsb2NrcXVvdGUpOwotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoYnJlYWtOb2RlLnB0cigpKSwgRE9XTlNU
UkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShicmVha05v
ZGUucHRyKCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJl
Y3Rpb25hbCgpKSk7CiAgICAgICAgIHJlYmFsYW5jZVdoaXRlc3BhY2UoKTsgICAKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBCcmVha0Jsb2NrcXVvdGVDb21t
YW5kOjpkb0FwcGx5KCkKIAogICAgIC8vIElmIHdlJ3JlIGluc2VydGluZyB0aGUgYnJlYWsgYXQg
dGhlIGVuZCBvZiB0aGUgcXVvdGVkIGNvbnRlbnQsIHdlIGRvbid0IG5lZWQgdG8gYnJlYWsgdGhl
IHF1b3RlLgogICAgIGlmIChpc0xhc3RWaXNQb3NJbk5vZGUpIHsKLSAgICAgICAgc2V0RW5kaW5n
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKGJyZWFrTm9kZS5w
dHIoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwor
ICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9y
ZU5vZGUoYnJlYWtOb2RlLnB0cigpKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1NlbGVj
dGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgICAgICByZWJhbGFuY2VXaGl0ZXNwYWNlKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBCcmVha0Js
b2NrcXVvdGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICBhZGRCbG9ja1BsYWNlaG9sZGVySWZOZWVk
ZWQoY2xvbmVkQmxvY2txdW90ZS5wdHIoKSk7CiAgICAgCiAgICAgLy8gUHV0IHRoZSBzZWxlY3Rp
b24gcmlnaHQgYmVmb3JlIHRoZSBicmVhay4KLSAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoYnJlYWtOb2RlLnB0cigpKSwgRE9XTlNUUkVB
TSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgc2V0RW5kaW5nU2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKGJyZWFrTm9kZS5wdHIo
KSksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFs
KCkpKTsKICAgICByZWJhbGFuY2VXaGl0ZXNwYWNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggMmZjNjM4NDQ5ZDI4N2Ew
ZjdlNDZjZGMyZjAyNmFjODYwYWNkOGUzNS4uZGM3MGJiYmYzMDhjNmM0M2Y2ZDQ0MWZlNTk0M2Mw
ZDk0NWZjZmU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKQEAgLTEzNTgsNyArMTM1OCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6Om1vdmVQYXJhZ3JhcGhXaXRoQ2xvbmVzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRP
CiAKICAgICBjbG9uZVBhcmFncmFwaFVuZGVyTmV3RWxlbWVudChzdGFydCwgZW5kLCBvdXRlck5v
ZGUsIGJsb2NrRWxlbWVudCk7CiAgICAgICAKLSAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbihzdGFydCwgZW5kLCBET1dOU1RSRUFNKSk7CisgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQsIGVuZCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgCiAgICAgLy8gVGhlcmUgYXJlIGJ1Z3Mg
aW4gZGVsZXRpb24gd2hlbiBpdCByZW1vdmVzIGEgZnVsbHkgc2VsZWN0ZWQgdGFibGUvbGlzdC4K
QEAgLTE0NDksNyArMTQ0OSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJh
Z3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAKICAgICAvLyBG
SVhNRSAoNTA5ODkzMSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAiV2ViVmll
d0luc2VydEFjdGlvbk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBoZXJlLgog
Ci0gICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQsIGVuZCwgRE9X
TlNUUkVBTSkpOworICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0
LCBlbmQpKTsKICAgICBkb2N1bWVudCgpLmVkaXRvcigpLmNsZWFyTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW1hcihlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgZGVsZXRlU2VsZWN0aW9uKGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKTsKIApAQCAtMTUwNCw3ICsxNTA0LDcgQEAgdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFy
dE9mUGFyYWdyYXAKICAgICAgICAgLy8gb2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVy
biBudWxsKS4KICAgICAgICAgYXV0byBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCplZGl0YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKnN0YXJ0SW5kZXgsIFRleHRJdGVy
YXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CiAgICAgICAg
IGF1dG8gZW5kID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRl
c3RpbmF0aW9uSW5kZXggKyAqZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7Ci0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbih7
IHN0YXJ0LCBlbmQsIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCB9KTsKKyAgICAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uKHsgc3RhcnQsIGVuZCwgQWZmaW5pdHk6OkRvd25zdHJlYW0s
IG9yaWdpbmFsSXNEaXJlY3Rpb25hbCB9KTsKICAgICB9CiB9CiAKQEAgLTE1NzUsNyArMTU3NSw3
IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkK
ICAgICB9CiAKICAgICBhcHBlbmRCbG9ja1BsYWNlaG9sZGVyKCpuZXdCbG9jayk7Ci0gICAgc2V0
RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluTm9kZShuZXdC
bG9jay5nZXQoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwo
KSkpOworICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRp
b25Jbk5vZGUobmV3QmxvY2suZ2V0KCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2Vs
ZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAKICAgICBzdHlsZS0+cHJlcGFyZVRvQXBwbHlB
dChlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKICAgICBpZiAoIXN0eWxlLT5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwCmluZGV4IDQy
MTM0NzE0NTFkNjQ2YWMyNWQ3MjYwMzQwMDVjM2RmYmE4NTJmYTkuLmExMjAwZTlmM2I0MGIyOTM3
NjQzOGFlNGFjZDRiZWFlOGIwYmI3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3Jl
YXRlTGlua0NvbW1hbmQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgQ3JlYXRlTGlua0NvbW1h
bmQ6OmRvQXBwbHkoKQogICAgIGVsc2UgewogICAgICAgICBpbnNlcnROb2RlQXQoYW5jaG9yRWxl
bWVudC5jb3B5UmVmKCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgICAgICBhcHBl
bmROb2RlKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBtX3VybCksIGFuY2hvckVsZW1lbnQuY29w
eVJlZigpKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9z
aXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0aW9uSW5Q
YXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIERPV05TVFJFQU0sIGVuZGluZ1Nl
bGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShhbmNob3JFbGVtZW50
LnB0cigpKSwgcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShhbmNob3JFbGVtZW50LnB0cigpKSwg
QWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKaW5kZXggYmFhN2U5N2VlYzMzNWFmZjU2ZWEyOGNjNWEzOGJlNmQzNzhj
YjE0Yy4uZDBmNTZhZDUxOTlhNTM2ODZkYTk1NWJmMTU1N2I0YmFkZTJmYTMwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0y
MTMsNyArMjEzLDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzbWFydERlbGV0ZVBh
cmFncmFwaFNwYWNlcnMoKQogICAgICAgICBhdXRvIHBvc2l0aW9uID0gZW5kT2ZQYXJhZ3JhcGhC
ZWZvcmVTdGFydC5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICBtX3Vwc3RyZWFtU3RhcnQgPSBw
b3NpdGlvbi51cHN0cmVhbSgpOwogICAgICAgICBtX2Rvd25zdHJlYW1TdGFydCA9IHBvc2l0aW9u
LmRvd25zdHJlYW0oKTsKLSAgICAgICAgbV9sZWFkaW5nV2hpdGVzcGFjZSA9IG1fdXBzdHJlYW1T
dGFydC5sZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uKERPV05TVFJFQU0pOworICAgICAgICBtX2xl
YWRpbmdXaGl0ZXNwYWNlID0gbV91cHN0cmVhbVN0YXJ0LmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRp
b24oQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbk9u
U21hcnREZWxldGUobV91cHN0cmVhbVN0YXJ0LCBtX3Vwc3RyZWFtRW5kKTsKICAgICB9CiB9CkBA
IC05MDAsOCArOTAwLDggQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkK
ICAgICB9CiAKICAgICAvLyBzYXZlIHRoaXMgdG8gbGF0ZXIgbWFrZSB0aGUgc2VsZWN0aW9uIHdp
dGgKLSAgICBFQWZmaW5pdHkgYWZmaW5pdHkgPSBtX3NlbGVjdGlvblRvRGVsZXRlLmFmZmluaXR5
KCk7Ci0gICAgCisgICAgYXV0byBhZmZpbml0eSA9IG1fc2VsZWN0aW9uVG9EZWxldGUuYWZmaW5p
dHkoKTsKKwogICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBtX3NlbGVjdGlvblRvRGVsZXRl
LmVuZCgpLmRvd25zdHJlYW0oKTsKICAgICBtX25lZWRQbGFjZWhvbGRlciA9IGlzU3RhcnRPZlBh
cmFncmFwaChtX3NlbGVjdGlvblRvRGVsZXRlLnZpc2libGVTdGFydCgpLCBDYW5Dcm9zc0VkaXRp
bmdCb3VuZGFyeSkKICAgICAgICAgICAgICYmIGlzRW5kT2ZQYXJhZ3JhcGgobV9zZWxlY3Rpb25U
b0RlbGV0ZS52aXNpYmxlRW5kKCksIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZy5jcHAKaW5kZXggYjIyNzdjZWM0MTdlZTg2M2NhNDIzYmEzZGFiMDRlZTIx
MjYwZWM0MS4uYTc4YTZmYjFiMDlhNWNiZjFlMTc0MjE0ZmE0ZjNhYTE3NjY0N2JlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC00MzMsOCArNDMzLDggQEAgc3RhdGljIEhUTUxF
bGVtZW50KiBmaXJzdEluU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQog
ICAgIGZvciAoTm9kZSogbm9kZSA9IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCk7IG5vZGUgJiYg
bm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IHJvb3RFZGl0YWJsZUVsZW1lbnQ7IG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKCFpc1NwZWNpYWxIVE1MRWxlbWVu
dChub2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBWaXNpYmxlUG9zaXRpb24g
dlBvcyhwb3NpdGlvbiwgRE9XTlNUUkVBTSk7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBmaXJz
dEluRWxlbWVudChmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSksIERPV05TVFJFQU0p
OworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdlBvcyhwb3NpdGlvbik7CisgICAgICAgIFZpc2li
bGVQb3NpdGlvbiBmaXJzdEluRWxlbWVudChmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9k
ZSkpOwogICAgICAgICBpZiAoKGlzUmVuZGVyZWRUYWJsZShub2RlKSAmJiB2UG9zID09IGZpcnN0
SW5FbGVtZW50Lm5leHQoKSkgfHwgdlBvcyA9PSBmaXJzdEluRWxlbWVudCkKICAgICAgICAgICAg
IHJldHVybiAmZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKTsKICAgICB9CkBAIC00NDcsOCAr
NDQ3LDggQEAgc3RhdGljIEhUTUxFbGVtZW50KiBsYXN0SW5TcGVjaWFsRWxlbWVudChjb25zdCBQ
b3NpdGlvbiYgcG9zaXRpb24pCiAgICAgZm9yIChOb2RlKiBub2RlID0gcG9zaXRpb24uZGVwcmVj
YXRlZE5vZGUoKTsgbm9kZSAmJiBub2RlLT5yb290RWRpdGFibGVFbGVtZW50KCkgPT0gcm9vdEVk
aXRhYmxlRWxlbWVudDsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAo
IWlzU3BlY2lhbEhUTUxFbGVtZW50KG5vZGUpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIFZpc2libGVQb3NpdGlvbiB2UG9zKHBvc2l0aW9uLCBET1dOU1RSRUFNKTsKLSAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIGxhc3RJbkVsZW1lbnQobGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShu
b2RlKSwgRE9XTlNUUkVBTSk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2UG9zKHBvc2l0aW9u
KTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGxhc3RJbkVsZW1lbnQobGFzdFBvc2l0aW9uSW5P
ckFmdGVyTm9kZShub2RlKSk7CiAgICAgICAgIGlmICgoaXNSZW5kZXJlZFRhYmxlKG5vZGUpICYm
IHZQb3MgPT0gbGFzdEluRWxlbWVudC5wcmV2aW91cygpKSB8fCB2UG9zID09IGxhc3RJbkVsZW1l
bnQpCiAgICAgICAgICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9kZSk7CiAg
ICAgfQpAQCAtNTA5LDcgKzUwOSw3IEBAIEVsZW1lbnQqIGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFi
bGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb25CZWZvcmVOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUuaGFzQ2hp
bGROb2RlcygpKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZSgmbm9kZSksIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSkpOwogICAgIEFTU0VS
VChub2RlLnBhcmVudE5vZGUoKSk7CiAgICAgQVNTRVJUKCFub2RlLnBhcmVudE5vZGUoKS0+aXNT
aGFkb3dSb290KCkpOwogICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZSgmbm9k
ZSk7CkBAIC01MTksNyArNTE5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkJl
Zm9yZU5vZGUoTm9kZSYgbm9kZSkKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25BZnRl
ck5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAobm9kZS5oYXNDaGlsZE5vZGVzKCkpCi0gICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZSgmbm9k
ZSksIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RQb3Np
dGlvbkluT3JBZnRlck5vZGUoJm5vZGUpKTsKICAgICBBU1NFUlQobm9kZS5wYXJlbnROb2RlKCkp
OwogICAgIEFTU0VSVCghbm9kZS5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKTsKICAgICBy
ZXR1cm4gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZSgmbm9kZSk7CkBAIC0xMDk3LDcgKzEwOTcs
NyBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBD
b250YWluZXJOb2RlKiBzY29wZSkKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJ
bmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluZGV4KQogewogICAg
IGlmIChpbmRleCA8PSAwKQotICAgICAgICByZXR1cm4geyBmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUoJm5vZGUpLCBET1dOU1RSRUFNIH07CisgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZSgmbm9kZSkgfTsKIAogICAgIGF1dG8gcmFuZ2UgPSBtYWtlUmFuZ2VT
ZWxlY3RpbmdOb2RlQ29udGVudHMobm9kZSk7CiAgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFu
Z2UpOwpAQCAtMTExMCw3ICsxMTEwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW4KICAgICAg
ICAgICAgIHJldHVybiB7IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihpdC5yYW5nZSgpLnN0
YXJ0KSB9OwogICAgIH0KIAotICAgIHJldHVybiB7IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bigoaXQuYXRFbmQoKSA/IHJhbmdlIDogaXQucmFuZ2UoKSkuZW5kKSwgVVBTVFJFQU0gfTsKKyAg
ICByZXR1cm4geyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKGl0LmF0RW5kKCkgPyByYW5n
ZSA6IGl0LnJhbmdlKCkpLmVuZCksIEFmZmluaXR5OjpVcHN0cmVhbSB9OwogfQogCiAvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgdHdvIHBvc2l0aW9ucyBhcmUgdmlzaWJseSBuZXh0IHRvIGVhY2ggb3Ro
ZXIgKGZpcnN0IHRoZW4gc2Vjb25kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDRk
NGE4Y2M0NGY5MDEyZmNlYjRjOTQ0NzliMDU1OTE5YjU0NDdkMmMuLjM5MTNmMmVjODk1MjdmNjQz
OTdkNWFhNTk5ZTEzMzA0ODNkYjM1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTI3MSw3ICsyNzEsNyBAQCBWaXNpYmxlU2VsZWN0aW9uIEVkaXRvcjo6c2VsZWN0aW9uRm9yQ29t
bWFuZChFdmVudCogZXZlbnQpCiAgICAgICAgIGF1dG8gc3RhcnQgPSBzZWxlY3Rpb24uc3RhcnQo
KTsKICAgICAgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8ICZ0YXJnZXQgIT0gZW5jbG9zaW5nVGV4
dEZvcm1Db250cm9sKHN0YXJ0KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gcmFuZ2UgPSB0YXJn
ZXQuc2VsZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgKnJhbmdlLCBET1dOU1RS
RUFNLCBzZWxlY3Rpb24uaXNEaXJlY3Rpb25hbCgpIH07CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgKnJhbmdlLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgc2VsZWN0aW9uLmlzRGlyZWN0aW9uYWwo
KSB9OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBzZWxlY3Rpb247CkBAIC01MTMsNyAr
NTEzLDcgQEAgYm9vbCBFZGl0b3I6OmNhbkRlbGV0ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBy
YW5nZSkgY29uc3QKIAogICAgIGlmIChyYW5nZS5jb2xsYXBzZWQoKSkgewogICAgICAgICAvLyBG
SVhNRTogV2Ugc29tZXRpbWVzIGFsbG93IGRlbGV0aW9ucyBhdCB0aGUgc3RhcnQgb2YgZWRpdGFi
bGUgcm9vdHMsIGxpa2Ugd2hlbiB0aGUgY2FyZXQgaXMgaW4gYW4gZW1wdHkgbGlzdCBpdGVtLgot
ICAgICAgICBhdXRvIHByZXZpb3VzID0gVmlzaWJsZVBvc2l0aW9uIHsgY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKHJhbmdlLnN0YXJ0KSwgRE9XTlNUUkVBTSB9LnByZXZpb3VzKCk7CisgICAg
ICAgIGF1dG8gcHJldmlvdXMgPSBWaXNpYmxlUG9zaXRpb24geyBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24ocmFuZ2Uuc3RhcnQpIH0ucHJldmlvdXMoKTsKICAgICAgICAgaWYgKHByZXZpb3Vz
LmlzTnVsbCgpIHx8IHByZXZpb3VzLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+
cm9vdEVkaXRhYmxlRWxlbWVudCgpICE9IHJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cm9vdEVkaXRh
YmxlRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTk0MSwy
OCArOTQxLDI0IEBAIHZvaWQgRWRpdG9yOjphcHBseVN0eWxlKFJlZlB0cjxFZGl0aW5nU3R5bGU+
JiYgc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbiwKICAgICBpZiAoIXN0eWxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNlbGVjdGlvblR5cGUgPSBtX2RvY3VtZW50LnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKTsKLSAgICBpZiAoc2VsZWN0aW9uVHlw
ZSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbikKKyAgICBpZiAobV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGlucHV0
VHlwZU5hbWUgPSBpbnB1dFR5cGVOYW1lRm9yRWRpdGluZ0FjdGlvbihlZGl0aW5nQWN0aW9uKTsK
ICAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEgPSBpbnB1dEV2ZW50RGF0YUZvckVkaXRpbmdTdHls
ZUFuZEFjdGlvbigqc3R5bGUsIGVkaXRpbmdBY3Rpb24pOwotICAgIFJlZlB0cjxFbGVtZW50PiBl
bGVtZW50ID0gbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVF
bGVtZW50KCk7CisgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtX2RvY3VtZW50LnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSk7CisKICAgICBpZiAoZWxl
bWVudCAmJiAhZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50KCplbGVtZW50LCBpbnB1dFR5cGVOYW1l
LCBpbnB1dEV2ZW50RGF0YSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxFZGl0aW5nU3R5
bGU+IHN0eWxlVG9BcHBseSA9IGNvbG9yRmlsdGVyTW9kZSA9PSBDb2xvckZpbHRlck1vZGU6Oklu
dmVydENvbG9yID8gc3R5bGUtPmludmVyc2VUcmFuc2Zvcm1Db2xvcklmTmVlZGVkKCplbGVtZW50
KSA6IHN0eWxlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9u
KCkuaXNOb25lKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIHN3aXRjaCAoc2VsZWN0aW9uVHlw
ZSkgewotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb246Ci0gICAgICAg
IGNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShzdHlsZVRvQXBwbHkuZ2V0KCksIGVkaXRpbmdBY3Rp
b24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2Vs
ZWN0aW9uOgorICAgIGF1dG8gc3R5bGVUb0FwcGx5ID0gY29sb3JGaWx0ZXJNb2RlID09IENvbG9y
RmlsdGVyTW9kZTo6SW52ZXJ0Q29sb3IgPyBzdHlsZS0+aW52ZXJzZVRyYW5zZm9ybUNvbG9ySWZO
ZWVkZWQoKmVsZW1lbnQpIDogc3R5bGUucmVsZWFzZU5vbk51bGwoKTsKKyAgICBpZiAobV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpCisgICAgICAgIGNvbXB1dGVBbmRTZXRUeXBpbmdT
dHlsZShzdHlsZVRvQXBwbHksIGVkaXRpbmdBY3Rpb24pOworICAgIGVsc2UKICAgICAgICAgQXBw
bHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzdHlsZVRvQXBwbHkucHRyKCksIGVk
aXRpbmdBY3Rpb24pLT5hcHBseSgpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBicmVhazsKLSAgICB9CiAKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgp
LT5kaWRBcHBseVN0eWxlKCk7CkBAIC05ODAsMTcgKzk3NiwxOSBAQCB2b2lkIEVkaXRvcjo6YXBw
bHlQYXJhZ3JhcGhTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRp
bmdBY3RpbwogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2Vs
ZWN0aW9uVHlwZSA9IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
VHlwZSgpOwotICAgIGlmIChzZWxlY3Rpb25UeXBlID09IFZpc2libGVTZWxlY3Rpb246Ok5vU2Vs
ZWN0aW9uKQorICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBTdHJpbmcgaW5wdXRUeXBlTmFtZSA9IGlucHV0VHlwZU5hbWVGb3JF
ZGl0aW5nQWN0aW9uKGVkaXRpbmdBY3Rpb24pOwogICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSA9
IGlucHV0RXZlbnREYXRhRm9yRWRpdGluZ1N0eWxlQW5kQWN0aW9uKHN0eWxlLCBlZGl0aW5nQWN0
aW9uKTsKLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IG1fZG9jdW1lbnQuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIGF1dG8gZWxlbWVudCA9
IG1ha2VSZWZQdHIobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFi
bGVFbGVtZW50KCkpOwogICAgIGlmIChlbGVtZW50ICYmICFkaXNwYXRjaEJlZm9yZUlucHV0RXZl
bnQoKmVsZW1lbnQsIGlucHV0VHlwZU5hbWUsIGlucHV0RXZlbnREYXRhKSkKICAgICAgICAgcmV0
dXJuOworICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgICAgICBy
ZXR1cm47CiAKICAgICBBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKHN0eWxlKS5wdHIoKSwgZWRpdGluZ0FjdGlvbiwgQXBwbHlTdHlsZUNv
bW1hbmQ6OkZvcmNlQmxvY2tQcm9wZXJ0aWVzKS0+YXBwbHkoKTsKKwogICAgIGNsaWVudCgpLT5k
aWRBcHBseVN0eWxlKCk7CiAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgIGRpc3BhdGNoSW5wdXRF
dmVudCgqZWxlbWVudCwgaW5wdXRUeXBlTmFtZSwgaW5wdXRFdmVudERhdGEpOwpAQCAtMjEzNyw3
ICsyMTM1LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICAgICAgICAgIHVuc2lnbmVk
IHN0YXJ0ID0gc3RkOjptaW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRPZmZz
ZXQpOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQs
IGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwogICAgICAgICAgICAg
YXV0byByYW5nZSA9IFNpbXBsZVJhbmdlIHsgeyAqYmFzZU5vZGUsIHN0YXJ0IH0sIHsgKmJhc2VO
b2RlLCBlbmQgfSB9OwotICAgICAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3RlZFJhbmdlKHJhbmdlLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VU
eXBpbmc6Ok5vKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZShyYW5nZSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIEZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6Tm8pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMjI3LDcgKzIyMjUs
NyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZv
cmVTZWxlY3Rpb24pCiAgICAgLy8gSWYgc3BlbGxpbmdTZWFyY2hSYW5nZSBzdGFydHMgaW4gdGhl
IG1pZGRsZSBvZiBhIHdvcmQsIGFkdmFuY2UgdG8gdGhlIG5leHQgd29yZCBzbyB3ZSBzdGFydCBj
aGVja2luZwogICAgIC8vIGF0IGEgd29yZCBib3VuZGFyeS4gR29pbmcgYmFjayBieSBvbmUgY2hh
ciBhbmQgdGhlbiBmb3J3YXJkIGJ5IGEgd29yZCBkb2VzIHRoZSB0cmljay4KICAgICBpZiAoc3Rh
cnRlZFdpdGhTZWxlY3Rpb24pIHsKLSAgICAgICAgYXV0byBvbmVCZWZvcmVTdGFydCA9IFZpc2li
bGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3BlbGxpbmdTZWFyY2hSYW5n
ZS5zdGFydCksIERPV05TVFJFQU0pLnByZXZpb3VzKCk7CisgICAgICAgIGF1dG8gb25lQmVmb3Jl
U3RhcnQgPSBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHNwZWxs
aW5nU2VhcmNoUmFuZ2Uuc3RhcnQpKS5wcmV2aW91cygpOwogICAgICAgICBpZiAob25lQmVmb3Jl
U3RhcnQuaXNOb3ROdWxsKCkpCiAgICAgICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLnN0YXJ0
ID0gKm1ha2VCb3VuZGFyeVBvaW50KGVuZE9mV29yZChvbmVCZWZvcmVTdGFydCkpOwogICAgICAg
ICAvLyBlbHNlIHdlIHdlcmUgYWxyZWFkeSBhdCB0aGUgc3RhcnQgb2YgdGhlIGVkaXRhYmxlIG5v
ZGUKQEAgLTIzMDgsNyArMjMwNiw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgCiAgICAgICAgIC8vIEZJ
WE1FIDQ4NTkxOTA6IFRoaXMgZ2V0cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24g
YXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2Ug
PSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoZ3JhbW1hclNlYXJjaFJhbmdlLCB7IHVuZ3JhbW1hdGlj
YWxQaHJhc2Uub2Zmc2V0ICsgdW5ncmFtbWF0aWNhbFBocmFzZS5kZXRhaWwucmFuZ2UubG9jYXRp
b24sIHVuZ3JhbW1hdGljYWxQaHJhc2UuZGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKLSAgICAgICAg
bV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYWRH
cmFtbWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgIG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdl
KSk7CiAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAg
ICAgICAgIAogICAgICAgICBjbGllbnQoKS0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3Ry
aW5nKHVuZ3JhbW1hdGljYWxQaHJhc2UucGhyYXNlLCB1bmdyYW1tYXRpY2FsUGhyYXNlLmRldGFp
bCk7CkBAIC0yMzE4LDcgKzIzMTYsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8vIGEgbWFya2VyIHNv
IHdlIGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCiAgICAgICAgIGF1dG8g
bWlzc3BlbGxpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShzcGVsbGluZ1NlYXJjaFJh
bmdlLCB7IG1pc3NwZWxsZWRXb3JkLm9mZnNldCwgbWlzc3BlbGxlZFdvcmQud29yZC5sZW5ndGgo
KSB9KTsKLSAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbihtaXNzcGVsbGluZ1JhbmdlLCBET1dOU1RSRUFNKSk7CisgICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obWlzc3BlbGxp
bmdSYW5nZSkpOwogICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlv
bigpOwogICAgICAgICAKICAgICAgICAgY2xpZW50KCktPnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlz
c3BlbGxlZFdvcmQobWlzc3BlbGxlZFdvcmQud29yZCk7CkBAIC0yNTc0LDcgKzI1NzIsNyBAQCB2
b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgd29yZFN0YXJ0LAogCiAgICAgLy8gSWYgYXV0b2NvcnJlY3RlZCB3b3JkIGlz
IG5vbiBlbXB0eSwgcmVwbGFjZSB0aGUgbWlzc3BlbGxlZCB3b3JkIGJ5IHRoaXMgd29yZC4KICAg
ICBpZiAoIWF1dG9jb3JyZWN0ZWRTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFZpc2libGVT
ZWxlY3Rpb24gbmV3U2VsZWN0aW9uKCptaXNzcGVsbGluZ1JhbmdlLCBET1dOU1RSRUFNKTsKKyAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oKm1pc3NwZWxsaW5nUmFuZ2UpOwog
ICAgICAgICBpZiAobmV3U2VsZWN0aW9uICE9IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkpIHsKICAgICAgICAgICAgIGlmICghbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zaG91bGRD
aGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNzgzLDcgKzI3ODEsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIGJvb2wgcmVz
dG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CiAKICAgICBpZiAoc2hvdWxkUGVyZm9y
bVJlcGxhY2VtZW50IHx8IHNob3VsZE1hcmtTcGVsbGluZyB8fCBzaG91bGRDaGVja0ZvckNvcnJl
Y3Rpb24pIHsKLSAgICAgICAgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
c2VsZWN0aW9uVHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uKSB7Cisg
ICAgICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewogICAgICAgICAg
ICAgLy8gQXR0ZW1wdCB0byBzYXZlIHRoZSBjYXJldCBwb3NpdGlvbiBzbyB3ZSBjYW4gcmVzdG9y
ZSBpdCBsYXRlciBpZiBuZWVkZWQKICAgICAgICAgICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24g
PSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpOwogICAgICAgICAgICAg
c2VsZWN0aW9uT2Zmc2V0ID0gcGFyYWdyYXBoLm9mZnNldFRvKGNhcmV0UG9zaXRpb24pLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwpAQCAtMjg2NCw3ICsyODYyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtB
bmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0
b3I8VGUKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2UocmFuZ2VUb1JlcGxhY2Us
IERPV05TVFJFQU0pOworICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1Jl
cGxhY2UocmFuZ2VUb1JlcGxhY2UpOwogICAgICAgICAgICAgaWYgKHNlbGVjdGlvblRvUmVwbGFj
ZSAhPSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxl
Y3Rpb25Ub1JlcGxhY2UpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI5MTAs
NyArMjkwOCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENo
ZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgIGV4dGVuZGVkUGFy
YWdyYXBoLmV4cGFuZFJhbmdlVG9OZXh0RW5kKCk7CiAgICAgICAgIGlmIChyZXN0b3JlU2VsZWN0
aW9uQWZ0ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBoLnJh
bmdlTGVuZ3RoKCkpIHsKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRl
ZFBhcmFncmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKLSAgICAgICAgICAg
IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihzZWxlY3Rpb25SYW5nZS5lbmQpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkubW92ZVRvKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzZWxlY3Rp
b25SYW5nZS5lbmQpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBJZiB0aGlzIGZhaWxzIGZvciBhbnkgcmVhc29uLCB0aGUgZmFsbGJhY2sg
aXMgdG8gZ28gb25lIHBvc2l0aW9uIGJleW9uZCB0aGUgbGFzdCByZXBsYWNlbWVudAogICAgICAg
ICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5tb3ZlVG8obV9kb2N1bWVudC5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5lbmQoKSk7CkBAIC0zMTU3LDcgKzMxNTUsNyBAQCB2b2lkIEVkaXRvcjo6
dHJhbnNwb3NlKCkKICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHByZXZpb3VzLCBu
ZXh0KTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47Ci0gICAgVmlzaWJsZVNlbGVj
dGlvbiBuZXdTZWxlY3Rpb24oKnJhbmdlLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlU2VsZWN0
aW9uIG5ld1NlbGVjdGlvbigqcmFuZ2UpOwogCiAgICAgLy8gVHJhbnNwb3NlIHRoZSB0d28gY2hh
cmFjdGVycy4KICAgICBTdHJpbmcgdGV4dCA9IHBsYWluVGV4dCgqcmFuZ2UpOwpAQCAtMzI5NSw3
ICszMjkzLDcgQEAgUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUKICAgICBpZiAoIXBsYWNlaG9sZGVy
LT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9kb2N1bWVu
dC5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7IHBvc2l0aW9uSW5Q
YXJlbnRCZWZvcmVOb2RlKHBsYWNlaG9sZGVyLnB0cigpKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkg
fSwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKFVzZXJUcmlnZ2Vy
ZWQpKTsKKyAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uIHsgcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUocGxhY2Vob2xkZXIucHRyKCkpIH0s
IEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVk
KSk7CiAKICAgICByZXR1cm4gcGxhY2Vob2xkZXI7CiB9CkBAIC0zMzE2LDcgKzMzMTQsNyBAQCB2
b2lkIEVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQm
IHBsYWNlaG9sZGVyKQogCiAgICAgLy8gVG8gbWF0Y2ggdGhlIExlZ2FjeSBXZWJLaXQgaW1wbGVt
ZW50YXRpb24sIHNldCB0aGUgdGV4dCBpbnNlcnRpb24gcG9pbnQgdG8gYmUgYmVmb3JlIHdoZXJl
IHRoZSBwbGFjZWhvbGRlciB1c2UgdG8gYmUuCiAgICAgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9u
KCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0g
c2F2ZWRSb290RWRpdGFibGVFbGVtZW50KQotICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uIHsgc2F2ZWRQb3NpdGlvbkJlZm9yZVBsYWNl
aG9sZGVyLCBTRUxfREVGQVVMVF9BRkZJTklUWSB9LCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNl
dFNlbGVjdGlvbk9wdGlvbnMoVXNlclRyaWdnZXJlZCkpOworICAgICAgICBtX2RvY3VtZW50LnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uIHsgc2F2ZWRQb3NpdGlvbkJl
Zm9yZVBsYWNlaG9sZGVyIH0sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0
aW9ucyhVc2VyVHJpZ2dlcmVkKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsYXBzZUNh
cmV0V2lkdGgoSW50UmVjdCYgcmVjdCkKQEAgLTMzMzIsNDAgKzMzMzAsMzYgQEAgSW50UmVjdCBF
ZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkgY29uc3QK
IHsKICAgICByYW5nZS5zdGFydC5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCi0gICAgVmlz
aWJsZVBvc2l0aW9uIHN0YXJ0VmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihyYW5nZS5zdGFydCksIERPV05TVFJFQU0pOworICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2Uuc3RhcnQpKTsKIAogICAgIGlmIChy
YW5nZS5jb2xsYXBzZWQoKSkgewogICAgICAgICAvLyBGSVhNRTogR2V0dGluZyBjYXJldCByZWN0
IGFuZCByZW1vdmluZyBjYXJldCB3aWR0aCBpcyBhIHZlcnkgcm91bmRhYm91dCB3YXkgdG8gZ2V0
IGNvbGxhcHNlZCByYW5nZSBsb2NhdGlvbi4KICAgICAgICAgLy8gSW4gcGFydGljdWxhciwgd2lk
dGggYWRqdXN0bWVudCBkb2Vzbid0IHdvcmsgZm9yIHJvdGF0ZWQgdGV4dC4KLSAgICAgICAgSW50
UmVjdCBzdGFydENhcmV0UmVjdCA9IFJlbmRlcmVkUG9zaXRpb24oc3RhcnRWaXNpYmxlUG9zaXRp
b24pLmFic29sdXRlUmVjdCgpOworICAgICAgICBJbnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gUmVu
ZGVyZWRQb3NpdGlvbihzdGFydCkuYWJzb2x1dGVSZWN0KCk7CiAgICAgICAgIGNvbGxhcHNlQ2Fy
ZXRXaWR0aChzdGFydENhcmV0UmVjdCk7CiAgICAgICAgIHJldHVybiBzdGFydENhcmV0UmVjdDsK
ICAgICB9CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihyYW5nZS5lbmQpLCBVUFNUUkVBTSk7CisgICAgVmlzaWJsZVBv
c2l0aW9uIGVuZChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UuZW5kKSwgQWZmaW5p
dHk6OlVwc3RyZWFtKTsKIAotICAgIGlmIChpblNhbWVMaW5lKHN0YXJ0VmlzaWJsZVBvc2l0aW9u
LCBlbmRWaXNpYmxlUG9zaXRpb24pKQorICAgIGlmIChpblNhbWVMaW5lKHN0YXJ0LCBlbmQpKQog
ICAgICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdCh1bml0ZWRCb3VuZGluZ0JveGVzKFJlbmRl
ck9iamVjdDo6YWJzb2x1dGVUZXh0UXVhZHMocmFuZ2UpKSk7CiAKICAgICBMYXlvdXRVbml0IGV4
dHJhV2lkdGhUb0VuZE9mTGluZTsKLSAgICBJbnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gUmVuZGVy
ZWRQb3NpdGlvbihzdGFydFZpc2libGVQb3NpdGlvbikuYWJzb2x1dGVSZWN0KCZleHRyYVdpZHRo
VG9FbmRPZkxpbmUpOworICAgIEludFJlY3Qgc3RhcnRDYXJldFJlY3QgPSBSZW5kZXJlZFBvc2l0
aW9uKHN0YXJ0KS5hYnNvbHV0ZVJlY3QoJmV4dHJhV2lkdGhUb0VuZE9mTGluZSk7CiAgICAgaWYg
KHN0YXJ0Q2FyZXRSZWN0ID09IEludFJlY3QoKSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsK
IAogICAgIC8vIFdoZW4gc3RhcnQgYW5kIGVuZCBhcmVuJ3Qgb24gdGhlIHNhbWUgbGluZSwgd2Ug
d2FudCB0byBnbyBmcm9tIHN0YXJ0IHRvIHRoZSBlbmQgb2YgaXRzIGxpbmUuCi0gICAgYm9vbCB0
ZXh0SXNIb3Jpem9udGFsID0gc3RhcnRDYXJldFJlY3Qud2lkdGgoKSA9PSBjYXJldFdpZHRoOwot
ICAgIHJldHVybiB0ZXh0SXNIb3Jpem9udGFsID8KLSAgICAgICAgSW50UmVjdChzdGFydENhcmV0
UmVjdC54KCksCi0gICAgICAgICAgICBzdGFydENhcmV0UmVjdC55KCksCi0gICAgICAgICAgICBz
dGFydENhcmV0UmVjdC53aWR0aCgpICsgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lLAotICAgICAgICAg
ICAgc3RhcnRDYXJldFJlY3QuaGVpZ2h0KCkpIDoKLSAgICAgICAgSW50UmVjdChzdGFydENhcmV0
UmVjdC54KCksCi0gICAgICAgICAgICBzdGFydENhcmV0UmVjdC55KCksCi0gICAgICAgICAgICBz
dGFydENhcmV0UmVjdC53aWR0aCgpLAotICAgICAgICAgICAgc3RhcnRDYXJldFJlY3QuaGVpZ2h0
KCkgKyBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOworICAgIGF1dG8gcmVzdWx0ID0gc3RhcnRDYXJl
dFJlY3Q7CisgICAgaWYgKHN0YXJ0Q2FyZXRSZWN0LndpZHRoKCkgPT0gY2FyZXRXaWR0aCkKKyAg
ICAgICAgcmVzdWx0LmV4cGFuZChleHRyYVdpZHRoVG9FbmRPZkxpbmUsIDApOworICAgIGVsc2UK
KyAgICAgICAgcmVzdWx0LmV4cGFuZCgwLCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgRWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBuZXdTZWxlY3Rpb24sIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykg
Y29uc3QKK2Jvb2wgRWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rp
b24sIEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdAogewogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKSAmJiBtX2Rv
Y3VtZW50LmZyYW1lKCktPnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrc0Rpc2FibGVkKCkpCkBAIC0z
NDYyLDcgKzM0NTYsNyBAQCBib29sIEVkaXRvcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRh
cmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKICAgICBpZiAoIXJlc3VsdFJhbmdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKCpyZXN1bHRSYW5nZSwgRE9XTlNUUkVBTSkpOworICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlc3VsdFJh
bmdlKSk7CiAKICAgICBpZiAoIShvcHRpb25zLmNvbnRhaW5zKERvTm90UmV2ZWFsU2VsZWN0aW9u
KSkpCiAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBhYTM1MTVjNGU4ODE4MWY4YWEzYzk4MDA1MGYyNTBm
YzhjMjgyNGQ5Li4yOTBjMmZjMWNmZjQ5ZjkxOTFlZWJlZWRjOWIyZWM0ZGRlMWE3YWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQ2Miw3ICs0NjIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZWxlY3Rpb25XaWxsQ2hhbmdlKCk7CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgT3B0aW9uU2V0PEZyYW1l
U2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb24+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUVkaXRvclVJTm93SWZTY2hlZHVsZWQoKTsKLSAgICBib29sIHNob3VsZENoYW5nZVNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5n
KSBjb25zdDsKKyAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBvbGRTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlv
biwgQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHVuc2lnbmVkIGNvdW50TWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIGxpbWl0LCBib29sIG1h
cmtNYXRjaGVzLCBWZWN0b3I8U2ltcGxlUmFuZ2U+Kik7CiAgICAgYm9vbCBtYXJrZWRUZXh0TWF0
Y2hlc0FyZUhpZ2hsaWdodGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
YXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggMmQzZTk1ZDBmYzE2NGViZjYxMWZiNGU0YzAwMTk5
YzAwYTU1ODZjMS4uM2ZjMDJlYjY0ZGFmYjk4YzNlMGNhMWZiMWQ3MWU2OTFiYzQyOWZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0zNTAsNyArMzUwLDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvTWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKICAgICBhdXRvIG1hcmtSYW5nZSA9IGVkaXRvci5t
YXJrKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gc2Vs
ZWN0aW9uLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKG1hcmtSYW5n
ZSAmJiBzZWxlY3Rpb25SYW5nZSkgewotICAgICAgICBpZiAoIXNlbGVjdGlvbi5zZXRTZWxlY3Rl
ZFJhbmdlKHVuaW9uUmFuZ2UoKm1hcmtSYW5nZSwgKnNlbGVjdGlvblJhbmdlKSwgRE9XTlNUUkVB
TSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpKQorICAgICAgICBpZiAo
IXNlbGVjdGlvbi5zZXRTZWxlY3RlZFJhbmdlKHVuaW9uUmFuZ2UoKm1hcmtSYW5nZSwgKnNlbGVj
dGlvblJhbmdlKSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRD
bG9zZVR5cGluZzo6WWVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
ZWRpdG9yLnBlcmZvcm1EZWxldGUoKTsKQEAgLTEwNDUsNyArMTA0NSw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVTZWxlY3RUb01hcmsoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0CiAgICAgICAgIFBBTDo6c3lzdGVtQmVlcCgpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotICAgIHNlbGVjdGlvbi5zZXRTZWxlY3RlZFJhbmdlKHVuaW9uUmFuZ2Uo
Km1hcmtSYW5nZSwgKnNlbGVjdGlvblJhbmdlKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246
OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgIHNlbGVjdGlvbi5zZXRTZWxlY3RlZFJhbmdl
KHVuaW9uUmFuZ2UoKm1hcmtSYW5nZSwgKnNlbGVjdGlvblJhbmdlKSwgQWZmaW5pdHk6OkRvd25z
dHJlYW0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICAvLyBG
SVhNRTogV2h5IGRvIHdlIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gc2V0U2VsZWN0ZWRS
YW5nZSBoZXJlPwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcAppbmRleCA5NjE0NDliOGY0MTYwM2U1ZTVlY2FiNWZjYWNiMzcyNTMw
Yjg0N2I4Li5iZmNkZDc2YjRhNTA4ZjliODE4NmJlM2ZmYzU3Nzg3MDQ5NWVhMTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjAxLDEyICsyMDEsMTIg
QEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYmFz
ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJgogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKGJhc2UuZGVlcEVxdWl2YWxlbnQoKSwgZXh0ZW50LmRlZXBFcXVpdmFsZW50KCksIGJhc2Uu
YWZmaW5pdHkoKSwgc2VsZWN0aW9uSGFzRGlyZWN0aW9uKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9w
dGlvbnModXNlclRyaWdnZXJlZCkpOwogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjptb3ZlVG8o
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dl
cmVkIHVzZXJUcmlnZ2VyZWQpCit2b2lkIEZyYW1lU2VsZWN0aW9uOjptb3ZlVG8oY29uc3QgUG9z
aXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRy
aWdnZXJlZCkKIHsKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbiwg
YWZmaW5pdHksIG1fc2VsZWN0aW9uLmlzRGlyZWN0aW9uYWwoKSksIGRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKHVzZXJUcmlnZ2VyZWQpKTsKIH0KIAotdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92
ZVRvKGNvbnN0IFBvc2l0aW9uJiBiYXNlLCBjb25zdCBQb3NpdGlvbiYgZXh0ZW50LCBFQWZmaW5p
dHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCit2b2lkIEZyYW1lU2Vs
ZWN0aW9uOjptb3ZlVG8oY29uc3QgUG9zaXRpb24mIGJhc2UsIGNvbnN0IFBvc2l0aW9uJiBleHRl
bnQsIEFmZmluaXR5IGFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkKQogewog
ICAgIGNvbnN0IGJvb2wgc2VsZWN0aW9uSGFzRGlyZWN0aW9uID0gdHJ1ZTsKICAgICBzZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYXNlLCBleHRlbnQsIGFmZmluaXR5LCBzZWxlY3Rpb25I
YXNEaXJlY3Rpb24pLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyh1c2VyVHJpZ2dlcmVkKSk7
CkBAIC0xNDYwLDEyICsxNDYwLDEyIEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0
ZXJhdGlvbiBhbHRlciwgdW5zaWduZWQgdmVydGljYWxEaXN0YW5jZSwgVmVydGljCiAgICAgY2Fz
ZSBBbHRlcmF0aW9uTW92ZToKICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKGRpcmVjdGlv
biA9PSBEaXJlY3Rpb25VcCA/IG1fc2VsZWN0aW9uLnN0YXJ0KCkgOiBtX3NlbGVjdGlvbi5lbmQo
KSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHhQb3MgPSBsaW5lRGlyZWN0aW9u
UG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oZGlyZWN0aW9uID09IERpcmVjdGlvblVw
ID8gU1RBUlQgOiBFTkQpOwotICAgICAgICBtX3NlbGVjdGlvbi5zZXRBZmZpbml0eShkaXJlY3Rp
b24gPT0gRGlyZWN0aW9uVXAgPyBVUFNUUkVBTSA6IERPV05TVFJFQU0pOworICAgICAgICBtX3Nl
bGVjdGlvbi5zZXRBZmZpbml0eShkaXJlY3Rpb24gPT0gRGlyZWN0aW9uVXAgPyBBZmZpbml0eTo6
VXBzdHJlYW0gOiBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWx0ZXJhdGlvbkV4dGVuZDoKICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2Vs
ZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgeFBvcyA9
IGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihFWFRFTlQpOwot
ICAgICAgICBtX3NlbGVjdGlvbi5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICAgICAgbV9z
ZWxlY3Rpb24uc2V0QWZmaW5pdHkoQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTE2MDksMTMgKzE2MDksMTMgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6
c2V0RXh0ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIEVVc2VyVHJpZ2dlcmVk
IHUKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtX3NlbGVjdGlvbi5iYXNlKCks
IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIHBvc2l0aW9uLmFmZmluaXR5KCksIHNlbGVjdGlv
bkhhc0RpcmVjdGlvbiksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKHVzZXJUcmlnZ2VyZWQp
KTsKIH0KIAotdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0QmFzZShjb25zdCBQb3NpdGlvbiYgcG9z
aXRpb24sIEVBZmZpbml0eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkK
K3ZvaWQgRnJhbWVTZWxlY3Rpb246OnNldEJhc2UoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBB
ZmZpbml0eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKIHsKICAgICBj
b25zdCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiA9IHRydWU7CiAgICAgc2V0U2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb24sIG1fc2VsZWN0aW9uLmV4dGVudCgpLCBhZmZpbml0
eSwgc2VsZWN0aW9uSGFzRGlyZWN0aW9uKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnModXNl
clRyaWdnZXJlZCkpOwogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRFeHRlbnQoY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHksIEVVc2VyVHJpZ2dlcmVkIHVz
ZXJUcmlnZ2VyZWQpCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRFeHRlbnQoY29uc3QgUG9zaXRp
b24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdn
ZXJlZCkKIHsKICAgICBjb25zdCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiA9IHRydWU7CiAg
ICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obV9zZWxlY3Rpb24uYmFzZSgpLCBwb3Np
dGlvbiwgYWZmaW5pdHksIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiksIGRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKHVzZXJUcmlnZ2VyZWQpKTsKQEAgLTIwMTAsNyArMjAxMCw3IEBAIHZvaWQgRnJh
bWVTZWxlY3Rpb246OnNlbGVjdEFsbCgpCiAgICAgfQogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9u
OjpzZXRTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVB
ZmZpbml0eSBhZmZpbml0eSwgU2hvdWxkQ2xvc2VUeXBpbmcgY2xvc2VUeXBpbmcsIEVVc2VyVHJp
Z2dlcmVkIHVzZXJUcmlnZ2VyZWQpCitib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJh
bmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5
LCBTaG91bGRDbG9zZVR5cGluZyBjbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdn
ZXJlZCkKIHsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzc4
LDE4ICsyMzc4LDE1IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbihTZWxl
Y3Rpb25SZXZlYWxNb2RlIHJldmVhbE1vZGUsIGNvbnN0IFNjcm9sCiAgICAgaWYgKHJldmVhbE1v
ZGUgPT0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6RG9Ob3RSZXZlYWwpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChpc05vbmUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgTGF5b3V0UmVjdCBy
ZWN0OwogICAgIGJvb2wgaW5zaWRlRml4ZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKG1fc2VsZWN0
aW9uLnNlbGVjdGlvblR5cGUoKSkgewotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxl
Y3Rpb246Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0
U2VsZWN0aW9uOgorICAgIGlmIChpc0NhcmV0KCkpCiAgICAgICAgIHJlY3QgPSBhYnNvbHV0ZUNh
cmV0Qm91bmRzKCZpbnNpZGVGaXhlZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlzaWJs
ZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246CisgICAgZWxzZQogICAgICAgICByZWN0ID0gcmV2
ZWFsRXh0ZW50T3B0aW9uID09IFJldmVhbEV4dGVudCA/IFZpc2libGVQb3NpdGlvbihtX3NlbGVj
dGlvbi5leHRlbnQoKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpIDogZW5jbG9zaW5nSW50UmVjdChz
ZWxlY3Rpb25Cb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Ok5vKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KIAogICAgIFBvc2l0aW9uIHN0YXJ0ID0gbV9zZWxlY3Rpb24uc3RhcnQoKTsKICAg
ICBBU1NFUlQoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSk7CkBAIC0yNDI1LDcgKzI0MjIsNyBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChhdXRvKiBib2R5ID0gbV9kb2N1bWVudC0+Ym9keSgpKQotICAgICAgICBz
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
Ym9keSksIERPV05TVFJFQU0pKTsKKyAgICAgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGJvZHkpKSk7CiB9CiAKIGJvb2wgRnJhbWVT
ZWxlY3Rpb246OnNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBu
ZXdTZWxlY3Rpb24pIGNvbnN0CkBAIC0yNTA1LDcgKzI1MDIsNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpleHBhbmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQog
ICAgIGF1dG8gcmFuZ2UgPSBlbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsK
ICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0U2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oKnJhbmdlLCBET1dOU1RSRUFNKSk7CisgICAgc2V0U2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oKnJhbmdlKSk7CiB9CiAKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFtZVNl
bGVjdGlvbjo6ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCAwYWI3MDIxODNiM2ZiZGQw
YzAzYzM0OTMyYmRhNjE4ODJjMDZhNzI5Li5hYjZkMTNlZDAyM2E2N2NjN2FhZjUyZDI2NjNkNDhm
MTk3MGU3MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0x
NDUsMTUgKzE0NSwxNSBAQCBwdWJsaWM6CiAgICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bW92ZVRvKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRy
aWdnZXJlZCwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRl
ZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG8oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dl
cmVkKTsKLSAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSwgRVVzZXJU
cmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsKLSAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3Np
dGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVz
ZXJUcmlnZ2VyZWQpOworICAgIHZvaWQgbW92ZVRvKGNvbnN0IFBvc2l0aW9uJiwgQWZmaW5pdHks
IEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CisgICAgdm9pZCBtb3ZlVG8oY29u
c3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIEFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCA9
IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIHZvaWQgbW92ZVdpdGhvdXRWYWxpZGF0aW9uVG8oY29u
c3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIGJvb2wgc2VsZWN0aW9uSGFzRGlyZWN0aW9u
LCBib29sIHNob3VsZFNldEZvY3VzLCBTZWxlY3Rpb25SZXZlYWxNb2RlLCBjb25zdCBBWFRleHRT
dGF0ZUNoYW5nZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKIAogICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0
aW9uOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+ID0gZGVmYXVsdFNldFNl
bGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgPSBBWFRleHRTdGF0ZUNo
YW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9sbElm
TmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkQ2xvc2VUeXBpbmcgOiBib29sIHsgTm8s
IFllcyB9OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShjb25zdCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFQWZmaW5pdHksIFNob3VsZENsb3NlVHlwaW5nLCBFVXNl
clRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2V0U2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBBZmZpbml0eSwg
U2hvdWxkQ2xvc2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWxlY3RBbGwoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsZWFyKCk7CiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCk7CkBAIC0xNzYs
OSArMTc2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RW5kKGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CiAgICAgCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRCYXNlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dl
cmVkID0gTm90VXNlclRyaWdnZXJlZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCYXNl
KGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmln
Z2VyZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QmFzZShjb25zdCBQb3NpdGlvbiYs
IEFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIHZvaWQg
c2V0RXh0ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNl
clRyaWdnZXJlZCk7Ci0gICAgdm9pZCBzZXRFeHRlbnQoY29uc3QgUG9zaXRpb24mLCBFQWZmaW5p
dHksIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7CisgICAgdm9pZCBzZXRFeHRl
bnQoY29uc3QgUG9zaXRpb24mLCBBZmZpbml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJp
Z2dlcmVkKTsKIAogICAgIC8vIFJldHVybiB0aGUgcmVuZGVyZXIgdGhhdCBpcyByZXNwb25zaWJs
ZSBmb3IgcGFpbnRpbmcgdGhlIGNhcmV0IChpbiB0aGUgc2VsZWN0aW9uIHN0YXJ0IG5vZGUpCiAg
ICAgUmVuZGVyQmxvY2sqIGNhcmV0UmVuZGVyZXJXaXRob3V0VXBkYXRpbmdMYXlvdXQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAK
aW5kZXggMTI3MGQ1OWQ4MjYwMWE3YzBkYTk5NzUzZDNkYWNhNjgwODAxNWMzMy4uZWIyNGUwN2Uy
MTMwOTQxNTU1ZGFmNWE5YTIyMmQ2YjE2YzM0MDllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lk
IEluZGVudE91dGRlbnRDb21tYW5kOjpvdXRkZW50UmVnaW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgc3RhcnRPZlNlbGVjdGlvbgogICAgIHdoaWxlIChlbmRPZkN1cnJlbnRQYXJhZ3JhcGggIT0g
ZW5kQWZ0ZXJTZWxlY3Rpb24pIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mTmV4dFBh
cmFncmFwaCA9IGVuZE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBhcmFncmFwaC5uZXh0KCkpOwog
ICAgICAgICBpZiAoZW5kT2ZDdXJyZW50UGFyYWdyYXBoID09IGVuZE9mTGFzdFBhcmFncmFwaCkK
LSAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG9yaWdpbmFs
U2VsZWN0aW9uRW5kLCBET1dOU1RSRUFNKSk7CisgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihvcmlnaW5hbFNlbGVjdGlvbkVuZCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5kT2ZDdXJyZW50UGFyYWdyYXBoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5j
cHAKaW5kZXggMjczNTVlNjZmYjg5ZDU1NDJjZDZhOWJlYTg4ZTJjMjYyZjUwNzgzYi4uODgwZTcw
MzU5ODlhNmZiMmJmYTc2OGE5NmFiMGE4M2Y5Y2Y0Y2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCkBAIC0xMDYsMTIgKzEwNiwx
MiBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBpZiAo
IWlzU3RhcnRPZlBhcmFncmFwaChwb3NpdGlvbkJlZm9yZU5vZGUobm9kZVRvSW5zZXJ0LmdldCgp
KSkpCiAgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGVUb0luc2VydC0+Y2xvbmVOb2Rl
KGZhbHNlKSwgKm5vZGVUb0luc2VydCk7CiAgICAgICAgIAotICAgICAgICBzZXRFbmRpbmdTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGVUb0lu
c2VydC5nZXQoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwo
KSkpOworICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlv
bkluUGFyZW50QWZ0ZXJOb2RlKG5vZGVUb0luc2VydC5nZXQoKSksIEFmZmluaXR5OjpEb3duc3Ry
ZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAvLyBJZiB3ZSdy
ZSBpbnNlcnRpbmcgYWZ0ZXIgYWxsIG9mIHRoZSByZW5kZXJlZCB0ZXh0IGluIGEgdGV4dCBub2Rl
LCBvciBpbnRvIGEgbm9uLXRleHQgbm9kZSwKICAgICAvLyBhIHNpbXBsZSBpbnNlcnRpb24gaXMg
c3VmZmljaWVudC4KICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCkgPj0gY2FyZXRNYXhPZmZzZXQoKnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpIHx8ICFp
czxUZXh0PigqcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgaW5zZXJ0Tm9k
ZUF0KCpub2RlVG9JbnNlcnQsIHBvc2l0aW9uKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShub2RlVG9JbnNlcnQu
Z2V0KCkpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsK
KyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBh
cmVudEFmdGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwg
ZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgfSBlbHNlIGlmIChpczxU
ZXh0PigqcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgLy8gU3BsaXQgYSB0
ZXh0IG5vZGUKICAgICAgICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqcG9zaXRp
b24uZGVwcmVjYXRlZE5vZGUoKSk7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBJbnNlcnRMaW5l
QnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nUG9z
aXRpb24sIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwor
ICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdQb3NpdGlv
biwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwo
KSkpOwogICAgIH0KIAogICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBhIHR5
cGluZyBzdHlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TmVz
dGVkTGlzdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROZXN0ZWRM
aXN0Q29tbWFuZC5jcHAKaW5kZXggNzc0Zjc1ZDI2NzlmYzdjNmExNTg0NzEzNTgzOGViYTg1MmFh
OTY2ZC4uZTYzZGY2MDM5YzExZTE3MGQxYWI1MjM1YWU0MDljYzI4YTM4ZGU0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgdm9pZCBJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgaWYgKGF1dG8gZW5jbG9zaW5nSXRlbSA9IG1ha2VSZWZQdHIoZW5jbG9zaW5nRWxlbWVudFdp
dGhUYWcoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKSwg
SFRNTE5hbWVzOjpsaVRhZykpKSB7CiAgICAgICAgIGF1dG8gbmV3TGlzdEl0ZW0gPSBIVE1MTElF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIGluc2VydE5vZGVBZnRlcihuZXdM
aXN0SXRlbS5jb3B5UmVmKCksICplbmNsb3NpbmdJdGVtKTsKLSAgICAgICAgc2V0RW5kaW5nU2Vs
ZWN0aW9uKHsgUG9zaXRpb24geyBuZXdMaXN0SXRlbS5wdHIoKSwgUG9zaXRpb246OlBvc2l0aW9u
SXNCZWZvcmVDaGlsZHJlbiB9LCBET1dOU1RSRUFNIH0pOworICAgICAgICBzZXRFbmRpbmdTZWxl
Y3Rpb24oeyBQb3NpdGlvbiB7IG5ld0xpc3RJdGVtLnB0cigpLCBQb3NpdGlvbjo6UG9zaXRpb25J
c0JlZm9yZUNoaWxkcmVuIH0sIEFmZmluaXR5OjpEb3duc3RyZWFtIH0pOwogCiAgICAgICAgIGF1
dG8gY29tbWFuZFR5cGUgPSBtX3R5cGUgPT0gVHlwZTo6T3JkZXJlZExpc3QgPyBJbmNyZWFzZVNl
bGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OlR5cGU6Ok9yZGVyZWRMaXN0IDogSW5jcmVhc2VTZWxl
Y3Rpb25MaXN0TGV2ZWxDb21tYW5kOjpUeXBlOjpVbm9yZGVyZWRMaXN0OwogICAgICAgICBhcHBs
eUNvbW1hbmRUb0NvbXBvc2l0ZShJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmNy
ZWF0ZShkb2N1bWVudCgpLCBjb21tYW5kVHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXgg
NWJlYzQyNjFhNTE2Nzk3YmJmOTY0NWI3ZWMxMGMyYTRkYTc4ZjQ2MC4uNzcyOTRkNDMxZjA2MGMw
MjUwNTM3YzUxNmMyMmU0Nzk4ZjRjODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCkBAIC0xNTAs
MTAgKzE1MCw5IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZU9yT3JwaGFuZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIFBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uID0gZW5kaW5n
U2VsZWN0aW9uKCkuc3RhcnQoKTsKLSAgICAgICAgCi0gICAgRUFmZmluaXR5IGFmZmluaXR5ID0g
ZW5kaW5nU2VsZWN0aW9uKCkuYWZmaW5pdHkoKTsKLSAgICAgICAgCisgICAgYXV0byBpbnNlcnRp
b25Qb3NpdGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCk7CisgICAgYXV0byBhZmZpbml0
eSA9IGVuZGluZ1NlbGVjdGlvbigpLmFmZmluaXR5KCk7CisKICAgICAvLyBEZWxldGUgdGhlIGN1
cnJlbnQgc2VsZWN0aW9uLgogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsK
ICAgICAgICAgY2FsY3VsYXRlU3R5bGVCZWZvcmVJbnNlcnRpb24oaW5zZXJ0aW9uUG9zaXRpb24p
OwpAQCAtMjQ5LDcgKzI0OCw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgICAgIAogICAgICAgICBhcHBlbmRCbG9ja1BsYWNlaG9sZGVyKFdU
Rk1vdmUocGFyZW50KSk7CiAKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oZmlyc3RQb3NpdGlvbkluTm9kZShwYXJlbnRQdHIpLCBET1dOU1RSRUFNLCBlbmRpbmdT
ZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluTm9kZShwYXJlbnRQdHIpLCBBZmZpbml0
eTo6RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yODcsNyArMjg2LDcgQEAgdm9pZCBJbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgYXBwZW5kQmxvY2tQ
bGFjZWhvbGRlcihjbG9uZUhpZXJhcmNoeVVuZGVyTmV3QmxvY2soYW5jZXN0b3JzLCAqYmxvY2tU
b0luc2VydCkpOwogICAgICAgICAKICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRv
IHNldCB0aGUgbmV3IGVuZGluZyBzZWxlY3Rpb24uCi0gICAgICAgIHNldEVuZGluZ1NlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKGluc2VydGlvblBvc2l0aW9uLCBET1dOU1RSRUFNLCBlbmRpbmdT
ZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24oaW5zZXJ0aW9uUG9zaXRpb24sIEFmZmluaXR5OjpEb3duc3RyZWFt
LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMzEwLDcgKzMwOSw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIElmIHRoZSBpbnNlcnRpb24gcG9pbnQgaXMg
YSBicmVhayBlbGVtZW50LCB0aGVyZSBpcyBub3RoaW5nIGVsc2UKICAgICAgICAgLy8gd2UgbmVl
ZCB0byBkby4KICAgICAgICAgaWYgKHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JO
b2RlKCktPnJlbmRlcmVyKCktPmlzQlIoKSkgewotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oaW5zZXJ0aW9uUG9zaXRpb24sIERPV05TVFJFQU0sIGVuZGlu
Z1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICAgICAgc2V0RW5kaW5nU2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oaW5zZXJ0aW9uUG9zaXRpb24sIEFmZmluaXR5OjpEb3du
c3RyZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTQxMCw3ICs0MDksNyBAQCB2b2lkIEluc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbklu
Tm9kZShibG9ja1RvSW5zZXJ0LmdldCgpKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCku
aXNEaXJlY3Rpb25hbCgpKSk7CisgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oZmlyc3RQb3NpdGlvbkluTm9kZShibG9ja1RvSW5zZXJ0LmdldCgpKSwgQWZmaW5pdHk6OkRv
d25zdHJlYW0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgIGFwcGx5
U3R5bGVBZnRlckluc2VydGlvbihzdGFydEJsb2NrLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCAxYmIwZDA1Mjg3MGM0NTEz
Njk5NDcxOWQwZWMwNjViM2VkMDk2ZDQ4Li5lNmE2YzllNDNlYTFkMzIwYTVmOTExZGE4ZjdhN2Nm
MWM5ZmI0ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgSW5zZXJ0VGV4dENvbW1hbmQ6OmRvQXBwbHko
KQogCiBQb3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9u
JiBwb3MpCiB7Ci0gICAgUG9zaXRpb24gaW5zZXJ0UG9zID0gVmlzaWJsZVBvc2l0aW9uKHBvcywg
RE9XTlNUUkVBTSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICBQb3NpdGlvbiBpbnNlcnRQb3MgPSBW
aXNpYmxlUG9zaXRpb24ocG9zKS5kZWVwRXF1aXZhbGVudCgpOwogICAgIGlmIChpbnNlcnRQb3Mu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBwb3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbmRlcmVkUG9zaXRpb24uY3BwCmluZGV4IGJkMGVlMWUxOTM1NzBhMGQ1MGZiNjJjYjFiMmI3
MDAxZmZkNmQ0N2YuLmM0MjY5MWE5Mzg5NmJiZjZmY2NiYmJhM2I2OGQwYzBlMDFhMzUxMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgcG9zaXRpb24pCiB7CiB9CiAKLVJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9z
aXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHkpCitSZW5k
ZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwg
QWZmaW5pdHkgYWZmaW5pdHkpCiAgICAgOiBtX3ByZXZpb3VzTGVhZk9uTGluZSh1bmNhY2hlZElu
bGluZUJveCgpKQogICAgICwgbV9uZXh0TGVhZk9uTGluZSh1bmNhY2hlZElubGluZUJveCgpKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAppbmRleCA1ZDA4Yjk5
NGVjMTI3MTM2MDk5ODQ2MGVjNjZmOWE3YTI1OGNlY2RjLi42YTU0NGQ1MDg5NjBmZDliZDJhMTVj
OWY5ZGI0MjY5ODIyMzU0NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bmRlcmVkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBSZW5kZXJlZFBvc2l0aW9uIHsKIHB1Ymxp
YzoKICAgICBSZW5kZXJlZFBvc2l0aW9uKCk7CiAgICAgZXhwbGljaXQgUmVuZGVyZWRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLSAgICBleHBsaWNpdCBSZW5kZXJlZFBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5KTsKKyAgICBleHBsaWNpdCBSZW5kZXJlZFBvc2l0
aW9uKGNvbnN0IFBvc2l0aW9uJiwgQWZmaW5pdHkpOwogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNv
bnN0IFJlbmRlcmVkUG9zaXRpb24mKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gIW1fcmVuZGVyZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggOTkzNGExMzU0ZmFlNjU5OWE0OTc5ODJj
YmEwMGVhNjcyZjJkNjc4ZC4uM2UzNmQxNGRjOTcyMzYyNTI0ODMwMDllZmQ1MGViMmI5M2U3Yzhj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmRvQXBwbHkoKQogICAgIFJlZlB0cjxOb2RlPiBlbmRCUiA9IGluc2VydGlvblBvcy5kb3du
c3RyZWFtKCkuZGVwcmVjYXRlZE5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykgPyBpbnNlcnRpb25Q
b3MuZG93bnN0cmVhbSgpLmRlcHJlY2F0ZWROb2RlKCkgOiBudWxscHRyOwogICAgIFZpc2libGVQ
b3NpdGlvbiBvcmlnaW5hbFZpc1Bvc0JlZm9yZUVuZEJSOwogICAgIGlmIChlbmRCUikKLSAgICAg
ICAgb3JpZ2luYWxWaXNQb3NCZWZvcmVFbmRCUiA9IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJl
Zm9yZU5vZGUoZW5kQlIuZ2V0KCkpLCBET1dOU1RSRUFNKS5wcmV2aW91cygpOworICAgICAgICBv
cmlnaW5hbFZpc1Bvc0JlZm9yZUVuZEJSID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3Jl
Tm9kZShlbmRCUi5nZXQoKSkpLnByZXZpb3VzKCk7CiAgICAgCiAgICAgUmVmUHRyPE5vZGU+IGlu
c2VydGlvbkJsb2NrID0gZW5jbG9zaW5nQmxvY2soaW5zZXJ0aW9uUG9zLmRlcHJlY2F0ZWROb2Rl
KCkpOwogICAgIApAQCAtMTU5Niw5ICsxNTk2LDkgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6Y29tcGxldGVIVE1MUmVwbGFjZW1lbnQoY29uc3QgUG9zaXRpb24gJmxhc3RQb3NpdGkK
ICAgICAgICAgbV92aXNpYmxlU2VsZWN0aW9uRm9ySW5zZXJ0ZWRUZXh0ID0gVmlzaWJsZVNlbGVj
dGlvbihzdGFydCwgZW5kKTsKIAogICAgIGlmIChtX3NlbGVjdFJlcGxhY2VtZW50KQotICAgICAg
ICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydCwgZW5kLCBTRUxfREVG
QVVMVF9BRkZJTklUWSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAg
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIFZpc2li
bGVTZWxlY3Rpb246OmRlZmF1bHRBZmZpbml0eSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rp
b25hbCgpKSk7CiAgICAgZWxzZQotICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbihlbmQsIFNFTF9ERUZBVUxUX0FGRklOSVRZLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0Rp
cmVjdGlvbmFsKCkpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oZW5kLCBWaXNpYmxlU2VsZWN0aW9uOjpkZWZhdWx0QWZmaW5pdHksIGVuZGluZ1NlbGVjdGlv
bigpLmlzRGlyZWN0aW9uYWwoKSkpOwogfQogCiB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVRleHROb2Rlc0Fyb3VuZFBvc2l0aW9uKFBvc2l0aW9uJiBwb3NpdGlvbiwgUG9zaXRp
b24mIHBvc2l0aW9uT25seVRvQmVVcGRhdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0QWZmaW5pdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEFmZmlu
aXR5LmgKaW5kZXggOTZiMjA2ZWJjNWY1MzY4MzRhZDQ1NTVjYzczYmFjZjk2MDA3Mzc1Mi4uOGMx
Zjc4YjU3NzMwY2I4ZTRkNzU3MGE4MjFmYmFmYTk3NTgxMmY4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0QWZmaW5pdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRBZmZpbml0eS5oCkBAIC0zMCw5ICszMCw0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIFVwc3RyZWFtIG1lYW5zIGJlZm9yZSBhIGxpbmUgYnJlYWssIGRvd25zdHJlYW0gbWVhbnMg
YWZ0ZXIgYSBsaW5lIGJyZWFrLgogZW51bSBjbGFzcyBBZmZpbml0eSA6IGJvb2wgeyBVcHN0cmVh
bSwgRG93bnN0cmVhbSB9OwogCi0vLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGRlcHJlY2F0ZWQgbmFt
ZXMgYWZ0ZXIgcmVtb3ZpbmcgYWxsIHVzZXMgb2YgdGhlbS4KLXVzaW5nIEVBZmZpbml0eSA9IEFm
ZmluaXR5Owotc3RhdGljIGNvbnN0ZXhwciBhdXRvIFVQU1RSRUFNID0gQWZmaW5pdHk6OlVwc3Ry
ZWFtOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIERPV05TVFJFQU0gPSBBZmZpbml0eTo6RG93bnN0
cmVhbTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCmluZGV4IDgwMDBlOGY0NWE2YmUyNjlmODg5YWQyMjk5YjVmMWViZjFmZjM0
NjkuLjRmNWM5MDFiYTI4ZDI2NjljY2ViM2VjNDQzNTE3MmVjZmNlNzYxMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTk4Myw4ICs5ODMsOCBAQCBib29sIFRl
eHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKQogICAgIC8vIGFuZCBp
biB0aGF0IGNhc2Ugd2UnbGwgZ2V0IG51bGwuIFdlIGRvbid0IHdhbnQgdG8gcHV0IGluIG5ld2xp
bmVzIGF0IHRoZSBzdGFydCBpbiB0aGF0IGNhc2UuCiAgICAgLy8gVGhlIGN1cnJQb3MuaXNOb3RO
dWxsKCkgY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgcG9zaXRpb25zIGluIG5vbi1IVE1MIGNvbnRl
bnQKICAgICAvLyAobGlrZSBTVkcpIGRvIG5vdCBoYXZlIHZpc2libGUgcG9zaXRpb25zLCBhbmQg
d2UgZG9uJ3Qgd2FudCB0byBlbWl0IGZvciB0aGVtIGVpdGhlci4KLSAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnRQb3MgPSBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24obV9zdGFydENvbnRhaW5lciwg
bV9zdGFydE9mZnNldCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciksIERPV05T
VFJFQU0pOwotICAgIFZpc2libGVQb3NpdGlvbiBjdXJyUG9zID0gVmlzaWJsZVBvc2l0aW9uKHBv
c2l0aW9uQmVmb3JlTm9kZShtX25vZGUpLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnRQb3MgPSBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24obV9zdGFydENvbnRhaW5lciwg
bV9zdGFydE9mZnNldCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcikpOworICAg
IFZpc2libGVQb3NpdGlvbiBjdXJyUG9zID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3Jl
Tm9kZShtX25vZGUpKTsKICAgICByZXR1cm4gc3RhcnRQb3MuaXNOb3ROdWxsKCkgJiYgY3VyclBv
cy5pc05vdE51bGwoKSAmJiAhaW5TYW1lTGluZShzdGFydFBvcywgY3VyclBvcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IGRjMDRlMjQ0OTQ3NjU3
OTVmYTAwZTgzZDQ5OWYwZDQxNTA5NzIzOWIuLjkwY2MxMDU5MWJjNDBiMWQzOGE3YWI2MjczMjRl
ZWFhMjU2NjY3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApA
QCAtNjIxLDcgKzYyMSw3IEBAIGJvb2wgVHlwaW5nQ29tbWFuZDo6bWFrZUVkaXRhYmxlUm9vdEVt
cHR5KCkKICAgICAgICAgcmVtb3ZlTm9kZSgqY2hpbGQpOwogCiAgICAgYWRkQmxvY2tQbGFjZWhv
bGRlcklmTmVlZGVkKHJvb3QpOwotICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUocm9vdCksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlv
bigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUocm9vdCksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBl
bmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNjM0LDE0ICs2MzQsMTUgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVz
c2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBzaG91bGRBZGQKIAogICAgIFZp
c2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9EZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb25BZnRlclVuZG87Ci0gICAgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSAh
ZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJldCgpOworICAgIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVs
ZW1lbnRzID0gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKGVuZGluZ1NlbGVjdGlvbigpLnNlbGVjdGlv
blR5cGUoKSkgewotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246Cisg
ICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOworCisgICAgaWYg
KGVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkgewogICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0
ZSA9IGVuZGluZ1NlbGVjdGlvbigpOwogICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8gPSBzZWxl
Y3Rpb25Ub0RlbGV0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9u
OjpDYXJldFNlbGVjdGlvbjogeworICAgICAgICBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSB0
cnVlOworICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFmdGVyIGJyZWFraW5nIG91dCBvZiBhbiBl
bXB0eSBtYWlsIGJsb2NrcXVvdGUsIHdlIHN0aWxsIHdhbnQgY29udGludWUgd2l0aCB0aGUgZGVs
ZXRpb24KICAgICAgICAgLy8gc28gYWN0dWFsIGNvbnRlbnQgd2lsbCBnZXQgZGVsZXRlZCwgYW5k
IG5vdCBqdXN0IHRoZSBxdW90ZSBzdHlsZS4KICAgICAgICAgaWYgKGJyZWFrT3V0T2ZFbXB0eU1h
aWxCbG9ja3F1b3RlZFBhcmFncmFwaCgpKQpAQCAtNjkxLDcgKzY5Miw3IEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJv
b2wgc2hvdWxkQWRkCiAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBncmFudWxh
cml0eSk7CiAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgdGFibGUsIHNl
bGVjdCB0aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KICAgICAgICAgfSBlbHNl
IGlmIChOb2RlKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUodmlzaWJsZVN0YXJ0
KSkgewotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9z
aXRpb25CZWZvcmVOb2RlKHRhYmxlKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgRE9XTlNU
UkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CisgICAgICAgICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUodGFi
bGUpLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5k
aW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgICAgICAgICB0eXBpbmdBZGRl
ZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNzExLDExICs3MTIsNiBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNz
ZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNob3VsZEFkZAogICAgICAgICAg
ICAgLy8gV2UgY2FuJ3QgbGV0IHRoZSBWaXNpYmxlU2VsZWN0aW9uIGNsYXNzJ3MgdmFsaWRhdGlv
biBraWNrIGluIG9yIGl0J2xsIGFkanVzdCBmb3IgdXMgYmFzZWQgb24KICAgICAgICAgICAgIC8v
IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkb2N1bWVudCBhbmQgd2UnbGwgZ2V0IHRoZSB3cm9u
ZyByZXN1bHQuCiAgICAgICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8uc2V0V2l0aG91dFZhbGlk
YXRpb24oc3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgc2VsZWN0aW9uVG9EZWxldGUuZXh0ZW50
KCkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpO
b1NlbGVjdGlvbjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAKICAgICBBU1NFUlQoIXNlbGVjdGlvblRvRGVsZXRlLmlzTm9uZSgpKTsK
QEAgLTcyOCwxMCArNzI0LDEwIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3Nl
ZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRkCiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5p
c0NhcmV0KCkgfHwgIWRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2hvdWxkRGVsZXRlU2VsZWN0aW9u
KHNlbGVjdGlvblRvRGVsZXRlKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKCF3
aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChEZWxldGVLZXksIGdyYW51bGFyaXR5LCB7IH0sIHNl
bGVjdGlvblRvRGVsZXRlLmZpcnN0UmFuZ2UoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzU5
LDE0ICs3NTUsMTUgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3Nl
ZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2gKIAogICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uVG9EZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25B
ZnRlclVuZG87Ci0gICAgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSAhZW5kaW5nU2Vs
ZWN0aW9uKCkuaXNDYXJldCgpOworICAgIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0g
ZmFsc2U7CisKKyAgICBBU1NFUlQoZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2UoKSk7
CiAKLSAgICBzd2l0Y2ggKGVuZGluZ1NlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKSkgewotICAg
IGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246CisgICAgaWYgKGVuZGluZ1Nl
bGVjdGlvbigpLmlzUmFuZ2UoKSkgewogICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IGVuZGlu
Z1NlbGVjdGlvbigpOwogICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8gPSBzZWxlY3Rpb25Ub0Rl
bGV0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNl
bGVjdGlvbjogeworICAgICAgICBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSB0cnVlOworICAg
IH0gZWxzZSB7CiAgICAgICAgIG1fc21hcnREZWxldGUgPSBmYWxzZTsKIAogICAgICAgICAvLyBI
YW5kbGUgZGVsZXRlIGF0IGJlZ2lubmluZy1vZi1ibG9jayBjYXNlLgpAQCAtNzkwLDcgKzc4Nyw3
IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHNoCiAgICAgICAgIC8vIFdoZW4gZGVsZXRpbmcgdGFi
bGVzOiBTZWxlY3QgdGhlIHRhYmxlIGZpcnN0LCB0aGVuIHBlcmZvcm0gdGhlIGRlbGV0aW9uCiAg
ICAgICAgIGlmIChkb3duc3RyZWFtRW5kLmNvbnRhaW5lck5vZGUoKSAmJiBkb3duc3RyZWFtRW5k
LmNvbnRhaW5lck5vZGUoKS0+cmVuZGVyZXIoKSAmJiBkb3duc3RyZWFtRW5kLmNvbnRhaW5lck5v
ZGUoKS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpCiAgICAgICAgICAgICAmJiBkb3duc3RyZWFtRW5k
LmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA8PSBjYXJldE1pbk9mZnNldCgqZG93bnN0
cmVhbUVuZC5jb250YWluZXJOb2RlKCkpKSB7Ci0gICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgcG9zaXRpb25BZnRl
ck5vZGUoZG93bnN0cmVhbUVuZC5jb250YWluZXJOb2RlKCkpLCBET1dOU1RSRUFNLCBlbmRpbmdT
ZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAgICAgICAgICAgIHNldEVuZGluZ1NlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLCBwb3NpdGlvbkFm
dGVyTm9kZShkb3duc3RyZWFtRW5kLmNvbnRhaW5lck5vZGUoKSksIEFmZmluaXR5OjpEb3duc3Ry
ZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICAgICAgICAgIHR5
cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChGb3J3YXJkRGVsZXRlS2V5KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtODE5LDExICs4MTYsNiBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6
OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9v
bCBzaAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvLnNldFdp
dGhvdXRWYWxpZGF0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgZXh0ZW50KTsKICAg
ICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9u
OjpOb1NlbGVjdGlvbjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICBBU1NFUlQoIXNlbGVjdGlvblRvRGVsZXRlLmlzTm9uZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBmMzNm
MDE5OGIyZDRjMTg5Yzc4MjJkZGU2NTAwZTA5YWQyMjI2ZTUyLi5lODcyYzc2NTI2ZmMwZDMxMmU1
ZjJmNTExNDM5MzY4ODAzNjRlNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotVmlzaWJsZVBvc2l0aW9uOjpWaXNpYmxlUG9zaXRp
b24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHkpCitWaXNpYmxl
UG9zaXRpb246OlZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIEFmZmlu
aXR5IGFmZmluaXR5KQogICAgIDogbV9kZWVwUG9zaXRpb24geyBjYW5vbmljYWxQb3NpdGlvbihw
b3NpdGlvbikgfQogewogICAgIGlmIChhZmZpbml0eSA9PSBBZmZpbml0eTo6VXBzdHJlYW0gJiYg
IWlzTnVsbCgpKSB7CkBAIC05MSwxNiArOTEsMTYgQEAgVmlzaWJsZVBvc2l0aW9uIFZpc2libGVQ
b3NpdGlvbjo6cHJldmlvdXMoRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUsIGJvb2wK
ICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIH0KIAotICAgIFZpc2libGVQ
b3NpdGlvbiBwcmV2ID0gVmlzaWJsZVBvc2l0aW9uKHBvcywgRE9XTlNUUkVBTSk7CisgICAgVmlz
aWJsZVBvc2l0aW9uIHByZXYgPSBwb3M7CiAgICAgQVNTRVJUKHByZXYgIT0gKnRoaXMpOwogCi0j
aWZuZGVmIE5ERUJVRwotICAgIC8vIHdlIHNob3VsZCBhbHdheXMgYmUgYWJsZSB0byBtYWtlIHRo
ZSBhZmZpbml0eSBET1dOU1RSRUFNLCBiZWNhdXNlIGdvaW5nIHByZXZpb3VzIGZyb20gYW4KLSAg
ICAvLyBVUFNUUkVBTSBwb3NpdGlvbiBjYW4gbmV2ZXIgeWllbGQgYW5vdGhlciBVUFNUUkVBTSBw
b3NpdGlvbiAodW5sZXNzIGxpbmUgd3JhcCBsZW5ndGggaXMgMCEpLgotICAgIGlmIChwcmV2Lmlz
Tm90TnVsbCgpICYmIG1fYWZmaW5pdHkgPT0gVVBTVFJFQU0pIHsKLSAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHRlbXAgPSBwcmV2OwotICAgICAgICB0ZW1wLnNldEFmZmluaXR5KFVQU1RSRUFNKTsK
LSAgICAgICAgQVNTRVJUKGluU2FtZUxpbmUodGVtcCwgcHJldikpOworI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIG1ha2UgdGhlIGFmZmluaXR5
IGRvd25zdHJlYW0sIGJlY2F1c2UgZ29pbmcgcHJldmlvdXMgZnJvbSBhbgorICAgIC8vIHVwc3Ry
ZWFtIHBvc2l0aW9uIGNhbiBuZXZlciB5aWVsZCBhbm90aGVyIHVwc3RyZWFtIHBvc2l0aW9uIHVu
bGVzcyBsaW5lIHdyYXAgbGVuZ3RoIGlzIDAuCisgICAgaWYgKHByZXYuaXNOb3ROdWxsKCkgJiYg
bV9hZmZpbml0eSA9PSBBZmZpbml0eTo6VXBzdHJlYW0pIHsKKyAgICAgICAgYXV0byB1cHN0cmVh
bUNvcHkgPSBwcmV2OworICAgICAgICB1cHN0cmVhbUNvcHkuc2V0QWZmaW5pdHkoQWZmaW5pdHk6
OlVwc3RyZWFtKTsKKyAgICAgICAgQVNTRVJUKGluU2FtZUxpbmUodXBzdHJlYW1Db3B5LCBwcmV2
KSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBWaXNpYmxlUG9zaXRpb24g
VmlzaWJsZVBvc2l0aW9uOjpsZWZ0KGJvb2wgc3RheUluRWRpdGFibGVDb250ZW50LCBib29sKiBy
ZWFjaGVkQgogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQogCi0gICAg
VmlzaWJsZVBvc2l0aW9uIGxlZnQgPSBWaXNpYmxlUG9zaXRpb24ocG9zLCBET1dOU1RSRUFNKTsK
KyAgICBWaXNpYmxlUG9zaXRpb24gbGVmdCA9IHBvczsKICAgICBBU1NFUlQobGVmdCAhPSAqdGhp
cyk7CiAKICAgICBpZiAoIXN0YXlJbkVkaXRhYmxlQ29udGVudCkKQEAgLTQyOSw3ICs0MjksNyBA
QCBWaXNpYmxlUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodChib29sIHN0YXlJbkVkaXRh
YmxlQ29udGVudCwgYm9vbCogcmVhY2hlZAogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7CiAgICAgfQogCi0gICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0ID0gVmlzaWJsZVBvc2l0aW9u
KHBvcywgRE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0ID0gcG9zOwogICAg
IEFTU0VSVChyaWdodCAhPSAqdGhpcyk7CiAKICAgICBpZiAoIXN0YXlJbkVkaXRhYmxlQ29udGVu
dCkKQEAgLTc0MSwxMyArNzQxLDEzIEBAIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3Vu
ZGFyeVBvaW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgcmV0dXJuIG1h
a2VCb3VuZGFyeVBvaW50KHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgRUFmZmluaXR5IGFmZmluaXR5KQor
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIEFmZmluaXR5IGFmZmlu
aXR5KQogewogICAgIHN3aXRjaCAoYWZmaW5pdHkpIHsKLSAgICBjYXNlIFVQU1RSRUFNOgorICAg
IGNhc2UgQWZmaW5pdHk6OlVwc3RyZWFtOgogICAgICAgICBzdHJlYW0gPDwgInVwc3RyZWFtIjsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBET1dOU1RSRUFNOgorICAgIGNhc2UgQWZmaW5pdHk6
OkRvd25zdHJlYW06CiAgICAgICAgIHN0cmVhbSA8PCAiZG93bnN0cmVhbSI7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNl
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3Bw
CmluZGV4IGExNDZkYjI4ZGQ2MzU5OTQ4ZDZkYTZkNTM4NWRjZTAxY2UwZTcxNzYuLjQzZGVlMGEx
ZGY4N2YwNjhlNzA4ZWRjYWNmNzRiZDAwOWNhYjEwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtNDQsMjMgKzQ0LDIxIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oKQotICAgIDog
bV9hZmZpbml0eShET1dOU1RSRUFNKQotICAgICwgbV9zZWxlY3Rpb25UeXBlKE5vU2VsZWN0aW9u
KQotICAgICwgbV9iYXNlSXNGaXJzdCh0cnVlKQorICAgIDogbV9iYXNlSXNGaXJzdCh0cnVlKQog
ICAgICwgbV9pc0RpcmVjdGlvbmFsKGZhbHNlKQogewogfQogCi1WaXNpYmxlU2VsZWN0aW9uOjpW
aXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3MsIEVBZmZpbml0eSBhZmZpbml0eSwg
Ym9vbCBpc0RpcmVjdGlvbmFsKQotICAgIDogbV9iYXNlKHBvcykKLSAgICAsIG1fZXh0ZW50KHBv
cykKK1Zpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mIHBv
c2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQorICAgIDogbV9i
YXNlKHBvc2l0aW9uKQorICAgICwgbV9leHRlbnQocG9zaXRpb24pCiAgICAgLCBtX2FmZmluaXR5
KGFmZmluaXR5KQogICAgICwgbV9pc0RpcmVjdGlvbmFsKGlzRGlyZWN0aW9uYWwpCiB7CiAgICAg
dmFsaWRhdGUoKTsKIH0KIAotVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25z
dCBQb3NpdGlvbiYgYmFzZSwgY29uc3QgUG9zaXRpb24mIGV4dGVudCwgRUFmZmluaXR5IGFmZmlu
aXR5LCBib29sIGlzRGlyZWN0aW9uYWwpCitWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0
aW9uKGNvbnN0IFBvc2l0aW9uJiBiYXNlLCBjb25zdCBQb3NpdGlvbiYgZXh0ZW50LCBBZmZpbml0
eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQogICAgIDogbV9iYXNlKGJhc2UpCiAgICAg
LCBtX2V4dGVudChleHRlbnQpCiAgICAgLCBtX2FmZmluaXR5KGFmZmluaXR5KQpAQCAtNjksMTAg
KzY3LDEwIEBAIFZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRp
b24mIGJhc2UsIGNvbnN0IFBvc2l0aW9uJiBleHRlbnQsCiAgICAgdmFsaWRhdGUoKTsKIH0KIAot
VmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvcywgYm9vbCBpc0RpcmVjdGlvbmFsKQotICAgIDogbV9iYXNlKHBvcy5kZWVwRXF1aXZhbGVu
dCgpKQotICAgICwgbV9leHRlbnQocG9zLmRlZXBFcXVpdmFsZW50KCkpCi0gICAgLCBtX2FmZmlu
aXR5KHBvcy5hZmZpbml0eSgpKQorVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGlzRGlyZWN0aW9uYWwpCisgICAg
OiBtX2Jhc2UocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkKKyAgICAsIG1fZXh0ZW50KHBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkpCisgICAgLCBtX2FmZmluaXR5KHBvc2l0aW9uLmFmZmluaXR5
KCkpCiAgICAgLCBtX2lzRGlyZWN0aW9uYWwoaXNEaXJlY3Rpb25hbCkKIHsKICAgICB2YWxpZGF0
ZSgpOwpAQCAtODcsNyArODUsNyBAQCBWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYmFzZSwgY29uc3QgVmlzaWJsZVBvcwogICAgIHZhbGlk
YXRlKCk7CiB9CiAKLVZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkK
K1Zpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlLCBBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQogICAgIDogbV9iYXNl
KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgcmFu
Z2Uuc3RhcnRPZmZzZXQoKSkpCiAgICAgLCBtX2V4dGVudChjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24oJnJhbmdlLmVuZENvbnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSkpCiAgICAgLCBt
X2FmZmluaXR5KGFmZmluaXR5KQpAQCAtMTAwLDcgKzk4LDcgQEAgVmlzaWJsZVNlbGVjdGlvbjo6
VmlzaWJsZVNlbGVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIEVBZmZpbml0eSBhZmZp
bml0eSwKIFZpc2libGVTZWxlY3Rpb24gVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNv
bnRlbnRzT2ZOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKCFlZGl0aW5nSWdub3Jlc0Nv
bnRlbnQoKm5vZGUpKTsKLSAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9u
SW5Ob2RlKG5vZGUpLCBsYXN0UG9zaXRpb25Jbk5vZGUobm9kZSksIERPV05TVFJFQU0pOworICAg
IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZSksIGxhc3RQ
b3NpdGlvbkluTm9kZShub2RlKSk7CiB9CiAKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0QmFz
ZShjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCkBAIC0zMTksMTAgKzMxNywxMCBAQCB2b2lkIFZp
c2libGVTZWxlY3Rpb246OnNldFN0YXJ0QW5kRW5kRnJvbUJhc2VBbmRFeHRlbnRSZXNwZWN0aW5n
R3JhbnVsYXJpdHkoVGV4dAogICAgICAgICAgICAgbV9lbmQgPSBlbmRPZkxpbmUoVmlzaWJsZVBv
c2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHk6IHsKLSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zdGFydCwgbV9hZmZpbml0
eSk7Ci0gICAgICAgICAgICBpZiAoaXNTdGFydE9mTGluZShwb3MpICYmIGlzRW5kT2ZFZGl0YWJs
ZU9yTm9uRWRpdGFibGVDb250ZW50KHBvcykpCi0gICAgICAgICAgICAgICAgcG9zID0gcG9zLnBy
ZXZpb3VzKCk7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChwb3MpLmRl
ZXBFcXVpdmFsZW50KCk7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24obV9z
dGFydCwgbV9hZmZpbml0eSk7CisgICAgICAgICAgICBpZiAoaXNTdGFydE9mTGluZShwb3NpdGlv
bikgJiYgaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQocG9zaXRpb24pKQorICAg
ICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24ucHJldmlvdXMoKTsKKyAgICAgICAgICAg
IG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvc2l0aW9uKS5kZWVwRXF1aXZhbGVudCgpOwog
ICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQYXJhZ3JhcGhFbmQgPSBlbmRPZlBh
cmFncmFwaChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gSW5jbHVkZSB0aGUgInBhcmFncmFwaCBicmVhayIgKHRoZSBzcGFj
ZSBmcm9tIHRoZSBlbmQgb2YgdGhpcyBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0CkBAIC0zNzMsMTUg
KzM3MSwxNCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnVwZGF0ZVNlbGVjdGlvblR5cGUoKQog
ewogICAgIGlmIChtX3N0YXJ0LmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2VuZC5pc051
bGwoKSk7Ci0gICAgICAgIG1fc2VsZWN0aW9uVHlwZSA9IE5vU2VsZWN0aW9uOwotICAgIH0gZWxz
ZSBpZiAobV9zdGFydCA9PSBtX2VuZCB8fCBtX3N0YXJ0LnVwc3RyZWFtKCkgPT0gbV9lbmQudXBz
dHJlYW0oKSkgewotICAgICAgICBtX3NlbGVjdGlvblR5cGUgPSBDYXJldFNlbGVjdGlvbjsKLSAg
ICB9IGVsc2UKLSAgICAgICAgbV9zZWxlY3Rpb25UeXBlID0gUmFuZ2VTZWxlY3Rpb247Ci0KLSAg
ICAvLyBBZmZpbml0eSBvbmx5IG1ha2VzIHNlbnNlIGZvciBhIGNhcmV0Ci0gICAgaWYgKG1fc2Vs
ZWN0aW9uVHlwZSAhPSBDYXJldFNlbGVjdGlvbikKLSAgICAgICAgbV9hZmZpbml0eSA9IERPV05T
VFJFQU07CisgICAgICAgIG1fdHlwZSA9IFR5cGU6Ok5vbmU7CisgICAgICAgIG1fYWZmaW5pdHkg
PSBBZmZpbml0eTo6RG93bnN0cmVhbTsKKyAgICB9IGVsc2UgaWYgKG1fc3RhcnQgPT0gbV9lbmQg
fHwgbV9zdGFydC51cHN0cmVhbSgpID09IG1fZW5kLnVwc3RyZWFtKCkpCisgICAgICAgIG1fdHlw
ZSA9IFR5cGU6OkNhcmV0OworICAgIGVsc2UgeworICAgICAgICBtX3R5cGUgPSBUeXBlOjpSYW5n
ZTsKKyAgICAgICAgbV9hZmZpbml0eSA9IEFmZmluaXR5OjpEb3duc3RyZWFtOworICAgIH0KIH0K
IAogdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjp2YWxpZGF0ZShUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHkpCkBAIC0zOTIsNyArMzg5LDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjp2YWxpZGF0
ZShUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgYWRqdXN0U2VsZWN0aW9uVG9Bdm9p
ZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMoKTsKICAgICB1cGRhdGVTZWxlY3Rpb25UeXBlKCk7
CiAKLSAgICBpZiAoc2VsZWN0aW9uVHlwZSgpID09IFJhbmdlU2VsZWN0aW9uKSB7CisgICAgaWYg
KGlzUmFuZ2UoKSkgewogICAgICAgICAvLyAiQ29uc3RyYWluIiB0aGUgc2VsZWN0aW9uIHRvIGJl
IHRoZSBzbWFsbGVzdCBlcXVpdmFsZW50IHJhbmdlIG9mIG5vZGVzLgogICAgICAgICAvLyBUaGlz
IGlzIGEgc29tZXdoYXQgYXJiaXRyYXJ5IGNob2ljZSwgYnV0IGV4cGVyaWVuY2Ugc2hvd3MgdGhh
dCBpdCBpcwogICAgICAgICAvLyB1c2VmdWwgdG8gbWFrZSB0byBtYWtlIHRoZSBzZWxlY3Rpb24g
ImNhbm9uaWNhbCIgKGlmIG9ubHkgZm9yCkBAIC00MjEsNyArNDE4LDcgQEAgdm9pZCBWaXNpYmxl
U2VsZWN0aW9uOjpzZXRXaXRob3V0VmFsaWRhdGlvbihjb25zdCBQb3NpdGlvbiYgYmFzZSwgY29u
c3QgUG9zaXRpb24KIHsKICAgICBBU1NFUlQoIWJhc2UuaXNOdWxsKCkpOwogICAgIEFTU0VSVCgh
ZXh0ZW50LmlzTnVsbCgpKTsKLSAgICBBU1NFUlQobV9hZmZpbml0eSA9PSBET1dOU1RSRUFNKTsK
KyAgICBBU1NFUlQobV9hZmZpbml0eSA9PSBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgbV9i
YXNlID0gYmFzZTsKICAgICBtX2V4dGVudCA9IGV4dGVudDsKICAgICBtX2Jhc2VJc0ZpcnN0ID0g
YmFzZSA8PSBleHRlbnQ7CkBAIC00MzIsNyArNDI5LDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9u
OjpzZXRXaXRob3V0VmFsaWRhdGlvbihjb25zdCBQb3NpdGlvbiYgYmFzZSwgY29uc3QgUG9zaXRp
b24KICAgICAgICAgbV9zdGFydCA9IGV4dGVudDsKICAgICAgICAgbV9lbmQgPSBiYXNlOwogICAg
IH0KLSAgICBtX3NlbGVjdGlvblR5cGUgPSBiYXNlID09IGV4dGVudCA/IENhcmV0U2VsZWN0aW9u
IDogUmFuZ2VTZWxlY3Rpb247CisgICAgbV90eXBlID0gYmFzZSA9PSBleHRlbnQgPyBUeXBlOjpD
YXJldCA6IFR5cGU6OlJhbmdlOwogfQogCiBQb3NpdGlvbiBWaXNpYmxlU2VsZWN0aW9uOjphZGp1
c3RQb3NpdGlvbkZvckVuZChjb25zdCBQb3NpdGlvbiYgY3VycmVudFBvc2l0aW9uLCBOb2RlKiBz
dGFydENvbnRhaW5lck5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlv
bi5oCmluZGV4IDg3NmRlMTg2OTU0M2M1MjRlZGRjNDY1Mzc4ODVmOTE0ZDc4M2VmNTEuLjAzYjY0
ZGEzM2VmMzhkYTMwMmMzMGExODE0Y2VmOTU4MGU2YzdiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNTMgKzMxLDQ2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUG9zaXRpb247Ci0KLXN0cnVjdCBTaW1wbGVSYW5nZTsK
LQotY29uc3QgRUFmZmluaXR5IFNFTF9ERUZBVUxUX0FGRklOSVRZID0gRE9XTlNUUkVBTTsKIGVu
dW0gY2xhc3MgU2VsZWN0aW9uRGlyZWN0aW9uIDogdWludDhfdCB7IEZvcndhcmQsIEJhY2t3YXJk
LCBSaWdodCwgTGVmdCB9OwogCiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uIHsKIHB1YmxpYzoKLSAg
ICBlbnVtIFNlbGVjdGlvblR5cGUgeyBOb1NlbGVjdGlvbiwgQ2FyZXRTZWxlY3Rpb24sIFJhbmdl
U2VsZWN0aW9uIH07Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKCk7CiAK
LSAgICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBib29sIGlz
RGlyZWN0aW9uYWwgPSBmYWxzZSk7Ci0gICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlv
biYsIGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJv
b2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2Vs
ZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgRUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5J
VFksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gZGVmYXVsdEFmZmluaXR5ID0gVmlzaWJsZVBvc2l0aW9uOjpkZWZhdWx0QWZmaW5pdHk7CisK
KyAgICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgQWZmaW5pdHksIGJvb2wgaXNE
aXJlY3Rpb25hbCA9IGZhbHNlKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9u
JiwgY29uc3QgUG9zaXRpb24mLCBBZmZpbml0eSA9IGRlZmF1bHRBZmZpbml0eSwgYm9vbCBpc0Rp
cmVjdGlvbmFsID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24o
Y29uc3QgU2ltcGxlUmFuZ2UmLCBBZmZpbml0eSA9IGRlZmF1bHRBZmZpbml0eSwgYm9vbCBpc0Rp
cmVjdGlvbmFsID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uRnJvbUNv
bnRlbnRzT2ZOb2RlKE5vZGUqKTsKIAotICAgIFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uVHlwZTsgfQotCi0gICAgdm9pZCBzZXRBZmZpbml0
eShFQWZmaW5pdHkgYWZmaW5pdHkpIHsgbV9hZmZpbml0eSA9IGFmZmluaXR5OyB9Ci0gICAgRUFm
ZmluaXR5IGFmZmluaXR5KCkgY29uc3QgeyByZXR1cm4gbV9hZmZpbml0eTsgfQorICAgIHZvaWQg
c2V0QWZmaW5pdHkoQWZmaW5pdHkgYWZmaW5pdHkpIHsgbV9hZmZpbml0eSA9IGFmZmluaXR5OyB9
CisgICAgQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdCB7IHJldHVybiBtX2FmZmluaXR5OyB9CiAK
ICAgICB2b2lkIHNldEJhc2UoY29uc3QgUG9zaXRpb24mKTsKICAgICB2b2lkIHNldEJhc2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgdm9pZCBzZXRFeHRlbnQoY29uc3QgUG9zaXRpb24m
KTsKICAgICB2b2lkIHNldEV4dGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLSAgICAKKwog
ICAgIFBvc2l0aW9uIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICBQb3NpdGlv
biBleHRlbnQoKSBjb25zdCB7IHJldHVybiBtX2V4dGVudDsgfQogICAgIFBvc2l0aW9uIHN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsgfQogICAgIFBvc2l0aW9uIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5kOyB9CiAgICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCgp
IGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBpc1JhbmdlKCkgPyBET1dO
U1RSRUFNIDogYWZmaW5pdHkoKSk7IH0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCgp
IGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX2VuZCwgaXNSYW5nZSgpID8gVVBTVFJF
QU0gOiBhZmZpbml0eSgpKTsgfQotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlQmFzZSgpIGNv
bnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX2Jhc2UsIGlzUmFuZ2UoKSA/IChpc0Jhc2VG
aXJzdCgpID8gVVBTVFJFQU0gOiBET1dOU1RSRUFNKSA6IGFmZmluaXR5KCkpOyB9Ci0gICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVFeHRlbnQoKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRp
b24obV9leHRlbnQsIGlzUmFuZ2UoKSA/IChpc0Jhc2VGaXJzdCgpID8gRE9XTlNUUkVBTSA6IFVQ
U1RSRUFNKSA6IGFmZmluaXR5KCkpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBpc1JhbmdlKCkgPyBB
ZmZpbml0eTo6RG93bnN0cmVhbSA6IGFmZmluaXR5KCkpOyB9CisgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVFbmQoKSBjb25zdCB7IHJldHVybiBWaXNpYmxlUG9zaXRpb24obV9lbmQsIGlzUmFu
Z2UoKSA/IEFmZmluaXR5OjpVcHN0cmVhbSA6IGFmZmluaXR5KCkpOyB9CisgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVCYXNlKCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG1fYmFz
ZSwgaXNSYW5nZSgpID8gKGlzQmFzZUZpcnN0KCkgPyBBZmZpbml0eTo6VXBzdHJlYW0gOiBBZmZp
bml0eTo6RG93bnN0cmVhbSkgOiBhZmZpbml0eSgpKTsgfQorICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlRXh0ZW50KCkgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKG1fZXh0ZW50LCBp
c1JhbmdlKCkgPyAoaXNCYXNlRmlyc3QoKSA/IEFmZmluaXR5OjpEb3duc3RyZWFtIDogQWZmaW5p
dHk6OlVwc3RyZWFtKSA6IGFmZmluaXR5KCkpOyB9CiAKICAgICBvcGVyYXRvciBWaXNpYmxlUG9z
aXRpb25SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHsgdmlzaWJsZVN0YXJ0KCksIHZpc2libGVFbmQo
KSB9OyB9CiAKLSAgICBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGlvblR5cGUo
KSA9PSBOb1NlbGVjdGlvbjsgfQotICAgIGJvb2wgaXNDYXJldCgpIGNvbnN0IHsgcmV0dXJuIHNl
bGVjdGlvblR5cGUoKSA9PSBDYXJldFNlbGVjdGlvbjsgfQotICAgIGJvb2wgaXNSYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIHNlbGVjdGlvblR5cGUoKSA9PSBSYW5nZVNlbGVjdGlvbjsgfQotICAgIGJv
b2wgaXNDYXJldE9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiBzZWxlY3Rpb25UeXBlKCkgIT0gTm9T
ZWxlY3Rpb247IH0KKyAgICBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBU
eXBlOjpOb25lOyB9CisgICAgYm9vbCBpc0NhcmV0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IFR5cGU6OkNhcmV0OyB9CisgICAgYm9vbCBpc1JhbmdlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6OlJhbmdlOyB9CisgICAgYm9vbCBpc0NhcmV0T3JSYW5nZSgpIGNvbnN0IHsgcmV0
dXJuICFpc05vbmUoKTsgfQogICAgIGJvb2wgaXNOb25PcnBoYW5lZFJhbmdlKCkgY29uc3QgeyBy
ZXR1cm4gaXNSYW5nZSgpICYmICFzdGFydCgpLmlzT3JwaGFuKCkgJiYgIWVuZCgpLmlzT3JwaGFu
KCk7IH0KICAgICBib29sIGlzTm9uZU9yT3JwaGFuZWQoKSBjb25zdCB7IHJldHVybiBpc05vbmUo
KSB8fCBzdGFydCgpLmlzT3JwaGFuKCkgfHwgZW5kKCkuaXNPcnBoYW4oKTsgfQogCkBAIC0xMjks
MzUgKzEyMiwzNSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENy
b3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMoKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvblR5cGUo
KTsKIAotICAgIC8vIFdlIG5lZWQgdG8gc3RvcmUgdGhlc2UgYXMgUG9zaXRpb25zIGJlY2F1c2Ug
VmlzaWJsZVNlbGVjdGlvbiBpcwotICAgIC8vIHVzZWQgdG8gc3RvcmUgdmFsdWVzIGluIGVkaXRp
bmcgY29tbWFuZHMgZm9yIHVzZSB3aGVuCi0gICAgLy8gdW5kb2luZyB0aGUgY29tbWFuZC4gV2Ug
bmVlZCB0byBiZSBhYmxlIHRvIGNyZWF0ZSBhIHNlbGVjdGlvbiB0aGF0LCB3aGlsZSBjdXJyZW50
bHkKLSAgICAvLyBpbnZhbGlkLCB3aWxsIGJlIHZhbGlkIG9uY2UgdGhlIGNoYW5nZXMgYXJlIHVu
ZG9uZS4KKyAgICAvLyBXZSBzdG9yZSB0aGVzZSBhcyBQb3NpdGlvbnMgYmVjYXVzZSBWaXNpYmxl
U2VsZWN0aW9uIGlzIHVzZWQgdG8gc3RvcmUgdmFsdWVzIGluCisgICAgLy8gZWRpdGluZyBjb21t
YW5kcyBmb3IgdXNlIHdoZW4gdW5kb2luZyB0aGUgY29tbWFuZC4gV2UgbmVlZCB0byBiZSBhYmxl
IHRvIHN0b3JlCisgICAgLy8gYSBzZWxlY3Rpb24gdGhhdCwgd2hpbGUgY3VycmVudGx5IGludmFs
aWQsIHdpbGwgYmUgdmFsaWQgb25jZSB0aGUgY2hhbmdlcyBhcmUgdW5kb25lLgorCisgICAgUG9z
aXRpb24gbV9iYXNlOyAvLyBXaGVyZSB0aGUgZmlyc3QgY2xpY2sgaGFwcGVuZWQuCisgICAgUG9z
aXRpb24gbV9leHRlbnQ7IC8vIFdoZXJlIHRoZSBlbmQgY2xpY2sgaGFwcGVuZWQuCiAKLSAgICBQ
b3NpdGlvbiBtX2Jhc2U7ICAgLy8gV2hlcmUgdGhlIGZpcnN0IGNsaWNrIGhhcHBlbmVkCi0gICAg
UG9zaXRpb24gbV9leHRlbnQ7IC8vIFdoZXJlIHRoZSBlbmQgY2xpY2sgaGFwcGVuZWQKLSAgICBQ
b3NpdGlvbiBtX3N0YXJ0OyAgLy8gTGVmdG1vc3QgcG9zaXRpb24gd2hlbiBleHBhbmRlZCB0byBy
ZXNwZWN0IGdyYW51bGFyaXR5Ci0gICAgUG9zaXRpb24gbV9lbmQ7ICAgIC8vIFJpZ2h0bW9zdCBw
b3NpdGlvbiB3aGVuIGV4cGFuZGVkIHRvIHJlc3BlY3QgZ3JhbnVsYXJpdHkKKyAgICBQb3NpdGlv
biBtX3N0YXJ0OyAvLyBMZWZ0bW9zdCBwb3NpdGlvbiB3aGVuIGV4cGFuZGVkIHRvIHJlc3BlY3Qg
Z3JhbnVsYXJpdHkuCisgICAgUG9zaXRpb24gbV9lbmQ7IC8vIFJpZ2h0bW9zdCBwb3NpdGlvbiB3
aGVuIGV4cGFuZGVkIHRvIHJlc3BlY3QgZ3JhbnVsYXJpdHkuCiAKLSAgICBFQWZmaW5pdHkgbV9h
ZmZpbml0eTsgICAgICAgICAgIC8vIHRoZSB1cHN0cmVhbS9kb3duc3RyZWFtIGFmZmluaXR5IG9m
IHRoZSBjYXJldAorICAgIEFmZmluaXR5IG1fYWZmaW5pdHkgeyBkZWZhdWx0QWZmaW5pdHkgfTsK
IAotICAgIC8vIHRoZXNlIGFyZSBjYWNoZWQsIGNhbiBiZSByZWNhbGN1bGF0ZWQgYnkgdmFsaWRh
dGUoKQotICAgIFNlbGVjdGlvblR5cGUgbV9zZWxlY3Rpb25UeXBlOyAvLyBOb25lLCBDYXJldCwg
UmFuZ2UKLSAgICBib29sIG1fYmFzZUlzRmlyc3QgOiAxOyAvLyBUcnVlIGlmIGJhc2UgaXMgYmVm
b3JlIHRoZSBleHRlbnQKKyAgICAvLyBUaGVzZSBhcmUgY2FjaGVkLCBjYW4gYmUgcmVjYWxjdWxh
dGVkIGJ5IHZhbGlkYXRlKCkKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTm9uZSwg
Q2FyZXQsIFJhbmdlIH07CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CisgICAgYm9v
bCBtX2Jhc2VJc0ZpcnN0IDogMTsgLy8gVHJ1ZSBpZiBiYXNlIGlzIGJlZm9yZSB0aGUgZXh0ZW50
LgogICAgIGJvb2wgbV9pc0RpcmVjdGlvbmFsIDogMTsgLy8gTm9uLWRpcmVjdGlvbmFsIGlnbm9y
ZXMgbV9iYXNlSXNGaXJzdCBhbmQgc2VsZWN0aW9uIGFsd2F5cyBleHRlbmRzIG9uIHNoaWZ0ICsg
YXJyb3cga2V5LgogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBhLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBiKQogewotICAgIHJldHVybiBhLnN0
YXJ0KCkgPT0gYi5zdGFydCgpICYmIGEuZW5kKCkgPT0gYi5lbmQoKSAmJiBhLmFmZmluaXR5KCkg
PT0gYi5hZmZpbml0eSgpICYmIGEuaXNCYXNlRmlyc3QoKSA9PSBiLmlzQmFzZUZpcnN0KCkKLSAg
ICAgICAgJiYgYS5pc0RpcmVjdGlvbmFsKCkgPT0gYi5pc0RpcmVjdGlvbmFsKCk7CisgICAgcmV0
dXJuIGEuc3RhcnQoKSA9PSBiLnN0YXJ0KCkgJiYgYS5lbmQoKSA9PSBiLmVuZCgpICYmIGEuYWZm
aW5pdHkoKSA9PSBiLmFmZmluaXR5KCkgJiYgYS5pc0Jhc2VGaXJzdCgpID09IGIuaXNCYXNlRmly
c3QoKSAmJiBhLmlzRGlyZWN0aW9uYWwoKSA9PSBiLmlzRGlyZWN0aW9uYWwoKTsKIH0KIAogaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBhLCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7CiB9Ci0gICAgCisKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA5YzVlMTkxOTZkMTc4MzVj
Y2ZiODk3NmUwMDRiMDFmMGM3MGMxYTJmLi5jYTg3YTIwYjM5ZDA1ODMzZGQ1MDkzMjQ4MmVhNTg3
NTgxMTU3YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0y
MjgsNyArMjI4LDcgQEAgc3RhdGljIGNvbnN0IElubGluZUJveCogbG9naWNhbGx5UHJldmlvdXNC
b3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXQKICAgICAgICAgaWYgKHBvc2l0
aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgUmVuZGVyZWRQb3Np
dGlvbiByZW5kZXJlZFBvc2l0aW9uKHBvc2l0aW9uLCBET1dOU1RSRUFNKTsKKyAgICAgICAgUmVu
ZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvc2l0aW9uKHBvc2l0aW9uLCBBZmZpbml0eTo6RG93bnN0
cmVhbSk7CiAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdCA9IHJlbmRlcmVkUG9z
aXRpb24ucm9vdEJveCgpOwogICAgICAgICBpZiAoIXByZXZpb3VzUm9vdCkKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxvZ2lj
YWxseU5leHRCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCiAgICAg
ICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwgRE9XTlNUUkVBTSk7
CisgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3NpdGlvbihwb3NpdGlvbiwgQWZm
aW5pdHk6OkRvd25zdHJlYW0pOwogICAgICAgICBSb290SW5saW5lQm94KiBuZXh0Um9vdCA9IHJl
bmRlcmVkUG9zaXRpb24ucm9vdEJveCgpOwogICAgICAgICBpZiAoIW5leHRSb290KQogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBWaXNpYmxlUG9zaXRpb24gcHJldmlv
dXNMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGlu
dAogICAgIEVsZW1lbnQqIHJvb3RFbGVtZW50ID0gcm9vdEVkaXRhYmxlT3JEb2N1bWVudEVsZW1l
bnQoKm5vZGUsIGVkaXRhYmxlVHlwZSk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmly
c3RQb3NpdGlvbkluTm9kZShyb290RWxlbWVudCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBm
aXJzdFBvc2l0aW9uSW5Ob2RlKHJvb3RFbGVtZW50KTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIG5l
eHRMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGlu
dCBsaW5lRGlyZWN0aW9uUG9pbnQsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCkBAIC0xMDk5
LDcgKzEwOTksNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50IGxpbgogICAgIEVsZW1lbnQqIHJvb3RF
bGVtZW50ID0gcm9vdEVkaXRhYmxlT3JEb2N1bWVudEVsZW1lbnQoKm5vZGUsIGVkaXRhYmxlVHlw
ZSk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5Ob2RlKHJvb3RF
bGVtZW50KSwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIGxhc3RQb3NpdGlvbkluTm9kZShyb290
RWxlbWVudCk7CiB9CiAKIC8vIC0tLS0tLS0tLQpAQCAtMTI5MiwxNCArMTI5MiwxNCBAQCBWaXNp
YmxlUG9zaXRpb24gc3RhcnRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEVk
aXRpbmdCb3VuZGFyeUNyb3NzaQogICAgIGF1dG8qIG5vZGUgPSBmaW5kU3RhcnRPZlBhcmFncmFw
aChzdGFydE5vZGUsIGhpZ2hlc3RSb290LCBzdGFydEJsb2NrLCBvZmZzZXQsIHR5cGUsIGJvdW5k
YXJ5Q3Jvc3NpbmdSdWxlKTsKICAgICAKICAgICBpZiAoaXM8VGV4dD4obm9kZSkpCi0gICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZG93bmNhc3Q8VGV4dD4obm9kZSksIG9m
ZnNldCksIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gUG9zaXRpb24oZG93bmNhc3Q8VGV4
dD4obm9kZSksIG9mZnNldCk7CiAgICAgCiAgICAgaWYgKHR5cGUgPT0gUG9zaXRpb246OlBvc2l0
aW9uSXNPZmZzZXRJbkFuY2hvcikgewogICAgICAgICBBU1NFUlQodHlwZSA9PSBQb3NpdGlvbjo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIHx8ICFvZmZzZXQpOwotICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIG9mZnNldCwgdHlwZSksIERPV05TVFJFQU0pOwor
ICAgICAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgb2Zmc2V0LCB0eXBlKTsKICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihub2RlLCB0eXBlKSwgRE9XTlNU
UkVBTSk7CisgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUsIHR5cGUpOwogfQogCiBWaXNpYmxlUG9z
aXRpb24gZW5kT2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBFZGl0aW5nQm91
bmRhcnlDcm9zc2luZ1J1bGUgYm91bmRhcnlDcm9zc2luZ1J1bGUpCkBAIC0xMzIzLDEyICsxMzIz
LDEyIEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nCiAgICAgYXV0byogbm9kZSA9IGZpbmRFbmRP
ZlBhcmFncmFwaChzdGFydE5vZGUsIGhpZ2hlc3RSb290LCBzdGF5SW5zaWRlQmxvY2ssIG9mZnNl
dCwgdHlwZSwgYm91bmRhcnlDcm9zc2luZ1J1bGUpOwogICAgIAogICAgIGlmIChpczxUZXh0Pihu
b2RlKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihkb3duY2FzdDxU
ZXh0Pihub2RlKSwgb2Zmc2V0KSwgRE9XTlNUUkVBTSk7CisgICAgICAgIHJldHVybiBQb3NpdGlv
bihkb3duY2FzdDxUZXh0Pihub2RlKSwgb2Zmc2V0KTsKICAgICAKICAgICBpZiAodHlwZSA9PSBQ
b3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKQotICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIG9mZnNldCwgdHlwZSksIERPV05TVFJFQU0pOworICAg
ICAgICByZXR1cm4gUG9zaXRpb24obm9kZSwgb2Zmc2V0LCB0eXBlKTsKIAotICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oUG9zaXRpb24obm9kZSwgdHlwZSksIERPV05TVFJFQU0pOworICAgIHJl
dHVybiBQb3NpdGlvbihub2RlLCB0eXBlKTsKIH0KIAogLy8gRklYTUU6IGlzU3RhcnRPZlBhcmFn
cmFwaChzdGFydE9mTmV4dFBhcmFncmFwaChwb3MpKSBpcyBub3QgYWx3YXlzIHRydWUKQEAgLTE2
MTQsNyArMTYxNCw3IEBAIGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFudWxhcml0eSBncmFuCiAKICAgICAgICAgaWYgKHBy
ZXZCb3VuZGFyeSA9PSBuZXh0Qm91bmRhcnkpIHsKICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9
IG5leHRMaW5lUG9zaXRpb24obmV4dEJvdW5kYXJ5LCAwKTsKLSAgICAgICAgICAgIG5leHRCb3Vu
ZGFyeS5zZXRBZmZpbml0eShVUFNUUkVBTSk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkuc2V0
QWZmaW5pdHkoQWZmaW5pdHk6OlVwc3RyZWFtKTsKICAgICAgICAgICAgIGlmICghaW5TYW1lTGlu
ZShwcmV2Qm91bmRhcnksIG5leHRCb3VuZGFyeSkpCiAgICAgICAgICAgICAgICAgbmV4dEJvdW5k
YXJ5ID0gdnAubmV4dCgpOwogICAgICAgICB9CkBAIC0xODM2LDcgKzE4MzYsNyBAQCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgdnAsCiAKICAgICAgICAgICAgIGlmIChwcmV2Qm91bmRhcnkgPT0gbmV4dEJv
dW5kYXJ5KSB7CiAgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gbmV4dExpbmVQb3NpdGlv
bihuZXh0Qm91bmRhcnksIDApOwotICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeS5zZXRBZmZp
bml0eShVUFNUUkVBTSk7CisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNldEFmZmluaXR5
KEFmZmluaXR5OjpVcHN0cmVhbSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpblNhbWVMaW5lKHBy
ZXZCb3VuZGFyeSwgbmV4dEJvdW5kYXJ5KSkKICAgICAgICAgICAgICAgICAgICAgbmV4dEJvdW5k
YXJ5ID0gdnAubmV4dCgpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IDdlNGVkMmFjZGM1NTQyZjc1Njc0
ZGU0ZmVhZGMwMjllMGU3MjI5MWEuLjlmMDE0OTY1ZGEwOTNjYjJlYjlmMGY5OWNiNTE0NmVkNzVk
ZDNhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFy
eUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW0KQEAgLTMyMyw3ICszMjMsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJh
bmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZQogICAg
IE5TVUludGVnZXIgaGl0SW5kZXg7CiAgICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZ1bGxDaGFy
YWN0ZXJSYW5nZTsKICAgICAKLSAgICBpZiAoc2VsZWN0aW9uLnNlbGVjdGlvblR5cGUoKSA9PSBW
aXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbikgeworICAgIGlmIChzZWxlY3Rpb24uaXNS
YW5nZSgpKSB7CiAgICAgICAgIGF1dG8gc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb24udmlzaWJs
ZVN0YXJ0KCk7CiAgICAgICAgIGF1dG8gc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uLnZpc2libGVF
bmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAxZWQzYjlm
MzA3MmIzODhjZTIyNTE3YjhlZjc3ZDYyN2NiZTQyYzliLi4yOWY3ZTcyN2YyYjJhYzJiOGZiZWQ1
M2VhNjlmNzIyY2Q0NWI3YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cApAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5n
KGNvbnN0IFNpbXBsZVJhbmdlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNo
b3VsZEluc2VydE5vZGUoTm9kZSYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEVkaXRv
ckluc2VydEFjdGlvbikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNob3VsZElu
c2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRp
dG9ySW5zZXJ0QWN0aW9uKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBjb25zdCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFQWZmaW5pdHksIGJvb2wpIGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEFmZmluaXR5LCBi
b29sKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxl
KGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkaWRBcHBseVN0eWxlKCkgZmluYWwgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggYTE3M2FjYzU3MWMxMGUwNjA4
MmFlZDYxNzRhOGE4MmE5MjQ1MWYzMi4uZWIyODA2YjYyMzJmNTk1MDk2NGIwNDU4OGJkNWNlZTdi
ZWM2OTM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMTcyLDcgKzE3
Miw3IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpjb2xsYXBzZShOb2RlKiBub2RlLCB1bnNpZ25lZCBv
ZmZzZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUo
KmZyYW1lKCkpOwotICAgIHByb3RlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOworICAgIHBy
b3RlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIG9mZnNldCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gRE9NU2VsZWN0aW9uOjpjb2xsYXBzZVRvRW5kKCkKQEAgLTE4NSw3ICsxODUsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmNvbGxhcHNlVG9FbmQoKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdG9yKCpmcmFtZSk7Ci0gICAgc2VsZWN0aW9uLm1vdmVUbyhzZWxlY3Rpb24uc2Vs
ZWN0aW9uKCkuZW5kKCksIERPV05TVFJFQU0pOworICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0
aW9uLnNlbGVjdGlvbigpLmVuZCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgcmV0dXJu
IHsgfTsKIH0KIApAQCAtMTk5LDcgKzE5OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVNlbGVj
dGlvbjo6Y29sbGFwc2VUb1N0YXJ0KCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwotICAg
IHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJF
QU0pOworICAgIHNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCks
IEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0yMTcsNyAr
MjE3LDcgQEAgdm9pZCBET01TZWxlY3Rpb246OnNldEJhc2VBbmRFeHRlbnQoTm9kZSogYmFzZU5v
ZGUsIHVuc2lnbmVkIGJhc2VPZmZzZXQsIE5vZGUqIGUKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZSgqZnJhbWUoKSk7Ci0gICAgcHJvdGVjdGVkRnJhbWUt
PnNlbGVjdGlvbigpLm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oYmFzZU5vZGUs
IGJhc2VPZmZzZXQpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZXh0ZW50Tm9kZSwgZXh0
ZW50T2Zmc2V0KSwgRE9XTlNUUkVBTSk7CisgICAgcHJvdGVjdGVkRnJhbWUtPnNlbGVjdGlvbigp
Lm1vdmVUbyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oYmFzZU5vZGUsIGJhc2VPZmZzZXQp
LCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZXh0ZW50Tm9kZSwgZXh0ZW50T2Zmc2V0KSwg
QWZmaW5pdHk6OkRvd25zdHJlYW0pOwogfQogCiB2b2lkIERPTVNlbGVjdGlvbjo6c2V0UG9zaXRp
b24oTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQg
RE9NU2VsZWN0aW9uOjpzZXRQb3NpdGlvbihOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUoKmZyYW1lKCkp
OwotICAgIHByb3RlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKG5vZGUsIG9mZnNldCksIERPV05TVFJFQU0pOworICAgIHByb3RlY3RlZEZy
YW1lLT5zZWxlY3Rpb24oKS5tb3ZlVG8oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUs
IG9mZnNldCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIH0KIAogdm9pZCBET01TZWxlY3Rpb246
Om1vZGlmeShjb25zdCBTdHJpbmcmIGFsdGVyU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
blN0cmluZywgY29uc3QgU3RyaW5nJiBncmFudWxhcml0eVN0cmluZykKQEAgLTI5MCw3ICsyOTAs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmV4dGVuZChOb2RlJiBub2RlLCB1
bnNpZ25lZCBvZmZzZXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJv
ciB9OwogICAgIGlmICghaXNWYWxpZEZvclBvc2l0aW9uKCZub2RlKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0RXh0ZW50KGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbigmbm9kZSwgb2Zmc2V0KSwgRE9XTlNUUkVBTSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNldEV4dGVudChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oJm5vZGUsIG9mZnNl
dCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA5ZGU3MDY1NGYyMGI1ODIzZjc2NTYwMGUxNDE2Yjlk
OGMzYTkxZGY1Li5hMTczZGFhZWIzMDk5MmY5YTljMTY1YzYwYzVjNzlhOWNjNTI1MjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUmLCBjb25zdCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24pID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwg
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBFQWZmaW5pdHksIGJvb2wgc3Rp
bGxTZWxlY3RpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRS
YW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJ
bnNlcnRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRTdXBwcmVzc1Bhc3N3b3JkRWNobygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGVhYzZmODJlODEzODQxZThmY2Vm
NjIxNzU2MDNhOTdhNmFjYzdmYWIuLmY5OGJjZTFiZjQ2Njk4Y2EwZTVkYWRhYmQ2NDljNWZkNzU4
MGZhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTY5Nyw3ICs2OTcs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2so
Y29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UgogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbih0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGV2ZW50
LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxs
KCkpCi0gICAgICAgIHZpc2libGVQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUodGFyZ2V0Tm9kZSksIERPV05TVFJFQU0pOworICAgICAgICB2aXNp
YmxlUG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2Rl
KHRhcmdldE5vZGUpKTsKICAgICBQb3NpdGlvbiBwb3MgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gbV9mcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAppbmRleCAwNmY3Yjk2M2FkZDdlMzcwZmQyZWE1OGYwNTk1ZGIyYmVlZGYzYjc4Li42
MmE5ZWE0MGNjY2ZiOGI1ZWNlMzg2YzYzNmU2MzZiY2IwM2Q5ODkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC01MjYsOCArNTI2LDcgQEAgYm9vbCBGb2N1c0Nv
bnRyb2xsZXI6OmFkdmFuY2VGb2N1c0luRG9jdW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIEtleWIKICAgICBzZXRGb2N1c2VkRnJhbWUobmV3RG9jdW1lbnQuZnJhbWUoKSk7CiAK
ICAgICBpZiAoY2FyZXRCcm93c2luZykgewotICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IGZp
cnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShlbGVtZW50LmdldCgpKTsKLSAgICAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24ocG9zaXRpb24sIHBvc2l0aW9uLCBET1dOU1RSRUFNKTsK
KyAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKGVsZW1lbnQuZ2V0KCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAgICAgICAg
IGlmIChmcmFtZS5zZWxlY3Rpb24oKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9u
KSkgewogICAgICAgICAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0
YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVj
dGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5r
bm93biwgdHJ1ZSB9KTsKICAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9u
cyhVc2VyVHJpZ2dlcmVkKSwgaW50ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDU2ZGM1ZDdh
MDgwZWVjOTFiMWI1ZWYxYjI4YzA0M2VlNmQ2NDRhYTEuLmQ3ZGVkZmQ1OTFjMzllZmQwMjJkNDU3
ZTEyYmFhMmY4YjgzM2I5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODc4LDcgKzg3OCw3IEBA
IHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRS
ZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzCiAgICAgICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2Vk
KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIEZyYW1lU2Vs
ZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZW1lbnRUZXh0LCBFZGl0b3I6OlNl
bGVjdFJlcGxhY2VtZW50OjpZZXMsIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlv
bjo6SW5zZXJ0UmVwbGFjZW1lbnQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9GcmFtZUlPUy5tbQppbmRleCA5YmI4ZTkyY2FhYzVjZjUzMmI3OWI5MGVlYWIzY2YyMTU0MGFm
ZjQzLi42ZjdkOWY3MDA2NjAwNzc5ZDM1NzM1YzhmYTNhZDUxYzNlOTNiODkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtNzIyLDcgKzcyMiw3IEBAIE5TQXJyYXkgKkZyYW1l
OjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byogcm9vdCA9IHNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVj
dGlvbiA/IGRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkgOiBzZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgYXV0byogcm9vdCA9IHNlbGVjdGlvbigp
LmlzTm9uZSgpID8gZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSA6IHNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBhdXRvIHJhbmdlT2ZSb290Q29u
dGVudHMgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpOwogCiAgICAgYXV0
byBtYXJrZXJzSW5Sb290ID0gZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNJblJhbmdlKHJh
bmdlT2ZSb290Q29udGVudHMsIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0
ZXJuYXRpdmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IDJkZjU2ZTY1ZjU2N2RlZDkzYTY1NjUyYzY5M2I1MjZiMTY5MmQwMzAuLjY1NjZhMjkxYjFhNDk0
ZWFhYzM1OTUzYjJmMTUxNDZmOWI5MWExOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcApAQCAtMjE2OSw4ICsyMTY5LDggQEAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoUmVuZGVyQmxvY2smIHBhcmVu
dCwKICAgICBMYXlvdXRVbml0IGNoaWxkTWlkZGxlID0gcGFyZW50LmxvZ2ljYWxXaWR0aEZvckNo
aWxkKGNoaWxkKSAvIDI7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHBhcmVudC5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gcG9pbnRJbkNoaWxkQ29vcmRpbmF0ZXMueCgpIDogcG9p
bnRJbkNoaWxkQ29vcmRpbmF0ZXMueSgpOwogICAgIGlmIChsb2dpY2FsTGVmdCA8IGNoaWxkTWlk
ZGxlKQotICAgICAgICByZXR1cm4gYW5jZXN0b3ItPmNyZWF0ZVZpc2libGVQb3NpdGlvbihjaGls
ZEVsZW1lbnQtPmNvbXB1dGVOb2RlSW5kZXgoKSwgRE9XTlNUUkVBTSk7Ci0gICAgcmV0dXJuIGFu
Y2VzdG9yLT5jcmVhdGVWaXNpYmxlUG9zaXRpb24oY2hpbGRFbGVtZW50LT5jb21wdXRlTm9kZUlu
ZGV4KCkgKyAxLCBVUFNUUkVBTSk7CisgICAgICAgIHJldHVybiBhbmNlc3Rvci0+Y3JlYXRlVmlz
aWJsZVBvc2l0aW9uKGNoaWxkRWxlbWVudC0+Y29tcHV0ZU5vZGVJbmRleCgpLCBBZmZpbml0eTo6
RG93bnN0cmVhbSk7CisgICAgcmV0dXJuIGFuY2VzdG9yLT5jcmVhdGVWaXNpYmxlUG9zaXRpb24o
Y2hpbGRFbGVtZW50LT5jb21wdXRlTm9kZUluZGV4KCkgKyAxLCBBZmZpbml0eTo6VXBzdHJlYW0p
OwogfQogCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRo
SW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENv
bnRhaW5lciopCkBAIC0yMjA2LDkgKzIyMDYsOSBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxv
Y2s6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZQog
ICAgICAgICBMYXlvdXRVbml0IHBvaW50TG9naWNhbFRvcCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBwb2ludC55KCkgOiBwb2ludC54KCk7CiAKICAgICAgICAgaWYgKHBvaW50TG9naWNh
bFRvcCA8IDAgfHwgKHBvaW50TG9naWNhbFRvcCA8IGxvZ2ljYWxIZWlnaHQoKSAmJiBwb2ludExv
Z2ljYWxMZWZ0IDwgMCkpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9u
KGNhcmV0TWluT2Zmc2V0KCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZVZpc2libGVQb3NpdGlvbihjYXJldE1pbk9mZnNldCgpLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7
CiAgICAgICAgIGlmIChwb2ludExvZ2ljYWxUb3AgPj0gbG9naWNhbEhlaWdodCgpIHx8IChwb2lu
dExvZ2ljYWxUb3AgPj0gMCAmJiBwb2ludExvZ2ljYWxMZWZ0ID49IGxvZ2ljYWxXaWR0aCgpKSkK
LSAgICAgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNYXhPZmZzZXQo
KSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9u
KGNhcmV0TWF4T2Zmc2V0KCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICB9IAogCiAgICAg
TGF5b3V0UG9pbnQgcG9pbnRJbkNvbnRlbnRzID0gcG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGJiMDYyYzg0ZDI3ZWEzYjVhYjkwMGQz
NzJjY2Y3NzY2ODQxOTUxNzkuLmZhZTczNWI5NDNlZGI1Njg1NWMyN2MzYTMyMGE5N2U5MGVlNjJl
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBA
IC0zNDg2LDcgKzM0ODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3Np
dGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAgIGVuc3VyZUxp
bmVCb3hlcygpOwogCiAgICAgaWYgKCFmaXJzdFJvb3RCb3goKSkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVZpc2libGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKICAgICBib29sIGxp
bmVzQXJlRmxpcHBlZCA9IHN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpOwogICAg
IGJvb2wgYmxvY2tzQXJlRmxpcHBlZCA9IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKTsKQEAgLTM1NDUsNyArMzU0NSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zs
b3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAg
ICAgICAgICAgICAgICAgICAgICBib3ggPSBuZXdCb3g7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBhYm92ZSBmaXJzdCByb290IGxpbmUgYm94
LCBzbyByZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdAotICAgICAgICAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3goYm94LCB0cnVlKSwgRE9XTlNUUkVBTSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yQm94KGJveCwgdHJ1ZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMzU2MywxMyArMzU2MywxMyBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVu
KGNvbnN0IExheW91dAogICAgICAgICBBU1NFUlQobW92ZUNhcmV0VG9Cb3VuZGFyeSk7CiAgICAg
ICAgIElubGluZUJveCogbG9naWNhbGx5TGFzdEJveDsKICAgICAgICAgaWYgKGxhc3RSb290Qm94
V2l0aENoaWxkcmVuLT5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbGx5TGFzdEJveCkp
Ci0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxvZ2lj
YWxseUxhc3RCb3gsIGZhbHNlKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb25Gb3JCb3gobG9naWNhbGx5TGFzdEJveCwgZmFsc2UpOwogICAgIH0KIAogICAgIC8vIENh
bid0IHJlYWNoIHRoaXMuIFdlIGhhdmUgYSByb290IGxpbmUgYm94LCBidXQgaXQgaGFzIG5vIGtp
ZHMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLCBidXQg
Y2xpY2tpbmcgb24gcGxhY2Vob2xkZXIgdGV4dAogICAgIC8vIHNlZW1zIHRvIGhpdCB0aGlzIGNv
ZGUgcGF0aC4KLSAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0p
OworICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJl
YW0pOwogfQogCiBQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmNwcAppbmRleCBmNTgwNjg4OTRlYjRmMWEzNzRmMTU1ZWYzNDJjMWVlNTgwYzE5
NmZiLi5hZWMxYjM0MTYyYWM3MzExODMzNzk4OWMxYTE4OGFmYjMxMDJiNmM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtMTQ0LDcgKzE0NCw3
IEBAIGJvb2wgUmVuZGVyTGluZUJyZWFrOjpjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdAogVmlz
aWJsZVBvc2l0aW9uIFJlbmRlckxpbmVCcmVhazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikKIHsKICAgICBlbnN1cmVM
aW5lQm94ZXMoKTsKLSAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJF
QU0pOworICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25z
dHJlYW0pOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0U2VsZWN0aW9uU3RhdGUoSGln
aGxpZ2h0U3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDk2YmRmNTRlNWMzYTIzMzUxZGFhOWE2MTIxYjE5MDc5ZTczYzQ5ZTUuLjkzMjU1
NDZiYzgyYTIwMzBlZmE4MThjOTc5YzM2NmMzNzNkMTJiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNTE2LDcgKzE1MTYsNyBAQCBQb3NpdGlvbiBS
ZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQog
CiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKQogewotICAgIHJldHVy
biBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjYXJldE1pbk9mZnNldCgpLCBBZmZpbml0
eTo6RG93bnN0cmVhbSk7CiB9CiAKIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0NvbXBvc2l0ZWQoKSBj
b25zdApAQCAtMTY2NSw3ICsxNjY1LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck9i
amVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKICAgICByZXR1cm4gaXM8UmVuZGVyQm94TW9kZWxP
YmplY3Q+KGN1cnJlbnQpID8gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGN1cnJlbnQp
IDogbnVsbHB0cjsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlz
aWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0eSkgY29uc3QKK1Zpc2li
bGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0
LCBBZmZpbml0eSBhZmZpbml0eSkgY29uc3QKIHsKICAgICAvLyBJZiB0aGlzIGlzIGEgbm9uLWFu
b255bW91cyByZW5kZXJlciBpbiBhbiBlZGl0YWJsZSBhcmVhLCB0aGVuIGl0J3Mgc2ltcGxlLgog
ICAgIGlmIChOb2RlKiBub2RlID0gbm9uUHNldWRvTm9kZSgpKSB7CkBAIC0xNjk1LDcgKzE2OTUs
NyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24o
aW50IG9mZnNldCwgRUFmZmluaXR5IGFmZmluaQogICAgICAgICBjb25zdCBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gY2hpbGQ7CiAgICAgICAgIHdoaWxlICgocmVuZGVyZXIgPSByZW5kZXJlci0+
bmV4dEluUHJlT3JkZXIocGFyZW50KSkpIHsKICAgICAgICAgICAgIGlmIChOb2RlKiBub2RlID0g
cmVuZGVyZXItPm5vblBzZXVkb05vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSwgRE9XTlNUUkVBTSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2Rl
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZpbmQgbm9uLWFub255bW91cyBjb250ZW50IGJl
Zm9yZS4KQEAgLTE3MDQsMTIgKzE3MDQsMTIgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVj
dDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbmkKICAg
ICAgICAgICAgIGlmIChyZW5kZXJlciA9PSBwYXJlbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk9y
QWZ0ZXJOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFz
dFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFVz
ZSB0aGUgcGFyZW50IGl0c2VsZiB1bmxlc3MgaXQgdG9vIGlzIGFub255bW91cy4KICAgICAgICAg
aWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBwYXJlbnQtPm5vblBzZXVkb0VsZW1lbnQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2Rl
KGVsZW1lbnQpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9u
SW5PckJlZm9yZU5vZGUoZWxlbWVudCk7CiAKICAgICAgICAgLy8gUmVwZWF0IGF0IHRoZSBuZXh0
IGxldmVsIHVwLgogICAgICAgICBjaGlsZCA9IHBhcmVudDsKQEAgLTE3MjUsNyArMTcyNSw3IEBA
IFZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihjb25z
dCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
cG9zaXRpb24pOwogCiAgICAgQVNTRVJUKCFub2RlKCkpOwotICAgIHJldHVybiBjcmVhdGVWaXNp
YmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3Np
dGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5k
ZXJPYmplY3Q6OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNTM3N2NiZThiZDY5OWEy
ZmFjNjlhMmRiMTdiNGNjYzVhYWY5MTgzMS4uMTkxMjVmZWY3OWZmZTI2MDA0ZmZlOTk4N2UxZmYw
YjM0MGRkZjlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAt
NTE4LDcgKzUxOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUG9zaXRpb24gcG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVu
dENvbnRhaW5lciopOwotICAgIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb24o
aW50IG9mZnNldCwgRUFmZmluaXR5KSBjb25zdDsKKyAgICBWaXNpYmxlUG9zaXRpb24gY3JlYXRl
VmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEFmZmluaXR5KSBjb25zdDsKICAgICBWaXNpYmxl
UG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CiAK
ICAgICAvLyBSZXR1cm5zIHRoZSBjb250YWluaW5nIGJsb2NrIGxldmVsIGVsZW1lbnQgZm9yIHRo
aXMgZWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
CmluZGV4IDZkNTU0ZDMwZjlmYmQ4MmYyNzkzNTVlNTFjZGE5MTdkOGM2MjIzYzUuLjYwYzY5MGVl
OTJlOWM1YmRmNzE3MDg0ZjY3MTFhMGFhYmRmYzZhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNjMyLDE1ICs2MzIsMTUgQEAgVmlzaWJsZVBv
c2l0aW9uIFJlbmRlclJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgY29uc3QKICAgICBMYXlvdXRVbml0IGxpbmVEaXJlY3Rpb25Qb3NpdGlvbiA9IGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwb2ludC54KCkgKyB4KCkgOiBwb2ludC55KCkgKyB5
KCk7CiAgICAgCiAgICAgaWYgKGJsb2NrRGlyZWN0aW9uUG9zaXRpb24gPCB0b3ApCi0gICAgICAg
IHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVB
TSk7IC8vIGNvb3JkaW5hdGVzIGFyZSBhYm92ZQorICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJs
ZVBvc2l0aW9uKGNhcmV0TWluT2Zmc2V0KCksIEFmZmluaXR5OjpEb3duc3RyZWFtKTsgLy8gY29v
cmRpbmF0ZXMgYXJlIGFib3ZlCiAgICAgCiAgICAgaWYgKGJsb2NrRGlyZWN0aW9uUG9zaXRpb24g
Pj0gYm90dG9tKQotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNhcmV0TWF4
T2Zmc2V0KCksIERPV05TVFJFQU0pOyAvLyBjb29yZGluYXRlcyBhcmUgYmVsb3cKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjYXJldE1heE9mZnNldCgpLCBBZmZpbml0eTo6
RG93bnN0cmVhbSk7IC8vIGNvb3JkaW5hdGVzIGFyZSBiZWxvdwogICAgIAogICAgIGlmIChlbGVt
ZW50KCkpIHsKICAgICAgICAgaWYgKGxpbmVEaXJlY3Rpb25Qb3NpdGlvbiA8PSBsb2dpY2FsTGVm
dCgpICsgKGxvZ2ljYWxXaWR0aCgpIC8gMikpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOwotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJs
ZVBvc2l0aW9uKDEsIERPV05TVFJFQU0pOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2li
bGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVWaXNpYmxlUG9zaXRpb24oMSwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogICAgIH0KIAogICAg
IHJldHVybiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIGZyYWdtZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAppbmRl
eCBiYjMxZTc2NTY2OWVlY2Y5Y2VkYmE5Mzk1YWIwZTU0MGZhMmI3ZjYzLi43OGFkMmE1MWVkODMx
MDgzNzlkMTI2ZTA1OTk5YjY5ZDA0YTVlODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGlj
IGJvb2wgbGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KGludCBwb2ludExpbmVEaXJlY3Rpb24s
IGNvbnN0IElubGluZVRleHQKICAgICBpZiAoIWJveC5uZXh0TGVhZk9uTGluZUlnbm9yaW5nTGlu
ZUJyZWFrKCkpIHsKICAgICAgICAgLy8gYm94IGlzIGxhc3Qgb24gbGluZQogICAgICAgICAvLyBh
bmQgdGhlIHggY29vcmRpbmF0ZSBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIGxhc3QgdGV4dCBib3gg
cmlnaHQgZWRnZQotICAgICAgICAvLyBnZW5lcmF0ZSBWaXNpYmxlUG9zaXRpb24sIHVzZSBVUFNU
UkVBTSBhZmZpbml0eSBpZiBwb3NzaWJsZQorICAgICAgICAvLyBnZW5lcmF0ZSBWaXNpYmxlUG9z
aXRpb24sIHVzZSBBZmZpbml0eTo6VXBzdHJlYW0gYWZmaW5pdHkgaWYgcG9zc2libGUKICAgICAg
ICAgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gPSBVcHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0
U3RhcnQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMwMCw3ICszMDAsNyBAQCBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5n
T2Zmc2V0Rm9yQmlEaShjb25zdCBJbgogVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHRMaW5lQm94
ZXM6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIW1fZmlyc3QgfHwgIXJlbmRlcmVy
LnRleHQoKS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVZpc2libGVQ
b3NpdGlvbigwLCBET1dOU1RSRUFNKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVZp
c2libGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKICAgICBMYXlvdXRVbml0
IHBvaW50TGluZURpcmVjdGlvbiA9IG1fZmlyc3QtPmlzSG9yaXpvbnRhbCgpID8gcG9pbnQueCgp
IDogcG9pbnQueSgpOwogICAgIExheW91dFVuaXQgcG9pbnRCbG9ja0RpcmVjdGlvbiA9IG1fZmly
c3QtPmlzSG9yaXpvbnRhbCgpID8gcG9pbnQueSgpIDogcG9pbnQueCgpOwpAQCAtMzM5LDcgKzMz
OSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyCiAgICAgICAgIGxpbmVEaXJlY3Rpb25Qb2lu
dEZpdHNJbkJveChwb2ludExpbmVEaXJlY3Rpb24sICpsYXN0Qm94LCBzaG91bGRBZmZpbml0eUJl
RG93bnN0cmVhbSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25BZnRlckFk
anVzdGluZ09mZnNldEZvckJpRGkoKmxhc3RCb3gsIGxhc3RCb3gtPm9mZnNldEZvclBvc2l0aW9u
KHBvaW50TGluZURpcmVjdGlvbikgKyBsYXN0Qm94LT5zdGFydCgpLCBzaG91bGRBZmZpbml0eUJl
RG93bnN0cmVhbSk7CiAgICAgfQotICAgIHJldHVybiByZW5kZXJlci5jcmVhdGVWaXNpYmxlUG9z
aXRpb24oMCwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVZpc2libGVQ
b3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dExp
bmVCb3hlczo6c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIFJlbmRlck9i
amVjdDo6SGlnaGxpZ2h0U3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZTA1NjBkN2E1MmE5NTI2NGQ2YTNkNTY4MmQ3OTM1
Njk1YzIzZjYwYy4uNzRlYTVkNWY0NzA1MTk4ZTJlYzM5NzQ5OGZmMjIwNzMwNGE0NzIyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNzk1
LDcgKzc5NSw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlU2VsZWN0aW9uKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9u
ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24uaXND
YXJldCgpKSB7CiAgICAgICAgIHRzIDw8ICJjYXJldDogcG9zaXRpb24gIiA8PCBzZWxlY3Rpb24u
c3RhcnQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDw8ICIgb2YgIiA8PCBub2RlUG9zaXRp
b24oc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7Ci0gICAgICAgIGlmIChzZWxl
Y3Rpb24uYWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkKKyAgICAgICAgaWYgKHNlbGVjdGlvbi5hZmZp
bml0eSgpID09IEFmZmluaXR5OjpVcHN0cmVhbSkKICAgICAgICAgICAgIHRzIDw8ICIgKHVwc3Ry
ZWFtIGFmZmluaXR5KSI7CiAgICAgICAgIHRzIDw8ICJcbiI7CiAgICAgfSBlbHNlIGlmIChzZWxl
Y3Rpb24uaXNSYW5nZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggM2FiYTkwOTViMDIwMjY0OTMyZDU5ZGJlMDI0
ZmM5YzE1NWZlMGE0YS4uZDIzNjZmZDQzZDY5ZGRlNzE0ZGE3MjI0YzIzNDg5MzBmMmVjNTczZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpj
aGFyYWN0ZXJTdGFydHNOZXdUZXh0Q2h1bmsoaW50IHBvc2l0aW9uKSBjb25zdAogVmlzaWJsZVBv
c2l0aW9uIFJlbmRlclNWR0lubGluZVRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopCiB7CiAgICAgaWYg
KCFmaXJzdFRleHRCb3goKSB8fCB0ZXh0KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gY3JlYXRl
VmlzaWJsZVBvc2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAogICAgIGZsb2F0IGJh
c2VsaW5lID0gbV9zY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKIApAQCAt
MjE2LDcgKzIxNiw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwKICAgICB9CiAKICAgICBpZiAo
IWNsb3Nlc3REaXN0YW5jZUZyYWdtZW50KQotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKDAsIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0
aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAogICAgIGludCBvZmZzZXQgPSBjbG9zZXN0
RGlzdGFuY2VCb3gtPm9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVudCgqY2xvc2VzdERpc3RhbmNl
RnJhZ21lbnQsIGFic29sdXRlUG9pbnQueCgpIC0gY2xvc2VzdERpc3RhbmNlUG9zaXRpb24sIHRy
dWUpOwogICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24ob2Zmc2V0ICsgY2xvc2VzdERp
c3RhbmNlQm94LT5zdGFydCgpLCBvZmZzZXQgPiAwID8gQWZmaW5pdHk6OlVwc3RyZWFtIDogQWZm
aW5pdHk6OkRvd25zdHJlYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHAKaW5kZXggMGMzOGMzN2I3YTM4MTM1NjBiMzQ2MmI2MDdjMThiMzRkYmFh
OThhMS4uOTc1NTlmZGM2NjhkZDcwMWYwOWQyNzRlYTMxZjI2YTM3NDFiMzg2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00NjAsMTQg
KzQ2MCwxNCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbgogewogICAgIFJvb3RJbmxpbmVCb3gq
IHJvb3RCb3ggPSBmaXJzdFJvb3RCb3goKTsKICAgICBpZiAoIXJvb3RCb3gpCi0gICAgICAgIHJl
dHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CisgICAgICAgIHJldHVy
biBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogCiAgICAg
QVNTRVJUKCFyb290Qm94LT5uZXh0Um9vdEJveCgpKTsKICAgICBBU1NFUlQoY2hpbGRyZW5Jbmxp
bmUoKSk7CiAKICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSBkb3duY2FzdDxTVkdSb290SW5s
aW5lQm94Pigqcm9vdEJveCkuY2xvc2VzdExlYWZDaGlsZEZvclBvc2l0aW9uKHBvaW50SW5Db250
ZW50cyk7CiAgICAgaWYgKCFjbG9zZXN0Qm94KQotICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJs
ZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIAogICAgIHJldHVybiBjbG9zZXN0Qm94
LT5yZW5kZXJlcigpLnBvc2l0aW9uRm9yUG9pbnQoeyBwb2ludEluQ29udGVudHMueCgpLCBMYXlv
dXRVbml0KGNsb3Nlc3RCb3gtPnkoKSkgfSwgZnJhZ21lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IGQ4ODUxMTFkOWY3NTAw
MGJlN2Q2N2UwMGJjZjA3M2E0OWE2MWUzNjYuLjJjODA4MjlhNDZiYmZiYTZiN2U3NzVjNGI3MGJi
ZmZkNmVjMjEzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRJbnNlcnROb2RlKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rp
b24pIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RUFmZmluaXR5LCBib29sKSB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6QWZmaW5p
dHksIGJvb2wpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwbHlT
dHlsZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMmLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBX
VEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElD
YXN0LmgKaW5kZXggMWM4MDhlYjk0MDNkMDgwMWRmYTAxYTlmNTU0YjIxYTVjM2I0NDFkMS4uOGQ4
N2MzN2E4M2RkY2QxYTVjNzdiZDc0ZmIxYzYwZTcyZmRlNWJkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUFQSUNhc3QuaApAQCAtODIsMTIgKzgyLDEyIEBAIGlubGluZSBXS0luc2VydEFjdGlvblR5
cGUgdG9BUEkoV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKICAgICByZXR1cm4g
a1dLSW5zZXJ0QWN0aW9uVHlwZWQ7CiB9CiAKLWlubGluZSBXS0FmZmluaXR5VHlwZSB0b0FQSShX
ZWJDb3JlOjpFQWZmaW5pdHkgYWZmaW5pdHkpCitpbmxpbmUgV0tBZmZpbml0eVR5cGUgdG9BUEko
V2ViQ29yZTo6QWZmaW5pdHkgYWZmaW5pdHkpCiB7CiAgICAgc3dpdGNoIChhZmZpbml0eSkgewot
ICAgIGNhc2UgV2ViQ29yZTo6VVBTVFJFQU06CisgICAgY2FzZSBXZWJDb3JlOjpBZmZpbml0eTo6
VXBzdHJlYW06CiAgICAgICAgIHJldHVybiBrV0tBZmZpbml0eVVwc3RyZWFtOwotICAgIGNhc2Ug
V2ViQ29yZTo6RE9XTlNUUkVBTToKKyAgICBjYXNlIFdlYkNvcmU6OkFmZmluaXR5OjpEb3duc3Ry
ZWFtOgogICAgICAgICByZXR1cm4ga1dLQWZmaW5pdHlEb3duc3RyZWFtOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRl
eCBjNzc2MjUyZWJkNGFlODg4NDViZThjNjc3OGI2ZWY3MzBkZmYzMTZmLi4yN2Y0MTdkOGIyZTE1
M2UwYTY1MGM3NWVkNWZiOTc1NzQyYTJlMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tCkBAIC01NjcsNyArNTY3LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihp
ZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAg
ICAgICAgIHJldHVybiBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBzaG91bGRJ
bnNlcnRUZXh0OnRleHQgcmVwbGFjaW5nUmFuZ2U6d3JhcHBlcigqV2ViS2l0OjpjcmVhdGVIYW5k
bGUocmFuZ2VUb1JlcGxhY2UpKSBnaXZlbkFjdGlvbjp0b1dLKGFjdGlvbildOwogICAgICAgICB9
CiAKLSAgICAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkVBZmZp
bml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWwKKyAgICAgICAgYm9vbCBz
aG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5IGFmZmluaXR5LCBib29s
IHN0aWxsU2VsZWN0aW5nKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVs
ZWdhdGVNZXRob2RzLnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC01NzUsOSArNTc1LDkgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVn
YXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcK
ICAgICAgICAgICAgIGF1dG8gYXBpRnJvbVJhbmdlID0gYWRvcHROUyhbW1dLRE9NUmFuZ2UgYWxs
b2NdIF9pbml0V2l0aEltcGw6Y3JlYXRlTGl2ZVJhbmdlKGZyb21SYW5nZSkuZ2V0KCldKTsKICAg
ICAgICAgICAgIGF1dG8gYXBpVG9SYW5nZSA9IGFkb3B0TlMoW1tXS0RPTVJhbmdlIGFsbG9jXSBf
aW5pdFdpdGhJbXBsOmNyZWF0ZUxpdmVSYW5nZSh0b1JhbmdlKS5nZXQoKV0pOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICBVSVRleHRTdG9yYWdlRGlyZWN0aW9uIGFwaUFm
ZmluaXR5ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6VVBTVFJFQU0gPyBVSVRleHRTdG9yYWdlRGly
ZWN0aW9uQmFja3dhcmQgOiBVSVRleHRTdG9yYWdlRGlyZWN0aW9uRm9yd2FyZDsKKyAgICAgICAg
ICAgIFVJVGV4dFN0b3JhZ2VEaXJlY3Rpb24gYXBpQWZmaW5pdHkgPSBhZmZpbml0eSA9PSBXZWJD
b3JlOjpBZmZpbml0eTo6VXBzdHJlYW0gPyBVSVRleHRTdG9yYWdlRGlyZWN0aW9uQmFja3dhcmQg
OiBVSVRleHRTdG9yYWdlRGlyZWN0aW9uRm9yd2FyZDsKICNlbHNlCi0gICAgICAgICAgICBOU1Nl
bGVjdGlvbkFmZmluaXR5IGFwaUFmZmluaXR5ID0gYWZmaW5pdHkgPT0gV2ViQ29yZTo6VVBTVFJF
QU0gPyBOU1NlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW0gOiBOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbTsKKyAgICAgICAgICAgIE5TU2VsZWN0aW9uQWZmaW5pdHkgYXBpQWZmaW5pdHkgPSBh
ZmZpbml0eSA9PSBXZWJDb3JlOjpBZmZpbml0eTo6VXBzdHJlYW0gPyBOU1NlbGVjdGlvbkFmZmlu
aXR5VXBzdHJlYW0gOiBOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbTsKICNlbmRpZgogCiAg
ICAgICAgICAgICByZXR1cm4gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBf
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgc2hv
dWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZTphcGlGcm9tUmFuZ2UuZ2V0KCkgdG9SYW5nZTphcGlUb1Jh
bmdlLmdldCgpIGFmZmluaXR5OmFwaUFmZmluaXR5IHN0aWxsU2VsZWN0aW5nOnN0aWxsU2VsZWN0
aW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAK
aW5kZXggZTM0MGFmMWNiYzMwMjllNTdhYmRiMjJkYzRmOWE5YmRjMjVmMDUxMC4uYjU1NDE4ZGVk
Y2Y4MmUxMTg5ZmE2NDIwZWNjMGRlMDU4MzJkZWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IE9wdGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2Vs
ZWN0aW5nKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgQWZmaW5p
dHkgYWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpCiB7CiAgICAgaWYgKG1fY2xpZW50LnNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpCiAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRD
aGFuZ2VTZWxlY3RlZFJhbmdlKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKGZyb21S
YW5nZSkuZ2V0KCkpLCB0b0FQSShjcmVhdGVIYW5kbGUodG9SYW5nZSkuZ2V0KCkpLCB0b0FQSShh
ZmZpbml0eSksIHN0aWxsU2VsZWN0aW5nLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IGYzYTBlNzQ3
NjcyMGZiMWI1ZDljYjE3NzE3ZWRkNzM5OTQ5N2RjMWQuLmNjMDZiMWFmOTQ1MTVkY2UxNWNiZDQz
YWVlNmZlMTBhNjA0NWUzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZElu
c2VydE5vZGUoV2ViUGFnZSYsIFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rp
b24pIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChXZWJQYWdlJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZVRvUmVwbGFj
ZSwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKICAgICBib29sIHNob3VsZERl
bGV0ZVJhbmdlKFdlYlBhZ2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
KSBmaW5hbDsKLSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSYsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkVBZmZpbml0eSwg
Ym9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKFdlYlBhZ2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGZy
b21SYW5nZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBX
ZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7CiAgICAgYm9vbCBz
aG91bGRBcHBseVN0eWxlKFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMm
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lk
IGRpZEJlZ2luRWRpdGluZyhXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1l
KSBmaW5hbDsKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYg
bm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGRiOTdj
MGIxN2I3ZTFhMjQxNDIxOGMyNTk3OGFhOTQ0NjE4MjExMmQuLjAwNWY3YmUwZTU1ZTgxNDNkZDA2
N2NiYTQzMzM0MTBiNjAwN2IxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzYsNyAr
MTM2LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1wbGUKICAgICByZXR1cm4gbV9wYWdlLT5pbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnNob3VsZEluc2VydFRleHQoKm1fcGFnZSwgdGV4dCwg
cmFuZ2VUb1JlcGxhY2UsIGFjdGlvbik7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91
bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJh
bmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEVBZmZpbml0eSBhZmZp
bml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRD
aGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdl
LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5
LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSgqbV9wYWdlLCBmcm9t
UmFuZ2UsIHRvUmFuZ2UsIGFmZmluaXR5LCBzdGlsbFNlbGVjdGluZyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggMjNlMzk0ZjI3ZWMzMjY5Mjc4YzQ1YjhlMTQ0ZDM2ZGM3YzdiZmQ2Zi4uYmFk
MGNiMzcxMmE0Mzg1MjBiNThlMTZiMjA0MzZkZWE4NGQ1NTAzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhj
b25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkSW5zZXJ0
Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKICAgICBib29sIHNob3VsZElu
c2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3Vs
ZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5n
ZSwgV2ViQ29yZTo6RUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbDsKKyAgICBi
b29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFs
OwogICAgIAogICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBXZWJDb3JlOjpTdHlsZVBy
b3BlcnRpZXMmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCAxYmQ5Mjgy
YTE4MTliNGI3ODQ1MGYxZTYwNWU4ODY4ZjRlZWM2ZGQzLi5kYzRiNWRjNDk0NjZhMTUyMmI1MWU2
NzU2MTg0ZmI2ZGQzZTYxNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9p
ZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmUKICAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9j
YXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gRWRp
dGluZ1JhbmdlOjp0b1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSk7CiAgICAg
ICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQotICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24geyAqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RF
RkFVTFRfQUZGSU5JVFkgfSk7CisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdlIH0pOwogICAgIH0KIAog
ICAgIGlmIChvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxNWIzMDg4NWYwOWNlMTk4MjU2NmViMDE2
ZDkxM2Y4YTkwYjZhM2NmLi44NTAyZmM5ZDAwYTBiYTJmYTA3MmUzYWQ0M2Q5MjJjMWM2N2MwMGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
NTQzNCw3ICs1NDM0LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4KICAgICBpZiAocmVwbGFj
ZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgaWYgKGF1
dG8gcmVwbGFjZW1lbnRSYW5nZSA9IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShmcmFtZSwgcmVwbGFj
ZW1lbnRFZGl0aW5nUmFuZ2UsIG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKSkgewog
ICAgICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNTZWxlY3RpbmdUZXh0V2hpbGVJbnNlcnRp
bmdBc3luY2hyb25vdXNseShtX2lzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNocm9u
b3VzbHksIG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpOwotICAgICAgICAgICAgZnJh
bWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxhY2VtZW50
UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSkpOwog
ICAgICAgICAgICAgcmVwbGFjZXNUZXh0ID0gcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubGVuZ3Ro
OwogICAgICAgICB9CiAgICAgfQpAQCAtNTUwNyw3ICs1NTA3LDcgQEAgdm9pZCBXZWJQYWdlOjpz
ZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBv
c2l0aW9uVW4KICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50
RWRpdGFibGUoKSkgewogICAgICAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRp
b24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIGlmIChhdXRvIHJlcGxhY2VtZW50UmFuZ2Ug
PSBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKSkK
LSAgICAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAg
ICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bigqcmVwbGFjZW1lbnRSYW5nZSkpOwogICAgICAgICB9CiAgICAgICAgIGZyYW1lLmVkaXRvcigp
LnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIGhpZ2hsaWdodHMsIHNlbGVjdGlvbi5s
b2NhdGlvbiwgc2VsZWN0aW9uLmxvY2F0aW9uICsgc2VsZWN0aW9uLmxlbmd0aCk7CiAgICAgfQpA
QCAtNTU3Miw3ICs1NTcyLDcgQEAgdm9pZCBXZWJQYWdlOjpkZWxldGVTdXJyb3VuZGluZyhpbnQ2
NF90IG9mZnNldCwgdW5zaWduZWQgY2hhcmFjdGVyQ291bnQpCiAgICAgYXV0byBzZWxlY3Rpb25S
YW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVu
dHMocm9vdE5vZGUpLCBjaGFyYWN0ZXJSYW5nZSk7CiAKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9y
KCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICB0YXJnZXRGcmFtZS0+c2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc2VsZWN0aW9uUmFuZ2UsIFNF
TF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlKSk7CiAgICAgdGFyZ2V0RnJh
bWUtPmVkaXRvcigpLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShmYWxzZSk7CiAgICAg
dGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwog
ICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA2NDVjNzE5MTRjZjNjMjU2ODk5
YjYyY2IxYWJlZWNkNjY4YTYyZmI3Li41NmVjZmUyZmE4M2QwZWNmODM1MmEzZmQ5OTQzNDgwOWQw
NmMyYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb25j
bHVkZUVkaXREcmFnKCkKICAgICBhdXRvIGZyYW1lID0gbWFrZVJlZihtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpKTsKICAgICBpZiAoYXV0byBzZWxlY3Rpb25S
YW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgp
KSB7CiAgICAgICAgIG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QgPSB2aXNp
YmxlSW1hZ2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzKCpzZWxlY3Rpb25SYW5n
ZSk7Ci0gICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG1ha2VTaW1w
bGVSYW5nZShzZWxlY3Rpb25SYW5nZS0+ZW5kKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246
OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShtYWtlU2ltcGxlUmFuZ2Uoc2VsZWN0aW9uUmFu
Z2UtPmVuZCksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xv
c2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgICAgIG1fcmFuZ2VGb3JEcm9wU25h
cHNob3QgPSBXVEZNb3ZlKHNlbGVjdGlvblJhbmdlKTsKICAgICB9CiAKQEAgLTIwNDYsNyArMjA0
Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pCiAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVs
bCgpKSB7CiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgICAgICBpZiAocG9z
aXRpb24uaXNOb3ROdWxsKCkpCi0gICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3RlZFJhbmdlKG1ha2VTaW1wbGVSYW5nZShwb3NpdGlvbiksIFVQU1RSRUFNLCBXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7Cisg
ICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG1ha2VTaW1wbGVS
YW5nZShwb3NpdGlvbiksIEFmZmluaXR5OjpVcHN0cmVhbSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogICAgIH0KICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAtMjA2MCw3ICsyMDYwLDcgQEAgdm9pZCBXZWJQYWdl
Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51
bGFyaXR5IGdyYW4KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gKGlzRm9yd2Fy
ZCkgPyBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkgOiBmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKICAgICAgICAgcG9zaXRpb24g
PSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgZ3JhbnVsYXJp
dHksIGRpcmVjdGlvbik7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkKLSAgICAg
ICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobWFrZVNpbXBsZVJhbmdl
KHBvc2l0aW9uKSwgaXNGb3J3YXJkPyBVUFNUUkVBTSA6IERPV05TVFJFQU0sIFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKyAg
ICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobWFrZVNpbXBsZVJh
bmdlKHBvc2l0aW9uKSwgaXNGb3J3YXJkPyBBZmZpbml0eTo6VXBzdHJlYW0gOiBBZmZpbml0eTo6
RG93bnN0cmVhbSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZ
ZXMsIFVzZXJUcmlnZ2VyZWQpOwogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpA
QCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFy
aXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICBhdXRvJiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAg
ICAgYXV0byByYW5nZSA9IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KGZyYW1lLCBwb2ludCwg
Z3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogICAgIGlmIChy
YW5nZSkKLSAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSgqcmFuZ2Us
IFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olll
cywgVXNlclRyaWdnZXJlZCk7CisgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVk
UmFuZ2UoKnJhbmdlLCBBZmZpbml0eTo6VXBzdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICBtX2luaXRpYWxT
ZWxlY3Rpb24gPSByYW5nZTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAtMjE1NSw3
ICsyMTU1LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRB
bmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYKICAgICAgICAgc2VsZWN0aW9uU3Rh
cnQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obmV3UmFuZ2UtPnN0YXJ0KTsKIAogICAg
IGlmIChhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rp
b25FbmQpKQotICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdl
LCBVUFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZ
ZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKHJhbmdlLCBBZmZpbml0eTo6VXBzdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFydCA9PSBp
bml0aWFsU2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMjIwNCw3
ICsyMjA0LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib28KICAgICB9CiAgICAgCiAgICAgaWYg
KGF1dG8gcmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZCkpCi0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UsIFVQ
U1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcywg
VXNlclRyaWdnZXJlZCk7CisgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFu
Z2UocmFuZ2UsIEFmZmluaXR5OjpVcHN0cmVhbSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNo
b3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0
YXJ0LCBjYWxsYmFja0lEKSk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIFdlYlBhZ2U6
OnJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcm
IG5ld1RleHQpCiAgICAgaWYgKHBsYWluVGV4dEZvckNvbnRleHQod29yZFJhbmdlKSAhPSBvbGRU
ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0
aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KHdvcmRSYW5nZSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHdv
cmRSYW5nZSwgQWZmaW5pdHk6OlVwc3RyZWFtLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hv
dWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dChuZXdU
ZXh0LCAwKTsKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGZh
bHNlKTsKIH0KQEAgLTIyODMsNyArMjI4Myw3IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZURpY3Rh
dGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIAog
ICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUgc2VsZWN0
aW9uIGhhcyBjaGFuZ2VkIHVudGlsIHdlIGFyZSBkb25lIGluc2VydGluZyB0aGUgbmV3IHRleHQu
CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBVUFNUUkVBTSwgV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UsIEFmZmluaXR5OjpVcHN0cmVhbSwg
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOwogICAgIGZy
YW1lLmVkaXRvcigpLmluc2VydFRleHQobmV3VGV4dCwgMCk7CiAgICAgZnJhbWUuZWRpdG9yKCku
c2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhmYWxzZSk7CiB9CkBAIC0yNDEwLDkgKzI0MTAsOSBA
QCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb25zdCBTdHJpbmcm
IGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgLy8gQ29ycmVjdGx5IGRldGVybWluZSBhZmZpbml0eSwgdXNpbmcgbG9naWMgY3VycmVudGx5
IG9ubHkgcHJlc2VudCBpbiBWaXNpYmxlUG9zaXRpb24KLSAgICBFQWZmaW5pdHkgYWZmaW5pdHkg
PSBET1dOU1RSRUFNOworICAgIGF1dG8gYWZmaW5pdHkgPSBBZmZpbml0eTo6RG93bnN0cmVhbTsK
ICAgICBpZiAocmFuZ2UgJiYgcmFuZ2UtPmNvbGxhcHNlZCgpKQotICAgICAgICBhZmZpbml0eSA9
IFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmFuZ2UtPnN0YXJ0
KSwgVVBTVFJFQU0pLmFmZmluaXR5KCk7CisgICAgICAgIGFmZmluaXR5ID0gVmlzaWJsZVBvc2l0
aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyYW5nZS0+c3RhcnQpLCBBZmZpbml0eTo6
VXBzdHJlYW0pLmFmZmluaXR5KCk7CiAgICAgCiAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0ZWRSYW5nZShyYW5nZSwgYWZmaW5pdHksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICBpZiAoY29ycmVjdGlvbi5sZW5ndGgoKSkKQEAgLTQw
NTIsNyArNDA1Miw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGlu
dDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0CiAKICAgICBhdXRvIG5ld1Nl
bGVjdGlvblJhbmdlID0gQ2hhcmFjdGVyUmFuZ2UobmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZl
R2V0KCksIG5ld1NlbGVjdGlvbkxlbmd0aC51bnNhZmVHZXQoKSk7CiAgICAgYXV0byB1cGRhdGVk
U2VsZWN0aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKCpyb290KSwgbmV3U2VsZWN0aW9uUmFuZ2UpOwotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHVwZGF0ZWRTZWxlY3Rpb25SYW5nZSwgRE9XTlNUUkVB
TSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJU
cmlnZ2VyZWQpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHVwZGF0
ZWRTZWxlY3Rpb25SYW5nZSwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCmluZGV4IDdjYWZjYmFiNzc0MjVlZDBiNWEw
NTMwY2QxMDU3OTA0YTEwOWNlODEuLjkwZThmMTdkMjk3YmI3MzliMWQ3MzkxOWJhNWE1ZjkwNTQy
MDM4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lSU9TLm1tCkBAIC0xNTgsMjEgKzE1OCwyMSBAQCAtIChDR1JlY3QpY2xvc2Vz
dENhcmV0UmVjdEluTWFya2VkVGV4dFJhbmdlRm9yUG9pbnQ6KENHUG9pbnQpcG9pbnQKICAgICBp
ZiAocG9pbnQueSA8IGZpcnN0UmVjdC5vcmlnaW4ueSkgewogICAgICAgICBwb2ludC55ID0gZmly
c3RSZWN0Lm9yaWdpbi55OwogICAgICAgICBwb3NpdGlvbiA9IFtzZWxmIHZpc2libGVQb3NpdGlv
bkZvclBvaW50OnBvaW50XTsKLSAgICAgICAgcG9zaXRpb24uc2V0QWZmaW5pdHkoVVBTVFJFQU0p
OworICAgICAgICBwb3NpdGlvbi5zZXRBZmZpbml0eShBZmZpbml0eTo6VXBzdHJlYW0pOwogICAg
IH0gZWxzZSBpZiAocG9pbnQueSA+PSBsYXN0UmVjdC5vcmlnaW4ueSkgewogICAgICAgICBwb2lu
dC55ID0gbGFzdFJlY3Qub3JpZ2luLnk7CiAgICAgICAgIHBvc2l0aW9uID0gW3NlbGYgdmlzaWJs
ZVBvc2l0aW9uRm9yUG9pbnQ6cG9pbnRdOwotICAgICAgICBwb3NpdGlvbi5zZXRBZmZpbml0eShE
T1dOU1RSRUFNKTsKKyAgICAgICAgcG9zaXRpb24uc2V0QWZmaW5pdHkoQWZmaW5pdHk6OkRvd25z
dHJlYW0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHBvc2l0aW9uID0gW3NlbGYgdmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQ6cG9pbnRdOwogICAgIH0KIAogICAgIGlmIChwb3NpdGlvbiA9PSBzdGFy
dCB8fCBwb3NpdGlvbiA8IHN0YXJ0KSB7Ci0gICAgICAgIHN0YXJ0LnNldEFmZmluaXR5KFVQU1RS
RUFNKTsKKyAgICAgICAgc3RhcnQuc2V0QWZmaW5pdHkoQWZmaW5pdHk6OlVwc3RyZWFtKTsKICAg
ICAgICAgcmV0dXJuIHN0YXJ0LmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKICAgICB9CiAgICAgaWYg
KHBvc2l0aW9uID4gZW5kKSB7Ci0gICAgICAgIGVuZC5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsK
KyAgICAgICAgZW5kLnNldEFmZmluaXR5KEFmZmluaXR5OjpEb3duc3RyZWFtKTsKICAgICAgICAg
cmV0dXJuIGVuZC5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAgICAgfQogICAgIHJldHVybiBwb3Np
dGlvbi5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CkBAIC03NDUsMTYgKzc0NSwxNSBAQCAtICh2b2lk
KXNtYXJ0RXh0ZW5kUmFuZ2VkU2VsZWN0aW9uOihXZWJUZXh0U21hcnRFeHRlbmREaXJlY3Rpb24p
ZGlyZWN0aW9uCiAgICAgCiAgICAgRnJhbWUgKmZyYW1lID0gW3NlbGYgY29yZUZyYW1lXTsKICAg
ICBGcmFtZVNlbGVjdGlvbiYgZnJhbWVTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7Ci0g
ICAgRUFmZmluaXR5IGFmZmluaXR5ID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuYWZmaW5p
dHkoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9u
KCkuc3RhcnQoKSwgYWZmaW5pdHkpOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmQoZnJhbWVTZWxl
Y3Rpb24uc2VsZWN0aW9uKCkuZW5kKCksIGFmZmluaXR5KTsKKyAgICBhdXRvIHN0YXJ0ID0gZnJh
bWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CisgICAgYXV0byBlbmQgPSBm
cmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGJhc2UoZnJhbWUtPnJhbmdlZFNlbGVjdGlvbkJhc2UoKS5iYXNlKCkpOyAgLy8gc2hvdWxk
IGVxdWFsIHN0YXJ0IG9yIGVuZAogCiAgICAgLy8gQmFzZSBtdXN0IGVxdWFsIHN0YXJ0IG9yIGVu
ZAogICAgIGlmIChiYXNlICE9IHN0YXJ0ICYmIGJhc2UgIT0gZW5kKQogICAgICAgICByZXR1cm47
CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gZXh0ZW50KGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigp
LmV4dGVudCgpLCBhZmZpbml0eSk7CisgICAgYXV0byBleHRlbnQgPSBmcmFtZVNlbGVjdGlvbi5z
ZWxlY3Rpb24oKS52aXNpYmxlRXh0ZW50KCk7CiAgICAgCiAgICAgLy8gV2UgZG9uJ3QgeWV0IHN1
cHBvcnQgc21hcnQgZXh0ZW5zaW9uIGZvciBsYW5ndWFnZXMgd2hpY2gKICAgICAvLyByZXF1aXJl
IGNvbnRleHQgZm9yIHdvcmQgYm91bmRhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXgg
MGYxMjhhNmRmOWUwOWUzYjVhMTNkYWQyMDhkNTgzMjEwZjM1YjhiNS4uMjc3MzYzZjFkNDQ2NDI5
YjJjNjRmNjEzZjYyY2RkZjY4N2Y2ZTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAt
NDQ0LDcgKzQ0NCw3IEBAIC0gKE5TU2VsZWN0aW9uQWZmaW5pdHkpYWZmaW5pdHkKIAogLSAodm9p
ZClzZXRBZmZpbml0eTooTlNTZWxlY3Rpb25BZmZpbml0eSlhZmZpbml0eQogewotICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8VmlzaWJsZVBvc2l0aW9uICo+KF9pbnRlcm5hbCktPnNldEFmZmluaXR5KChX
ZWJDb3JlOjpFQWZmaW5pdHkpYWZmaW5pdHkpOworICAgIHJlaW50ZXJwcmV0X2Nhc3Q8VmlzaWJs
ZVBvc2l0aW9uICo+KF9pbnRlcm5hbCktPnNldEFmZmluaXR5KChXZWJDb3JlOjpBZmZpbml0eSlh
ZmZpbml0eSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGFjNTljZDEyYmZhOGFhYzA2ZGIyZjA3ZmMwNWI1
ZWUxMjA5MzJhMjcuLmExNjgzNTcyOGM4OWJlYjFhOWYwYjMzYmFmMTI1ZmJiZTgxZjdmNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5t
bQpAQCAtMjIzLDcgKzIyMyw3IEBAIC0gKEJPT0wpaXNTZWxlY3RhYmxlQmxvY2sKIAogLSAoRE9N
UmFuZ2UgKilyYW5nZU9mQ29udGFpbmluZ1BhcmFncmFwaAogewotICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29yZShzZWxmKSwgMCksIFdl
YkNvcmU6OkRPV05TVFJFQU0pOworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbihjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24oY29yZShzZWxmKSwgMCkpOwogICAgIHJldHVybiBraXQobWFr
ZVNpbXBsZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGgocG9zaXRpb24pLCBlbmRPZlBhcmFncmFwaChw
b3NpdGlvbikpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBkZTMxMWFiN2ZmNjNlNTYyYWM3
NmE3MDA3ODM2MmVmZjBmMTk3OWExLi4zNDAyZjM5MWU1MjZhYWE3NjIwZGNmMWUzNDgyODRlMzQz
ZWJjMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFs
OwogICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBm
aW5hbDsKICAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9u
KSBmaW5hbDsKLSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6RUFmZmluaXR5LCBib29sIHN0aWxs
U2VsZWN0aW5nKSBmaW5hbDsKKyAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJv
b2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNv
bnN0IFdlYkNvcmU6OlN0eWxlUHJvcGVydGllcyYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQXBwbHlTdHlsZSgpIGZpbmFsOwpAQCAt
MjE2LDcgKzIxNiw3IEBAIHByaXZhdGU6CiAgICAgRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJs
ZSBtX2xhc3RFZGl0b3JTdGF0ZVdhc0NvbnRlbnRFZGl0YWJsZSB7IEVkaXRvclN0YXRlSXNDb250
ZW50RWRpdGFibGU6OlVuc2V0IH07CiB9OwogCi1pbmxpbmUgTlNTZWxlY3Rpb25BZmZpbml0eSBr
aXQoV2ViQ29yZTo6RUFmZmluaXR5IGFmZmluaXR5KQoraW5saW5lIE5TU2VsZWN0aW9uQWZmaW5p
dHkga2l0KFdlYkNvcmU6OkFmZmluaXR5IGFmZmluaXR5KQogewogICAgIHN3aXRjaCAoYWZmaW5p
dHkpIHsKICAgICBjYXNlIFdlYkNvcmU6OkFmZmluaXR5OjpVcHN0cmVhbToKQEAgLTIyOCw3ICsy
MjgsNyBAQCBpbmxpbmUgTlNTZWxlY3Rpb25BZmZpbml0eSBraXQoV2ViQ29yZTo6RUFmZmluaXR5
IGFmZmluaXR5KQogICAgIHJldHVybiBOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbTsKIH0K
IAotaW5saW5lIFdlYkNvcmU6OkVBZmZpbml0eSBjb3JlKE5TU2VsZWN0aW9uQWZmaW5pdHkgYWZm
aW5pdHkpCitpbmxpbmUgV2ViQ29yZTo6QWZmaW5pdHkgY29yZShOU1NlbGVjdGlvbkFmZmluaXR5
IGFmZmluaXR5KQogewogICAgIHN3aXRjaCAoYWZmaW5pdHkpIHsKICAgICBjYXNlIE5TU2VsZWN0
aW9uQWZmaW5pdHlVcHN0cmVhbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA5MmZhOGZiZTEyZjg4
MjQwMmUzNDVjODcyN2U3NzU3YTkwNjg0NTlkLi4yOGNhMWI5YWJiZTY0NmQ5ZTA0MGE1NjE2N2Jm
YjAzZGJjYmEzODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC0zMDAsNyArMzAwLDcgQEAgYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBPcHRpb25hbDxTaW1wbGUKICAgICByZXR1cm4gW1t3ZWJWaWV3IF9lZGl0aW5nRGVsZWdh
dGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBzaG91bGRJbnNlcnRUZXh0OnRleHQgcmVwbGFj
aW5nRE9NUmFuZ2U6a2l0KHJhbmdlKSBnaXZlbkFjdGlvbjpraXQoYWN0aW9uKV07CiB9CiAKLWJv
b2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHRvUmFuZ2UsIEVBZmZpbml0eSBzZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGlu
ZykKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IHNlbGVjdGlvbkFmZmluaXR5LCBib29sIHN0aWxsU2Vs
ZWN0aW5nKQogewogICAgIHJldHVybiBbbV93ZWJWaWV3IF9zaG91bGRDaGFuZ2VTZWxlY3RlZERP
TVJhbmdlOmtpdChmcm9tUmFuZ2UpIHRvRE9NUmFuZ2U6a2l0KHRvUmFuZ2UpIGFmZmluaXR5Omtp
dChzZWxlY3Rpb25BZmZpbml0eSkgc3RpbGxTZWxlY3Rpbmc6c3RpbGxTZWxlY3RpbmddOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggN2JjZDYz
Mjk5ZjJiMmU5ZmVjMDJhMTRhOTk0NGIwZWU4ZGUwNDM4Ni4uYTQyZDQ3NzdjODgxNjZlNGIwODZm
ZmQ2NmUzNTQ3ZTRlNjIxZDUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC03MTUsNyArNzE1LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvcmNlVXMK
IAogLSAoTlNSZWN0KV9jYXJldFJlY3RBdFBvc2l0aW9uOihjb25zdCBXZWJDb3JlOjpQb3NpdGlv
biYpcG9zIGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KWFmZmluaXR5CiB7Ci0gICAgV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbihwb3MsIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkVBZmZpbml0eT4oYWZmaW5pdHkpKTsKKyAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uKHBvcywgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWZmaW5pdHk+KGFm
ZmluaXR5KSk7CiAgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbi5hYnNvbHV0ZUNhcmV0Qm91bmRz
KCk7CiB9CiAKQEAgLTExMzAsNyArMTEzMCw3IEBAIC0gKE5TUmFuZ2UpX3NlbGVjdGVkTlNSYW5n
ZQogLSAodm9pZClfc2VsZWN0TlNSYW5nZTooTlNSYW5nZSlyYW5nZQogewogICAgIGlmIChhdXRv
IGRvbVJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlXSkKLSAgICAgICAgX3By
aXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24oKmRvbVJhbmdlLCBXZWJDb3JlOjpTRUxfREVGQVVMVF9BRkZJTklUWSkpOwor
ICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oV2Vi
Q29yZTo6VmlzaWJsZVNlbGVjdGlvbigqZG9tUmFuZ2UpKTsKIH0KIAogLSAoQk9PTClfaXNEaXNw
bGF5aW5nU3RhbmRhbG9uZUltYWdlCkBAIC0xNzAzLDMxICsxNzAzLDMxIEBAIC0gKHZvaWQpZ2V0
RGljdGF0aW9uUmVzdWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6
KE5TQXJyYXkgKiopCiAgICAgQVNTRVJUKG91dFJhbmdlcyk7CiAgICAgaWYgKCFvdXRSYW5nZXMp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vICpvdXRSYW5nZXMgc2hvdWxkIG5vdCBh
bHJlYWR5IHBvaW50IHRvIGFuIGFycmF5LgogICAgIEFTU0VSVCghKCpvdXRSYW5nZXMpKTsKICAg
ICAqb3V0UmFuZ2VzID0gbmlsOwotICAgIAorCiAgICAgQVNTRVJUKG91dE1ldGFkYXRhcyk7CiAg
ICAgaWYgKCFvdXRNZXRhZGF0YXMpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vICpt
ZXRhZGF0YSBzaG91bGQgbm90IGFscmVhZHkgcG9pbnQgdG8gYW4gYXJyYXkuCiAgICAgQVNTRVJU
KCEoKm91dE1ldGFkYXRhcykpOwogICAgICpvdXRNZXRhZGF0YXMgPSBuaWw7Ci0gICAgCisKICAg
ICBOU011dGFibGVBcnJheSAqcmFuZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBO
U011dGFibGVBcnJheSAqbWV0YWRhdGFzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICAK
KwogICAgIGF1dG8qIGZyYW1lID0gY29yZShzZWxmKTsKICAgICBhdXRvKiBkb2N1bWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpOwogCi0gICAgY29uc3QgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUtPnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIFdlYkNvcmU6OkVsZW1lbnQqIHJvb3QgPSBzZWxl
Y3Rpb24uc2VsZWN0aW9uVHlwZSgpID09IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246Ok5vU2Vs
ZWN0aW9uID8gZnJhbWUtPmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkgOiBzZWxlY3Rpb24u
cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIAorICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1l
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBhdXRvIHJvb3QgPSBzZWxlY3Rpb24uaXNO
b25lKCkgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSA6IHNlbGVjdGlvbi5y
b290RWRpdGFibGVFbGVtZW50KCk7CisKICAgICBET01SYW5nZSAqcHJldmlvdXNET01SYW5nZSA9
IG5pbDsKICAgICBpZCBwcmV2aW91c01ldGFkYXRhID0gbmlsOwotICAgIAorCiAgICAgZm9yIChX
ZWJDb3JlOjpOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IFdlYkNvcmU6Ok5vZGVUcmF2
ZXJzYWw6Om5leHQoKm5vZGUpKSB7CiAgICAgICAgIGF1dG8gbWFya2VycyA9IGRvY3VtZW50LT5t
YXJrZXJzKCkubWFya2Vyc0Zvcigqbm9kZSk7CiAgICAgICAgIGZvciAoYXV0byogbWFya2VyIDog
bWFya2VycykgewpAQCAtMTc0MCw3ICsxNzQwLDcgQEAgLSAodm9pZClnZXREaWN0YXRpb25SZXN1
bHRSYW5nZXM6KE5TQXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFkYXRhczooTlNBcnJheSAqKikK
ICAgICAgICAgICAgIEFTU0VSVChtZXRhZGF0YSk7CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRh
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IERPTVJhbmdlICpkb21SYW5nZSA9IGtpdChtYWtlU2ltcGxlUmFuZ2UoKm5vZGUsICptYXJrZXIp
KTsKIAogICAgICAgICAgICAgaWYgKG1ldGFkYXRhICE9IHByZXZpb3VzTWV0YWRhdGEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDI4
MjkxY2IyMDViM2YzMWFmNWU1ZTliZTk1NTMzYmJiNDJiNTFlZWUuLjYxZGE4MDllZWVhMmY2NTlh
ZTM2NzZkOWE4YWY5MDYyZTBkNzAxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNjcwNyw3ICs2NzA3LDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFdlYlJhbmdlSXNSZWxhdGl2ZVRvIHJh
bmdlSXNSZWxhdGl2ZVRvID0gbmVlZFRvUmVtb3ZlU29mdFNwYWNlID8gV2ViUmFuZ2VJc1JlbGF0
aXZlVG86OlBhcmFncmFwaCA6IFdlYlJhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3Q7CiAg
ICAgICAgIGlmIChhdXRvIGRvbVJhbmdlID0gW1tzZWxmIF9mcmFtZV0gX2NvbnZlcnRUb0RPTVJh
bmdlOnJlcGxhY2VtZW50UmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86cmFuZ2VJc1JlbGF0aXZlVG9d
KSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpJZ25vcmVTZWxlY3Rpb25DaGFuZ2VGb3JTY29wZSBz
ZWxlY3Rpb25DaGFuZ2UgeyAqY29yZUZyYW1lIH07Ci0gICAgICAgICAgICBjb3JlRnJhbWUtPnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKCpkb21SYW5n
ZSwgV2ViQ29yZTo6U0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAgIGNvcmVGcmFt
ZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24oKmRv
bVJhbmdlKSk7CiAgICAgICAgICAgICByZXBsYWNlc1RleHQgPSByZXBsYWNlbWVudFJhbmdlLmxl
bmd0aDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDRhMWU2ODVl
ZTI0NGFlNmI1NTQ1ODkwNmU0MzZhNWNjNzA1OTFkNzEuLjMzMDQ1NGVhYTRkNWNmYTQ1NmYzNjVj
M2IzZDM4MmQ4ZDIxMGFkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMzM4LDcgKzMzOCwx
NCBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcm
IHN0ciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZQogICAgIHJldHVybiBzaG91bGRJbnNlcnQ7CiB9
CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgY3VycmVudFJhbmdlLCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHByb3Bvc2VkUmFuZ2UsIFdlYkNvcmU6OkVBZmZp
bml0eSBzZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBmbGFnKQorc3RhdGljIFdlYlNlbGVjdGlvbkFm
ZmluaXR5IHRvV2ViU2VsZWN0aW9uQWZmaW5pdHkoV2ViQ29yZTo6QWZmaW5pdHkgYWZmaW5pdHkp
Cit7CisgICAgaWYgKGFmZmluaXR5ID09IFdlYkNvcmU6OkFmZmluaXR5OjpVcHN0cmVhbSkKKyAg
ICAgICAgcmV0dXJuIFdlYlNlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW07CisgICAgcmV0dXJuIFdl
YlNlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiBjdXJyZW50UmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYgcHJvcG9zZWRSYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHkgc2VsZWN0aW9uQWZmaW5pdHksIGJv
b2wgZmxhZykKIHsKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4gZWQ7CiAgICAgaWYg
KEZBSUxFRChtX3dlYlZpZXctPmVkaXRpbmdEZWxlZ2F0ZSgmZWQpKSB8fCAhZWQuZ2V0KCkpCkBA
IC0zNDgsNyArMzU1LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVj
dGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmEKICAgICBDT01QdHI8SURP
TVJhbmdlPiBwcm9wb3NlZElET01SYW5nZShBZG9wdENPTSwgRE9NUmFuZ2U6OmNyZWF0ZUluc3Rh
bmNlKHByb3Bvc2VkUmFuZ2UpKTsKIAogICAgIEJPT0wgc2hvdWxkQ2hhbmdlID0gRkFMU0U7Ci0g
ICAgaWYgKEZBSUxFRChlZC0+c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZShtX3dlYlZpZXcs
IGN1cnJlbnRJRE9NUmFuZ2UuZ2V0KCksIHByb3Bvc2VkSURPTVJhbmdlLmdldCgpLCBzdGF0aWNf
Y2FzdDxXZWJTZWxlY3Rpb25BZmZpbml0eT4oc2VsZWN0aW9uQWZmaW5pdHkpLCBmbGFnLCAmc2hv
dWxkQ2hhbmdlKSkpCisgICAgaWYgKEZBSUxFRChlZC0+c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01S
YW5nZShtX3dlYlZpZXcsIGN1cnJlbnRJRE9NUmFuZ2UuZ2V0KCksIHByb3Bvc2VkSURPTVJhbmdl
LmdldCgpLCB0b1dlYlNlbGVjdGlvbkFmZmluaXR5KHNlbGVjdGlvbkFmZmluaXR5KSwgZmxhZywg
JnNob3VsZENoYW5nZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBzaG91
bGRDaGFuZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGI0Y2FkMDAxZmEzMzY1NDYxOGQ3NmVhZjY4
Yjk1OGViNGY0OWQzNTIuLmUwMDU5NzAzZWNmYTJkMGZlOWQwODc3MTY0ZDgyNTIzZWU1N2ZlNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
bmRvKCkgZmluYWw7CiAgICAgdm9pZCByZWRvKCkgZmluYWw7CiAgICAgCi0gICAgYm9vbCBzaG91
bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFu
Z2UsIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7CisgICAg
Ym9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5h
bDsKICAgICB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpFbGVtZW50Kikg
ZmluYWw7CiAgICAgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5nKFdlYkNvcmU6OkVsZW1lbnQq
KSBmaW5hbDsKICAgICB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRGaWVsZChXZWJDb3JlOjpFbGVt
ZW50KikgZmluYWw7Cg==
</data>
<flag name="review"
          id="423220"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="423282"
          type_id="3"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>