<?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>236490</bug_id>
          
          <creation_ts>2022-02-11 00:06:44 -0800</creation_ts>
          <short_desc>ExtensionsGL is not useful class, it should be removed</short_desc>
          <delta_ts>2022-02-14 23:35:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221664</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840240</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 00:06:44 -0800</bug_when>
    <thetext>ExtensionsGL is not useful class, it should be removed

It ends up just a complicated duplication of what is in GraphicsContextGL. Each contextgl type has  has 1:1 hard-coded mapping to the extensiongl type.

It causes problems because extensionsgl is needed during initialization of contextgl, in order to interact with the extension strings.
This in turn is less-than-simple, since constructors calling virtual functions of the instance being constructed is complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840252</commentid>
    <comment_count>1</comment_count>
      <attachid>451653</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 00:51:20 -0800</bug_when>
    <thetext>Created attachment 451653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840295</commentid>
    <comment_count>2</comment_count>
      <attachid>451674</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 04:15:32 -0800</bug_when>
    <thetext>Created attachment 451674
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840303</commentid>
    <comment_count>3</comment_count>
      <attachid>451677</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 05:01:34 -0800</bug_when>
    <thetext>Created attachment 451677
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840306</commentid>
    <comment_count>4</comment_count>
      <attachid>451678</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 05:10:10 -0800</bug_when>
    <thetext>Created attachment 451678
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840307</commentid>
    <comment_count>5</comment_count>
      <attachid>451679</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 05:15:31 -0800</bug_when>
    <thetext>Created attachment 451679
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840308</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-11 05:26:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/88811001&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840311</commentid>
    <comment_count>7</comment_count>
      <attachid>451680</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 05:38:57 -0800</bug_when>
    <thetext>Created attachment 451680
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840312</commentid>
    <comment_count>8</comment_count>
      <attachid>451681</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 05:47:50 -0800</bug_when>
    <thetext>Created attachment 451681
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840324</commentid>
    <comment_count>9</comment_count>
      <attachid>451686</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 06:37:51 -0800</bug_when>
    <thetext>Created attachment 451686
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840339</commentid>
    <comment_count>10</comment_count>
      <attachid>451690</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 07:10:01 -0800</bug_when>
    <thetext>Created attachment 451690
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841164</commentid>
    <comment_count>11</comment_count>
      <attachid>451873</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-14 01:19:34 -0800</bug_when>
    <thetext>Created attachment 451873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841590</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-14 23:35:36 -0800</bug_when>
    <thetext>Committed r289790 (247255@main): &lt;https://commits.webkit.org/247255@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451873.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451653</attachid>
            <date>2022-02-11 00:51:20 -0800</date>
            <delta_ts>2022-02-11 04:15:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236490-20220211105118.patch</filename>
            <type>text/plain</type>
            <size>276091</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE1ZTE0OWNiN2FhZDdl
ZWVhM2UzYThiZTQ1NDE1ODBlYTAyYTk5MC4uYTY3YmQ3MjBlN2ZmMjUxNDNkNGE1ZjMyYzMyNDk3
NGZkNDhjODNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBGYWlsIHN5bmNocm9ub3VzbHkgd2hlbiBjb25zdHJ1Y3RpbmcgYSBTaGFyZWRX
b3JrZXIgd2l0aCBhbiBVUkwgdGhhdCBpcyBub3Qgc2FtZS1vcmlnaW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTJi
NDYwYTZkMDNmMTFjNjIzNDYwYjc5YmVlMTAyMTA5ZDUwNGJlZi4uM2UzN2Q0ZTMxYWZiYzU3MDg1
ZTU3NmY2OTk5NjFjOGUxM2ZiNzYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTA3
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgTm9uLWRl
ZmF1bHQgY29uc3RydWN0aWJsZSB0eXBlcyBjYW5ub3QgYmUgZGVjb2RlZCB3aXRoIElQQzo6RGVj
b2RlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0NTdjNGFhOWIxYTE4Y2NmYTlhYjI4N2U0ZTBi
MzcwZWUzYWQ1MDljLi4xZDY4MDE1MGViZjljMTExOWJjOTVlNjExNzcwZWUzMzUzMDJkMDJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTkwOCw3ICsxOTA4LDYgQEAgaWYgKEVOQUJMRV9XRUJH
TCkKICAgICAgICAgKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcAotICAgICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCiAgICAg
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cAogICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0
aW5nLmNwcAogICAgICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA4MDUwMDEzZWQ2NWY0MGM4
OGYwNDM2MTI3ODAyNWQ0NjA0ZmIzMDFjLi5jYmU5YmIzNTJlMWQ1MjI4MzYzZGI2MTJhNGM5Mzg5
Nzk2NTFmN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE0MzYsNyArMTQzNiw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNw
bGF5VXBkYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAot
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRMaW5lLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaApAQCAtMTU1NCw3ICsxNTUzLDYgQEAgc2V0
KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVmlkZW9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcy5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVnaW9uLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0xNTgyLDcgKzE1ODAsNiBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvQU5HTEVIZWFkZXJzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9B
TkdMRVV0aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuaAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3Bh
cXVlRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9w
YXF1ZUZyYW1lYnVmZmVyLmNwcAppbmRleCAyMzlhMjJiZDEwMzAyMWQxMjc1MjZhMGY0OGM3MDFk
OWI2NzQwZTM1Li5hZGRjMTAyMWY4MDkzZTEwMTU5NmZhNzRkYmFiNjkwZmNjOThmODQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFt
ZWJ1ZmZlci5jcHAKQEAgLTI3MiwxMiArMjcyLDEyIEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcigpCiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3Jt
U3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpE
RVBUSF9DT01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5E
RVg4OwogI2VsaWYgVVNFKE9QRU5HTF9FUykKLSAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRl
cnByZXRfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xFUyY+KGdsLmdldEV4dGVuc2lvbnMoKSk7Cisg
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wmPihnbCkuZ2V0RXh0ZW5zaW9ucygpOwogICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c1Bh
Y2tlZERlcHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JTdGVuY2lsICYmIGV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQg
PSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJ
TDggOiBHTDo6REVQVEhfQ09NUE9ORU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6
OlNURU5DSUxfSU5ERVg4OwogI2Vsc2UKLSAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnBy
ZXRfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mPihnbC5nZXRFeHRlbnNpb25zKCkpOwor
ICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQ
YWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0
ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5D
SUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6
U1RFTkNJTF9DT01QT05FTlQ7CkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBXZWJYUk9wYXF1ZUZy
YW1lYnVmZmVyOjpzZXR1cEZyYW1lYnVmZmVyKCkKICNpZiBVU0UoQU5HTEUpCiAgICAgICAgIGds
LmdldEludGVnZXJ2KEdMOjpNQVhfU0FNUExFUywgbWFrZUdDR0xTcGFuKCZtYXhTYW1wbGVDb3Vu
dCwgMSkpOwogI2Vsc2UKLSAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhf
U0FNUExFUywgbWFrZUdDR0xTcGFuKCZtYXhTYW1wbGVDb3VudCwgMSkpOworICAgICAgICBnbC5n
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3Bhbigm
bWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbmRpZgogICAgICAgICAvLyBDYXAgdGhlIG1heGl1bXVt
IG11bHRpc2FtcGxlIGNvdW50IGF0IDQuIEFueSBtb3JlIHRoYW4gdGhpcyBpcyBsaWtlbHkgb3Zl
cmtpbGwgYW5kIHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlLgogICAgICAgICBtX3NhbXBsZUNvdW50
ID0gc3RkOjptaW4oNCwgbWF4U2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA2MTQyZDI0
M2RiMjg4MGM1MWVmZWY1OGEwNGM5YjBiYTc1M2Y2MDQxLi45ODc1YTkwNTE4MzE2NzdhOWIyZDdh
ZDViMTdmNzU2NzA1YWU2ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA3NCw3ICsyMDc0LDYgQEAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEZvcm1hdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
VmlkZW9TYW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAz
M2E4OTY1MjBmNzhkNWI4M2NiODRmMTgxZmE3NmJlM2UxMDU0OTQyLi41YzdmODNmMzdiNDc1YjNh
NDBjYmZlYmNjM2M2MzkyNWMyZWMwYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTYx
NCw2ICs2MTQsNSBAQCB0ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92
ZXJsYXkubW0KIC8vIHdpdGggZmlsZXMgdGhhdCB1c2UgdGhlIHN5c3RlbSBPcGVuR0wuCiAKIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcCBAbm8tdW5pZnkKLXBsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIEBuby11bmlmeQog
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBAbm8tdW5p
ZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA3MDllNjYxYzUzMTYzNzc1YTEzYzllNzFlNjJhZDczZGE1ZjMyM2YxLi4xNTdiOTZi
NzYwYTMwODQ5YTAyNmJkZTFjMjFkNTJkMTVhOWVkZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTg3LDExICsyMTg3LDgg
QEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2
RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkU3MkY1NEMyMjlE
Q0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBF
eHRlbnNpb25zR0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRFMjI5RENEMTAwMEIzRTE1MSAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEYyMjlEQ0QxMzAwQjNFMTUxIC8qIFRl
bXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVT
ZXR0aW5nLmNwcCAqLzsgfTsKLQkJNkU3MkY1NTAyMjlEQ0QxNzAwQjNFMTUxIC8qIEV4dGVuc2lv
bnNHTEFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTI3RjI0NDIyOUM5RjhEMDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCAqLzsgfTsK
IAkJNkU3MkY1NTEyMjlEQ0QxQTAwQjNFMTUxIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjMyMjlE
Qjk3MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5oICovOyB9OwogCQk2RTg0RTlF
MTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0
ZXJTaGFwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTZFOEFDREVEMjMzNDVDQkMwMDI0QUFGNSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRD
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RThBQ0RF
QjIzMzQ1Q0FGMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oICovOyB9OwpA
QCAtMjQxMyw3ICsyNDEwLDYgQEAKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBT
Y29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Qjk1Q0ZFQjI3NTRGRjZFMDAwMDYwQ0UgLyog
R3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I5NUNGRTkyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4
dEdMU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Qjk1Q0ZFRDI3NTRGRjdDMDAwMDYwQ0UgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5NUNGRUMy
NzU0RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAw
MjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4
IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA4NjgsOCArMTA4NjQsNiBAQAogCQk2
RTI0MkIyOTIzMzU5M0Q3MDAyQ0FERDQgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyNDJCMkEyMzM1OTNEODAwMkNBREQ0IC8q
IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDMS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTI3
RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMy
IC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEV4dGVuc2lvbnNHTEFOR0xFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNkUyN0YyNDQyMjlDOUY4RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnNHTEFOR0xFLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAvKiBUZW1wb3Jh
cnlBTkdMRVNldHRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkUyOTA4NjMyMjlEQjk3MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUzRkFEMzYxNDczM0Y0MDAwRTQyMzA2IC8qIEpT
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDkwMSw3ICsxMDg5NSw2IEBACiAJCTZFNTM4OEUwMjQ1OEFF
MUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkU1Mzg4RTEyNDU4QUUxRDAwNzZBRTAzIC8qIFdlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkU1NzZCQzMyNEVCNTA5QzAwOTRENEFBIC8qIEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFNjdEMkE4
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXh0ZW5zaW9uc0dMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZFN0NBMzBBMjVCNEQyOEEwMDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV2ViR0xNdWx0aURyYXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkU3Q0EzMEIyNUI0RDMyODAwNEE5MTNFIC8qIEpTV2ViR0xNdWx0aURyYXcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNXZWJHTE11bHRpRHJhdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTUyNyw3ICsxMTUyMCw2IEBACiAJCTdCNzMxMUZBMjVD
MDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUQyNkYwQzEyMzAwOEFD
MDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENW
VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVGMjZGMEMx
MjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5NUNGRTkyNzU0RkY2RTAwMDA2MENF
IC8qIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I5NUNGRUMyNzU0RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5H
TEUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBMTYyNTM0NUNCMjAwMDI5
RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTU0Myw3
ICsxMTUzNSw2IEBACiAJCTdCRERBMzFEMjc0RjlEQTUwMDM4NjU5RSAvKiBHcmFwaGljc0NvbnRl
eHRHTENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEzNDkyNzVB
MDEzMDAwMzg2NTlFIC8qIFByb2Nlc3NJZGVudGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcm9jZXNzSWRlbnRpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JEREEzNEIyNzVBMDEzMDAwMzg2NTlFIC8qIFByb2Nlc3NJZGVudGl0eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzSWRlbnRpdHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QkZGNTlFRjI3NTc3MUU4MDA3NzNEMzkgLyogRGlzcGxheUNvbmZpZ3VyYXRpb25N
b25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBEaXNwbGF5Q29uZmln
dXJhdGlvbk1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RjEy
NzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1
QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQzOTYsOCArMjQzODcsNiBAQAogCQkJCTI3RTNDODA2
MjU3RjVFNkUwMEM5ODZBQiAvKiBBTkdMRUhlYWRlcnMuaCAqLywKIAkJCQk3QkNENDJEODI3MDU5
OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovLAogCQkJCTdCQjM0QTE2MjUzNDVD
QjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovLAotCQkJCTZFMjdGMjQzMjI5QzlGODQw
MEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgKi8sCi0JCQkJNkUyN0YyNDQyMjlDOUY4
RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi8sCiAJCQkJNkUyN0YyNDIyMjk4Q0U0
QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovLAogCQkJCTdCOTVDRkVD
Mjc1NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8sCiAJCQkJNkUy
OTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi8sCkBA
IC0yODg2OSw3ICsyODg1OCw2IEBACiAJCQkJMEZCQjVGQzkyNjBFOUI0MzAwNTQ1NzJDIC8qIERp
c3BsYXlVcGRhdGUuY3BwICovLAogCQkJCTBGQkI1RkNCMjYwRTlCNDQwMDU0NTcyQyAvKiBEaXNw
bGF5VXBkYXRlLmggKi8sCiAJCQkJMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERyYXdHbHlw
aHNSZWNvcmRlci5oICovLAotCQkJCTZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNp
b25zR0wuaCAqLywKIAkJCQkyRTg4OENBOTI1RjZBNDExMDA1NzkxNEEgLyogRmxvYXRMaW5lLmNw
cCAqLywKIAkJCQkyRTg4OENBODI1RjZBNDExMDA1NzkxNEEgLyogRmxvYXRMaW5lLmggKi8sCiAJ
CQkJQjI3NTM1M0EwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnQuY3BwICovLApAQCAtMjkw
NjQsOCArMjkwNTIsNiBAQAogCQkJCUNEMUY5QUZDMjZGRDM4Q0EwMDYxN0VCNiAvKiBQbGF0Zm9y
bVZpZGVvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4
MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMg
LyogUmVnaW9uLmggKi8sCi0JCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKLQkJCQk3QjkwNDE2RTI1NTAxMTA5MDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJCQkwNzNB
MTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAogCQkJCTA3
M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAogCQkJCTcy
OTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0zNDQ0Miw4
ICszNDQyOCw2IEBACiAJCQkJMkQyOTM4NkIyMzVGNkI2OTAwQzdGM0IyIC8qIEV4Y2VwdGlvbkRl
dGFpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDE5NjMxMUQ2Q0FCNzYwMEZDN0U0NyAvKiBF
eGNlcHRpb25Pci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMx
IC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTZFNjdEMkE5
MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovLAotCQkJCTZF
NzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hh
ZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzcyODY5NEYxNEY4ODgyNTAwRjQ4
NERDIC8qIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
Njc2Miw3ICszNjc0Niw2IEBACiAJCQkJNTExN0YzMEUyNUU2MTAyMDAwMkE5RjFFIC8qIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2
MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJl
bW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0
RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4g
SGVhZGVycyAqLywKQEAgLTM4NjUwLDcgKzM4NjMzLDYgQEAKIAkJCQkxQUJBNzZDQTExRDIwRTUw
MDA0QzIwMUMgLyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDIy
ODMwMzIzQTg0NzA3MDAzNjRCN0UgLyogQ3Vyc29yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNCRDU5NTkyMjgwRTkyNjAwMkIyMkFBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFNkNCRkQxODdGMzk0OTAwRDQ2QkY1IC8qIEZv
cm1hdENvbnZlcnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTMwRjJGNjI0QUVBNjBBMDBF
MUQwQTAgLyogR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
QTRCQjBBMTk1NEQ2MTYwMEZBNUMyRSAvKiBHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
CmluZGV4IDgyMjAzMzkxNWQwNGUzYjBjMjk2MmZiYjUyMzRlOTM0ZjkzYTcxMTcuLjg3NTM3ZTJi
YjkzZTRiNjk5OTc3MDBhZmZjMTg3ZjZjZjViYmVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKQEAgLTI4LDEwICsyOCw2
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkFOR0xFSW5zdGFuY2VkQXJyYXlzLmgi
CiAKLSNpZiBQTEFURk9STShHVEspIHx8IFVTRShBTkdMRSkgfHwgUExBVEZPUk0oV1BFKQotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgotI2VuZGlmCi0KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICszOCw3IEBAIEFOR0xF
SW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKICNpZiBV
U0UoQU5HTEUpCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25z
KCkuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVf
aW5zdGFuY2VkX2FycmF5cyIpOwogI2VuZGlmCiB9CiAKQEAgLTUzLDEwICs0OSwxMCBAQCBXZWJH
TEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBBTkdMRUluc3RhbmNlZEFycmF5czo6Z2V0TmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIEFOR0xFSW5zdGFuY2VkQXJyYXlzTmFtZTsKIH0KIAotYm9vbCBB
TkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmIGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKSB8fCBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfaW5zdGFuY2VkX2Fy
cmF5cyIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5j
ZWRBcnJheXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJy
YXlzLmgKaW5kZXggMzJlYjg5N2IxNmQ5MDlkMzk0YTEwYTc4NTFjMWUzMjY3NTRlYzkzNi4uNjlj
NDRkZDQ5MTNhZmUzZDVmMGViM2RmMzBhODE3YzM0YmZmMDg1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IGZpbmFsOwog
Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
KyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIAogICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCk7CiAgICAgdm9pZCBkcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmNwcAppbmRl
eCAwOWU1MGM0Y2JhZDNmNTk4YTMyMmQ5MDUxYzk4M2ZmYjBlN2IyNWU3Li43OTY1NjBiZDRjZTZh
NTA5NjE2M2JlMTk0MDBiZWVlMjQ4MmYyZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lm
IEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJFWFRDb2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzcsMTAgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEVYVENvbG9yQnVmZmVyRmxvYXQpOwogRVhUQ29sb3JCdWZmZXJGbG9hdDo6
RVhUQ29sb3JCdWZmZXJGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29sb3JfYnVm
ZmVyX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiX3MpOwogICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAgLy8gU3Bl
YyByZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0bHkgaGVy
ZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9z
KTsKIH0KIAogRVhUQ29sb3JCdWZmZXJGbG9hdDo6fkVYVENvbG9yQnVmZmVyRmxvYXQoKSA9IGRl
ZmF1bHQ7CkBAIC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEVY
VENvbG9yQnVmZmVyRmxvYXQ6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBFWFRDb2xvckJ1
ZmZlckZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQo
Y29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgRVhUQ29sb3JC
dWZmZXJGbG9hdDo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAg
IHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7CisgICAgcmV0dXJuIGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiX3MpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckZsb2F0LmgKaW5kZXggZWIyOWZhMGU1NDkzYTI0ODExY2MxMDY4NzM2M2Ex
ZDg5Y2JkZmQ3Ni4uOTU0OGYwZjkzZjBlNDY3ZDZiOTJhYWVmZGM1OTUzZjQ4ZDUzODBkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuaApA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNz
Q29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKaW5k
ZXggNzllMWNjMTlkMWViZjdlYzA3NDdlMzY1YjIwYmY0MWJjYzMzMjA0Zi4uMGVmZWQ4M2FkNmE5
MWYwNDQxYjIzZTQ3MTQyYWI5ODc3ODMzNDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQpOwogRVhUQ29s
b3JCdWZmZXJIYWxmRmxvYXQ6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0KFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewot
ICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3Jf
YnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQogCiBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6fkVY
VENvbG9yQnVmZmVySGFsZkZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNDgsMTAgKzQ3LDEwIEBAIFdl
YkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpnZXRO
YW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXROYW1lOwogfQog
Ci1ib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6
OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpCi0gICAgICAgICYmIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hh
bGZfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9P
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
Q29sb3JCdWZmZXJIYWxmRmxvYXQuaAppbmRleCAxMDc3OWVmNmMyYzljNDI2ZjNkNjUxMTYxZThm
NmQwZGRmMjNjZjc1Li42ZjRiYzQ4MWEzMDRmNjRkNDVkOTIyYjFiNzIzMTFmYzk4ZDljYzQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFs
ZkZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmNwcAppbmRleCA4ZWY2ODc5
MzNhYWVjZjViOGQzM2NlMDIwNzg4MmMyYmRkNTc4OTYxLi5iZGQ4NWQwNzBkMDg3MTM5NjNkYzE3
YjE2NGEyZmJhZWU2MDcwMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRGbG9hdEJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRG
bG9hdEJsZW5kLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJFWFRGbG9hdEJsZW5kLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
OCw3ICszNyw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRGbG9hdEJsZW5kKTsK
IEVYVEZsb2F0QmxlbmQ6OkVYVEZsb2F0QmxlbmQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVYVEZsb2F0
QmxlbmQ6On5FWFRGbG9hdEJsZW5kKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBAQCBXZWJH
TEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRGbG9hdEJsZW5kOjpnZXROYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gRVhURmxvYXRCbGVuZE5hbWU7CiB9CiAKLWJvb2wgRVhURmxvYXRCbGVuZDo6
c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29s
IEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsK
LSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CisgICAgcmV0dXJuIGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRGbG9hdEJsZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5k
LmgKaW5kZXggMjJjMzAyYTMzMGE2MjIyMzVjZjY4NTI5M2NkOGMxNjg1NmE0NTdiZS4uNDQ2Yjlm
ZjM3MWRjMjkyYjhmZTYxODI5MzJkNThmNTY2NjA2NzkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRU
ZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwCmluZGV4IDQ2M2E1ODczY2YzMDk2MzEyZDk3ZDYz
MjdmNjFhZTgxZTQ3MWRkN2QuLjQ2Yzk2MGYxOTE2NGE3NWY2ODdjYTkyNmQ0ZjVmNjExODMwMjVh
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21w
cmVzc2lvblJHVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoV0VC
R0wpCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oIgotI2luY2x1ZGUgIkV4
dGVuc2lvbnNHTC5oIgogCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAt
MzgsMTIgKzM3LDEyIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRUZXh0dXJlQ29t
cHJlc3Npb25SR1RDKTsKIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVDb21w
cmVzc2lvblJHVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fcmd0YyIpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIpOwogCi0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkVEX1JHVEMxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQpOwotICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JF
RF9HUkVFTl9SR1RDMl9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RD
MV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
SUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CiB9CiAKIEVYVFRleHR1cmVDb21wcmVzc2lvblJH
VEM6On5FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAK
aW5kZXggNTI3MTM4ZjMwZjc1ZmFkMDczOTg1OTRiMzMzYTdkZjljMTQyZDI4MC4uZTY2YmI4MjQz
YTczNzkyMWEwZDUzNTM3NWZlYzZjZGYzYjM5YWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIktIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBA
QCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlKTsK
IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6S0hSUGFyYWxsZWxTaGFkZXJDb21waWxlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSJfcyk7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9L
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOwogfQogCiBLSFJQYXJhbGxlbFNoYWRlckNv
bXBpbGU6On5LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUoKSA9IGRlZmF1bHQ7CkBAIC00OCw5ICs0
Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEtIUlBhcmFsbGVsU2hhZGVyQ29t
cGlsZTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZU5hbWU7CiB9CiAKLWJvb2wgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIHJldHVybiBj
b250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUi
X3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaAppbmRleCAxZmNm
YzJiNThlZDlmYjRlNmQxMTc0MTg2MTQ3ZGYzYmRjMDI1M2E5Li44MzgwNGQ2ZGY5ZjI2MzFkOWE3
M2Q5NTA4ZWE3MTBmOWFjYjUxMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7
CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTRkJPUmVuZGVyTWlwbWFwLmNwcAppbmRleCA3MWE4MWQwZDkzMDlkNjQ0ZWU0ODY4YmRhYTIz
ZWQ4Nzg0YWY1MjFiLi42NTIyMGI3YWJjMDcxMzM1NjU2YmQ3ZmIzNTM2MmYzZTRhMjJmNmJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiT0VTRkJP
UmVuZGVyTWlwbWFwLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICsz
Nyw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChPRVNGQk9SZW5kZXJNaXBtYXApOwog
T0VTRkJPUmVuZGVyTWlwbWFwOjpPRVNGQk9SZW5kZXJNaXBtYXAoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19mYm9fcmVuZGVyX21pcG1h
cCJfcyk7CiB9CiAKIE9FU0ZCT1JlbmRlck1pcG1hcDo6fk9FU0ZCT1JlbmRlck1pcG1hcCgpID0g
ZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUg
T0VTRkJPUmVuZGVyTWlwbWFwOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTRkJPUmVu
ZGVyTWlwbWFwTmFtZTsKIH0KIAotYm9vbCBPRVNGQk9SZW5kZXJNaXBtYXA6OnN1cHBvcnRlZChj
b25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNGQk9SZW5k
ZXJNaXBtYXA6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX09FU19mYm9fcmVuZGVyX21pcG1hcCJfcyk7CisgICAgcmV0dXJuIGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19mYm9fcmVuZGVyX21pcG1hcCJfcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU0ZCT1JlbmRlck1pcG1hcC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJP
UmVuZGVyTWlwbWFwLmgKaW5kZXggMzM5NmY5ZTFlMTE0ZTUxYWZjZGZkZDgzZjNlZDJlYjY4MzNl
NmRmMi4uMDJhNzI4Y2NlZTFmZWJlMDA2ZDJkOTZhNGQwODcwZDhhNGYyMDRjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRH
TCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKaW5kZXggZTkyYjJmZWZiZjA5NDY4YmVjZGJk
MWVmOGQ5ZGQyMTBkNWI4YzIwZi4uNWQxZTg5Njc3ZTYxMmMyOTdlNDYyOTExODQzNjczOGYzNTli
OWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQu
Y3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIk9FU1Rl
eHR1cmVGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTIgKzM3
LDEyIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChPRVNUZXh0dXJlRmxvYXQpOwogT0VT
VGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VT
X3RleHR1cmVfZmxvYXQiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9h
dF9yZ2IiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9m
bG9hdF9yZ2IiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpOwog
ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAg
ICAgLy8gU3BlYyByZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxp
Y2l0bHkgaGVyZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0
X2JsZW5kIl9zKTsKIH0KIAogT0VTVGV4dHVyZUZsb2F0Ojp+T0VTVGV4dHVyZUZsb2F0KCkgPSBk
ZWZhdWx0OwpAQCAtNTMsOSArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBP
RVNUZXh0dXJlRmxvYXQ6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBPRVNUZXh0dXJlRmxv
YXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIE9FU1RleHR1cmVGbG9hdDo6c3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKaW5kZXggOGE3Mjc0
ZGRlY2E4ZjdkM2IyMzQ2NTZhYjNkZjVjN2Q4ZmZlZDA2Yy4uMTBlMTllYjcwYTdiYWQ5M2VjNjk5
YjA5YTZhNTc4OTI5ZjU3YzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VGV4dHVyZUZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZG
bG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0
LmNwcAppbmRleCA0MGI5ODk5NmY2N2FjMWU4YWI2NWNkNjY2ZDYzZDI3ZDM5ZjMxY2VlLi40ZWE4
NjZkZWUyNGNjNWEwY2UxYTMwODFlZTk3MzljYjBlMGEzMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmNwcApAQCAtMjksNyArMjks
NiBAQAogCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUhhbGZGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0
ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzksOSArMzgsOSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoT0VTVGV4dHVyZUhhbGZGbG9hdCk7CiBPRVNUZXh0dXJlSGFsZkZsb2F0OjpPRVNUZXh0dXJl
SGFsZkZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJH
TEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQi
X3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiAgICAgLy8gUmVuZGVyYWJpbGl0
eSBpcyBpbXBsaWNpdCB3aGVuIHRoaXMgZXh0ZW5zaW9uIGlzIGVuYWJsZWQuCi0gICAgY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFs
Zl9mbG9hdCJfcyk7CiB9CiAKIE9FU1RleHR1cmVIYWxmRmxvYXQ6On5PRVNUZXh0dXJlSGFsZkZs
b2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSArNTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5z
aW9uTmFtZSBPRVNUZXh0dXJlSGFsZkZsb2F0OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4g
T0VTVGV4dHVyZUhhbGZGbG9hdE5hbWU7CiB9CiAKLWJvb2wgT0VTVGV4dHVyZUhhbGZGbG9hdDo6
c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29s
IE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpOworICAgIHJldHVy
biBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9z
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCmluZGV4IGEzNTRmY2I3ZTM5YjUzMGJmNDkz
MzYxMjk2ODkxMzZlYTk2MjE2NjMuLmQ1MTk0NmFiYTQzOTA0ZjMwNmUxYTdkMDdjZjAwYjlhZWJk
ZTUxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVI
YWxmRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFs
ZkZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3Bw
CmluZGV4IDMwZDRiM2ZmMGNiZDI0ZjUzODA4NjMwYmNjNDMwNjdkOGNlOGYwNmQuLjRmMjg1YzVm
NGMyZTAzMDFkYmY1NDc0MDNjZmYxMGNjODY5NGZmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNWEzODc5NTdj
MjYwNjYyMmRiNDZmNGJmNjA4OGJlMzMxMDYxYWJiYi4uNmQwYTg3Mjg1YTgwNjFjNTBlNjY5MTZk
NTIxNDRiZWM1ZjQ0NmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRl
ICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCi0jaW5jbHVkZSAiRXh0ZW5z
aW9uc0dMLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtMjQwLDEw
ICsyMzksMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4
QXJyYXlPYmplY3RzKCkKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNo
YWRlckV4dGVuc2lvbnMoKQogewogICAgIC8vIEZJWE1FOiB0aGVzZSBhcmUgaW4gdGhlIFdlYkdM
IDIuMCBjb3JlIEFQSSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7
Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2Ry
YXdfYnVmZmVycyIpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgIG1fY29udGV4
dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7
CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZm
ZXJzIik7CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfc2hh
ZGVyX3RleHR1cmVfbG9kIik7CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZnJhZ19kZXB0aCIpOwogfQogCiBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlQnVmZmVyVGFyZ2V0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
dGFyZ2V0KQpAQCAtMjcxNSwyMCArMjcxNCwyMCBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiLCBlbmFi
bGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJf
cykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0TGluZWFyLCBtX29l
c1RleHR1cmVGbG9hdExpbmVhciwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIsIGVuYWJsZVN1
cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQs
ICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3Ny
Z2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnUmVuZGVyZXJJbmZvLCBtX3dl
YmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7
Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnU2hhZGVycywgbV93ZWJnbERlYnVn
U2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSk7Ci0gICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENvbG9yQnVmZmVy
RmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3Vw
cG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckhh
bGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJfaGFs
Zl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwgIkVY
VF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVs
U2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVs
U2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTERlYnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3No
YWRlcnMiLCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVk
X3NoYWRlcl9zb3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVm
ZmVyRmxvYXQsIG1fZXh0Q29sb3JCdWZmZXJGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQi
LCBFWFRDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29sb3JCdWZmZXJI
YWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xvckJ1ZmZlckhh
bGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwgIkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZs
b2F0QmxlbmQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAi
S0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xNdWx0
aURyYXcsIG1fd2ViZ2xNdWx0aURyYXcsICJXRUJHTF9tdWx0aV9kcmF3IiwgdHJ1ZSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CkBAIC0yNzQzLDQyICsyNzQyLDQxIEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFN0cmluZz4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVu
c2lvbnMoKQogICAgIGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAKLSAgICBhdXRvJiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zs
b2F0X2xpbmVhciJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9F
U190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcyk7Ci0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpKQorICAgIGlmIChtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcyk7
Ci0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7Ci0gICAgaWYgKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyJfcyk7Ci0gICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiX3MpOwotICAgIGlmIChX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiX3MpOwotICAgIGlmIChX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiX3MpOwotICAgIGlm
IChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsKKyAgICBp
ZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpIHsK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9w
dnJ0YyJfcyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVy
ZV9wdnJ0YyJfcyk7CiAgICAgfQotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6
c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX3MzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0I6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQjo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJX
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIl9zKTsKICAgICByZXN1bHQuYXBwZW5k
KCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiX3MpKQorICAgIGlmIChtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiX3Mp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIl9zKTsKICAgICBy
ZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIl9zKTsKLSAgICBpZiAoRVhU
Q29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhUQ29sb3JCdWZm
ZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKLSAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxv
YXQ6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0Ojpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9jb2xvcl9i
dWZmZXJfaGFsZl9mbG9hdCJfcyk7Ci0gICAgaWYgKEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgq
dGhpcykpCisgICAgaWYgKEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2Zsb2F0X2JsZW5kIl9zKTsKLSAgICBpZiAoS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKLSAgICBpZiAoV2ViR0xNdWx0
aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX211bHRpX2RyYXci
X3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3BwCmluZGV4IGE4MWE0OWMyY2E3NjkzODA1
ODYyMzRjMWYyMDllNDhlYTJjNmRjMGYuLjZjMGE5YmU1NjFkNzllNzBkOWYzNWQ1OGE5NzA2YzY1
NTY1MGQ4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29s
b3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkK
ICNpbmNsdWRlICJXZWJHTENvbG9yQnVmZmVyRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
V2ViR0xDb2xvckJ1ZmZlckZsb2F0KTsKIFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xv
ckJ1ZmZlckZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZl
cl9mbG9hdF9yZ2JhIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9z
KTsKICAgICAvLyBPcHRpbWlzdGljYWxseSBlbmFibGUgUkdCIGZsb2F0aW5nLXBvaW50IHJlbmRl
ciB0YXJnZXRzIGFsc28sIGlmIHBvc3NpYmxlLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1
ZmZlcl9mbG9hdF9yZ2IiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYiJf
cyk7CiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9XZWJHTC9wdWxsLzI4
MzAKICAgICAvLyBTcGVjIHJlcXVpcmVzIEVYVF9mbG9hdF9ibGVuZCB0byBiZSB0dXJuZWQgb24g
aW1wbGljaXRseSBoZXJlLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CisgICAgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRf
ZmxvYXRfYmxlbmQiX3MpOwogfQogCiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6On5XZWJHTENvbG9y
QnVmZmVyRmxvYXQoKSA9IGRlZmF1bHQ7CkBAIC01MywxMCArNTIsMTAgQEAgV2ViR0xFeHRlbnNp
b246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpnZXROYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gV2ViR0xDb2xvckJ1ZmZlckZsb2F0TmFtZTsKIH0KIAotYm9vbCBXZWJHTENv
bG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQorYm9vbCBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9z
KQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpOworICAg
IHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJf
cykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQ0hST01JVU1fY29s
b3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxv
YXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5o
CmluZGV4IDBkMmQwN2MyNTU5OWUwNGNjZWNhMDY2YTQ1OTY1MDVkMTAyZTE4NjQuLjk0Y2RlZDZj
ZDYzNjdjMThkNjAwMmE2ZWFlYjIxNDAzMTMyMzllYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcAppbmRleCA2ZWFjYTFm
MmEwMjUxNzZkYTQ1M2I1MDAxMjhhMzZmMTEzNmI4MTVkLi40ZmYwMjJlOWVkNTEyYTkyZWRhMzEw
MWNmMWMyNmMyZWU1YWY4Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0zOSw0
MSArMzgsNDEgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBU1RDKTsKIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBU1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQotICAgICwgbV9pc0hEUlN1cHBvcnRlZChjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiX3MpKQotICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiX3MpKQorICAgICwgbV9pc0hEUlN1cHBvcnRl
ZChjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJf
dGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcykpCisgICAgLCBtX2lzTERSU3VwcG9ydGVk
KGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0tIUl90
ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKSkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcyk7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIi
X3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiX3MpOwogCi0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzR4NF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIpOwotICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ182eDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUik7Ci0gICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzh4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSKTsKLSAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUik7Ci0gICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDhfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfMTJ4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSKTsKKyAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hS
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q182eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSKTsKKyAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ184eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSKTsKKyAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDhfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4
MTJfS0hSKTsKICAgICAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ182eDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ184eDhfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEweDhfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIpOwotICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfMTJ4MTJfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIpOwor
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUik7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ181eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4
NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUik7CisgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzh4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIpOwor
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
U1RDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMoKSA9IGRlZmF1bHQ7CkBAIC05NSwxMCAr
OTQsMTAgQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OmdldFN1
cHBvcnRlZFByb2ZpbGVzKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFw
aGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKQotICAgICAgICB8fCBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcykKKyAgICAgICAgfHwgY29u
dGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19s
ZHIiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaAppbmRleCAz
MGVmZTNkODFjMWI5Yjk0NjMzOTczMWQzNzhkMmNjMTdhMzE1OWYwLi5mYTBlNWI5OWUzZTFmNDZj
Yjg1NTQwMjcyNjJlMDY1YmYxOGYxMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKQEAgLTQwLDcgKzQwLDcg
QEAgcHVibGljOgogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZFByb2ZpbGVzKCk7CiAKLSAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0
YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogcHJpdmF0ZToKICAgICBi
b29sIG1faXNIRFJTdXBwb3J0ZWQgOiAxOwogICAgIGJvb2wgbV9pc0xEUlN1cHBvcnRlZCA6IDE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuY3BwCmluZGV4IGM5ZTdiZTMwYzYzMTA1MDMwM2RmYmU2NmExMzNmZmQ0MjQ2
ZWMyMjkuLmJjM2ViZTJkNWU3NTNiMTg5Y2E1NzJhNTRhOTFkNjJmOTE5ZGEyYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwxMSArMzgs
MTEgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOwor
ICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0lO
VEVSUE9MQVRFRF9BTFBIQV9BTUQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQl9BTUQpOworICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JB
X0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
Ojp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQygpID0gZGVmYXVsdDsKQEAgLTUzLDkgKzUyLDkg
QEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVENO
YW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0
dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgKaW5kZXggZTBiZDI2NjEwOTQ0MGZjYjMw
N2M5M2IzNWM1NDMwYjFkZDk0ZDFmYS4uMTA1NjhhOWRkOTRjM2JlMjc3OGMzMjQ3ODljNGY4Zjc1
NDRhYTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Jik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQygpOwogCi0gICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIAogICAgIEV4dGVuc2lvbk5h
bWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKaW5kZXggNGZl
YWE1ZGQ4NzkxMjM1OTMxZjk4NTlmOTY3MGM0NjhhNWEzYmZhMy4uOTE1ZGIyYWUzZTQzZmRiNzk2
ZjA2NTEwZDQzNzA3OTY2YjlmMzQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAg
LTM5LDE4ICszOCwxOCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQyk7CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpXZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4
dHVyZV9ldGMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKTsKIAotICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1IxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQyk7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU0lHTkVEX1JHMTFfRUFDKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzIpOwotICAgIGNvbnRleHQu
YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4
X0VUQzIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9T
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUjExX0VBQyk7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRzExX0VBQyk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TSUdORURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKKyAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1NSR0I4X0VUQzIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0VUQzIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKKyAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMy
X0VBQyk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6On5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDKCkgPSBkZWZhdWx0OwpAQCAtNjAsOSArNTksOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpnZXROYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQ05hbWU7CiB9CiAKLWJvb2wgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZChH
cmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU5HTEVfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDLmgKaW5kZXggNzQ2Nzc4Y2MyZGUwMjM5YjllZTJjNzUzZGIwZjY5MmUw
NGQ4OTdkNC4uYzM4ODI5MTFhYjU5NmQ5ZjIxMDZhODE4MWU5ZWYyMGMyOGQwODE0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVh
bCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9y
dGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcAppbmRleCBkOWE3Y2ZhYjY5ZTc2ZWFl
MzE3ZWMwYmNmNTY1NDk5NmNmMjQxNWVhLi5hZDFiZjJmYzk4MjQ4YmYxNzcwYTNiNjE5MGIxNzA5
MmY2MDgwOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5B
QkxFKFdFQkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgiCiAKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzksOSArMzgs
OSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVF
VEMxKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVu
c2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0
dXJlIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOwogCi0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkVUQzFfUkdCOF9P
RVMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkVUQzFfUkdCOF9PRVMpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKCkgPSBkZWZhdWx0OwpAQCAtNTEsOSArNTAsOSBA
QCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRD
MTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMx
TmFtZTsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAg
cmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIHJldHVybiBj
b250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4
dHVyZSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaAppbmRleCAw
NmZlMjdhYWIxNzgzZGJjMWIzYjAxZTFlZjQ5ODA5YmQzY2RiMjNjLi4wNDQ5ZjU3MDQ0NjRjMjU2
YmIzODNkNzc0YWZiYzllMzZmMTc5M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDMSgpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
KTsKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuY3BwCmluZGV4IDFhMjBjMDdkMjczM2MxODBlNDVhZGZhNDNkYWY4ZTg1MzZi
NDQ1YmEuLjVhODQ5OWU5ZTRjZmNiOTE4OWFjZjRmOGJmNzcwYzhlOTU0YjQ0ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
ICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KIApAQCAtNDAsMTIgKzM5LDEyIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xf
SU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNz
aW9uX3B2cnRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7Ci0gICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdC
X1BWUlRDXzJCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyk7Ci0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFf
SU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcp
OwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6On5XZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEMoKSA9IGRlZmF1bHQ7CkBAIC01NSw5ICs1NCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6Z2V0TmFtZSgpIGNvbnN0
CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQ05hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBw
b3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9JTUdfdGV4
dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oCmluZGV4IGE4NjY5ZjBlYjhkMDJmMDg5ODAw
Y2YyYzI2NWI4MWM3YTVmM2NhNWQuLjMzNzJjMjlhYjI0ZTVjODkwZmEzMzdlYjBmOTQ5ZWVmOWVm
NWMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQy5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpOwogCi0g
ICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKICAgICBFeHRlbnNp
b25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApp
bmRleCAwN2JhNGZhNWJlMTI1N2MzYzgxMjAzNzk4YzFmOTVmYTc3NDZhOWFmLi5mYTcwODExZTc1
MzcwZTcyOGRlNDdjZGIxMGE5MTg2YTNhNTAyMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCkBAIC0y
OSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQwLDE1
ICszOSwxNSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJH
TEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICBleHRlbnNpb25zLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsKLSAgICBleHRlbnNp
b25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpOwot
ICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQ1Iik7CisgICAgYXV0byogZ2NnbCA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsK
KyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQxIik7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIik7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CiAKLSAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0Jf
UzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKLSAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUM19FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JfUzNUQ19EWFQxX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOwor
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0VYVCk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjp+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoKSA9IGRlZmF1bHQ7CkBAIC01OCwxNiArNTcsMTUgQEAgV2ViR0xFeHRl
bnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OmdldE5hbWUo
KSBjb25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWU7CiB9CiAK
LWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1dG8mIGV4dGVu
c2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKTsKICNp
ZiBVU0UoQU5HTEUpCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDEiKQotICAgICAgICAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJH
TF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQotICAgICAgICAmJiBleHRlbnNpb25z
LnN1cHBvcnRzKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKKyAgICByZXR1
cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
ZHh0MSIpCisgICAgICAgICYmIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0MyIpCisgICAgICAgICYmIGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogI2Vsc2UKLSAgICBy
ZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YyIpCi0gICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDEiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMuaAppbmRleCBhMzQ3M2Q4ZWVmYmQyMjJmMWIyNmNiMTI5ZDRkNDQ3MmNj
NDExNTA5Li4xZGJmNDVhNGMwZTI0M2IzYzYwMDAxNGY1NWY2ZjBkOGY1NDgwMzQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQygpOwogCi0gICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCmluZGV4IDUwZDBi
ZDkwN2U4ZmRlZThmZDQxZDY1ZDIxYjhkMDBhMmZhZmY1NzcuLmY2NWY0MmFlMjJhYzczMTJlMTI4
NGRmMWNjMjFmNGU2NjAxZjY2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcApAQCAtMjgs
NyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUg
IldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogCkBAIC0zOSwxMyArMzgsMTEgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQik7CiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0I6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQihXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAg
ICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjX3NyZ2IiKTsKLQotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCk7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENf
RFhUM19FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCk7CisgICAgY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQx
X0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQ1X0VYVCk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6fldlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQigpID0gZGVmYXVsdDsKQEAgLTU1LDEwICs1Miw5IEBA
IFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
c1JHQjo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQk5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpz
dXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNv
bnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiKTsKKyAgICByZXR1cm4gY29udGV4
dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdi
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgKaW5k
ZXggYzc5M2I5MTZkYjBlNjZjZjNlOWM2NzcwZjU2NjA3ZjMxOGZmNzQ2Yi4uNTlhNjYzZjE0ZDFm
YjRiYzZjODU4Njc1ZjU1ZjQ4ZDdhN2VmZWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZWJ1Z1NoYWRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZWJ1Z1NoYWRlcnMuY3BwCmluZGV4IDZiMDQ5NTRhNGE1MjljZTg4MmYyYTY0YmIzZDg2N2ZhODRj
MzhjZjAuLmE2OWRhMjkwMzg0MTYxNjA4NzlkNzhiOGJmY2FlMDdkMGQ0NTc1YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCiAKLSNpbmNsdWRl
ICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgi
CiAjaW5jbHVkZSAiV2ViR0xTaGFkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgpAQCAtNDEsNyArNDAsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xE
ZWJ1Z1NoYWRlcnMpOwogV2ViR0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIik7CiB9CiAKIFdlYkdMRGVidWdTaGFkZXJz
Ojp+V2ViR0xEZWJ1Z1NoYWRlcnMoKSA9IGRlZmF1bHQ7CkBAIC01Nyw3ICs1Niw3IEBAIFN0cmlu
ZyBXZWJHTERlYnVnU2hhZGVyczo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZShXZWJHTFNoYWRl
ciYgc2hhZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKCFtX2NvbnRleHQt
PnZhbGlkYXRlV2ViR0xPYmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCAmc2hhZGVy
KSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fY29udGV4dC0+
Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShzaGFkZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX2NvbnRleHQtPmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIub2Jq
ZWN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggYTY5MTUzMjNhODQ5NDRl
NTliYzE3MmQzZjViOTQzMzcyNjgxNDM3Ni4uOTE1NjNiY2FlMmYxMTg5MTI0Y2Y1YzhmMzZmZjMy
YTkzZjU1ODBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVw
dGhUZXh0dXJlLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xEZXB0aFRl
eHR1cmUuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDggKzM4LDkgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVwdGhUZXh0dXJlKTsKIFdlYkdMRGVw
dGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNf
ZGVwdGhfdGV4dHVyZSIpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgYXV0
byogZ2NnbCA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKKyAgICBnY2dsLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpOworICAgIGdjZ2wtPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CiB9CiAKIFdlYkdMRGVw
dGhUZXh0dXJlOjp+V2ViR0xEZXB0aFRleHR1cmUoKSA9IGRlZmF1bHQ7CkBAIC01Miw5ICs1Miw4
IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRGVwdGhUZXh0dXJlOjpnZXRO
YW1lKCkgY29uc3QKIAogYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNz
Q29udGV4dEdMJiBjb250ZXh0KQogewotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGNv
bnRleHQuZ2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJH
TF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVm
ZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cAppbmRleCAwZGMxN2VhOWJjMGNkYzc0ZDFlNjFjMWYwMjUzYzhlY2ViMzY4OTUzLi4wNjcwYTQ3
NjQyYmZiZmVjYmRlZjU2Mzc4YTJiZWI1YjE4Yzk1Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lm
IEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJXZWJHTERyYXdCdWZmZXJzLmgiCiAKLSNpbmNsdWRl
ICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszNyw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChXZWJHTERyYXdCdWZmZXJzKTsKIFdlYkdMRHJhd0J1ZmZlcnM6OldlYkdMRHJhd0J1
ZmZlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0
ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X2RyYXdfYnVmZmVycyIpOwogfQogCiBXZWJHTERyYXdCdWZmZXJzOjp+V2ViR0xEcmF3QnVmZmVy
cygpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lv
bk5hbWUgV2ViR0xEcmF3QnVmZmVyczo6Z2V0TmFtZSgpIGNvbnN0CiBib29sIFdlYkdMRHJhd0J1
ZmZlcnM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewog
I2lmIFVTRShBTkdMRSkKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICByZXR1
cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhU
X2RyYXdfYnVmZmVycyIpOwogI2Vsc2UKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKQor
ICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfZHJhd19idWZmZXJzIikKICAgICAgICAgJiYgc2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoY29udGV4dCk7CiAjZW5kaWYKIH0KQEAgLTc1LDcgKzc0LDcgQEAgdm9pZCBXZWJHTERy
YXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4mIGJ1ZmZl
cnMpCiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFja2J1ZmZlciBpcyBzaW11
bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVkIHRvIGNoYW5nZSBCQUNL
IHRvIENPTE9SX0FUVEFDSE1FTlQwLgogICAgICAgICBHQ0dMZW51bSB2YWx1ZVsxXSB7IGJ1ZnNb
MF0gPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0sgPyBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1Jf
QVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OwotICAgICAgICBtX2NvbnRl
eHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVCh2
YWx1ZSk7CisgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZl
cnNFWFQodmFsdWUpOwogICAgICAgICBtX2NvbnRleHQtPnNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNb
MF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuID4gbV9jb250ZXh0LT5nZXRNYXhEcmF3
QnVmZmVycygpKSB7CkBAIC04Myw3ICs4Miw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJh
d0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAoR0NHTHNpemVpIGkgPSAwOyBpIDwg
bjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoYnVmc1tpXSAhPSBHcmFwaGljc0NvbnRleHRHTDo6
Tk9ORSAmJiBidWZzW2ldICE9IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDBfRVhUICsg
aSkgeworICAgICAgICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUg
JiYgYnVmc1tpXSAhPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDBfRVhUICsg
aSkgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJDT0xP
Ul9BVFRBQ0hNRU5UaV9FWFQgb3IgTk9ORSIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KQEAgLTk4LDggKzk3LDggQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRp
c2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAg
ICBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCA9IHdlYmdsQ29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpOwogCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgd2UgbWFrZSBzdXJlIEdMX0VY
VF9kcmF3X2J1ZmZlcnMgaXMgc3VwcG9ydGVkLgotICAgIEdDR0xpbnQgbWF4RHJhd0J1ZmZlcnMg
PSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQp
OwotICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IGNvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKKyAgICBHQ0dMaW50IG1h
eERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFY
X0RSQVdfQlVGRkVSU19FWFQpOworICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IGNv
bnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5U
U19FWFQpOwogICAgIGlmIChtYXhEcmF3QnVmZmVycyA8IDQgfHwgbWF4Q29sb3JBdHRhY2htZW50
cyA8IDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA3LDEwICsxMDYsMTAgQEAgYm9v
bCBXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiB3ZWIKICAgICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBmYm8pOwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciBidWZmZXJbNF0gPSB7IDAsIDAsIDAsIDAgfTsgLy8gdGV4dHVyZXMgYXJlIHJlcXVpcmVkIHRv
IGJlIGluaXRpYWxpemVkIGZvciBvdGhlciBwb3J0cy4KLSAgICBib29sIHN1cHBvcnRzRGVwdGgg
PSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJl
IikKLSAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BUkJf
ZGVwdGhfdGV4dHVyZSIpOwotICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAoY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KQotICAgICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGggPSBjb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBj
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKKyAgICBi
b29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKQorICAgICAgICB8fCBjb250ZXh0LT5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOwogICAgIFBsYXRmb3Jt
R0xPYmplY3QgZGVwdGhTdGVuY2lsID0gMDsKICAgICBpZiAoc3VwcG9ydHNEZXB0aFN0ZW5jaWwp
IHsKICAgICAgICAgZGVwdGhTdGVuY2lsID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAppbmRleCA1
MGJhY2Y1NjRmY2FmNjY2Zjg1N2JkNDkxNTYyNzk0MmNmYzUyMDczLi40OWZiMWRkZGY1OGE4ZWRm
YzAxYjQ4ZGE1ZGZmNDk3NzFmNzZlZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxF
KFdFQkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250
ZXh0R3JvdXAuaCIKICNpbmNsdWRlICJXZWJHTERyYXdCdWZmZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgpAQCAtMjc5LDIxICsyNzgsMjEgQEAgc3RhdGljIHVu
c2lnbmVkIGdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUoR0NHTGVudW0gYXR0YWNobWVudCkK
IHsKICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT0xPUl9BVFRBQ0hNRU5UMDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNI
TUVOVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQzX0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDRfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT0xPUl9BVFRBQ0hNRU5UNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQ2X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVO
VDdfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UOF9FWFQ6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ5X0VYVDoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09MT1JfQVRUQUNITUVOVDExX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1Jf
QVRUQUNITUVOVDEyX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVO
VDEzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDE0X0VYVDoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDE1X0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMV9FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNF9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09MT1JfQVRUQUNITUVOVDVfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQ2X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRB
Q0hNRU5UN19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVO
VDhfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ5X0VY
VDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTBfRVhUOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMV9FWFQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEyX0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTNfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDE1X0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkRFUFRIX0FUVEFDSE1FTlQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6
REVQVEhfQlVGRkVSX0JJVDsKQEAgLTM2Myw4ICszNjIsOCBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0
Q2xlYXJCaXRzQnlGb3JtYXQoR0NHTGVudW0gZm9ybWF0KQogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlJHQkExNkk6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTMySToKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMzJVSToKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6U1JHQl9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6
OkNPTE9SX0JVRkZFUl9CSVQ7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ09N
UE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMjQ6
CkBAIC02MzMsNyArNjMyLDcgQEAgR0NHTGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0
dXMoY29uc3QgY2hhcioqIHJlYXNvbikgY29uc3QKICAgICAgICAgR0NHTGVudW0gYXR0YWNobWVu
dEZvcm1hdCA9IGF0dGFjaG1lbnQtPmdldEZvcm1hdCgpOwogCiAgICAgICAgIC8vIEF0dGFjaGlu
ZyBhbiBTUkdCX0VYVCBmb3JtYXQgYXR0YWNobWVudCB0byBhIGZyYW1lYnVmZmVyIGlzIGludmFs
aWQuCi0gICAgICAgIGlmIChhdHRhY2htZW50Rm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6U1JHQl9F
WFQpCisgICAgICAgIGlmIChhdHRhY2htZW50Rm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpT
UkdCX0VYVCkKICAgICAgICAgICAgIGF0dGFjaG1lbnRGb3JtYXQgPSAwOwogCiAgICAgICAgIGlm
ICghYXR0YWNobWVudEZvcm1hdCkgewpAQCAtODMzLDE4ICs4MzIsMTggQEAgdm9pZCBXZWJHTEZy
YW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KGJvb2wgZm9yY2UpCiAgICAgICAgICAg
ICBpZiAoY29udGV4dCgpLT5pc1dlYkdMMigpKQogICAgICAgICAgICAgICAgIGNvbnRleHQoKS0+
Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtX2ZpbHRlcmVkRHJhd0J1
ZmZlcnMpOworICAgICAgICAgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+
ZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKICAgICAgICAgfQogICAgIH0K
IH0KIAogR0NHTGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6Z2V0RHJhd0J1ZmZlcihHQ0dMZW51bSBk
cmF3QnVmZmVyKQogewotICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJhd0J1ZmZl
ciAtIEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVCk7CisgICAgaW50IGluZGV4ID0gc3Rh
dGljX2Nhc3Q8aW50PihkcmF3QnVmZmVyIC0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVGRkVS
MF9FWFQpOwogICAgIEFTU0VSVChpbmRleCA+PSAwKTsKICAgICBpZiAoaW5kZXggPCBzdGF0aWNf
Y2FzdDxpbnQ+KG1fZHJhd0J1ZmZlcnMuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG1fZHJhd0J1
ZmZlcnNbaW5kZXhdOwotICAgIGlmIChkcmF3QnVmZmVyID09IEV4dGVuc2lvbnNHTDo6RFJBV19C
VUZGRVIwX0VYVCkKKyAgICBpZiAoZHJhd0J1ZmZlciA9PSBHcmFwaGljc0NvbnRleHRHTDo6RFJB
V19CVUZGRVIwX0VYVCkKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UMDsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKaW5kZXggNjRiMTVk
NWZmODYxM2NmZDc4NGM3ZTMxZDAyMmQ1M2JkNjEzY2VmZS4uZjFjYzU2YzlkZmIxODg0YjhiOGRl
YWEyZWVmZTU4MjdmOTJmZWU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xNdWx0aURyYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMTXVsdGlEcmF3LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNp
bmNsdWRlICJXZWJHTE11bHRpRHJhdy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDMsOCArNDIsOCBAQCBzdGF0aWMgR0NHTFNwYW48Y29uc3QgaW50PiBtYWtlU3BhbldpdGhP
ZmZzZXQoV2ViR0xNdWx0aURyYXc6OkludDMyTGlzdCYgbGlzdCwgRwogV2ViR0xNdWx0aURyYXc6
OldlYkdMTXVsdGlEcmF3KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX211bHRpX2RyYXci
X3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOworICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfbXVs
dGlfZHJhdyJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAogV2ViR0xN
dWx0aURyYXc6On5XZWJHTE11bHRpRHJhdygpID0gZGVmYXVsdDsKQEAgLTU0LDEwICs1MywxMCBA
QCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTE11bHRpRHJhdzo6Z2V0TmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMTXVsdGlEcmF3TmFtZTsKIH0KIAotYm9vbCBXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQpCitib29sIFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNv
bnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKQotICAgICAgICAmJiBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FOR0xFX211bHRpX2RyYXciX3MpCisgICAgICAgICYmIGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogfQogCiB2b2lk
IFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdBcnJheXNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQz
Mkxpc3QgZmlyc3RzTGlzdCwgR0NHTHVpbnQgZmlyc3RzT2Zmc2V0LCBJbnQzMkxpc3QgY291bnRz
TGlzdCwgR0NHTHVpbnQgY291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKaW5kZXggNjU5MjlmNTFjYWI4
YmY4OTI3YjdjOTBiZTk2YzE4ZTQ4MzE4MWQ3Ni4uNTBkNmRiODFhMmQ5NzQzODgwMGI0ZTc5ZGEz
MTJhMjAyMjI1MGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xNdWx0aURyYXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQo
R3JhcGhpY3NDb250ZXh0R0wmKTsKIAogICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzV0VCR0woR0NH
TGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3QsIEdDR0x1aW50IGZpcnN0c09mZnNldCwg
SW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNvdW50c09mZnNldCwgR0NHTHNpemVpIGRy
YXdjb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGZhNTdiYjU0MDIzZTNmZjk5NjM0YjNhOTk5MThlMDkz
Y2FhMmQ0YmIuLmM5NjBjMjYwZDA1N2EzZTM5ZDk5YzgxZDUzYmNlNDBiMjMyYzA0ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVDb21wcmVzc2lvblJH
VEMuaCIKICNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCIKICNpbmNsdWRl
ICJFWFRzUkdCLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiSFRNTENh
bnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtMTUzLDEwICsxNTIsMTAgQEAgV2ViR0xFeHRlbnNpb24q
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZyYWdEZXB0aCwgbV9leHRGcmFnRGVwdGgsICJF
WFRfZnJhZ19kZXB0aCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX2ZyYWdfZGVw
dGgiX3MpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpKSB7CiAgICAgICAgIGlmICghbV9leHRTaGFkZXJUZXh0dXJlTE9EKSB7
Ci0gICAgICAgICAgICBpZiAoIShtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygi
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpKSkKKyAgICAgICAgICAg
IGlmICghKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9zaGFkZXJf
dGV4dHVyZV9sb2QiX3MpKSkKICAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0Qg
PSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcyk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAgICAgICAgICAgICBtX2V4dFNo
YWRlclRleHR1cmVMT0QgPSBhZG9wdFJlZihuZXcgRVhUU2hhZGVyVGV4dHVyZUxPRCgqdGhpcykp
OwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0
ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KQEAgLTE2NSwzMSArMTY0LDMxIEBA
IFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIG5hbWUpCiAgICAgfQogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgIkVYVF90
ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xf
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVDb21wcmVzc2lvblJH
VEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7Ci0gICAgRU5BQkxFX0lG
X1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJD
b21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJD
b21waWxlOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEtIUlBh
cmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJLSFJfcGFy
YWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNTdGFuZGFyZERlcml2
YXRpdmVzLCBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMsICJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0LCBtX29lc1Rl
eHR1cmVGbG9hdCwgIk9FU190ZXh0dXJlX2Zsb2F0IiwgT0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0
ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9v
ZXNUZXh0dXJlRmxvYXQsICJPRVNfdGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVG
bG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdCwg
bV9vZXNUZXh0dXJlSGFsZkZsb2F0LCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIsIE9FU1RleHR1
cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
T0VTVGV4dHVyZUhhbGZGbG9hdCwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0LCAiT0VTX3RleHR1cmVf
aGFsZl9mbG9hdCIsIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7
CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLCBtX29l
c1RleHR1cmVIYWxmRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIs
IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1ZlcnRleEFycmF5T2JqZWN0LCBt
X29lc1ZlcnRleEFycmF5T2JqZWN0LCAiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiLCBlbmFibGVT
dXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNFbGVtZW50SW5kZXhVaW50LCBtX29lc0VsZW1lbnRJbmRl
eFVpbnQsICJPRVNfZWxlbWVudF9pbmRleF91aW50IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Il9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChPRVNGQk9SZW5kZXJNaXBtYXAsIG1fb2VzRkJPUmVuZGVyTWlwbWFwLCAiT0VTX2Zib19yZW5k
ZXJfbWlwbWFwIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfZmJvX3JlbmRlcl9t
aXBtYXAiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTG9zZUNvbnRleHQsIG1f
d2ViZ2xMb3NlQ29udGV4dCwgIldFQkdMX2xvc2VfY29udGV4dCIsIHRydWUpOwotICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMsIG1fd2ViZ2xDb21wcmVz
c2VkVGV4dHVyZUFTVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyIsIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVR
VUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMSwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDMSwgIldFQkdMX2Nv
bXByZXNzZWRfdGV4dHVyZV9ldGMxIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBv
cnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9j
b21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9y
dGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjX3NyZ2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBv
cnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFTVEMsICJXRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfYXN0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKm1f
Y29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNz
ZWRfdGV4dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1f
Y29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0
dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSwg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDMSwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9l
dGMxIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7
CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1f
d2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2Nv
bnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9j
b250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9zM3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqbV9jb250
ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVwdGhU
ZXh0dXJlLCBtX3dlYmdsRGVwdGhUZXh0dXJlLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIsIFdlYkdM
RGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kcmF3X2J1ZmZlcnMiKSkgewogICAgICAgICBpZiAo
IW1fd2ViZ2xEcmF3QnVmZmVycykgewogICAgICAgICAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZm
ZXJzKCkpCiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOworICAgICAgICAgICAg
ICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVy
cyJfcyk7CiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gYWRvcHRSZWYobmV3
IFdlYkdMRHJhd0J1ZmZlcnMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAg
ICB9CkBAIC0xOTgsMTAgKzE5NywxMCBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIH0KICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKSB7
CiAgICAgICAgIGlmICghbV9hbmdsZUluc3RhbmNlZEFycmF5cykgewotICAgICAgICAgICAgaWYg
KCFBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICAgICAgICAgIGlm
ICghQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAg
ICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVu
YWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOworICAgICAgICAgICAgICAgIG1f
Y29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5
cyJfcyk7CiAgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IGFkb3B0UmVm
KG5ldyBBTkdMRUluc3RhbmNlZEFycmF5cygqdGhpcykpOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAg
ICAgICAgICAgIH0KQEAgLTIwOSwxMSArMjA4LDExIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAg
IHJldHVybiBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzLmdldCgpOwogICAgIH0KICAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMRGVidWdSZW5kZXJlckluZm8sIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVy
SW5mbywgIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZf
UkVRVUVTVEVEKFdlYkdMRGVidWdTaGFkZXJzLCBtX3dlYmdsRGVidWdTaGFkZXJzLCAiV0VCR0xf
ZGVidWdfc2hhZGVycyIsIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9B
TkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiX3MpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAi
RVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhURmxvYXRCbGVuZCwg
bV9leHRGbG9hdEJsZW5kLCAiRVhUX2Zsb2F0X2JsZW5kIiwgRVhURmxvYXRCbGVuZDo6c3VwcG9y
dGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbG9yQnVmZmVyRmxv
YXQsIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0LCAiV0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0Iiwg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZf
UkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlf
ZHJhdyIsIFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZf
UkVRVUVTVEVEKFdlYkdMRGVidWdTaGFkZXJzLCBtX3dlYmdsRGVidWdTaGFkZXJzLCAiV0VCR0xf
ZGVidWdfc2hhZGVycyIsIG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3Ry
YW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhU
Q29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29sb3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29s
b3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1f
ZXh0RmxvYXRCbGVuZCwgIkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbG9yQnVmZmVy
RmxvYXQsIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0LCAiV0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0
IiwgV2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xNdWx0aURyYXcsIG1fd2ViZ2xNdWx0aURyYXcsICJXRUJH
TF9tdWx0aV9kcmF3IiwgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTIyNyw2OSArMjI2LDY5IEBAIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFN0cmluZz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0
ZW5zaW9ucygpCiAgICAgaWYgKG1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF9ibGVuZF9taW5tYXgiX3MpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJFWFRfYmxlbmRfbWlubWF4Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zUkdCIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfRVhUX3NSR0IiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfc1JHQiJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRl
bnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhU
X2ZyYWdfZGVwdGgiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpCisgICAg
aWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVh
ciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9P
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIi
X3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0X2xpbmVhciJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0
dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJfcykpCisgICAgaWYg
KG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJf
cyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
c2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpIHx8IG1fY29u
dGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKLSAgICBp
ZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3JndGMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcyk7Ci0gICAgaWYgKG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdmVydGV4X2FycmF5
X29iamVjdCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdM
X09FU19lbGVtZW50X2luZGV4X3VpbnQiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Il9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiT0VTX2VsZW1lbnRfaW5kZXhfdWludCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZmJvX3JlbmRlcl9t
aXBtYXAiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfZmJvX3JlbmRlcl9taXBtYXAi
X3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2xvc2VfY29udGV4dCJfcyk7Ci0gICAgaWYg
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyJfcyk7Ci0gICAg
aWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYg
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiX3Mp
OwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQor
ICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiX3Mp
OwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSkK
KyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEi
X3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhp
cykpIHsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1f
Y29udGV4dCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNz
ZWRfdGV4dHVyZV9wdnJ0YyJfcyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9wdnJ0YyJfcyk7CiAgICAgfQotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIl9zKTsKICAgICBp
ZiAoV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSJfcyk7CiAgICAgaWYgKHN1cHBvcnRzRHJh
d0J1ZmZlcnMoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZHJhd19idWZmZXJzIl9z
KTsKLSAgICBpZiAoQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAg
aWYgKEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFk
ZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
QU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVi
dWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0Ojpz
dXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9y
dGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3JfYnVmZmVy
X2hhbGZfZmxvYXQiX3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMp
KQorICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKFdlYkdMQ29sb3JC
dWZmZXJGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb2xvckJ1ZmZlckZs
b2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxl
bF9zaGFkZXJfY29tcGlsZSIpOwotICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCp0
aGlzKSkKKyAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbXVsdGlfZHJhdyJfcyk7CiAKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMzMwLDcgKzMyOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdlCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxXZWJHTFRleHR1cmU+KG9iamVjdCk7
CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDoKKyAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9F
TkNPRElOR19FWFQ6CiAgICAgICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQiKTsKQEAgLTM0Mywx
NiArMzQyLDE2IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdlCiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVIpOwog
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9OQU1FOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xS
ZW5kZXJidWZmZXI+KG9iamVjdCk7Ci0gICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogeworICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDog
ewogICAgICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKICAgICAgICAgICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHJlbmRl
cmJ1ZmZlciBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IHJlbmRl
ckJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXIqPihvYmplY3QuZ2V0
KCkpOwogICAgICAgICAgICAgR0NHTGVudW0gcmVuZGVyQnVmZmVyRm9ybWF0ID0gcmVuZGVyQnVm
ZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwotICAgICAgICAgICAgQVNTRVJUKHJlbmRlckJ1ZmZl
ckZvcm1hdCAhPSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUICYmIHJlbmRlckJ1ZmZlckZvcm1hdCAh
PSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJC
dWZmZXJGb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUKQotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRXh0ZW5zaW9uc0dMOjpTUkdCX0VY
VCk7CisgICAgICAgICAgICBBU1NFUlQocmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0
R0w6OlNSR0JfQUxQSEFfRVhUKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJCdWZmZXJGb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0I4X0FMUEhBOF9FWFQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQp
OwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRl
eHRHTDo6TElORUFSKTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMzY3LDkgKzM2
Niw5IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycygp
CiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29u
dGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAg
ICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFj
aG1lbnRzKQotICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldElu
dGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKKyAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29u
dGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1
ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMu
CiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyk7CiB9CkBAIC0zNzksNyArMzc4LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVy
cygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykK
LSAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4
dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29s
b3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6
TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JBdHRhY2ht
ZW50czsKIH0KIApAQCAtNDU0LDkgKzQ1Myw5IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMCiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19BREQ6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6RlVOQ19TVUJUUkFDVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGVU5D
X1JFVkVSU0VfU1VCVFJBQ1Q6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6Ok1JTl9FWFQ6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6Ok1BWF9FWFQ6Ci0gICAgICAgIGlmICgobW9kZSA9PSBFeHRlbnNp
b25zR0w6Ok1JTl9FWFQgfHwgbW9kZSA9PSBFeHRlbnNpb25zR0w6Ok1BWF9FWFQpICYmICFtX2V4
dEJsZW5kTWluTWF4KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUlOX0VYVDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRVhUOgorICAgICAgICBpZiAoKG1vZGUgPT0g
R3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQgfHwgbW9kZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6
TUFYX0VYVCkgJiYgIW1fZXh0QmxlbmRNaW5NYXgpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImlu
dmFsaWQgbW9kZSIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCmluZGV4IGI4YjVmYjY1YWNmNDEyZTkzMjI1MjQ1YTQxYTVkODE4MTU1NWQ2ODEu
LmE1ZWU4ZTM3NWEzNTNlOGM4OTI0Yzg2MDcwNjhhYjY0Y2Y2ODgxN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTU1NSwxMiAr
NTU0LDEyIEBAIHN0YXRpYyB1aW50OF90IGdldENoYW5uZWxCaXRzQnlGb3JtYXQoR0NHTGVudW0g
Zm9ybWF0KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4oQ2hhbm5lbEJpdHM6
OlJHQkEpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjoKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpSR0I1NjU6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUOgogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oQ2hhbm5lbEJpdHM6OlJHQik7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBNDoKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0I1X0ExOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JB
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DT01QT05FTlQxNjoKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DT01QT05FTlQ6CkBAIC02NDMsOCArNjQyLDgg
QEAgc3RhdGljIGJvb2wgcG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQoR0NH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0wKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6
OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlRfMjRfOCk7CiAg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRI
MjRfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBHcmFwaGljc0Nv
bnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDMyRl9TVEVOQ0lMOCwgR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF8zMl9VTlNJR05F
RF9JTlRfMjRfOF9SRVYpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVu
c2lvbnNHTDo6U1JHQl9FWFQsIEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQsIEdyYXBoaWNzQ29udGV4
dEdMOjpVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShF
eHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhULCBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhU
LCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQl9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBI
QV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VYVCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC0xMDkxLDE3ICsxMDkwLDE3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6c2V0dXBGbGFncygpCiAgICAgLy8gdHVybmluZyBpdCBvZmYgY2F1c2VzIHByb2JsZW1z
LgogICAgIG1faXNHTEVTMkNvbXBsaWFudCA9IG1fY29udGV4dC0+aXNHTEVTMkNvbXBsaWFudCgp
OwogICAgIGlmIChtX2lzR0xFUzJDb21wbGlhbnQpIHsKLSAgICAgICAgbV9pc0dMRVMyTlBPVFN0
cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX09FU190ZXh0
dXJlX25wb3QiKTsKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5p
c0V4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiKTsKKyAgICAgICAgbV9pc0Rl
cHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSB8fCBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOwogICAgIH0gZWxzZSB7CiAjaWYgVVNFKEFOR0xF
KQogICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gdHJ1ZTsKICNlbHNlCi0gICAgICAgIG1f
aXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVk
KCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIik7CisgICAgICAgIG1faXNHTEVTMk5Q
T1RTdHJpY3QgPSAhbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl90ZXh0dXJl
X25vbl9wb3dlcl9vZl90d28iKTsKICNlbmRpZgotICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3Vw
cG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJs
ZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsKKyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1
cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwiKSB8fCBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVf
ZGVwdGhfdGV4dHVyZSIpOwogICAgIH0KLSAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3JvYnVzdG5lc3Mi
KTsKKyAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNp
b25FbmFibGVkKCJHTF9FWFRfcm9idXN0bmVzcyIpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkK
QEAgLTMzMDMsOSArMzMwMiw5IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICAgICAgcmV0dXJuICJXZWJHTCAxLjAi
X3N0cjsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpWSUVXUE9SVDoKICAgICAgICAgcmV0
dXJuIGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzCisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVS
X0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwogICAgICAg
ICBpZiAobV9vZXNTdGFuZGFyZERlcml2YXRpdmVzKQotICAgICAgICAgICAgcmV0dXJuIGdldFVu
c2lnbmVkSW50UGFyYW1ldGVyKEV4dGVuc2lvbnNHTDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJ
VkVfSElOVF9PRVMpOworICAgICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVy
KEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyk7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VO
VU0sICJnZXRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGNhc2UgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6VU5NQVNLRURfUkVOREVSRVJfV0VCR0w6CkBA
IC0zMzM2LDI1ICszMzM1LDI1IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICAgICAgfQogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IG5vdCBl
bmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9URVhUVVJFX01BWF9B
TklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCiAgICAgICAg
IGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykKLSAgICAgICAgICAgIHJldHVybiBn
ZXRVbnNpZ25lZEludFBhcmFtZXRlcihFeHRlbnNpb25zR0w6Ok1BWF9URVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVCk7CisgICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIo
R3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCk7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJn
ZXRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUOiAvLyBFWFRfZHJh
d19idWZmZXJzIEJFR0lOCisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9SX0FU
VEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVmZmVycyBCRUdJTgogICAgICAgICBpZiAobV93
ZWJnbERyYXdCdWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0TWF4
Q29sb3JBdHRhY2htZW50cygpOwogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUsIFdFQkdMX2RyYXdfYnVmZmVycyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQ6CiAgICAgICAg
IGlmIChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkKICAgICAgICAgICAgIHJldHVy
biBnZXRNYXhEcmF3QnVmZmVycygpOwogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1l
dGVyIG5hbWUsIFdFQkdMX2RyYXdfYnVmZmVycyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoKG1fd2ViZ2xEcmF3QnVmZmVy
cyB8fCBpc1dlYkdMMigpKQotICAgICAgICAgICAgJiYgcG5hbWUgPj0gRXh0ZW5zaW9uc0dMOjpE
UkFXX0JVRkZFUjBfRVhUCi0gICAgICAgICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xl
bnVtPihFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQgKyBnZXRNYXhEcmF3QnVmZmVycygp
KSkgeworICAgICAgICAgICAgJiYgcG5hbWUgPj0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVG
RkVSMF9FWFQKKyAgICAgICAgICAgICYmIHBuYW1lIDwgc3RhdGljX2Nhc3Q8R0NHTGVudW0+KEdy
YXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkp
IHsKICAgICAgICAgICAgIEdDR0xpbnQgdmFsdWUgPSBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORTsK
ICAgICAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZykKICAgICAgICAgICAgICAgICB2
YWx1ZSA9IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXREcmF3QnVmZmVyKHBuYW1lKTsKQEAgLTMz
NzIsNyArMzM3MSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBy
b2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgLy8gQ09NUExFVElP
Tl9TVEFUVVNfS0hSIHNob3VsZCBhbHdheXMgcmV0dXJuIHRydWUgaWYgdGhlIGNvbnRleHQgaXMg
bG9zdCwgc28gYXBwbGljYXRpb25zCiAgICAgLy8gZG9uJ3QgZ2V0IHN0dWNrIGluIGFuIGluZmlu
aXRlIHBvbGxpbmcgbG9vcC4KICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKSB7Ci0g
ICAgICAgIGlmIChwbmFtZSA9PSBFeHRlbnNpb25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUikK
KyAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QTEVUSU9OX1NUQVRV
U19LSFIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQpAQCAtMzM5OSw3ICszMzk4LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgfQogI2VuZGlmIC8vIFVTRShBTkdMRSkK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKICAgICAgICAgaWYgKG1f
a2hyUGFyYWxsZWxTaGFkZXJDb21waWxlKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUpKTsK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5V
TSwgImdldFByb2dyYW1QYXJhbWV0ZXIiLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIG5v
dCBlbmFibGVkIik7CkBAIC0zNTAzLDcgKzM1MDIsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NH
TAogICAgIC8vIENPTVBMRVRJT05fU1RBVFVTX0tIUiBzaG91bGQgYWx3YXlzIHJldHVybiB0cnVl
IGlmIHRoZSBjb250ZXh0IGlzIGxvc3QsIHNvIGFwcGxpY2F0aW9ucwogICAgIC8vIGRvbid0IGdl
dCBzdHVjayBpbiBhbiBpbmZpbml0ZSBwb2xsaW5nIGxvb3AuCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkgewotICAgICAgICBpZiAocG5hbWUgPT0gRXh0ZW5zaW9uc0dMOjpDT01Q
TEVUSU9OX1NUQVRVU19LSFIpCisgICAgICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTM1MTcsNyArMzUxNiw3IEBAIFdlYkdMQW55
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRl
ciYgc2hhZGVyLCBHQ0dMCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRl
eHQtPmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlNIQURFUl9UWVBFOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIHBuYW1lKSk7Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2to
clBhcmFsbGVsU2hhZGVyQ29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAi
Z2V0U2hhZGVyUGFyYW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5h
YmxlZCIpOwpAQCAtMzU4Niw3ICszNTg1LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4KICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUzoKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSkpOwot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhU
X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYwogICAgICAgICBpZiAobV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCiAgICAgICAg
ICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOwog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVN
LCAiZ2V0VGV4UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3QgZW5hYmxlZCIpOwpAQCAtMzk1OSw3ICszOTU4LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gbW9kZSkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpHRU5FUkFURV9NSVBNQVBf
SElOVDoKICAgICAgICAgaXNWYWxpZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VT
X3N0YW5kYXJkX2Rlcml2YXRpdmVzLCBvciBjb3JlIGluIFdlYkdMIDIuMAorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTOiAvLyBP
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMsIG9yIGNvcmUgaW4gV2ViR0wgMi4wCiAgICAgICAgIGlm
IChtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMgfHwgaXNXZWJHTDIoKSkKICAgICAgICAgICAgIGlz
VmFsaWQgPSB0cnVlOwogICAgICAgICBicmVhazsKQEAgLTQ2MTAsOCArNDYwOSw4IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVuZGVyYnVmZmVyU3RvcmFnZUltcGwoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCNV9BMToK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0I1NjU6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6U1RFTkNJTF9JTkRFWDg6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0I4X0FM
UEhBOF9FWFQ6Ci0gICAgICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNS
R0I4X0FMUEhBOF9FWFQgJiYgIW1fZXh0c1JHQikgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlNSR0I4X0FMUEhBOF9FWFQ6CisgICAgICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6U1JHQjhfQUxQSEE4X0VYVCAmJiAhbV9leHRzUkdCKSB7CiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIGludGVybmFsZm9ybWF0Iik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTQ2MjIsNyArNDYyMSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cmVuZGVyYnVmZmVyU3RvcmFnZUltcGwoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1NU
RU5DSUw6CiAgICAgICAgIGlmIChpc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCgpKQotICAgICAgICAg
ICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgRXh0ZW5zaW9uc0dMOjpE
RVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+
cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NU
RU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5z
ZXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmctPnNl
dElzVmFsaWQoaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSk7CiAgICAgICAgIG1fcmVuZGVyYnVm
ZmVyQmluZGluZy0+c2V0SW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOwpAQCAtNTYxNiw4
ICs1NjE1LDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1
bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW8KICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
U1JHQl9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICBpZiAoIW1fZXh0c1JHQikgewogICAgICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVu
Y3Rpb25OYW1lLCAic1JHQiB0ZXh0dXJlIGZvcm1hdHMgbm90IGVuYWJsZWQiKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTU3NzUsNyArNTc3NCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBm
dW5jdGlvCiAgICAgSU5URVJOQUxfRk9STUFUX0NBU0UoREVQVEhfU1RFTkNJTCAgICAgLCBERVBU
SF9TVEVOQ0lMICAsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlRfMjRfOCAgICAgICAg
ICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSU5URVJOQUxf
Rk9STUFUX0NBU0UoREVQVEgyNF9TVEVOQ0lMOCAgLCBERVBUSF9TVEVOQ0lMICAsIEdyYXBoaWNz
Q29udGV4dEdMOjpVTlNJR05FRF9JTlRfMjRfOCAgICAgICAgICAgICAsIDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgSU5URVJOQUxfRk9STUFUX0NBU0UoREVQVEgzMkZf
U1RFTkNJTDggLCBERVBUSF9TVEVOQ0lMICAsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF8zMl9V
TlNJR05FRF9JTlRfMjRfOF9SRVYsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwg
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlNSR0JfRVhUOgogICAgICAgICBpZiAoZm9ybWF0ICE9IGludGVybmFsRm9ybWF0KSB7
CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImZvcm1hdCBhbmQgaW50ZXJuYWxmb3JtYXQgbXVz
dCBtYXRjaCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc4NSw3ICs1Nzg0LDcg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRB
bmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW8KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBI
QV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAg
ICAgIGlmIChmb3JtYXQgIT0gaW50ZXJuYWxGb3JtYXQpIHsKICAgICAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25O
YW1lLCAiZm9ybWF0IGFuZCBpbnRlcm5hbGZvcm1hdCBtdXN0IG1hdGNoIik7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC01OTY4LDcgKzU5NjcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3Rl
eHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3Bp
YwogICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7CiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAi
dGV4UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYzODUsNyAr
NjM4NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBs
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3RDCiAgICAgICAgIGF1dG8qIGNhbnZhcyA9
IGh0bWxDYW52YXMoKTsKICAgICAgICAgaWYgKGNhbnZhcykgewogICAgICAgICAgICAgaWYgKFJl
ZlB0cjxGcmFtZT4gZnJhbWUgPSBjYW52YXMtPmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAg
ICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOworICAg
ICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2ViR0xDb250ZXh0
KG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtNjg5OCwxOCArNjg5NywxOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAg
ICAgICBCbG9ja1BhcmFtZXRlcnMgeyAxMiwgMTAsIGtBU1RDQmxvY2tTaXplIH0sCiAgICAgICAg
IEJsb2NrUGFyYW1ldGVycyB7IDEyLCAxMiwga0FTVENCbG9ja1NpemUgfQogICAgIH07Ci0gICAg
Y29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFJHQkEgPSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzR4NF9LSFI7Ci0gICAgY29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFNS
R0I4ID0gRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI7
CisgICAgY29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFJHQkEgPSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjsKKyAgICBjb25zdCBHQ0dMZW51bSBBU1RD
RW51bVN0YXJ0U1JHQjggPSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ180eDRfS0hSOwogCiAgICAgY29uc3QgaW50IGtFQUNBbmRFVEMyQmxvY2tTaXplID0g
NDsKIAogICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NSR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9T
UkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfQVRDX1JHQl9BTUQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkVUQzFfUkdCOF9PRVM6IHsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFf
RVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RY
VDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
QVRDX1JHQl9BTUQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzog
ewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgIGNvbnN0IGludCBr
QmxvY2tXaWR0aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpAQCAt
NjkxOCwxMiArNjkxNywxMiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICBieXRl
c1JlcXVpcmVkID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93biAqIGtCbG9ja1NpemU7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19F
WFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1Mz
VENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENf
UkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EOgogICAgICAgICB7CiAgICAg
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OwogICAgICAgICAgICAgY29uc3QgaW50
IGtCbG9ja1dpZHRoID0gNDsKQEAgLTY5MzMsOCArNjkzMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciog
ZnVuY3RpCiAgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tzQWNyb3NzICogbnVt
QmxvY2tzRG93biAqIGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBW
MV9JTUc6CiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsK
ICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDg7CkBAIC02OTQyLDggKzY5NDEs
OCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRl
eEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9
IChzdGQ6Om1heCh3aWR0aCwga0Jsb2NrV2lkdGgpICogc3RkOjptYXgoaGVpZ2h0LCBrQmxvY2tI
ZWlnaHQpICogNCArIDcpIC8ga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRzoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYx
X0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENf
MkJQUFYxX0lNRzoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUg
PSA4OwogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gMTY7CkBAIC02OTUxLDQ0
ICs2OTUwLDQ0IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21w
cmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBieXRlc1Jl
cXVpcmVkID0gKHN0ZDo6bWF4KHdpZHRoLCBrQmxvY2tXaWR0aCkgKiBzdGQ6Om1heChoZWlnaHQs
IGtCbG9ja0hlaWdodCkgKiAyICsgNykgLyBrQmxvY2tTaXplOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9L
SFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4
MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzEyeDEyX0tIUjoKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNhbGN1bGF0ZUJ5dGVzRm9yQVNU
Qyh3aWR0aCwgaGVpZ2h0LCBBU1RDUGFyYW1ldGVyc1tmb3JtYXQgLSBBU1RDRW51bVN0YXJ0UkdC
QV0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfMTB4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFI6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzV4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
OHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEy
eDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEyeDEyX0tIUjoKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNhbGN1bGF0ZUJ5
dGVzRm9yQVNUQyh3aWR0aCwgaGVpZ2h0LCBBU1RDUGFyYW1ldGVyc1tmb3JtYXQgLSBBU1RDRW51
bVN0YXJ0U1JHQjhdKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUjExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdO
RURfUjExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQ
SEExX0VUQzI6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9F
QUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VB
QzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
RVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMjogewogICAgICAgICBDaGVja2VkVWludDMyIGNoZWNrZWRCeXRl
c1JlcXVpcmVkID0gKHdpZHRoICsga0VBQ0FuZEVUQzJCbG9ja1NpemUgLSAxKSAvIGtFQUNBbmRF
VEMyQmxvY2tTaXplOwogICAgICAgICBjaGVja2VkQnl0ZXNSZXF1aXJlZCAqPSAoaGVpZ2h0ICsg
a0VBQ0FuZEVUQzJCbG9ja1NpemUgLSAxKSAvIGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAg
ICBjaGVja2VkQnl0ZXNSZXF1aXJlZCAqPSA4OwpAQCAtNjk5OSwxMCArNjk5OCwxMCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2hlY2tlZEJ5dGVz
UmVxdWlyZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9T
SUdORURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0VUQzJfRUFDOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRzEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0VUQzJfRUFDOiB7CiAgICAgICAgIENoZWNrZWRVaW50MzIgY2hlY2tlZEJ5dGVzUmVxdWlyZWQg
PSAod2lkdGggKyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0FuZEVUQzJCbG9ja1Np
emU7CiAgICAgICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IChoZWlnaHQgKyBrRUFDQW5kRVRD
MkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0FuZEVUQzJCbG9ja1NpemU7CiAgICAgICAgIGNoZWNrZWRC
eXRlc1JlcXVpcmVkICo9IDE2OwpAQCAtNzAxMyw4ICs3MDEyLDggQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFy
KiBmdW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkVEX1JHVEMxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURf
UkVEX1JHVEMxX0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkVEX1JHVEMxX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJ
R05FRF9SRURfUkdUQzFfRVhUOiB7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsK
ICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgaW50IGtC
bG9ja0hlaWdodCA9IDQ7CkBAIC03MDIzLDggKzcwMjIsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1
bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tz
RG93biAqIGtCbG9ja1NpemU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOiB7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RD
Ml9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSAxNjsKICAgICAgICAgY29u
c3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9
IDQ7CkBAIC03MDQ5LDE0ICs3MDQ4LDE0IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lv
bnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0KQog
ewogICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9T
M1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQ
SEFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
X0FMUEhBX1MzVENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VY
VDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQ1X0VYVDogewogICAgICAgICBjb25zdCBHQ0dMc2l6ZWkga0Jsb2NrV2lkdGggPSA0Owog
ICAgICAgICBjb25zdCBHQ0dMc2l6ZWkga0Jsb2NrSGVpZ2h0ID0gNDsKICAgICAgICAgY29uc3Qg
R0NHTGludCBtYXhUZXh0dXJlU2l6ZSA9IHRhcmdldCA/IG1fbWF4VGV4dHVyZVNpemUgOiBtX21h
eEN1YmVNYXBUZXh0dXJlU2l6ZTsKQEAgLTcwNjksNTUgKzcwNjgsNTUgQEAgYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0
IGNoYXIqIGZ1bmMKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRzoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1H
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBW
MV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRD
XzRCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JB
X1BWUlRDXzJCUFBWMV9JTUc6CiAgICAgICAgIC8vIEhlaWdodCBhbmQgd2lkdGggbXVzdCBiZSBw
b3dlcnMgb2YgMi4KICAgICAgICAgaWYgKCh3aWR0aCAmICh3aWR0aCAtIDEpKSB8fCAoaGVpZ2h0
ICYgKGhlaWdodCAtIDEpKSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJ3aWR0aCBvciBo
ZWlnaHQgaW52YWxpZCBmb3IgbGV2ZWwiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
OHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4
X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUjoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4
NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ182eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEyeDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMngxMl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkVUQzFfUkdCOF9PRVM6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUjExX0VBQzoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9TSUdORURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQ
SEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hU
SFJPVUdIX0FMUEhBMV9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkE4X0VUQzJfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ180eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRf
S0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfNXg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzV4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184
eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfOHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEw
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEyeDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpFVEMxX1JHQjhfT0VTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UjExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9S
MTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VU
QzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9FVEMyX0VBQzoKICAgICAgICAgLy8gTm8gaGVpZ2h0IGFuZCB3aWR0aCBy
ZXN0cmljdGlvbnMgb24gQVNUQywgRVRDMSBvciBFVEMyLgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBkZWZhdWx0OgpAQCAtNzEzMywxNCArNzEzMiwxNCBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoY29uc3QgY2hh
ciogZgogICAgIH0KIAogICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQx
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NS
R0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGgg
PSA0OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKICAgICAgICAgaWYgKCh4
b2Zmc2V0ICUga0Jsb2NrV2lkdGgpIHx8ICh5b2Zmc2V0ICUga0Jsb2NrSGVpZ2h0KSkgewpAQCAt
NzE1NCwxMCArNzE1MywxMCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoY29uc3QgY2hhciogZgogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGZ1bmN0aW9uTmFt
ZSwgdGFyZ2V0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0KTsKICAgICB9Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRzogeworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYx
X0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENf
NEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UFZSVENfMkJQUFYxX0lNRzogewogICAgICAgICBpZiAoeG9mZnNldCB8fCB5b2Zmc2V0KSB7CiAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9P
UEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgInhvZmZzZXQgYW5kIHlvZmZzZXQgbXVzdCBiZSB6ZXJv
Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MTY5LDE5ICs3MTY4LDE5IEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGlt
ZW5zaW9ucyhjb25zdCBjaGFyKiBmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
Q29tcHJlc3NlZFRleERpbWVuc2lvbnMoZnVuY3Rpb25OYW1lLCB0YXJnZXQsIGxldmVsLCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQpOwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RVRDMV9S
R0I4X09FUzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhfT0VTOgogICAg
ICAgICAvLyBOb3Qgc3VwcG9ydGVkIGZvciBFVEMxX1JHQjhfT0VTIHRleHR1cmVzLgogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUjExX0VB
QzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9Q
VU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUjExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1NJR05FRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkcxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
SUdORURfUkcxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0I4X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9F
VEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogewogICAgICAgICBpZiAodGFy
Z2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzNEKSB7CiAgICAgICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0
aW9uTmFtZSwgIm5vdCBzdXBwb3J0ZWQgb24gVEVYVFVSRV8zRCB0ZXh0dXJlcyIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzY5OCw3ICs3Njk3LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkKICAgICBpZiAoIW1fcmVzdG9y
ZUFsbG93ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBjb250ZXh0TG9zdFJlYXNvbiA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsK
KyAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKTsKIAogICAgIHN3aXRjaCAoY29udGV4dExvc3RSZWFzb24pIHsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjoKQEAgLTc3MDcsMTUgKzc3MDYsMTUgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkKICAgICAg
ICAgLy8gV0VCR0xfbG9zZV9jb250ZXh0IGV4dGVuc2lvbiBtaWdodCBoYXZlIGJlZW4gdXNlZCB0
byBmb3JjZQogICAgICAgICAvLyBhIGxvc3QgY29udGV4dC4KICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkdVSUxUWV9DT05URVhUX1JFU0VUX0FSQjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIFRo
ZSByZW5kZXJpbmcgY29udGV4dCBpcyBub3QgcmVzdG9yZWQgaWYgdGhpcyBjb250ZXh0IHdhcwog
ICAgICAgICAvLyBndWlsdHkgb2YgY2F1c2luZyB0aGUgZ3JhcGhpY3MgcmVzZXQuCiAgICAgICAg
IHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldBUk5JTkc6IFdlYkdMIGNv
bnRlbnQgb24gdGhlIHBhZ2UgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvIHJlc2V0OyBub3Qg
cmVzdG9yaW5nIHRoZSBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6SU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6SU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIEFsd2F5cyBh
bGxvdyB0aGUgY29udGV4dCB0byBiZSByZXN0b3JlZC4KICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OlVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkI6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8gV2Fy
bi4gSWRlYWxseSwgcHJvbXB0IHRoZSB1c2VyIHRlbGxpbmcgdGhlbSB0aGF0IFdlYkdMCiAgICAg
ICAgIC8vIGNvbnRlbnQgb24gdGhlIHBhZ2UgbWlnaHQgaGF2ZSBjYXVzZWQgdGhlIGdyYXBoaWNz
IGNhcmQgdG8KICAgICAgICAgLy8gcmVzZXQgYW5kIGFzayB0aGVtIHdoZXRoZXIgdGhleSB3YW50
IHRvIGNvbnRpbnVlIHJ1bm5pbmcKQEAgLTc4ODIsOSArNzg4MSw5IEBAIEdDR0xpbnQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFX
X0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6
Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtNzg5
NCw3ICs3ODkzLDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhD
b2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1f
bWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6
Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVu
dHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9B
VFRBQ0hNRU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAK
QEAgLTgwMzksMTEgKzgwMzgsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXYKIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKEFTQ0lJTGl0
ZXJhbCBleHRlbnNpb25OYW1lTGl0ZXJhbCkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0KTsKLSAg
ICBhdXRvJiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CiAgICAgU3Ry
aW5nIGV4dGVuc2lvbk5hbWUgeyBleHRlbnNpb25OYW1lTGl0ZXJhbCB9OwotICAgIGlmICghZXh0
ZW5zaW9ucy5zdXBwb3J0cyhleHRlbnNpb25OYW1lKSkKKyAgICBpZiAoIW1fY29udGV4dC0+c3Vw
cG9ydHNFeHRlbnNpb24oZXh0ZW5zaW9uTmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9uTmFtZSk7CisgICAgbV9jb250ZXh0
LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbk5hbWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuY3BwCmluZGV4IDcyYjk2ODhlNmY5NWVmYzJjMDA5OWVlYmQ1ZGVj
ZDQzM2VkNjlhY2YuLmUxMjExNmQ4MGU2MDM5YzdjZDgyM2IzOWM5MTg1ZWMyNzAzY2E4ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
ICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggN2E3YTFiNWYyNGM1
OGMwODljMjA5ZjJlZjMwMzUzMzEzNDQ2MTc3OC4uNzk0MzVhM2FjMjQ3NTZmN2Y5ZDk0YTU5MjZj
MjAxNmU5MTE2NzIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTM0MSw3ICszNDEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZp
cnR1YWwgYm9vbCBhbGxvd1dlYkdMKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVybiBl
bmFibGVkUGVyU2V0dGluZ3M7IH0KICAgICAvLyBJbmZvcm1zIHRoZSBlbWJlZGRlciB0aGF0IGEg
V2ViR0wgY2FudmFzIGluc2lkZSB0aGlzIGZyYW1lIHJlY2VpdmVkIGEgbG9zdCBjb250ZXh0Ci0g
ICAgLy8gbm90aWZpY2F0aW9uIHdpdGggdGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0
L2lubm9jZW5jZSBjb2RlIChzZWUgRXh0ZW5zaW9uc0dMLmgpLgorICAgIC8vIG5vdGlmaWNhdGlv
biB3aXRoIHRoZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9pbm5vY2VuY2UgY29kZSAo
c2VlIEdyYXBoaWNzQ29udGV4dEdMLmgpLgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlV2ViR0xD
b250ZXh0KGludCkgeyB9CiAgICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lG
b3JVUkwoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFs
bG93Q3JlYXRpb247IH0KICAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpX
ZWJHTEFsbG93Q3JlYXRpb247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MDc2MzA4
YzU4YTBiZDQ1OTM5YjBhN2JjNWU2MjRkNTY0ZWI1MTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uc0dMLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMDEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCi0KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBUaGlzIGlz
IGEgYmFzZSBjbGFzcyBjb250YWluaW5nIG9ubHkgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucy4KLS8v
IEltcGxlbWVudGF0aW9ucyBtdXN0IHByb3ZpZGUgYSBzdWJjbGFzcy4KLS8vCi0vLyBUaGUgc3Vw
cG9ydGVkIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQgYmVsb3cgYW5kIGluIHN1YmNsYXNzZXMsCi0v
LyBwb3NzaWJseSBwbGF0Zm9ybS1zcGVjaWZpYyBvbmVzLgotLy8KLS8vIENhbGxpbmcgYW55IGV4
dGVuc2lvbiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IGNvbnRleHQKLS8v
IG11c3QgYmUgYSBuby1vcDsgaW4gcGFydGljdWxhciwgaXQgbWF5IG5vdCBoYXZlIHNpZGUgZWZm
ZWN0cy4gSW4KLS8vIHRoaXMgc2l0dWF0aW9uLCBpZiB0aGUgZnVuY3Rpb24gaGFzIGEgcmV0dXJu
IHZhbHVlLCAwIGlzIHJldHVybmVkLgotY2xhc3MgRXh0ZW5zaW9uc0dMIHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5FeHRlbnNpb25zR0woKSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBTdXBwb3J0ZWQg
ZXh0ZW5zaW9uczoKLSAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAotICAg
IC8vICAgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKLSAgICAvLyAgIEdMX0FSQl9yb2J1c3RuZXNz
Ci0gICAgLy8gICBHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIC8gR0xfT0VTX3RleHR1
cmVfbnBvdAotICAgIC8vICAgR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIC8gR0xfT0VTX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsCi0gICAgLy8gICBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IC8g
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICAvLyAgIEdMX0lNR19tdWx0aXNh
bXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKLSAgICAvLyAgIEdMX09FU190ZXh0dXJlX2Zsb2F0Ci0g
ICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIKLSAgICAvLyAgIEdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQKLSAgICAvLyAgIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
Ci0gICAgLy8gICBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKLSAgICAvLyAgIEdMX09FU19y
Z2I4X3JnYmE4Ci0gICAgLy8gICBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAotICAgIC8vICAg
R0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludAotICAgIC8vICAgR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlCi0gICAgLy8gICBHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUgKG9ubHkgdGhl
IHN1YnNldCByZXF1aXJlZCB0bwotICAgIC8vICAgICBpbXBsZW1lbnQgSU9TdXJmYWNlIGJpbmRp
bmc7IGl0J3MgcmVjb21tZW5kZWQgdG8gc3VwcG9ydAotICAgIC8vICAgICB0aGlzIG9ubHkgb24g
TWFjIE9TIFggdG8gbGltaXQgdGhlIGFtb3VudCBvZiBjb2RlIGRlcGVuZGVudAotICAgIC8vICAg
ICBvbiB0aGlzIGV4dGVuc2lvbikKLSAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDEKLSAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMKLSAgICAvLyAg
IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgotICAgIC8vICAgR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKLSAgICAvLyAgIEdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjCi0gICAgLy8gICBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hk
cgotICAgIC8vICAgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIKLSAgICAvLyAg
IEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgIC8vICAgR0xfRVhUX2RlYnVnX21h
cmtlcgotICAgIC8vICAgR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMK
LSAgICAvLyAgIEdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMKLSAgICAvLyAgIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5Ci0KLSAgICAvLyBUYWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9u
OyBmb3IgZXhhbXBsZSwKLSAgICAvLyAiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ii4K
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgPSAwOwotCi0gICAgLy8g
Q2VydGFpbiBPcGVuR0wgYW5kIFdlYkdMIGltcGxlbWVudGF0aW9ucyBtYXkgc3VwcG9ydCBlbmFi
bGluZwotICAgIC8vIGV4dGVuc2lvbnMgbGF6aWx5LiBUaGlzIG1ldGhvZCBtYXkgb25seSBiZSBj
YWxsZWQgd2l0aAotICAgIC8vIGV4dGVuc2lvbiBuYW1lcyBmb3Igd2hpY2ggc3VwcG9ydHMgcmV0
dXJucyB0cnVlLgotICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYp
ID0gMDsKLQotICAgIC8vIFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNpb246IGZvciBleGFtcGxl
LCAiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ii4KLSAgICAvLyBDaGVja3MgdG8gc2Vl
IHdoZXRoZXIgdGhlIGdpdmVuIGV4dGVuc2lvbiBpcyBhY3R1YWxseSBlbmFibGVkIChzZWUgZW5z
dXJlRW5hYmxlZCkuCi0gICAgLy8gSGFzIG5vIG90aGVyIHNpZGUtZWZmZWN0cy4KLSAgICB2aXJ0
dWFsIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKLQotICAgIC8vIEVYVF9zUkdC
IGZvcm1hdHMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFNSR0JfRVhUID0gMHg4QzQw
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JHQl9BTFBIQV9FWFQgPSAweDhDNDI7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCOF9BTFBIQThfRVhUID0gMHg4QzQz
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQgPSAweDgyMTA7Ci0KLSAgICAvLyBFWFRfYmxlbmRfbWlubWF4IGVu
dW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNSU5fRVhUID0gMHg4MDA3OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0VYVCA9IDB4ODAwODsKLQotICAgIC8vIEdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBlbnVtcwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQkdSQV9FWFQgPSAweDgwRTE7Ci0KLSAgICAvLyBHTF9BUkJfcm9idXN0bmVzcyBl
bnVtcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gR1VJTFRZX0NPTlRFWFRfUkVTRVRf
QVJCID0gMHg4MjUzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gSU5OT0NFTlRfQ09O
VEVYVF9SRVNFVF9BUkIgPSAweDgyNTQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBV
TktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjU1OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09OVEVYVF9ST0JVU1RfQUNDRVNTID0gMHg5MEYzOwotCi0gICAgLy8gR0xfRVhU
L09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCBlbnVtcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gREVQVEgyNF9TVEVOQ0lMOCA9IDB4ODhGMDsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFQURfRlJB
TUVCVUZGRVIgPSAweDhDQTg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0ZS
QU1FQlVGRkVSID0gMHg4Q0E5OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19G
UkFNRUJVRkZFUl9CSU5ESU5HID0gMHg4Q0E2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HID0gMHg4Q0FBOwotCi0gICAgLy8gR0xfQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFJFTkRFUkJVRkZFUl9TQU1QTEVTID0gMHg4Q0FCOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRSA9IDB4OEQ1NjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9TQU1QTEVTID0gMHg4RDU3OwotCi0gICAg
Ly8gR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVNfSU1HID0gMHg5MTMzOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBM
RV9JTUcgPSAweDkxMzQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfU0FNUExF
U19JTUcgPSAweDkxMzU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX1NB
TVBMRVNfSU1HID0gMHg5MTM2OwotCi0gICAgLy8gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
IG5hbWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFHTUVOVF9TSEFERVJfREVS
SVZBVElWRV9ISU5UX09FUyA9IDB4OEI4QjsKLQotICAgIC8vIEdMX09FU19yZ2I4X3JnYmE4IG5h
bWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSR0I4X09FUyA9IDB4ODA1MTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJHQkE4X09FUyA9IDB4ODA1ODsKLQotICAgIC8v
IEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IG5hbWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBWRVJURVhfQVJSQVlfQklORElOR19PRVMgPSAweDg1QjU7Ci0KLSAgICAvLyBHTF9B
TkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFRSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgPSAweDkzQTA7Ci0KLSAg
ICAvLyBHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFRFWFRVUkVfUkVDVEFOR0xFX0FSQiA9ICAweDg0RjU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBURVhUVVJFX0JJTkRJTkdfUkVDVEFOR0xFX0FSQiA9IDB4ODRGNjsKLQotICAg
IC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKLSAgICAvLyBHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9zM3RjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4M0YwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAweDgzRjE7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCA9IDB4ODNG
MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDVfRVhUID0gMHg4M0YzOwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
Y19zcmdiCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfUzNU
Q19EWFQxX0VYVCA9IDB4OEM0QzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQgPSAweDhD
NEU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQ1X0VYVCA9IDB4OEM0RjsKLQotICAgIC8vIEdMX09FU19jb21wcmVzc2VkX0VUQzFf
UkdCOF90ZXh0dXJlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBFVEMxX1JHQjhfT0VT
ID0gMHg4RDY0OwotCi0gICAgLy8gV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SMTFfRUFDID0gMHg5MjcwOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQyA9IDB4
OTI3MTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkcxMV9FQUMg
PSAweDkyNzI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05F
RF9SRzExX0VBQyA9IDB4OTI3MzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCOF9FVEMyID0gMHg5Mjc0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9TUkdCOF9FVEMyID0gMHg5Mjc1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiA9IDB4OTI3NjsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9FVEMyID0gMHg5Mjc3OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyA9IDB4OTI3ODsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDID0gMHg5Mjc5OwotCi0g
ICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDA7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFf
SU1HID0gMHg4QzAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMzsKLQotICAgIC8v
IEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX0FUQ19SR0JfQU1EID0gMHg4QzkyOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQgPSAweDhD
OTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JBX0lO
VEVSUE9MQVRFRF9BTFBIQV9BTUQgPSAweDg3RUU7Ci0KLSAgICAvLyBHTF9LSFJfdGV4dHVyZV9j
b21wcmVzc2lvbl9hc3RjX2hkcgotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX0FTVENfNHg0X0tIUiA9IDB4OTNCMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIgPSAweDkzQjE7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSID0gMHg5M0Iy
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1
X0tIUiA9IDB4OTNCMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCQV9BU1RDXzZ4Nl9LSFIgPSAweDkzQjQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSID0gMHg5M0I1OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiA9IDB4OTNCNjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIg
PSAweDkzQjc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg1X0tIUiA9IDB4OTNCODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSID0gMHg5M0I5OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIgPSAweDkzQkE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIg
PSAweDkzQkI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMngxMF9LSFIgPSAweDkzQkM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIgPSAweDkzQkQ7Ci0KLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiA9IDB4
OTNEMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNXg0X0tIUiA9IDB4OTNEMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiA9IDB4OTNEMjsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tI
UiA9IDB4OTNEMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng2X0tIUiA9IDB4OTNENDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiA9IDB4OTNENTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
OHg2X0tIUiA9IDB4OTNENjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiA9IDB4OTNENzsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIgPSAweDkz
RDg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSID0gMHg5M0Q5OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiA9IDB4OTNEQTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBf
S0hSID0gMHg5M0RCOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIgPSAweDkzREM7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiA9IDB4OTNE
RDsKLQotICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCA9IDB4OERCQjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9F
WFQgPSAweDhEQkM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JF
RF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJFOwotCi0gICAg
Ly8gR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4
ODRGRjsKLQotICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJz
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRFJBV19CVUZGRVJTX0VYVCA9IDB4
ODgyNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMF9FWFQgPSAw
eDg4MjU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjFfRVhUID0g
MHg4ODI2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIyX0VYVCA9
IDB4ODgyNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSM19FWFQg
PSAweDg4Mjg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjRfRVhU
ID0gMHg4ODI5OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI1X0VY
VCA9IDB4ODgyQTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNl9F
WFQgPSAweDg4MkI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjdf
RVhUID0gMHg4ODJDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI4
X0VYVCA9IDB4ODgyRDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVS
OV9FWFQgPSAweDg4MkU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZF
UjEwX0VYVCA9IDB4ODgyRjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVG
RkVSMTFfRVhUID0gMHg4ODMwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVIxMl9FWFQgPSAweDg4MzE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjEzX0VYVCA9IDB4ODgzMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSMTRfRVhUID0gMHg4ODMzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVIxNV9FWFQgPSAweDg4MzQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUID0gMHg4Q0RGOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDBfRVhUID0gMHg4Q0UwOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDFfRVhUID0gMHg4Q0UxOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDJfRVhUID0gMHg4Q0UyOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDNfRVhUID0gMHg4
Q0UzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDRfRVhU
ID0gMHg4Q0U0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDVfRVhUID0gMHg4Q0U1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRU
QUNITUVOVDZfRVhUID0gMHg4Q0U2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09M
T1JfQVRUQUNITUVOVDdfRVhUID0gMHg4Q0U3OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09MT1JfQVRUQUNITUVOVDhfRVhUID0gMHg4Q0U4OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDlfRVhUID0gMHg4Q0U5OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEwX0VYVCA9IDB4OENFQTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMV9FWFQgPSAweDhDRUI7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTJfRVhUID0gMHg4
Q0VDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEzX0VY
VCA9IDB4OENFRDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQxNF9FWFQgPSAweDhDRUU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9B
VFRBQ0hNRU5UMTVfRVhUID0gMHg4Q0VGOwotCi0gICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRl
cl9jb21waWxlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9OX1NUQVRV
U19LSFIgPSAweDkxQjE7Ci0KLSAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbgotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSA9
IDB4OTNBODsKLQotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KLQotICAgIC8vIEdMX0FSQl9yb2J1
c3RuZXNzCi0gICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20g
dGhlIEdMX0FSQl9yb2J1c3RuZXNzCi0gICAgLy8gc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9sbG93
aW5nIHdheToKLSAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gbXVzdCBub3QgcmVzZXQgdGhlIGVy
cm9yIHN0YXRlIGR1cmluZyB0aGlzIGNhbGwuCi0gICAgLy8gSWYgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQiByZXR1cm5zIGFuIGVycm9yLCBpdCBzaG91bGQgY29udGludWUKLSAgICAvLyByZXR1
cm5pbmcgdGhlIHNhbWUgZXJyb3IuIFJlc3RvcmluZyB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgaXMgaGFuZGxlZAotICAgIC8vIGV4dGVybmFsbHkuCi0gICAgdmlydHVhbCBHQ0dMaW50IGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7Ci0KLSAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwotCi0gICAgLy8gR0xfQVJCX2RyYXdf
YnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKLQotICAgIC8vIE90aGVy
IGZ1bmN0aW9ucy4KLSNpZiAhVVNFKEFOR0xFKQotICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNl
cyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCCi0gICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxz
RVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xm
bG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOwotCi0jZW5kaWYKLQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuY3BwCmluZGV4IGQ2MGMzN2E5ZmZlNWMyY2JlMDM2NmUyNzZkODQ4ODY2NWJkNmUy
MGIuLmExNDA5MGE3Zjk4ZDRhZmNhZTM1ODBkZGM4ZTc5ZTYxOTM0M2Q5NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUgIkV4
dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5oIgogI2luY2x1ZGUgIkhv
c3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZS5oIgpAQCAtMzc2LDEzICszNzUsMTMgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQl9JTlRFR0VSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCX0VYVDoKICAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDM7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6UkdCQV9JTlRFR0VSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpCR1JB
X0VYVDogLy8gR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OlNSR0JfQUxQSEFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkJHUkFf
RVhUOiAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0FMUEhBX0VYVDoKICAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9
IDQ7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBiNWY1ZWNkMzgx
Y2E5MGEyN2Q4ZDJhYjUyZDNlZmIyNTJiZWQxYjZjLi4xY2NlZWI1MzczNTM4ZDUzNTIzZjQ5ZGNl
MmEwNjgyZTQ3ZGZjOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTY3NCw2ICs2NzQsMTQ1IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfUkVDVEFOR0xFX0FSQiA9IDB4
ODRGNTsKICAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfQklORElOR19SRUNU
QU5HTEVfQVJCID0gMHg4NEY2OwogCisgICAgLy8gRVhUX3NSR0IgZm9ybWF0cworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gU1JHQl9FWFQgPSAweDhDNDA7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBTUkdCX0FMUEhBX0VYVCA9IDB4OEM0MjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFNSR0I4X0FMUEhBOF9FWFQgPSAweDhDNDM7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVCA9
IDB4ODIxMDsKKworICAgIC8vIEVYVF9ibGVuZF9taW5tYXggZW51bXMKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIE1JTl9FWFQgPSAweDgwMDc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBNQVhfRVhUID0gMHg4MDA4OworCisgICAgLy8gR0xfRVhUX3RleHR1cmVfZm9ybWF0
X0JHUkE4ODg4IGVudW1zCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBCR1JBX0VYVCA9
IDB4ODBFMTsKKworICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzIGVudW1zCisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTM7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQiA9IDB4
ODI1NDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFVOS05PV05fQ09OVEVYVF9SRVNF
VF9BUkIgPSAweDgyNTU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT05URVhUX1JP
QlVTVF9BQ0NFU1MgPSAweDkwRjM7CisKKyAgICAvLyBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMgbmFtZXMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQUdNRU5UX1NIQURFUl9E
RVJJVkFUSVZFX0hJTlRfT0VTID0gMHg4QjhCOworCisgICAgLy8gR0xfT0VTX3JnYjhfcmdiYTgg
bmFtZXMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJHQjhfT0VTID0gMHg4MDUxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCQThfT0VTID0gMHg4MDU4OworCisgICAg
Ly8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBUUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0Ew
OworCisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQorICAgIC8vIEdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgPSAweDgzRjA7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhU
ID0gMHg4M0YyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9FWFQgPSAweDgzRjM7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjX3NyZ2IKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
U1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4QzRDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgPSAweDhDNEQ7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VY
VCA9IDB4OEM0RTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
Ql9BTFBIQV9TM1RDX0RYVDVfRVhUID0gMHg4QzRGOworCisgICAgLy8gR0xfT0VTX2NvbXByZXNz
ZWRfRVRDMV9SR0I4X3RleHR1cmUKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEVUQzFf
UkdCOF9PRVMgPSAweDhENjQ7CisKKyAgICAvLyBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9w
dnJ0YworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENf
NEJQUFYxX0lNRyA9IDB4OEMwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFf
SU1HID0gMHg4QzAzOworCisgICAgLy8gR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQl9BTUQgPSAweDhD
OTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRCA9IDB4OEM5MzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCA9IDB4ODdFRTsKKwor
ICAgIC8vIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyCisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSID0gMHg5M0IwOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tI
UiA9IDB4OTNCMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9BU1RDXzV4NV9LSFIgPSAweDkzQjI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSID0gMHg5M0IzOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiA9IDB4OTNCNDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIgPSAw
eDkzQjU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNU
Q184eDZfS0hSID0gMHg5M0I2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX0FTVENfOHg4X0tIUiA9IDB4OTNCNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSID0gMHg5M0I4OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIgPSAweDkz
Qjk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18x
MHg4X0tIUiA9IDB4OTNCQTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDEwX0tIUiA9IDB4OTNCQjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiA9IDB4OTNCQzsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiA9IDB4
OTNCRDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ180eDRfS0hSID0gMHg5M0QwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSID0gMHg5M0QxOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVf
S0hSID0gMHg5M0QyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ182eDVfS0hSID0gMHg5M0QzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSID0gMHg5M0Q0Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDVfS0hSID0gMHg5M0Q1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSID0gMHg5M0Q2OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSID0gMHg5
M0Q3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHg1X0tIUiA9IDB4OTNEODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIgPSAweDkzRDk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhf
S0hSID0gMHg5M0RBOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIgPSAweDkzREI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNE
QzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfMTJ4MTJfS0hSID0gMHg5M0REOworCisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fcmd0YworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUID0gMHg4REJCOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCA9IDB4OERCQzsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RD
Ml9FWFQgPSAweDhEQkU7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlf
RVhUID0gMHg4NEZFOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1RFWFRVUkVf
TUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4NEZGOworCisgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVy
cyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1B
WF9EUkFXX0JVRkZFUlNfRVhUID0gMHg4ODI0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gRFJBV19CVUZGRVIwX0VYVCA9IDB4ODgyNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIERSQVdfQlVGRkVSMV9FWFQgPSAweDg4MjY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBEUkFXX0JVRkZFUjJfRVhUID0gMHg4ODI3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIzX0VYVCA9IDB4ODgyODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIERSQVdfQlVGRkVSNF9FWFQgPSAweDg4Mjk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBEUkFXX0JVRkZFUjVfRVhUID0gMHg4ODJBOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gRFJBV19CVUZGRVI2X0VYVCA9IDB4ODgyQjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIERSQVdfQlVGRkVSN19FWFQgPSAweDg4MkM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBEUkFXX0JVRkZFUjhfRVhUID0gMHg4ODJEOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gRFJBV19CVUZGRVI5X0VYVCA9IDB4ODgyRTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTBfRVhUID0gMHg4ODJGOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMV9FWFQgPSAweDg4MzA7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjEyX0VYVCA9IDB4ODgzMTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTNfRVhUID0gMHg4ODMyOworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxNF9FWFQgPSAweDg4MzM7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE1X0VYVCA9IDB4ODgzNDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgPSAweDhD
REY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMF9FWFQg
PSAweDhDRTA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5U
MV9FWFQgPSAweDhDRTE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRB
Q0hNRU5UMl9FWFQgPSAweDhDRTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xP
Ul9BVFRBQ0hNRU5UM19FWFQgPSAweDhDRTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT0xPUl9BVFRBQ0hNRU5UNF9FWFQgPSAweDhDRTQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UNV9FWFQgPSAweDhDRTU7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UNl9FWFQgPSAweDhDRTY7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UN19FWFQgPSAweDhDRTc7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UOF9FWFQgPSAweDhDRTg7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UOV9FWFQgPSAw
eDhDRTk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTBf
RVhUID0gMHg4Q0VBOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNI
TUVOVDExX0VYVCA9IDB4OENFQjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQxMl9FWFQgPSAweDhDRUM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT0xPUl9BVFRBQ0hNRU5UMTNfRVhUID0gMHg4Q0VEOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE0X0VYVCA9IDB4OENFRTsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxNV9FWFQgPSAweDhDRUY7CisKKyAgICAv
LyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBMRVRJT05fU1RBVFVTX0tIUiA9IDB4OTFCMTsKKworICAgIC8vIEdMX0FOR0xF
X3JlcXVlc3RfZXh0ZW5zaW9uCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRVFVRVNU
QUJMRV9FWFRFTlNJT05TX0FOR0xFID0gMHg5M0E4OworCiAgICAgLy8gQXR0ZW1wdCB0byBlbnVt
ZXJhdGUgYWxsIHBvc3NpYmxlIG5hdGl2ZSBpbWFnZSBmb3JtYXRzIHRvCiAgICAgLy8gcmVkdWNl
IHRoZSBhbW91bnQgb2YgdGVtcG9yYXJ5IGFsbG9jYXRpb25zIGR1cmluZyB0ZXh0dXJlCiAgICAg
Ly8gdXBsb2FkaW5nLiBUaGlzIGVudW0gbXVzdCBiZSBwdWJsaWMgYmVjYXVzZSBpdCBpcyBhY2Nl
c3NlZApAQCAtMTIzMyw2ICsxMzcyLDMxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbXVs
dGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0
cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJikgPSAwOworCisgICAgLy8gVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVk
IHdpdGggZXh0ZW5zaW9uIG5hbWVzIGZvciB3aGljaCBzdXBwb3J0cyByZXR1cm5zIHRydWUuCisg
ICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgPSAw
OworCisgICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjogZm9yIGV4YW1wbGUsICJH
TF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgorICAgIC8vIENoZWNrcyB0byBzZWUgd2hl
dGhlciB0aGUgZ2l2ZW4gZXh0ZW5zaW9uIGlzIGFjdHVhbGx5IGVuYWJsZWQgKHNlZSBlbnN1cmVF
eHRlbnNpb25FbmFibGVkKS4KKyAgICAvLyBIYXMgbm8gb3RoZXIgc2lkZS1lZmZlY3RzLgorICAg
IHZpcnR1YWwgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgPSAwOworCisg
ICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKKyAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2
aW9yIGRpZmZlcnMgZnJvbSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKKyAgICAvLyBzcGVjaWZpY2F0
aW9uIGluIHRoZSBmb2xsb3dpbmcgd2F5OgorICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0
IG5vdCByZXNldCB0aGUgZXJyb3Igc3RhdGUgZHVyaW5nIHRoaXMgY2FsbC4KKyAgICAvLyBJZiBn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3IsIGl0IHNob3VsZCBjb250
aW51ZQorICAgIC8vIHJldHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVzdG9yaW5nIHRoZSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCBpcyBoYW5kbGVkCisgICAgLy8gZXh0ZXJuYWxseS4KKyAgICB2
aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKKworICAgIC8v
IEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIHZpcnR1YWwgU3RyaW5nIGdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CisKKyAg
ICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycworICAgIHZpcnR1
YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAw
OworCiAgICAgLy8gPT09PT09PT09PSBPdGhlciBmdW5jdGlvbnMuCiAgICAgR0NHTGZsb2F0IGdl
dEZsb2F0KEdDR0xlbnVtIHBuYW1lKTsKICAgICBHQ0dMYm9vbGVhbiBnZXRCb29sZWFuKEdDR0xl
bnVtIHBuYW1lKTsKQEAgLTEyNDMsMTEgKzE0MDcsNiBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9h
dHRyczsgfQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KIAotICAgIC8vIFN1
cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMgYSBub24tbnVsbCBvYmplY3QsIHRob3VnaCBu
b3QKLSAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3Vw
cG9ydGVkIG9uIHRoZQotICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNp
b25zR0w6OnN1cHBvcnRzKCkgdG8KLSAgICAvLyBkZXRlcm1pbmUgdGhpcy4KLSAgICB2aXJ0dWFs
IEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZXh0VmlzaWJpbGl0eShib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAKaW5kZXggMjMzYjBkZjc1NmVjZGQ0YmM5MmQ5MGJhYWYwMTUzY2M2YTU5NWZm
Ny4uOGY1ZmYxYWU3NjAwZjVkYzkwMDlkODQ1NWNjZmY5MTViY2ExZTY2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtNDYsNzggKzQ2LDcgQEAgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlKGNvbnN0IEdyYXBoaWMKIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6On5S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0gZGVmYXVsdDsKIAotRXh0ZW5zaW9u
c0dMJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0RXh0ZW5zaW9ucygpCi17
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdAotewotI2lmIEVOQUJMRShXRUJHTDIpCi0gICAgcmV0dXJuIGNvbnRl
eHRBdHRyaWJ1dGVzKCkud2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJz
aW9uOjpXZWJHTDI7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29udGV4dENoYW5nZWQoKQot
ewotICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgotICAg
IGlmIChtX2xheWVyQ29tcG9zaXRlZCkgewotICAgICAgICBub3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpOwot
ICAgIH0KLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c3VwcG9y
dHMoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7Ci0g
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVl
c3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17
Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKLSAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkpIHsKLSAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKTsKLSAgICAgICAgbV9l
bmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7Ci0gICAgfQotfQogCi1ib29sIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewot
ICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7Ci0gICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUp
OwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppbml0aWFsaXpl
KGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0
YWJsZUV4dGVuc2lvbnMpCi17Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVF
eHRlbnNpb25zLnNwbGl0KCcgJykpCi0gICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQo
ZXh0ZW5zaW9uKTsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5z
aW9ucy5zcGxpdCgnICcpKQotICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0
ZW5zaW9uKTsKLX0KLQotI2lmICFVU0UoQU5HTEUpCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpyZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWks
IEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2b2lkKikKLXsK
LX0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1m
dkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMZmxvYXQqKQotewotfQotCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhUKEdD
R0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKQotewotfQotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiAhUExBVEZPUk0oQ09DT0EpCi0jZW5kaWYKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKaW5kZXggNWU1YzA5Yjg3
MjA0M2VhMGZhMmE5NjdmNGYzOTkzYmFkODBhNzk0MS4uNzhjMTAwNzNjOTA4ZTQxZGJlMDRmZDUw
N2FmODFkNDBlOGMwY2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5o
CkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMLmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMzksNDIgKzM4LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoaXMgaW1wbGVtZW50cyB0aGUgcGFydHMgdGhhdCBh
cmUgdXNpbmcgV2ViQ29yZSBpbnRlcm5hbCBmdW5jdGlvbmFsaXR5OgogLy8gLSBEcmF3aW5nIGJ1
ZmZlciB0cmFja2luZyBtYW5hZ2VtZW50LgogLy8gLSBDb21wb3NpdGluZyBzdXBwb3J0LgotY2xh
c3MgV0VCQ09SRV9FWFBPUlQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0R0wsIHB1YmxpYyBFeHRlbnNpb25zR0wgeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgOiBwdWJsaWMgR3JhcGhp
Y3NDb250ZXh0R0wgewogcHVibGljOgogICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwogICAgIH5SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZSgpIG92ZXJyaWRlOwogCi0gICAgLy8gT3RoZXIgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgotICAgIHVzaW5nIEdyYXBoaWNzQ29udGV4
dEdMOjppc0VuYWJsZWQ7Ci0gICAgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7
Ci0gICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKLSAgICBib29sIGlz
R0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOwogCi0gICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVzLgotICAgIHVz
aW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOwotICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3Ry
aW5nJikgZmluYWw7Ci0gICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwotICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotCi0jaWYgIVVTRShB
TkdMRSkKLSAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHZvaWQqKSBm
aW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xz
aXplaSwgR0NHTGZsb2F0KikgZmluYWw7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKSBmaW5hbDsKLSNlbmRpZgotCi1wcm90
ZWN0ZWQ6Ci0gICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOwotICAgIHZpcnR1YWwg
dm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKLQotcHJpdmF0ZToKLSAgICAvLyBHdWFyZGVk
IGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxh
YmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lv
bnM7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVu
c2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Qw
NDljNTEwOTI2NjE0NWRlOTExNzc5NzA0M2U5NWViYjk4N2E3OS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkg
JiYgVVNFKEFOR0xFKQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCi0KLSNpbmNsdWRl
ICJBTkdMRUhlYWRlcnMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFO
R0xFKEdyYXBoaWNzQ29udGV4dEdMQU5HTEUqIGNvbnRleHQpCi0gICAgOiBtX2luaXRpYWxpemVk
QXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKLSAgICAsIG1fY29udGV4dChjb250ZXh0KQotewot
fQotCi1FeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVuc2lvbnNHTEFOR0xFKCkgPSBkZWZhdWx0Owot
Ci1ib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCi17
Ci0gICAgaWYgKCFtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucykgewotICAgICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCk7Ci0gICAgfQot
ICAgIHJldHVybiBzdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKLX0KLQotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgLy8gRW5h
YmxlIHN1cHBvcnQgaW4gQU5HTEUgKGlmIG5vdCBlbmFibGVkIGFscmVhZHkpLgotICAgIGlmICht
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEdMX1JlcXVlc3RFeHRl
bnNpb25BTkdMRShuYW1lLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgbV9lbmFibGVkRXh0ZW5z
aW9ucy5hZGQobmFtZSk7Ci0KLSAgICAgICAgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9y
X2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKQotICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVmZmVyRmxv
YXRSR0JBID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1fY29s
b3JfYnVmZmVyX2Zsb2F0X3JnYiJfcykKLSAgICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZs
b2F0UkdCID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OmlzRW5h
YmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUp
OwotfQotCi1HTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpCi17Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjsKLX0KLQotU3Ry
aW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iamVjdCBzaGFkZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpbnQgc291cmNlTGVu
Z3RoID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJf
U09VUkNFX0xFTkdUSF9BTkdMRSk7Ci0KLSAgICBpZiAoIXNvdXJjZUxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5n
dGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVz
IG51bGwgdGVybWluYXRpb24uCi0gICAgR0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7Ci0gICAg
R0xfR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAm
cmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgpKTsKLSAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQot
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAvLyByZXR1cm5lZExlbmd0aCBkb2Vz
IG5vdCBpbmNsdWRlIHRoZSBudWxsIHRlcm1pbmF0b3IuCi0gICAgQVNTRVJUKHJldHVybmVkTGVu
Z3RoID09IHNvdXJjZUxlbmd0aCAtIDEpOwotICAgIHJldHVybiBTdHJpbmcobmFtZS5kYXRhKCks
IHJldHVybmVkTGVuZ3RoKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6
ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQotewotICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0g
Z2V0RXh0ZW5zaW9ucygpOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0
cmluZy5zcGxpdCgnICcpKQotICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVu
c2lvbik7Ci0gICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSkp
KTsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAn
KSkKLSAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAg
bV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwotfQotCi1ib29sIEV4dGVu
c2lvbnNHTEFOR0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0g
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVl
c3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCi17Ci0g
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBHTF9EcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7Ci19Ci0K
LVN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RXh0ZW5zaW9ucygpCi17Ci0gICAgcmV0dXJu
IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfRVhU
RU5TSU9OUykpKTsKLX0KLQotR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5HTEU6OmFkanVzdFdlYkdM
MVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlKQotewotICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBX
RUJHTF9jb2xvcl9idWZmZXJfZmxvYXQgZm9yIFdlYkdMIDEuMCAvIEVTIDIuMCByZXF1aXJlcyBh
IHNpemVkCi0gICAgLy8gaW50ZXJuYWwgZm9ybWF0LiBBZGp1c3QgaXQgaWYgbmVjZXNzYXJ5IGF0
IHRoaXMgbG93ZXN0IGxldmVsLgotICAgIGlmICh0eXBlID09IEdMX0ZMT0FUKSB7Ci0gICAgICAg
IGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgJiYgZm9ybWF0ID09IEdMX1JHQkEgJiYg
aW50ZXJuYWxmb3JtYXQgPT0gR0xfUkdCQSkKLSAgICAgICAgICAgIHJldHVybiBHTF9SR0JBMzJG
OwotICAgICAgICBpZiAobV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgJiYgZm9ybWF0ID09IEdM
X1JHQiAmJiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0IpCi0gICAgICAgICAgICByZXR1cm4gR0xf
UkdCMzJGOwotICAgIH0KLSAgICByZXR1cm4gaW50ZXJuYWxmb3JtYXQ7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NzhlMmY5
ZjY0YjlmNjE1YzNiM2E4NWM0M2EzY2EwNTRlZDc1Y2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgotCi0jaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTsKLQot
Y2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVl
ZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgaW1wbGVtZW50
YXRpb25zLgotICAgIGV4cGxpY2l0IEV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdM
QU5HTEUqKTsKLSAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgpOwotCi0gICAgLy8gRXh0
ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgR0NHTGludCBn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7Ci0KLSAgICBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwotCi0gICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KLSAgICBHQ0dMZW51
bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7Ci0KLXByaXZhdGU6Ci0gICAgYm9v
bCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKLSAgICBTdHJpbmcgZ2V0RXh0ZW5z
aW9ucygpOwotCi0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25z
KCk7Ci0gICAgYm9vbCBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNo
U2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0
ZW5zaW9uczsKLQotICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEUuCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSogbV9jb250ZXh0OwotCi0gICAgLy8g
V2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0
eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgotICAgIGJvb2wgbV93ZWJnbENvbG9yQnVm
ZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwotICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRS
R0JBIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggNDhmNzM0MmYzZTA5MDFmZTQ2NzJjYTViNWUwMzIx
ZTg0MTZhOTY2ZC4uYzVjNmJmYTU3NWU5NDk0NjYxMDBlMTY1MzE4MzI4M2EwOGEwZGI3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2lu
Y2x1ZGUgIkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCi0jaW5j
bHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKQEAgLTcxLDYgKzcwLDMwIEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9t
UGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4CiB9CiAjZW5k
aWYKIAorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmluaXRpYWxpemUoKQoreworICAg
IGlmICghcGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7CisgICAgZm9yIChhdXRv
JiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBleHRlbnNpb25zU3RyaW5nID0g
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9SRVFV
RVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDog
ZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gcGxhdGZvcm1Jbml0aWFsaXplKCk7Cit9
CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogR0NHTGVu
dW0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKQog
ewogI2lmICFQTEFURk9STShDT0NPQSkKQEAgLTM1NCw3ICszNzcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJU
eXBlLCBHQ0dMZQogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsK
ICAgICBpZiAoIW1faXNGb3JXZWJHTDIpCi0gICAgICAgIGludGVybmFsZm9ybWF0ID0gc3RhdGlj
X2Nhc3Q8RXh0ZW5zaW9uc0dMQU5HTEUmPihnZXRFeHRlbnNpb25zKCkpLmFkanVzdFdlYkdMMVRl
eHR1cmVJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKKyAgICAg
ICAgaW50ZXJuYWxmb3JtYXQgPSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50
ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEdMX1RleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CkBAIC00MjUsMTMgKzQ0OCw2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQog
ICAgIEdMX0NsZWFyRGVwdGhmKHN0YXRpY19jYXN0PGZsb2F0PihkZXB0aCkpOwogfQogCi1FeHRl
bnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldEV4dGVuc2lvbnMoKQotewotICAg
IGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4
dGVuc2lvbnNHTEFOR0xFPih0aGlzKTsKLSAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKLX0KLQog
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIHJlYWRuUGl4
ZWxzSW1wbCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZGF0YS5kYXRhLCBmYWxzZSk7CkBAIC00ODMsMTIg
KzQ5OSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbikKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7CiAgICAgLy8gRklYTUU6IFNpbmNlIHRoZSBjb25zdHJ1Y3RvcnMgb2YgdmFyaW91
cyBwbGF0Zm9ybXMgYXJlIG5vdCBzaGFyZWQsIHdlIGluaXRpYWxpemUgdGhpcyBoZXJlLgogICAg
IC8vIFVwb24gY29uc3RydWN0aW5nIHRoZSBjb250ZXh0LCBhbHdheXMgaW5pdGlhbGl6ZSB0aGUg
ZXh0ZW5zaW9ucyB0aGF0IHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIHdpbGwKICAgICAvLyB1
c2UgdG8gdHVybiBvbiBmZWF0dXJlIGZsYWdzLgotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRz
KHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgaWYgKHN1cHBvcnRz
RXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKKyAgICAgICAgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgICAgICBt
X2ludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7CiAg
ICAgfSBlbHNlCiAgICAgICAgIG1faW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBU
SF9DT01QT05FTlQxNjsKQEAgLTUwNSwxNyArNTIwLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsCiAKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBtdXN0
IGFkanVzdCB0aGlzIHdoZW4gdXBncmFkaW5nIHRvIFdlYkdMIDIuMCAvIE9wZW5HTCBFUyAzLjAg
c3VwcG9ydC4KLSAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpIHx8ICFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BTkdMRV9m
cmFtZWJ1ZmZlcl9ibGl0IikgfHwgIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19yZ2I4X3Jn
YmE4IikpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUiKSB8fCAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQiKSB8fCAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19yZ2I4X3JnYmE4Iikp
IHsKICAgICAgICAgICAgIGF0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSIpOwotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9ibGl0Iik7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdM
X09FU19yZ2I4X3JnYmE4Iik7CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOworICAgICAgICAgICAg
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAoYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CiAgICAgICAgIC8v
IE5lZWRlZCBmb3IgcHJlc2VydmVEcmF3aW5nQnVmZmVyOnRydWUgc3VwcG9ydCB3aXRob3V0IGFu
dGlhbGlhc2luZy4KLSAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9m
cmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FO
R0xFX2ZyYW1lYnVmZmVyX2JsaXQiKTsKICAgICB9CiB9CiAKQEAgLTI4OTAsNiArMjkwNSw2NCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTAogICAgIEdMX011bHRpRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUobW9kZSwgY291bnRzLmRhdGEsIHR5cGUsIHBvaW50ZXJzLmRhdGEoKSwgaW5zdGFu
Y2VDb3VudHMuZGF0YSwgZHJhd2NvdW50KTsKIH0KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICAvLyBF
bmFibGUgc3VwcG9ydCBpbiBBTkdMRSAoaWYgbm90IGVuYWJsZWQgYWxyZWFkeSkuCisgICAgaWYg
KG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJsZWRFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEdMX1JlcXVlc3RFeHRlbnNpb25BTkdM
RShuYW1lLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQo
bmFtZSk7CisKKyAgICAgICAgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9m
bG9hdF9yZ2JhIl9zKQorICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBID0g
dHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVy
X2Zsb2F0X3JnYiJfcykKKyAgICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCID0g
dHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aXNFeHRlbnNp
b25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7Cit9CisKK0dMaW50IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKQoreworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7
Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7CisgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaW50IHNvdXJj
ZUxlbmd0aCA9IGdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0Vf
TEVOR1RIX0FOR0xFKTsKKworICAgIGlmICghc291cmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0aCk7IC8v
IEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMgbnVsbCB0
ZXJtaW5hdGlvbi4KKyAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0gMDsKKyAgICBHTF9HZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgsICZyZXR1cm5l
ZExlbmd0aCwgbmFtZS5kYXRhKCkpOworICAgIGlmICghcmV0dXJuZWRMZW5ndGgpCisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworICAgIC8vIHJldHVybmVkTGVuZ3RoIGRvZXMgbm90IGlu
Y2x1ZGUgdGhlIG51bGwgdGVybWluYXRvci4KKyAgICBBU1NFUlQocmV0dXJuZWRMZW5ndGggPT0g
c291cmNlTGVuZ3RoIC0gMSk7CisgICAgcmV0dXJuIFN0cmluZyhuYW1lLmRhdGEoKSwgcmV0dXJu
ZWRMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdMX0RyYXdCdWZmZXJzRVhUKGJ1
ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xF
Ojp3YWl0QW5kVXBkYXRlT2xkZXN0RnJhbWUoKQogewogICAgIHNpemVfdCBvbGRlc3RGcmFtZUNv
bXBsZXRpb25GZW5jZSA9IG1fb2xkZXN0RnJhbWVDb21wbGV0aW9uRmVuY2UrKyAlIG1heFBlbmRp
bmdGcmFtZXM7CkBAIC0yOTk3LDYgKzMwNzAsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjppbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dMdWludCkKIHsKIH0KIAorR0NH
TGVudW0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFs
Rm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUpCit7CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9mIFdFQkdMX2NvbG9yX2J1ZmZl
cl9mbG9hdCBmb3IgV2ViR0wgMS4wIC8gRVMgMi4wIHJlcXVpcmVzIGEgc2l6ZWQKKyAgICAvLyBp
bnRlcm5hbCBmb3JtYXQuIEFkanVzdCBpdCBpZiBuZWNlc3NhcnkgYXQgdGhpcyBsb3dlc3QgbGV2
ZWwuCisgICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpIHsKKyAgICAgICAgaWYgKG1fd2ViZ2xDb2xv
ckJ1ZmZlckZsb2F0UkdCQSAmJiBmb3JtYXQgPT0gR0xfUkdCQSAmJiBpbnRlcm5hbGZvcm1hdCA9
PSBHTF9SR0JBKQorICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkEzMkY7CisgICAgICAgIGlmICht
X3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiAmJiBmb3JtYXQgPT0gR0xfUkdCICYmIGludGVybmFs
Zm9ybWF0ID09IEdMX1JHQikKKyAgICAgICAgICAgIHJldHVybiBHTF9SR0IzMkY7CisgICAgfQor
ICAgIHJldHVybiBpbnRlcm5hbGZvcm1hdDsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXggNjU0
MWY3MTQwYzM3MjA0MDE3ZTZjZTZlNTFkZmJhMmU4MDUyYThiMS4uMDJjY2RmMjJiOTFhYjBjNzM5
ZDBlNjhmYjdkOWM5NTBlZTIyYTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApA
QCAtNTMsNyArNTMsNiBAQCBzdHJ1Y3QgZ2JtX2JvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBFeHRlbnNpb25zR0w7Ci1jbGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKIGNsYXNzIEdMQ29u
dGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKQEAgLTMzMiw2ICsz
MzEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5j
ZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtdWx0aURy
YXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4g
Y291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBH
Q0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBj
b3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291
bnQpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIG92ZXJyaWRl
OworCisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOworCisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVm
ZmVyKCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZp
bmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlUHJvZ3JhbSgpIGZpbmFsOwpAQCAtMzQ2
LDEyICszNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdM
T2JqZWN0KSBmaW5hbDsKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9y
KSBmaW5hbDsKICAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFs
OwotICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwogICAgIHZvaWQgc2lt
dWxhdGVFdmVudEZvclRlc3RpbmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSBvdmVycmlkZTsK
ICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmlu
YWw7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9QaXhlbEJ1ZmZlcigpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5
Y2xlQ29udGV4dCgpOwpAQCAtMzY2LDE1ICszNzIsMjEgQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
b3RlY3RlZDoKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VO
KQotICAgIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
LCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKLSNlbHNlCiAgICAgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwotI2VuZGlmCisKICAgICAvLyBDYWxs
ZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNh
bGwgT3BlbkdMLgogICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBv
aW50cyBvZiBFeHRlbnNpb25zR0wgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIGJv
b2wgbWFrZUNvbnRleHRDdXJyZW50KCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCisgICAgLy8gSW5p
dGlhbGl6ZXMgdGhlIGluc3RhbmNlLiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBpbnN0YW5jZSBzaG91
bGQgbm90IGJlIHVzZWQuCisgICAgYm9vbCBpbml0aWFsaXplKCk7CisgICAgLy8gQ2FsbGVkIGZp
cnN0IGJ5IGluaXRpYWxpemUoKS4gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdG8gaW5zdGFu
dGlhdGUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJpdHMgb2YgRUdMQ29udGV4dC4KKyAgICAvLyBG
SVhNRTogQ3VycmVudGx5IHBsYXRmb3JtcyBkbyBub3Qgc2hhcmUgdGhlIGNvbnRleHQgY3JlYXRp
b24uIFRoZXkgc2hvdWxkLgorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250
ZXh0KCk7CisgICAgLy8gQ2FsbGVkIGxhc3QgYnkgaW5pdGlhbGl6ZSgpLiBTdWJjbGFzc2VzIHNo
b3VsZCBvdmVycmlkZSB0byBpbnN0YW50aWF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBzdGF0ZSB0aGF0
IGRlcGVuZCBvbgorICAgIC8vIHRoZSBzaGFyZWQgc3RhdGUuCisgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOworCiAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIn
cyByZXF1ZXN0ZWQgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLAogICAgIC8vIGluIHBhcnRp
Y3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9y
CiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBv
ZiB0aGUgT3BlbkdMCkBAIC0zOTUsMTMgKzQwNywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBw
cmVwYXJlVGV4dHVyZUltcGwoKTsKICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNl
c3NhcnkoY29uc3QgSW50UmVjdCYgPSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhB
bmRTdGVuY2lsQnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3Jt
YXQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0KLSAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgYWxsb2NhdGVBbmRC
aW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKLSAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsK
ICAgICBzdGF0aWMgYm9vbCBtYWtlQ3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlz
cGxheSwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCk7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJv
b2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkgPSAwOworCiAgICAgLy8gUmV0dXJucyBm
YWxzZSBpZiBjb250ZXh0IHNob3VsZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0LgogICAgIGJvb2wg
d2FpdEFuZFVwZGF0ZU9sZGVzdEZyYW1lKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCkBAIC00MTAs
NiArNDIwLDE0IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlS25v
d25UZXh0dXJlQ29udGVudChHQ0dMdWludCk7CiAKKyAgICAvLyBPbmx5IGZvciBub24tV2ViR0wg
Mi4wIGNvbnRleHRzLgorICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZv
cm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAg
SGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOworICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxv
YXRSR0IgeyBmYWxzZSB9OworICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsg
ZmFsc2UgfTsKICAgICBHQ0dMdWludCBtX3RleHR1cmUgeyAwIH07CiAgICAgR0NHTHVpbnQgbV9m
Ym8geyAwIH07CiAgICAgR0NHTHVpbnQgbV9kZXB0aFN0ZW5jaWxCdWZmZXIgeyAwIH07CkBAIC00
MzQsNyArNDUyLDYgQEAgcHJvdGVjdGVkOgogICAgIHNpemVfdCBtX29sZGVzdEZyYW1lQ29tcGxl
dGlvbkZlbmNlIHsgMCB9OwogICAgIFNjb3BlZEdMRmVuY2UgbV9mcmFtZUNvbXBsZXRpb25GZW5j
ZXNbbWF4UGVuZGluZ0ZyYW1lc107CiAgICAgR3JhcGhpY3NDb250ZXh0R0xTdGF0ZSBtX3N0YXRl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zR0xBTkdMRT4gbV9leHRlbnNpb25zOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS4KQEAgLTQ0Nyw3ICs0NjQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8g
V2hlbiBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gdHJ1ZSwgdGhpcyBpcyBibGl0dGVkIHRvIGR1
cmluZyBkaXNwbGF5IHByZXBhcmUuCiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9k
aXNwbGF5QnVmZmVyQmFja2luZzsKICAgICB2b2lkKiBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIHsg
bnVsbHB0ciB9OwotICAgIFByb2Nlc3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjZW5kaWYK
ICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgR0NHTHVpbnQgbV9jb21wb3NpdG9y
VGV4dHVyZSB7IDAgfTsKQEAgLTQ4Nyw3ICs1MDMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcj4gbV90ZXhtYXBMYXllcjsK
ICNlbmRpZgogCi0gICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogI2lmIFVTRShO
SUNPU0lBKQogICAgIGZyaWVuZCBjbGFzcyBOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcjsKICAgICBm
cmllbmQgY2xhc3MgTmljb3NpYTo6R0NHTExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5k
ZXggYTA4ZGEwZjRmMTBlNGMzZTRhOWE3MWVlOGY1MzI1ZmE2NmUwOTFmZi4uN2IzYjRhMDFmMjY5
NmMwZDliMDYxMjgwNjQ2MzhkZjY5MjJhMWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC00MCw3ICs0MCw2IEBACiAjaW1wb3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgIkNvb2tp
ZS5oIgogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCi0jaW1wb3J0ICJFeHRl
bnNpb25zR0wuaCIKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW1wb3J0ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLmgKaW5kZXggYzU2ZTY5NTM1ZTcwOTdmZGQyNWQyZmNlMzAyZTEw
NjhlNzZjNmUzYi4uYzMxZjVlZmJlMmVhODIwZGM3MGZkNTBkNTdhMjg3MWNjMzk2ZjkwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNzksMTcgKzc5LDIzIEBAIHB1YmxpYzoK
ICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2Ft
cGxlKCkgZmluYWw7CiAjZW5kaWYKICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
IGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIHVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3VyYXRp
b24oKTsKICNlbmRpZgogcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYsIFByb2Nlc3NJZGVudGl0eSYmIHJl
c291cmNlT3duZXIpOwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCiAgICAgLy8gR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRSBvdmVycmlkZXMuCisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVD
b250ZXh0KCkgZmluYWw7CisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBmaW5hbDsKICAg
ICB2b2lkIGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50KSBmaW5hbDsKKyAg
ICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIGJvb2wgYWxs
b2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGJpbmREaXNwbGF5
QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBw
YnVmZmVyKTsKIAorICAgIFByb2Nlc3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+
IG1fY3Y7CiAjZW5kaWYKQEAgLTEwMCw2ICsxMDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNlc3Npb25W
VD4gbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lvbjsKICNlbmRpZgorCiAgICAgZnJpZW5kIGNs
YXNzIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCmluZGV4IDBjZDBhMjRmZGI3MmMzN2JjZDI1YzAwMGM1NDYyYzYxYzIwNWY3NTEu
LmQxMjUyNWY5N2Q4NGQxMzNlMjM1YTg4MThhM2Q0ZTBjZWNhN2QyYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQU5HTEVVdGls
aXRpZXMuaCIKICNpbXBvcnQgIkFOR0xFVXRpbGl0aWVzQ29jb2EuaCIKICNpbXBvcnQgIkNWVXRp
bGl0aWVzLmgiCi0jaW1wb3J0ICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMTWFuYWdlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMTk3LDI5ICsxOTYs
MTUgQEAgc3RhdGljIGJvb2wgbmVlZHNFQUdMT25NYWMoKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMQ29jb2E+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVy
KQogewogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xD
b2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBXVEZNb3ZlKHJlc291cmNlT3duZXIpKSk7Ci0gICAg
aWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBHcmFw
aGljc0NvbnRleHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGNyZWF0aW9uQXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVz
b3VyY2VPd25lcikKLSAgICA6Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVO
VElUWV9UT0tFTikKLSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25B
dHRyaWJ1dGVzKSwgcmVzb3VyY2VPd25lcikKLSNlbHNlCi0gICAgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRShXVEZNb3ZlKGNyZWF0aW9uQXR0cmlidXRlcykpCi0jZW5kaWYKKyAgICA6IEdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoV1RGTW92ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQorICAgICwgbV9yZXNv
dXJjZU93bmVyKFdURk1vdmUocmVzb3VyY2VPd25lcikpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGluaXRpYWxpemVy
IGxpc3Qgb25jZSBtX3Jlc291cmNlT3duZXIgbW92ZXMgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS4KLSAgICBtX3Jlc291cmNlT3duZXIgPSBXVEZNb3ZlKHJlc291cmNlT3duZXIpOwotCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7
Ci0gICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93
ZXJQcmVmZXJlbmNlKCkgPT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQ
ZXJmb3JtYW5jZSkKLSAgICAgICAgbV9zd2l0Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlv
biA9IHRydWU7Ci0jZW5kaWYKIH0KIAogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6fkdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoKSA9IGRlZmF1bHQ7CkBAIC0yMzYsMzggKzIyMSwzOSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQogCiAvLyBGSVhN
RTogQmVsb3cgaXMgZnVuY3Rpb25hbGl0eSB0aGF0IHNob3VsZCBiZSBtb3ZlZCB0byBHcmFwaGlj
c0NvbnRleHRHTENvY29hIHRvIHNpbXBsaWZ5IHRoZSBiYXNlIGNsYXNzLgogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKLUdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJzLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmIHJlc291cmNlT3duZXIpCi0jZWxzZQogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cnMpCi0jZW5kaWYKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0
dHJzKQogewotICAgIG1faXNGb3JXZWJHTDIgPSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhp
Y3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMjsKLSAgICBpZiAoYXR0cnMudXNlTWV0YWwg
JiYgIXBsYXRmb3JtU3VwcG9ydHNNZXRhbChtX2lzRm9yV2ViR0wyKSkgewotICAgICAgICBhdHRy
cy51c2VNZXRhbCA9IGZhbHNlOwotICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7
Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29u
dGV4dCgpCit7CisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBj
b250ZXh0QXR0cmlidXRlcygpOworICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdM
VmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIGlm
IChhdHRyaWJ1dGVzLnVzZU1ldGFsICYmICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0Zvcldl
YkdMMikpIHsKKyAgICAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IGZhbHNlOworICAgICAgICBz
ZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiBFTkFCTEUoV0VC
WFIpCi0gICAgaWYgKGF0dHJzLnhyQ29tcGF0aWJsZSkgeworICAgIGlmIChhdHRyaWJ1dGVzLnhy
Q29tcGF0aWJsZSkgewogICAgICAgICAvLyBGSVhNRTogSXQncyBhbG1vc3QgY2VydGFpbiB0aGF0
IGFueSBjb25uZWN0ZWQgaGVhZHNldCB3aWxsIHJlcXVpcmUgdGhlIGhpZ2gtcG93ZXIgR1BVLAog
ICAgICAgICAvLyB3aGljaCBpcyB0aGUgc2FtZSBHUFUgd2UgbmVlZCB0aGlzIGNvbnRleHQgdG8g
dXNlLiBIb3dldmVyLCB0aGlzIGlzIG5vdCBndWFyYW50ZWVkLCBhbmQKICAgICAgICAgLy8gdGhl
cmUgaXMgYWxzbyB0aGUgY2hhbmNlIHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIEdQVXMuIEdpdmVu
IHRoYXQgeW91IGNhbiByZXF1ZXN0IHRoZQogICAgICAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBi
ZWZvcmUgaW5pdGlhbGl6aW5nIHRoZSBXZWJYUiBzZXNzaW9uLCB3ZSdsbCBuZWVkIHNvbWUgd2F5
IHRvCiAgICAgICAgIC8vIG1pZ3JhdGUgdGhlIGNvbnRleHQgdG8gdGhlIGFwcHJvcHJpYXRlIEdQ
VSB3aGVuIHRoZSBjb2RlIGhlcmUgZG9lcyBub3Qgd29yay4KICAgICAgICAgTE9HKFdlYkdMLCAi
V2ViWFIgY29tcGF0aWJsZSBjb250ZXh0IHJlcXVlc3RlZC4gVGhpcyB3aWxsIGFsc28gdHJpZ2dl
ciBhIHJlcXVlc3QgZm9yIHRoZSBoaWdoLXBvd2VyIEdQVS4iKTsKLSAgICAgICAgYXR0cnMuZm9y
Y2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gdHJ1ZTsKLSAgICAgICAgc2V0Q29udGV4
dEF0dHJpYnV0ZXMoYXR0cnMpOworICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhp
Z2hQZXJmb3JtYW5jZUdQVSA9IHRydWU7CisgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0
dHJpYnV0ZXMpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV9kaXNwbGF5T2JqID0gaW5pdGlhbGl6
ZUVHTERpc3BsYXkoYXR0cnMpOworICAgIG1fZGlzcGxheU9iaiA9IGluaXRpYWxpemVFR0xEaXNw
bGF5KGF0dHJpYnV0ZXMpOwogICAgIGlmICghbV9kaXNwbGF5T2JqKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWF0
dHJzLnVzZU1ldGFsKSB7CisgICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKSB7CiAgICAgICAg
IC8vIEZvciBPcGVuR0wsIEVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIGlzIHVzZWQuIFRoZSBj
b250ZXh0IGlzIGluaXRpYWxpemVkIHdpdGggdGhlCiAgICAgICAgIC8vIGRlZmF1bHQsIGxvdy1w
b3dlciBkZXZpY2UuIEZvciBoaWdoLXBlcmZvcm1hbmNlIGNvbnRleHRzLCB3ZSByZXF1ZXN0IHRo
ZSBoaWdoLXBlcmZvcm1hbmNlCiAgICAgICAgIC8vIEdQVSBpbiBzZXRDb250ZXh0VmlzaWJpbGl0
eS4gV2hlbiB0aGUgcmVxdWVzdCBpcyBmdWxsZmlsbGVkIGJ5IHRoZSBzeXN0ZW0sIHdlIGdldCB0
aGUKQEAgLTI3NSwxMSArMjYxLDExIEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgICAg
IGNvbnN0IGNoYXIgKmRpc3BsYXlFeHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxh
eU9iaiwgRUdMX0VYVEVOU0lPTlMpOwogICAgICAgICBib29sIHN1cHBvcnRzUG93ZXJQcmVmZXJl
bmNlID0gc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVu
Y2UiKTsKICAgICAgICAgaWYgKCFzdXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSkgewotICAgICAgICAg
ICAgYXR0cnMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7Ci0gICAg
ICAgICAgICBpZiAoYXR0cnMucG93ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKLSAgICAgICAgICAgICAgICBhdHRycy5w
b3dlclByZWZlcmVuY2UgPSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVs
dDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNl
R1BVID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2Ug
PT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgewor
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250
ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CisgICAgICAgICAgICBzZXRDb250ZXh0QXR0
cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjk4LDE0
ICsyODQsMTQgQEAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMKICAgICBFR0xfQ2hvb3NlQ29uZmln
KG1fZGlzcGxheU9iaiwgY29uZmlnQXR0cmlidXRlcywgJm1fY29uZmlnT2JqLCAxLCAmbnVtYmVy
Q29uZmlnc1JldHVybmVkKTsKICAgICBpZiAobnVtYmVyQ29uZmlnc1JldHVybmVkICE9IDEpIHsK
ICAgICAgICAgTE9HKFdlYkdMLCAiRUdMQ29uZmlnIEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIExPRyhX
ZWJHTCwgIkdvdCBFR0xDb25maWciKTsKIAogICAgIEVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNf
QVBJKTsKICAgICBpZiAoRUdMX0dldEVycm9yKCkgIT0gRUdMX1NVQ0NFU1MpIHsKICAgICAgICAg
TE9HKFdlYkdMLCAiVW5hYmxlIHRvIGJpbmQgdG8gT1BFTkdMX0VTX0FQSSIpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBWZWN0b3I8RUdMaW50
PiBlZ2xDb250ZXh0QXR0cmlidXRlczsKQEAgLTMzMywyNSArMzE5LDI2IEBAIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJzCiAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhU
X0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0cmli
dXRlcy5hcHBlbmQoRUdMX0ZBTFNFKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRB
U0tfSURFTlRJVFlfVE9LRU4pCiAgICAgYXV0byBkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVy
eVN0cmluZyhtX2Rpc3BsYXlPYmosIEVHTF9FWFRFTlNJT05TKTsKICAgICBib29sIHN1cHBvcnRz
T3duZXJzaGlwSWRlbnRpdHkgPSBzdHJzdHIoZGlzcGxheUV4dGVuc2lvbnMsICJFR0xfQU5HTEVf
bWV0YWxfY3JlYXRlX2NvbnRleHRfb3duZXJzaGlwX2lkZW50aXR5Iik7Ci0gICAgLy8gRklYTUU6
IFVzZSBtX3Jlc291cmNlT3duZXIgb25jZSBpdCBtb3ZlcyB0byBHcmFwaGljc0NvbnRleHRHTENv
Y29hLgotICAgIGlmIChhdHRycy51c2VNZXRhbCAmJiByZXNvdXJjZU93bmVyICYmIHN1cHBvcnRz
T3duZXJzaGlwSWRlbnRpdHkpIHsKKyAgICBpZiAoYXR0cmlidXRlcy51c2VNZXRhbCAmJiBtX3Jl
c291cmNlT3duZXIgJiYgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0eSkgewogICAgICAgICBlZ2xD
b250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NPTlRFWFRfTUVUQUxfT1dORVJTSElQX0lERU5U
SVRZX0FOR0xFKTsKLSAgICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKHJlc291cmNl
T3duZXIudGFza0lkVG9rZW4oKSk7CisgICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVu
ZChtX3Jlc291cmNlT3duZXIudGFza0lkVG9rZW4oKSk7CiAgICAgfQotI2VuZGlmCiAKICAgICBl
Z2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX05PTkUpOwogCiAgICAgbV9jb250ZXh0T2Jq
ID0gRUdMX0NyZWF0ZUNvbnRleHQobV9kaXNwbGF5T2JqLCBtX2NvbmZpZ09iaiwgRUdMX05PX0NP
TlRFWFQsIGVnbENvbnRleHRBdHRyaWJ1dGVzLmRhdGEoKSk7CiAgICAgaWYgKG1fY29udGV4dE9i
aiA9PSBFR0xfTk9fQ09OVEVYVCB8fCAhbWFrZUN1cnJlbnQobV9kaXNwbGF5T2JqLCBtX2NvbnRl
eHRPYmopKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkVHTENvbnRleHQgSW5pdGlhbGl6YXRpb24g
ZmFpbGVkLiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgTE9HKFdlYkdMLCAiR290IEVHTENvbnRleHQiKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
IAorYm9vbCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUluaXRpYWxpemUoKQorewor
ICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgaWYgKG1faXNG
b3JXZWJHTDIpCiAgICAgICAgIEdMX0VuYWJsZShHcmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZF
X1JFU1RBUlRfRklYRURfSU5ERVgpOwogCkBAIC0zNjMsMzggKzM1MCwzNyBAQCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRycwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7CiAgICAgICAgIC8vIEZvciBJT1N1cmZhY2Ut
YmFja2VkIHRleHR1cmVzLgotICAgICAgICBpZiAoIWF0dHJzLnVzZU1ldGFsKQorICAgICAgICBp
ZiAoIWF0dHJpYnV0ZXMudXNlTWV0YWwpCiAgICAgICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMu
YXBwZW5kKCJHTF9BTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CiAgICAgICAgIC8vIEZvciBj
cmVhdGluZyB0aGUgRUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCiAgICAgICAgIHJlcXVp
cmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7
CiAgICAgfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0g
ICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkueHJDb21wYXRpYmxlKQorICAgIGlmIChhdHRyaWJ1
dGVzLnhyQ29tcGF0aWJsZSkKICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xf
T0VTX0VHTF9pbWFnZSJfcyk7CiAjZW5kaWYKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAg
ICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUiX3MpOwotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMo
KTsKICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykgewotICAg
ICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkgeworICAgICAgICBpZiAo
IXN1cHBvcnRzRXh0ZW5zaW9uKGV4dGVuc2lvbikpIHsKICAgICAgICAgICAgIExPRyhXZWJHTCwg
Ik1pc3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0ZXJzKCkp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOworICAgICAg
ICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotICAgIGlmIChjb250
ZXh0QXR0cmlidXRlcygpLnVzZU1ldGFsKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMudXNlTWV0YWwp
IHsKICAgICAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xBTkdMRSB1c2VzIHN5bmMgb2JqZWN0cyB0
byB0aHJvdHRsZSBkaXNwbGF5IG9uIE1ldGFsIGltcGxlbWVudGF0aW9ucy4KICAgICAgICAgLy8g
T3BlbkdMIHN5bmMgb2JqZWN0cyBhcmUgbm90IHNpZ25hbGluZyB1cG9uIGNvbXBsZXRpb24gb24g
Q2F0YWxpbmEtZXJhIGRyaXZlcnMsIHNvCiAgICAgICAgIC8vIE9wZW5HTCBjYW5ub3QgdXNlIHRo
aXMgbWV0aG9kIG9mIHRocm90dGxpbmcuIE9wZW5HTCBkcml2ZXJzIHR5cGljYWxseSBpbXBsZW1l
bnQKICAgICAgICAgLy8gc29tZSBzb3J0IG9mIGludGVybmFsIHRocm90dGxpbmcuCi0gICAgICAg
IGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfc3luYyJfcykpIHsKKyAgICAgICAgaWYg
KHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc3luYyJfcykpIHsKICAgICAgICAgICAgIG1fdXNl
RmVuY2VTeW5jRm9yRGlzcGxheVJhdGVMaW1pdCA9IHRydWU7Ci0gICAgICAgICAgICBleHRlbnNp
b25zLmVuc3VyZUVuYWJsZWQoIkdMX0FSQl9zeW5jIl9zKTsKKyAgICAgICAgICAgIGVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl9zeW5jIl9zKTsKICAgICAgICAgfQogICAgIH0KICAgICB2
YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKLSAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8v
IFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KKyAgICBhdHRyaWJ1dGVz
ID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2
YWxpZGF0aW9uLgogCiAgICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2Vk
IGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpOwpAQCAtNDExLDE4ICszOTcsMTggQEAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cnMKICAgICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJv
KTsKICAgICBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9IG1fc3RhdGUuYm91bmRSZWFkRkJPID0gbV9m
Ym87CiAKLSAgICBpZiAoIWF0dHJzLmFudGlhbGlhcyAmJiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRy
cy5kZXB0aCkpCisgICAgaWYgKCFhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAoYXR0cmlidXRlcy5z
dGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpKQogICAgICAgICBHTF9HZW5SZW5kZXJidWZmZXJz
KDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAKICAgICAvLyBJZiBuZWNlc3NhcnksIGNyZWF0
ZSBhbm90aGVyIGZyYW1lYnVmZmVyIGZvciB0aGUgbXVsdGlzYW1wbGUgcmVzdWx0cy4KLSAgICBp
ZiAoYXR0cnMuYW50aWFsaWFzKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7CiAg
ICAgICAgIEdMX0dlbkZyYW1lYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUZCTyk7CiAgICAgICAg
IEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiAg
ICAgICAgIG1fc3RhdGUuYm91bmREcmF3RkJPID0gbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPSBtX211
bHRpc2FtcGxlRkJPOwogICAgICAgICBHTF9HZW5SZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2Ft
cGxlQ29sb3JCdWZmZXIpOwotICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRycy5kZXB0
aCkKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKQog
ICAgICAgICAgICAgR0xfR2VuUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3Rl
bmNpbEJ1ZmZlcik7Ci0gICAgfSBlbHNlIGlmIChhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIp
IHsKKyAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CiAg
ICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgY3JlYXRlIGFub3RoZXIgdGV4dHVyZSB0byBoYW5kbGUg
cHJlc2VydmVEcmF3aW5nQnVmZmVyOnRydWUgd2l0aG91dAogICAgICAgICAvLyBhbnRpYWxpYXNp
bmcuCiAgICAgICAgIEdMX0dlblRleHR1cmVzKDEsICZtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlclRl
eHR1cmUpOwpAQCAtNDM4LDcgKzQyNCwxMSBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFw
aGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogCiAg
ICAgR0xfQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKIAotICAgIExPRyhXZWJHTCwgIkNyZWF0ZWQg
YSBHcmFwaGljc0NvbnRleHRHTEFOR0xFICglcCkuIiwgdGhpcyk7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCAmJiBhdHRyaWJ1dGVzLmVmZmVjdGl2ZVBv
d2VyUHJlZmVyZW5jZSgpID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdo
UGVyZm9ybWFuY2UpCisgICAgICAgIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRp
b24gPSB0cnVlOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xFKCkKQEAgLTQ4NSwxMSArNDc1LDYgQEAg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoKQogICAgIExP
RyhXZWJHTCwgIkRlc3Ryb3llZCBhIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgKCVwKS4iLCB0aGlz
KTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTENvY29hOjppc1ZhbGlkKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV90ZXh0dXJlOwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CiAgICAgaWYgKCFtX2NvbnRleHRPYmopCkBAIC01NTAs
NyArNTM1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjp1cGRhdGVDb250ZXh0T25E
aXNwbGF5UmVjb25maWd1cmF0aW9uKCkKIH0KICNlbmRpZgogCi1ib29sIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAgICAgQVNTRVJU
KCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgLy8gUmVzZXQg
dGhlIGN1cnJlbnQgYmFja2J1ZmZlciBub3cgYmVmb3JlIGFsbG9jYXRpbmcgYSBuZXcgb25lIGlu
IG9yZGVyIHRvIHNsaWdodGx5IHJlZHVjZSBtZW1vcnkgcHJlc3N1cmUuCkBAIC01NjgsNyArNTUz
LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoKQogICAgIHJldHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygp
OwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmFsbG9jYXRlQW5kQmluZERpc3Bs
YXlCdWZmZXJCYWNraW5nKCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6YWxsb2NhdGVB
bmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewogICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxG
cmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAgIGF1dG8gYmFja2luZyA9IElPU3VyZmFj
ZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCksIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKQEAgLTU5OCw3ICs1ODMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICByZXR1cm4g
YmluZERpc3BsYXlCdWZmZXJCYWNraW5nKFdURk1vdmUoYmFja2luZyksIHBidWZmZXIpOwogfQog
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKQorYm9vbCBH
cmFwaGljc0NvbnRleHRHTENvY29hOjpiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcikKIHsKICAgICBHQ0dMZW51
bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICAgICBTY29w
ZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1
cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdldCksIHRleHR1cmVUYXJn
ZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCKTsKQEAgLTY4OSw3ICs2
NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRldGFjaElPU3VyZmFjZUZyb21T
aGFyZWRUZXh0dXJlKHZvaWQqIGhhbmRsZSkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OnByZXBhcmVGb3JEaXNwbGF5KCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQppbmRleCA3ZDBjZTM2YjYwYTBkNjlhNTkyM2MyNDAwZDAzYmI3YmFkMzg2NDk4
Li4wYmIxMDY1YjNhNjE2NjliOTg1MDE4NTMwNDVhNzBiNmZhYTFiNTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMTUxLDcgKzE1MSw3
IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4CiAgICAgaWYgKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsg
YXR0cmlidXRlcyB9KSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCisgICAgaWYgKCFj
b250ZXh0LT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29u
dGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uY3BwCmluZGV4IDdkNTAwYWJjMGNmMWVlNTUyNjgzMTEyYWZjZjIyMjRhZTY5
NTcxYmYuLmNjNzA5NmQ0NTUxMDZhN2M3MjZjZTAyMWRjNWY5NTU2ZTZkYTlkNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC05OCw3ICs5OCw3IEBAIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBjb250CiAKIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6fkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbigpID0gZGVmYXVsdDsKIAotYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
aWYgKCFtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucykKICAgICAgICAgaW5pdGlhbGl6
ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKTsKQEAgLTEwOSwxMCArMTA5LDEwIEBAIGJvb2wgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKKyAgICBy
ZXR1cm4gcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQordm9p
ZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3Qg
U3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lID09ICJHTF9PRVNfc3RhbmRhcmRfZGVyaXZh
dGl2ZXMiKSB7CiAgICAgICAgIC8vIEVuYWJsZSBzdXBwb3J0IGluIEFOR0xFIChpZiBub3QgZW5h
YmxlZCBhbHJlYWR5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CiAg
ICAgICAgIGlmICghQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykgewogICAgICAgICAg
ICAgQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgICAgICBBTkdM
RVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNp
b25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2Vz
Lk1heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJj
ZXMoQU5HTEVSZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgewpAQCAtMTUwLDEzICsxNTAsMTMgQEAgdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQogICAgIH0KIH0KIAotYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmlzRW5hYmxlZChj
b25zdCBTdHJpbmcmIG5hbWUpCitib29sIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNFeHRl
bnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSAiR0xf
T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikgewogICAgICAgICBBTkdMRVdlYktpdEJyaWRnZSYg
Y29tcGlsZXIgPSBtX2NvbnRleHQtPm1fY29tcGlsZXI7CiAgICAgICAgIHJldHVybiBjb21waWxl
ci5nZXRSZXNvdXJjZXMoKS5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXM7CiAgICAgfQotICAgIHJl
dHVybiBzdXBwb3J0cyhuYW1lKTsKKyAgICByZXR1cm4gc3VwcG9ydHNFeHRlbnNpb24obmFtZSk7
CiB9CiAKIGludCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4IDI5YTBjNGQ4
ZjVhOTI2YzcwOTUzNTQxYzBiMjYxM2ZkYTc1MmI0MjYuLmZjY2I0OGFiODQ4Mjg0MzEyNjU5ZTA2
MTc0MzQ4YjEzZGM2MmUzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgK
QEAgLTI2LDcgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgpAQCAtMzUsMTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKLWNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbiA6IHB1YmxpYyBFeHRlbnNpb25zR0wgeworY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5FeHRlbnNpb25zR0xPcGVuR0xDb21tb24oKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRo
b2RzLgotICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbmFi
bGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYpOworICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpOwogICAg
IGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdApAQCAtNjEsOSArNjAsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgPSAwOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5V
bmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVs
c0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0
YSk7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcyk7CisgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpOwogCiAgICAgYm9vbCBpc05WSURJQSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNOVklESUE7IH0KICAgICBib29sIGlzQU1EKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0FNRDsgfQpAQCAtNzgsNyArNzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5k
IGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwogICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bihHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZyk7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYp
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRFeHRlbnNpb25zKCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcAppbmRleCAxNTQ2MjM2ZjhiNmJkYjUyMjNkMGVkZTM3YWI3NGYwZWQ2
ZjEwYmNmLi41OGNhMWJjOWE1ZTE3MTRlYjYyYzRkOGY0OTEzYzQyY2FmMjU4OWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogICAgIC8vIEZv
ciBHTF9FWFRfcm9idXN0bmVzcywgY2hlY2sgdGhhdCB0aGUgY29udGV4dCBzdXBwb3J0cyByb2J1
c3QgYWNjZXNzLgogICAgIGlmIChuYW1lID09ICJHTF9FWFRfcm9idXN0bmVzcyIpCi0gICAgICAg
IHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpDT05URVhUX1JPQlVT
VF9BQ0NFU1MpID09IEdMX1RSVUU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVn
ZXIoR3JhcGhpY3NDb250ZXh0R0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJVRTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCA5
YTU4MWEwMDBkZDM3MmZmMWVjZGQ5MWZmOTlkZWM5OGFkOGUzODU4Li42Njk4MzgwMWZkZDhkYjIx
NjEyYzczYjM2ZmVjNzNjNmJiMmVkYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApA
QCAtNzEsNiArNzEsMTIgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKIGNsYXNz
IEV4dGVuc2lvbnNHTE9wZW5HTEVTIDogcHVibGljIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiB7
CiBwdWJsaWM6CisgICAgLy8gR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVNfSU1HID0g
MHg5MTMzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9NVUxUSVNBTVBMRV9JTUcgPSAweDkxMzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBNQVhfU0FNUExFU19JTUcgPSAweDkxMzU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBURVhUVVJFX1NBTVBMRVNfSU1HID0gMHg5MTM2OworCiAgICAgLy8gVGhpcyBjbGFzcyBv
bmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBp
bXBsZW1lbnRhdGlvbnMuCiAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpOwogICAgIHZpcnR1YWwgfkV4dGVu
c2lvbnNHTE9wZW5HTEVTKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBmMzBiNWUxZTZlYTlkMDE1Nzc0ZjgwNjBiOTE1M2Y0N2UzMDYyZWFiLi5hNzE0NjUyMGUy
OThkMWMwMDQ2OWRlNWY4ODA3MWEyMmFiYjQ0NmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5jcHAKQEAgLTMxMiwxOCArMzEyLDIwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogI2VuZGlmCiB9CiAKLSNpZiBQTEFU
Rk9STShHVEspCi1FeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRFeHRlbnNpb25zKCkKKyNpZiBQTEFURk9STShHVEspICYmIFVTRShPUEVOR0xfRVMp
CitFeHRlbnNpb25zR0xPcGVuR0xFUyYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVu
c2lvbnMoKQogewotICAgIGlmICghbV9leHRlbnNpb25zKSB7Ci0jaWYgVVNFKE9QRU5HTF9FUykK
LSAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCisgICAg
Ly8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCisgICAgaWYgKCFtX2V4
dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dM
T3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7Ci0jZWxzZQotICAgICAgICAvLyBGcm9tIE9wZW5HTCAz
LjIgb24gd2UgdXNlIHRoZSBDb3JlIHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdl
dFN0cmluZ2kuCisgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7Cit9CisjZWxpZiBQTEFURk9STShH
VEspCitFeHRlbnNpb25zR0xPcGVuR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRl
bnNpb25zKCkKK3sKKyAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3JlIHBy
b2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCisgICAgaWYgKCFtX2V4
dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dM
T3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7Ci0j
ZW5kaWYKLSAgICB9CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTM1
MSwxMCArMzUzLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kKIHsKICAgICBhdXRvIGF0dHJz
ID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
ZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewot
ICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pKSB7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRl
cHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsK
ICAgICAgICAgfSBlbHNlCkBAIC0zNjIsMTEgKzM2MywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaQogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgfQogICAgIGlm
IChhdHRycy5hbnRpYWxpYXMgJiYgIW1faXNGb3JXZWJHTDIpIHsKLSAgICAgICAgaWYgKCFleHRl
bnNpb25zLnN1cHBvcnRzKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKSB7Cisg
ICAgICAgIGlmICghc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlIikpIHsKICAgICAgICAgICAgIGF0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAg
ICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oCmluZGV4IDkxZmVmZWY1MTJmNjUyOGJjM2E3NzgzMWViZTliNjQ1MWQ5
NzQ1NmMuLmZlNzZjOTA2MzQ2MzQxZTY1N2E1MjQzMmFhOTA3NmI3ODVmOTg1OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MywxMCArNDMsOSBAQCBjbGFzcyBHQ0dM
TGF5ZXI7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRXh0ZW5zaW9uc0dM
OwogI2lmIFVTRShPUEVOR0xfRVMpCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKLSNlbGlm
IFVTRShPUEVOR0wpCisjZWxzZQogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMOwogI2VuZGlmCiBj
bGFzcyBIb3N0V2luZG93OwpAQCAtNDA1LDExICs0MDQsMTMgQEAgcHVibGljOgogCiAgICAgLy8g
U3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdo
IG5vdAogICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBz
dXBwb3J0ZWQgb24gdGhlCi0gICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVu
c2lvbnNHTDo6c3VwcG9ydHMoKSB0bworICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2Fs
bCBFeHRlbnNpb25zR0xPcGVuR0x7RVN9OjpzdXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5l
IHRoaXMuCi0gICAgLy8gVXNlIGNvdmFyaWFudCByZXR1cm4gdHlwZSBmb3IgT1BFTkdML09QRU5H
TF9FUwotICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFs
OwotCisjaWYgVVNFKE9QRU5HTF9FUykKKyAgICBFeHRlbnNpb25zR0xPcGVuR0xFUyYgZ2V0RXh0
ZW5zaW9ucygpOworI2Vsc2UKKyAgICBFeHRlbnNpb25zR0xPcGVuR0wmIGdldEV4dGVuc2lvbnMo
KTsKKyNlbmRpZgogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoU2ltdWxhdGVkRXZl
bnRGb3JUZXN0aW5nKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBv
dmVycmlkZTsKQEAgLTQyMCw3ICs0MjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgR0NHTHVpbnQgbV90
ZXh0dXJlIHsgMCB9OwogCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50
cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KLSAgICAvLyBDYWxsZWQgb25j
ZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZl
bnR1YWxseSBjYWxsIE9wZW5HTC4KKyAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1Ymxp
YyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMT3BlbkdML0V4dGVuc2lvbkdMT3BlbkdMRVMg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVz
ZXIncyByZXF1ZXN0ZWQgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLApAQCAtNTEyLDEzICs1
MTMsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRlck5hbWVIYXNo
PiBuYW1lSGFzaE1hcEZvclNoYWRlcnM7CiAKKyAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOwogI2lmIFVTRShPUEVOR0xfRVMpCiAgICAgZnJpZW5kIGNsYXNzIEV4dGVu
c2lvbnNHTE9wZW5HTEVTOwotICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnNHTE9wZW5HTEVTPiBtX2V4dGVuc2lv
bnM7Ci0jZWxpZiBVU0UoT1BFTkdMKQorI2Vsc2UKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9u
c0dMT3BlbkdMOwotICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb247CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnNHTE9wZW5HTD4gbV9leHRlbnNpb25zOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXgg
NjhiNmNkM2Y1MjRiZjZhMDllYWY3ZmQ2ODQ4ZmJhYzFkYTczM2FiMy4uYzM1YjJmMGYxNWQ5Y2Qw
OWI5YjI4YmUwYmY0NDc3ODg3NDMwNTczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTM0NSwxMCArMzQ1LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51CiAgICAgICAgIHR5cGUgPSBHTF9IQUxGX0ZMT0FUX0FSQjsKICAgICB9CiAKLSAgICBB
U1NFUlQoZm9ybWF0ICE9IEV4dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCk7Ci0gICAgaWYg
KGZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUKQorICAgIEFTU0VSVChmb3Jt
YXQgIT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0I4X0FMUEhBOF9FWFQpOworICAgIGlmIChmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUKQogICAgICAgICBvcGVuR0xG
b3JtYXQgPSBHTF9SR0JBOwotICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNS
R0JfRVhUKQorICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9F
WFQpCiAgICAgICAgIG9wZW5HTEZvcm1hdCA9IEdMX1JHQjsKICNlbmRpZgogCkBAIC0zOTgsNyAr
Mzk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xh
bXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9u
c0dMT3BlbkdMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAg
ICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDM4NjQxOThmNzRhNTkyYmE0Mjlj
NmQwYThiYzYxZGU4MWEzOGY2MDkuLjgzYjliODZjNTMyNzJmYzU0MTU3YzkwZjQ2NjVhZjgxMTk4
ZGE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEw
NCw3ICsxMDQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhj
b25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdo
ZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBv
cnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJp
YnV0ZXMuZGVwdGgpICYmIGdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVy
ID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAKICAgICAvLyBSZXNpemUg
cmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpAQCAtMTMxLDEw
ICsxMzEsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7
CiAjZW5kaWYKIAotICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVTJiBleHRlbnNpb25zID0gc3RhdGlj
X2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdMRVMmPihnZXRFeHRlbnNpb25zKCkpOworICAgIEV4dGVu
c2lvbnNHTE9wZW5HTEVTJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChl
eHRlbnNpb25zLmlzSW1hZ2luYXRpb24oKSAmJiBhdHRyaWJ1dGVzLmFudGlhbGlhcykgewogICAg
ICAgICBHTGludCBtYXhTYW1wbGVDb3VudDsKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KEV4dGVu
c2lvbnNHTDo6TUFYX1NBTVBMRVNfSU1HLCAmbWF4U2FtcGxlQ291bnQpOyAKKyAgICAgICAgOjpn
bEdldEludGVnZXJ2KEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpNQVhfU0FNUExFU19JTUcsICZtYXhT
YW1wbGVDb3VudCk7IAogICAgICAgICBHTGludCBzYW1wbGVDb3VudCA9IHN0ZDo6bWluKDgsIG1h
eFNhbXBsZUNvdW50KTsKIAogICAgICAgICBleHRlbnNpb25zLmZyYW1lYnVmZmVyVGV4dHVyZTJE
TXVsdGlzYW1wbGVJTUcoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9U
RVhUVVJFXzJELCBtX3RleHR1cmUsIDAsIHNhbXBsZUNvdW50KTsKQEAgLTI0NCw3ICsyNDQsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogCiAg
ICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRy
aWJ1dGVzLmFudGlhbGlhcyAmJiAhZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9JTUdfbXVs
dGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5hbnRp
YWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90
b190ZXh0dXJlIikpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAg
ICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpAQCAtMjY3LDcg
KzI2Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNs
YW1wZiBkZXB0aCkKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lv
bnNHTE9wZW5HTEVTJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7
CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlx
dWU8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4
dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuY3BwCmluZGV4IGU1NGFlM2Y3OTlmODUyZTFlZTdhNzA2MDdjOTA3YmZjMmM0
NWFjMTIuLjkxZThlYTgwMTRiN2E5NTg5MDBiNGY3MWM2MDQzNzE5NjZjMTVkYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJl
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiTmF0aXZl
SW1hZ2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAKaW5kZXggNzUwYTg0YWY2MzgyYzU0MTMwY2YzNmU4NmQ5YmM4Yzc2MDRjZmJjYi4uYzVkN2Iy
ZWYzODc4ZjU3OGE3MmY5YjQ1NGFjZWEzMmZjZGEwMmEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ3LDE1ICs0Nyw4IEBACiAjaW5j
bHVkZSAiT3BlbkdMU2hpbXMuaCIKICNlbmRpZgogCi0jaWYgVVNFKEFOR0xFKQotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTEFOR0xFLmgiCi0jZWxzZQorI2lmICFVU0UoQU5HTEUpCiAjaW5jbHVkZSA8
QU5HTEUvU2hhZGVyTGFuZy5oPgotI2lmIFVTRShPUEVOR0xfRVMpCi0jaW5jbHVkZSAiRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuaCIKLSNlbHNlCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMLmgi
Ci0jZW5kaWYKICNlbmRpZgogCiAjaWYgVVNFKE5JQ09TSUEpCkBAIC0xMDgsNyArMTAxLDEwIEBA
IHByaXZhdGU6CiAKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmIGF0dHJpYnV0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXVEZN
b3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb250ZXh0OwogfQogCiBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9
IGRlZmF1bHQ7CkBAIC0xNDgsNyArMTQ0LDggQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXgKIAog
ICAgIC8vIENyZWF0ZSB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2JqZWN0IGZpcnN0IGlu
IG9yZGVyIHRvIGVzdGFibGlzdCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlzIHRocmVhZC4KICAg
ICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwotCisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNpZiBVU0UoTElCRVBPWFkpICYmIFVT
RShPUEVOR0xfRVMpICYmIEVOQUJMRShXRUJHTDIpCiAgICAgLy8gQmFpbCBpZiBHTEVTMyB3YXMg
cmVxdWVzdGVkIGJ1dCBjYW5ub3QgYmUgcHJvdmlkZWQuCiAgICAgaWYgKGF0dHJpYnV0ZXMud2Vi
R0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDIgJiYgIWVw
b3h5X2lzX2Rlc2t0b3BfZ2woKSAmJiBlcG94eV9nbF92ZXJzaW9uKCkgPCAzMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAppbmRleCAyZGIyZThkN2Q5Y2Q3
YjljYWJiNGM5Y2E0MTcyNDNmMGU3YTBiNTIyLi45MWZhNTViY2Y4NGQ3MTk3MGJjNTBmODQzNzdl
NTVhNDBkN2YwYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTFRlCiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IGNyZWF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CiAgICAgfkdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcigpOwotCisgICAgCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQmFzZSBvdmVycmlkZXMuCiAgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogI2lmIEVOQUJMRShWSURFTykKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogI2VuZGlm
CiAjaWYgVVNFKEFOR0xFKQogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmlu
YWw7CisgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSBmaW5hbDsKKyAgICB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAK
aW5kZXggMWYxODI0ZTIxZWM3ZGQ0OTcwZDE1OTkzNDRkZWJkY2UxYjgzMDIyYS4uYjAyZTY2Njg0
OTZhZDZiN2E0YTJiNjk5NzFiY2ExNGZmYmE1NDE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ckFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCkBAIC0zMSw3ICszMSw2IEBA
CiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKIApAQCAtNjcs
NiArNjYsOCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xF
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaQogI2VuZGlmCiAgICAgYm9vbCBzdWNj
ZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBz
dWNjZXNzKTsKKyAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZSgpOworICAgIEFTU0VSVF9VTlVTRUQo
c3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBhdHRy
aWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1
cmluZyB2YWxpZGF0aW9uLgpAQCAtMjYwLDExICsyNjEsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXI6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCiB7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZUZvckRpc3BsYXkoKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKIH0KIAot
Ym9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmco
KQorYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZygpCiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAg
ICAgY29uc3QgYXV0byBzaXplID0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKaW5kZXggZDI2MWE0MDI0Y2Y3ZWY3MTg3YTEwZjQ3N2ViNTMzZWYyNDZj
ODhjYS4uYTM3ZjRhNThjNmU4MGQzNjY0NjIzZmM3NmQxMDBhOTM2OTMxNTYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFRleHR1
cmVHTC5oIgogI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVQb29sLmgiCi0jaW5jbHVkZSAiRXh0ZW5z
aW9uc0dMLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCmluZGV4IDk4MDA1NzhiNTIwODQzMTdlODg2NTJkZmM1MmM3NmNjMWMyZmY0M2QuLmYx
ZDRkZWEzMGI1YzExNzU1MGY3N2I0MGI0MzA2N2ZiMDQwM2FhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyCiAg
ICAgaWYgKG1fY29udGV4dCkgewogICAgICAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7
CiAgICAgICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgICAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRl
bnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpSRVFVRVNUQUJMRV9F
WFRFTlNJT05TX0FOR0xFKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9
IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRVFVRVNUQUJMRV9FWFRF
TlNJT05TX0FOR0xFKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVh
bVdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpLCBleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4
dGVuc2lvbnMpKTsKICAgICB9IGVsc2UKICAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwgSVBDOjpTZW1hcGhvcmUgeyB9
LCAiIiwgIiIpKTsKQEAgLTE5NSwxMCArMTk1LDEwIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmdldEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBs
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0
cmluZyYmIGV4dGVuc2lvbikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQp
OwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9u
KTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKTsKIH0K
IAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7
CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBtX2NvbnRleHQtPm1h
cmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAxMGMwNjM2MTg2
N2Q1ZTg4M2ViOWQ2YTg1MzI1Y2Q5MTBmYmRlMzE3Li5lMTgxZDJlMjA1NDA3YTViZTQ5NzNhZDdh
YzFiYmY3ODA1NjZkOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgIlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlN0cmVhbU1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0xMDEsOSArMTAwLDkgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFs
OwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCByZXNoYXBlKGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKICAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoU3RyaW5nJiYpOwotICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7Cisg
ICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNl
bmRSaWdodCYmKT4mJikgPSAwOwogI2VsaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IDkwOTdiNDI3MGJmNTNkYTI0
YzA5M2E1N2VhM2NjYjE3YTI5MDdmZjUuLmRlYTRiOWQ5MjA3ZjgxOGQ4NTVlMWY0YmYwMWU5MTdk
NWIxMGQ4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAg
LTM2LDcgKzM2LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVm
Q291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5j
aHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBl
eHRlbnNpb24pCi0gICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorICAgIHZvaWQg
TWFya0NvbnRleHRDaGFuZ2VkKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90
IGVycm9yKQogICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9u
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oCmluZGV4IGQxYzMyOTA1MTdkMjk2YzUxZTM1NmU4YjRlNTcwYzA2N2JiNzc1OGQuLjkzYmQ2
NzcxNjhiYjQ0Yzk4MTM0ZGM3ODk4YzkwM2UwZmJkMDNlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMzM3LDIwICsxMzM3
LDIwIEBACiAgICAgewogICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OwogICAgICAg
ICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwogICAgIH0KICAg
ICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7
CiAgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICAgICAgYXNzZXJ0SXNDdXJy
ZW50KG1fc3RyZWFtVGhyZWFkKTsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAg
ICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoYXJnMCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUp
KTsKICAgICB9CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PiYmIGJ1ZnMpCiAgICAgewogICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1U
aHJlYWQpOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VY
VChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0
YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVyc0VYVCht
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgp
KSwgYnVmcy5zaXplKCkpKTsKICAgICB9CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KHVp
bnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1
aW50NjRfdCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDAwZDRhOGJkZGM1YzA0MWZmYjAz
OTQ5MDJlOTc5OTcxNTE1YzM0YmQuLjljZmRjZmQxYTlhODU5N2VkZmYxZDBhZTE2MDM5ODVjYWIz
NzUyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAt
NDYsNyArNDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKIAogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFj
a2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJpYnV0ZXMp
CisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKQogICAgICwgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rp
b24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkK
IHsKQEAgLTYzLDMxICs2Myw3MyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiAgICAgZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5l
ZWRlZCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOwotICAgIG1fY3Vy
cmVudEhlaWdodCA9IGhlaWdodDsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAg
aWYgKCFzZW5kUmVzdWx0KQotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCitib29sIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewotICAgIGlm
IChpc0NvbnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChleHRlbnNpb24pKTsKLSAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgIG1hcmtD
b250ZXh0TG9zdCgpOworI2lmIEVOQUJMRShXRUJHTDIpCisgICAgcmV0dXJuIGNvbnRleHRBdHRy
aWJ1dGVzKCkud2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpX
ZWJHTDI7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8g
RklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5
ZXJDb21wb3NpdGVkKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENo
YW5nZWQoKTsKKyAgICAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Ok1hcmtDb250ZXh0Q2hhbmdlZCgpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQogfQogCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCiti
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lv
bnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkp
IHsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgICAgIGlmIChp
c0NvbnRleHRMb3N0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRl
bnNpb25FbmFibGVkKG5hbWUpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5pdGlhbGl6ZShjb25z
dCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVF
eHRlbnNpb25zKQoreworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5z
aW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVu
c2lvbik7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
c3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSk7CisgICAgbV9jdXJyZW50
V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hh
cGUod2lkdGgsIGhlaWdodCkpOwogICAgIGlmICghc2VuZFJlc3VsdCkKICAgICAgICAgbWFya0Nv
bnRleHRMb3N0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmlu
ZGV4IDVkMWNhYjIxOGY3ODVjYmExMTQ2YTg5MTIyYjMwZDEwY2M2ODMwN2MuLjM0NGZlOTg1ZDgw
M2NkYjI3Y2YxZTcyYWRmYjViNjlhZTY3MGYwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHRHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC01MCw3
ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eQogICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHJpdmF0
ZSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgLCBwdWJsaWMgV2ViQ29yZTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgeworICAgICwgcHVibGljIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgflJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoKTsKQEAgLTU4LDExICs1OCwxNCBAQCBwdWJsaWM6CiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKLSAgICAvLyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCisgICAgLy8gV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHVzaW5nIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7Ci0gICAgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHko
Ym9vbCkgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7Cisg
ICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQpAQCAtMzI0LDkgKzMyNyw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwogCi0gICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2Ugb3ZlcnJpZGVzLgotICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsKLQog
ICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpIGNvbnN0IHsgcmV0dXJuICFtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uOyB9CiAgICAgdm9pZCBtYXJrQ29udGV4dExvc3QoKTsKIApAQCAtMzUzLDExICszNTMs
MTggQEAgcHJpdmF0ZToKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IG92ZXJy
aWRlcy4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mKSBmaW5hbDsKIAorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKTsK
KyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CiAgICAgdm9pZCBkaXNjb25uZWN0R3B1
UHJvY2Vzc0lmTmVlZGVkKCk7CiAgICAgdm9pZCBhYmFuZG9uR3B1UHJvY2VzcygpOwogCiAgICAg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgYm9vbCBt
X2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OworICAgIC8vIEd1YXJkZWQgYnkgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKS4KKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNpb25zOwor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKKworICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOwogICAgIEdDR0xlbnVtIG1fZXJyb3JXaGVu
Q29udGV4dElzTG9zdCA9IE5PX0VSUk9SOwogICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
biBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIyN2NlNTM1Yzc4Y2Y1ZmMyZWVlODZkMDA0YmE3MDAyNjA2
MzNkMzMuLmMxZDhjMWExMTJmMDAzYWQ0MzQzOTQyNzU4ODNkMWYwNmJiMDRmNzkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMi0wMi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIEV4dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVt
b3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
NDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIG1hbnVhbGx5IGltcGxlbWVudGVkIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBTY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjItMDItMTAgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVBy
b3h5IHRvIHJlcHJlc2VudCBjYXB0dXJlZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJl
YW1zIGFuZCBwcmVzZW50IGluIEdQVVAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAz
MzI1NzNjOWRiMmEyZjA2MDE1ZGI5Y2RlNWJlMjI5Y2EzNDk1MDY4Li5jMmZlNTQ4MTJjYjkwYTYx
NGExZGMwNWRhNDY1NDI5NGYzMzE0MTQ2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBA
IC00MSw3ICs0MSw2IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSB0eXBpbmcgaW1wb3J0IExp
c3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVy
YXRvciwgSXRlcmF0b3IsIENvdW50ZXIKIAogcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmls
ZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCi1leHRlbnNpb25zX2lucHV0X2Zu
ID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhp
Y3MiIC8gIkV4dGVuc2lvbnNHTC5oIgogCiBmdW5jdGlvbnNfaW5wdXRfZm5zID0gWwogICAgIHJv
b3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdy
YXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCkBAIC0xMDEsNyArMTAw
LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBT
dHJlYW0ge3sKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMK
ICNlbmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9u
KQotICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKKyAgICB2b2lkIE1hcmtDb250
ZXh0Q2hhbmdlZCgpCiAgICAgdm9pZCBTeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikK
ICAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cwogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwpAQCAt
NDI2LDE0ICs0MjUsMTIgQEAgY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKICAgICBuYW1lOiBzdHIK
ICAgICBhcmdzOiBjcHBfYXJnX2xpc3QKICAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKLSAgICBp
c19leHRlbnNpb246IGJvb2wKICAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBf
YXJnX2xpc3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBfYXJnX2xpc3QpOgogICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5f
dHlwZQogICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCi0gICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9u
ID0gaXNfZXh0ZW5zaW9uCiAgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gIiIKIAogICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgpAQCAtNzIzLDcgKzcyMCw2IEBAIGNsYXNzIGNvbnRleHRfcHJv
eHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CiBjbGFzcyB3ZWJraXRfaXBjX2Nw
cF9pbXBsKG9iamVjdCk6CiAgICAgbmFtZTogc3RyCiAgICAgYXJnczogY3BwX2FyZ19saXN0Ci0g
ICAgaXNfZXh0ZW5zaW9uOiBib29sCiAgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQogICAg
IGNhbGxfc3RtdHM6IExpc3Rbc3RyXQogICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCkBA
IC03MzUsNyArNzMxLDYgQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgogICAg
ICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCiAgICAgICAgIHNlbGYub3ZlcmxvYWRfc3Vm
Zml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRfc3VmZml4CiAgICAgICAgIHNlbGYuYXJncyA9IGNwcF9h
cmdfbGlzdChbXSkKLSAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRl
bnNpb24KICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCiAgICAgICAgIHNlbGYuY2Fs
bF9zdG10cyA9IFtdCiAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KQEAgLTc1MCwx
MiArNzQ1LDExIEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKIAogICAgIGRl
ZiBwcm9jZXNzX2NhbGwoc2VsZik6CiAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbICJhc3Nl
cnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOyIgXQotICAgICAgICBleHQgPSAiZ2V0RXh0ZW5z
aW9ucygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgogCiAgICAgICAgIGluX2V4cHJz
ID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQogICAgICAgICBpc19h
c3luYyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAogCi0gICAgICAgIGNhbGxfZXhwciA9IGYi
bV9jb250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBjYWxsX2V4
cHIgPSBmIm1fY29udGV4dC0+e3NlbGYubmFtZX0oe2luX2V4cHJzfSkiCiAgICAgICAgIGlmIG5v
dCBzZWxmLnJldHVybl92YWx1ZV9leHByOgogICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9
IFtmIntjYWxsX2V4cHJ9OyJdCiAgICAgICAgIGVsc2U6CkBAIC04OTEsOCArODg1LDggQEAgZGVm
IGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjczogSXRlcmFibGVbc3RyXSk6CiAgICAgcmV0
dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkp
IGZvciBpLCBlIGluIGVudW1lcmF0ZShhcmdzX3NwZWNzKV0pCiAKIAotZGVmIGNyZWF0ZV9jcHBf
ZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwg
aXNfZXh0ZW5zaW9uOiBib29sKToKLSAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1
cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xp
c3QoYXJnc19zcGVjcyksIGlzX2V4dGVuc2lvbj1pc19leHRlbnNpb24pCitkZWYgY3JlYXRlX2Nw
cF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJd
KToKKyAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5
cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcykpCiAK
IAogZGVmIHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVyYWJsZVtzdHJdLCBtYXRjaCA6IHN0
cikgLT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06CkBAIC05MDgsMjAgKzkwMiw2IEBAIGRl
ZiBtYWluKCk6CiAKICAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVt
b3RlIGZyb20gd2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCiAKLSAgICAjIEZJWE1FOiBVbnRp
bCBleHRlbnNpb25zIGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhl
IGltcGxlbWVudGF0aW9uCi0gICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEg
ZnVuY3Rpb24gaXMgb3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KLSAgICBleHRlbnNp
b25fc2lnbmF0dXJlcyA6IFNldFtzdHJdID0gc2V0KCkKLSAgICB3aXRoIG9wZW4oZXh0ZW5zaW9u
c19pbnB1dF9mbikgYXMgZjoKLSAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKLSAg
ICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkg
PSAwOyIsIGxpbmUpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIGZ1bmMgPSBj
cmVhdGVfY3BwX2Z1bmMoCi0gICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKLSAgICAgICAgICAgICAgICAgICAgYXJnc19z
cGVjcz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKLSAgICAgICAgICAgICAgICAgICAgaXNf
ZXh0ZW5zaW9uPVRydWUsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGV4dGVu
c2lvbl9zaWduYXR1cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKICAgICBmdW5jcyA9IFtdCiAgICAg
dW5pbXBsZW1lbnRlZCA9IFtdCiAgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6CkBA
IC05MzgsOSArOTE4LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWU9ZnVuY19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3Mo
bVszXSksCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249RmFsc2UsCiAgICAg
ICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgZnVuYy5pc19leHRlbnNpb24g
PSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9uX3NpZ25hdHVyZXMKICAgICAgICAgICAgICAgICAgICAg
aWYgZnVuYy5pc19pbXBsZW1lbnRlZCgpOgogICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Mu
YXBwZW5kKGZ1bmMpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451674</attachid>
            <date>2022-02-11 04:15:32 -0800</date>
            <delta_ts>2022-02-11 05:30:03 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236490-20220211141530.patch</filename>
            <type>text/plain</type>
            <size>278311</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uNDA1NWY5MWUxZDUyMjliMThkN2Y4MjlhMjFkNDVj
NDEwNTIxOGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJv
dGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFnZSI+
IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTM1
Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZWJjMDFjOWZiNDA4YmQxNjZk
NTQ2OTBkZTU4NjgzZjlhNjUxZjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTEx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDU3YzRhYTliMWExOGNjZmE5YWIyODdlNGUwYjM3MGVlM2FkNTA5Yy4uMWQ2
ODAxNTBlYmY5YzExMTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MDgsNyArMTkwOCw2IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICkKICAg
ICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFm
NWJhZmFjMi4uNDI4OWIxM2FkZTgwM2YyZjJhOTQwOTVjMzg1OGNkZWMzNzM3NTFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xNDM1LDcgKzE0MzUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgKQEAgLTE1NTMsNyArMTU1Miw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMTU4MSw3ICsxNTc5LDYgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
SGVhZGVycy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMjM5YTIyYmQxMDMwMjFkMTI3NTI2YTBmNDhjNzAxZDliNjc0MGUzNS4uYWRkYzEw
MjFmODA5M2UxMDE1OTZmYTc0ZGJhYjY5MGZjYzk4Zjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzIsMTIgKzI3MiwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwog
ICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbGlmIFVTRShP
UEVOR0xfRVMpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5z
aW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGF1dG8mIGV4dGVuc2lv
bnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4
dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwg
PSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsK
ICNlbHNlCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBhdXRvJiBleHRlbnNp
b25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCY+KGdsKS5nZXRF
eHRlbnNpb25zKCk7CiAgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2ls
ID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9D
T01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5U
OwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBG
cmFtZWJ1ZmZlcigpCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBnbC5nZXRJbnRlZ2VydihHTDo6
TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbHNlCi0g
ICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dM
U3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NHTFNwYW4oJm1heFNhbXBsZUNvdW50LCAx
KSk7CiAjZW5kaWYKICAgICAgICAgLy8gQ2FwIHRoZSBtYXhpdW11bSBtdWx0aXNhbXBsZSBjb3Vu
dCBhdCA0LiBBbnkgbW9yZSB0aGFuIHRoaXMgaXMgbGlrZWx5IG92ZXJraWxsIGFuZCB3aWxsIGlt
cGFjdCBwZXJmb3JtYW5jZS4KICAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1h
eFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0
YWIzM2E4YmQ3NWU3YTU4YS4uOGM4MDVmMmYwNzdmZmVjYWI3YzUxNWE2YWM3NzQ1ZmIzZWMxY2Nm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIwNzMsNyArMjA3Myw2IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQx
ZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uN2JkNWEyNGI0YTYxYWJhMjEwYmZiNDVhYThjYjczMzIz
MjJmNWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTUsNiArNjE1LDUgQEAgdGVz
dGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCiAvLyB3aXRo
IGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdMLgogCiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2
MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uYjQ1YmQwZDlmYTJkMWM1NmQ1ZGYyMGIx
MjZiYTJjMzU3YWY2NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NywxMSArMjE4Nyw4IEBACiAJCTZFNDdFNjYxMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJD
RDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQy
OTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBF
eHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Ki87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUy
OTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07
Ci0JCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDQyMjlDOUY4
RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi87IH07CiAJCTZFNzJGNTUxMjI5RENE
MUEwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLzsgfTsKIAkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RThBQ0RFRDIzMzQ1
Q0JDMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4QUNERUIyMzM0NUNBRjAwMjRBQUY1
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCAqLzsgfTsKQEAgLTI0MTIsNyArMjQwOSw2
IEBACiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhB
QzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5NUNGRUQyNzU0
RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwODY5LDggKzEwODY1LDYgQEAKIAkJNkUyNDJCMjkyMzM1OTNENzAw
MkNBREQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjQyQjJBMjMzNTkzRDgwMDJDQURENCAvKiBKU1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xB
TkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25z
R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQ0MjI5QzlG
OEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFyeUFOR0xFU2V0
dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYzMjI5REI5NzAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA5MDIsNyArMTA4OTYsNiBAQAogCQk2RTUzODhFMDI0NThBRTFEMDA3NkFFMDMgLyogV2Vi
R0xDb2xvckJ1ZmZlckZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTM4OEUxMjQ1OEFF
MUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29sb3JC
dWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTc2QkMzMjRF
QjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVu
c2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTdDQTMwQTI1QjREMjhB
MDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMTXVs
dGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFN0NBMzBCMjVCNEQzMjgw
MDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xNdWx0aURyYXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTg0RTlERTE3
NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE1MjYsNyArMTE1MTksNiBAQAogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I5MDQxNkUyNTUwMTEw
OTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTVDRkVDMjc1
NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1NDIsNyArMTE1MzQsNiBAQAogCQk3
QkREQTMxRDI3NEY5REE1MDAzODY1OUUgLyogR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzQ5Mjc1QTAxMzAwMDM4NjU5RSAvKiBQ
cm9jZXNzSWRlbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c0lkZW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzRCMjc1QTAx
MzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RUYy
NzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRkY1OUYxMjc1NzcxRTgwMDc3M0QzOSAv
KiBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdz
LmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0Mzk1LDggKzI0Mzg2LDYgQEAKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIg
LyogQU5HTEVIZWFkZXJzLmggKi8sCiAJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFO
R0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5H
TEVVdGlsaXRpZXMuaCAqLywKLQkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwICovLAotCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRl
bnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKIAkJCQk3Qjk1Q0ZFQzI3NTRGRjdDMDAwMDYwQ0Ug
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5
ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLApAQCAtMjg4NzAsNyArMjg4NTks
NiBAQAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcyQyAvKiBEaXNwbGF5VXBkYXRlLmNwcCAq
LywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMgLyogRGlzcGxheVVwZGF0ZS5oICovLAog
CQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLywK
LQkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8sCiAJCQkJ
MkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5jcHAgKi8sCiAJCQkJMkU4ODhD
QTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5oICovLAogCQkJCUIyNzUzNTNBMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKQEAgLTI5MDY1LDggKzI5MDUzLDYgQEAK
IAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyogUGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAot
CQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgKi8sCi0JCQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEw
OEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBF
QTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMzQ0NDEsOCArMzQ0MjcsNiBAQAogCQkJ
CTJEMjkzODZCMjM1RjZCNjkwMEM3RjNCMiAvKiBFeGNlcHRpb25EZXRhaWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTcyRjU1MDIyOURDRDE3MDBC
M0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0UyNzY1
MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY3NjEsNyArMzY3NDUsNiBA
QAogCQkJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjkwNDE3MDI1NTAxMTQy
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXli
YWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0MjE3
N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
ODY0OCw3ICszODYzMSw2IEBACiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1By
b3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyMjgzMDMyM0E4NDcwNzAwMzY0
QjdFIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTU5MjI4MEU5MjYw
MDJCMjJBQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkU3
MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdhbWVDb250
cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRENjE2MDBG
QTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRleCA4MjIwMzM5MTVk
MDRlM2IwYzI5NjJmYmI1MjM0ZTkzNGY5M2E3MTE3Li44NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZm
YzE4N2Y2Y2Y1YmJlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
QU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0yOCwxMCArMjgsNiBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbmNsdWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0o
R1RLKSB8fCBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKFdQRSkKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArMzgsNyBAQCBBTkdMRUluc3RhbmNlZEFycmF5czo6
QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKICNlbmRpZgogfQogCkBAIC01MywxMCArNDksMTAgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBBTkdMRUluc3RhbmNlZEFycmF5c05hbWU7CiB9CiAKLWJvb2wgQU5HTEVJbnN0YW5jZWRBcnJh
eXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBB
TkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDMyZWI4
OTdiMTZkOTA5ZDM5NGExMGE3ODUxYzFlMzI2NzU0ZWM5MzYuLjY5YzQ0ZGQ0OTEzYWZlM2Q1ZjBl
YjNkZjMwYTgxN2MzNGJmZjA4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKaW5kZXggMDllNTBjNGNiYWQzZjU5
OGEzMjJkOTA1MWM5ODNmZmIwZTdiMjVlNy4uNzk2NTYwYmQ0Y2U2YTUwOTYxNjNiZTE5NDAwYmVl
ZTI0ODJmMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsMTAgKzM3LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRD
b2xvckJ1ZmZlckZsb2F0KTsKIEVYVENvbG9yQnVmZmVyRmxvYXQ6OkVYVENvbG9yQnVmZmVyRmxv
YXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
S2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zs
b2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVYVENvbG9y
QnVmZmVyRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSAr
NTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckZsb2F0
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9
CiAKLWJvb2wgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZm
ZXJGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5oCmluZGV4IGViMjlmYTBlNTQ5M2EyNDgxMWNjMTA2ODczNjNhMWQ4OWNiZGZkNzYuLjk1NDhm
MGY5M2YwZTQ2N2Q2YjkyYWFlZmRjNTk1M2Y0OGQ1MzgwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCmluZGV4IDc5ZTFjYzE5ZDFlYmY3
ZWMwNzQ3ZTM2NWIyMGJmNDFiY2MzMzIwNGYuLjBlZmVkODNhZDZhOTFmMDQ0MWIyM2U0NzE0MmFi
OTg3NzgzMzQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KTsKIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0
OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29s
b3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
Il9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdCgpID0gZGVmYXVsdDsKQEAgLTQ4LDEwICs0NywxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0
ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxm
RmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZs
b2F0LmgKaW5kZXggMTA3NzllZjZjMmM5YzQyNmYzZDY1MTE2MWU4ZjZkMGRkZjIzY2Y3NS4uNmY0
YmM0ODFhMzA0ZjY0ZDQ1ZDkyMmIxYjcyMzExZmM5OGQ5Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKaW5kZXggOGVmNjg3OTMzYWFlY2Y1YjhkMzNjZTAy
MDc4ODJjMmJkZDU3ODk2MS4uYmRkODVkMDcwZDA4NzEzOTYzZGMxN2IxNjRhMmZiYWVlNjA3MDIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhURmxvYXRCbGVu
ZC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhURmxvYXRCbGVuZCk7CiBFWFRGbG9hdEJsZW5kOjpF
WFRGbG9hdEJsZW5kKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBFWFRGbG9hdEJsZW5kOjp+RVhURmxvYXRC
bGVuZCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgRVhURmxvYXRCbGVuZDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVYVEZs
b2F0QmxlbmROYW1lOwogfQogCi1ib29sIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBFWFRGbG9hdEJsZW5kOjpz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZmxvYXRfYmxlbmQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCmluZGV4IDIyYzMwMmEz
MzBhNjIyMjM1Y2Y2ODUyOTNjZDhjMTY4NTZhNDU3YmUuLjQ0NmI5ZmYzNzFkYzI5MmI4ZmU2MTgy
OTMyZDU4ZjU2NjYwNjc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZsb2F0QmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9h
dEJsZW5kLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcAppbmRleCA0NjNhNTg3M2NmMzA5NjMxMmQ5N2Q2MzI3ZjYxYWU4MWU0NzFkZDdk
Li40NmM5NjBmMTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM4LDEyICszNywxMiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9S
R1RDMl9FWFQpOwogfQogCiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCmluZGV4IDUyNzEzOGYzMGY3
NWZhZDA3Mzk4NTk0YjMzM2E3ZGY5YzE0MmQyODAuLmU2NmJiODI0M2E3Mzc5MjFhMGQ1MzUzNzVm
ZWM2Y2RmM2IzOWFmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCIKIAotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk7CiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGU6OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3BhcmFsbGVsX3NoYWRl
cl9jb21waWxlIl9zKTsKIH0KIAogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjp+S0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGVOYW1lOwogfQogCi1ib29s
IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3Bh
cmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKIH0KICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKaW5kZXggMWZjZmMyYjU4ZWQ5ZmI0ZTZkMTE3
NDE4NjE0N2RmM2JkYzAyNTNhOS4uODM4MDRkNmRmOWYyNjMxZDlhNzNkOTUwOGVhNzEwZjlhY2I1
MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1h
cC5jcHAKaW5kZXggNzFhODFkMGQ5MzA5ZDY0NGVlNDg2OGJkYWEyM2VkODc4NGFmNTIxYi4uNjUy
MjBiN2FiYzA3MTMzNTY1NmJkN2ZiMzUzNjJmM2U0YTIyZjZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIk9FU0ZCT1JlbmRlck1pcG1hcC5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTRkJPUmVuZGVyTWlwbWFwKTsKIE9FU0ZCT1JlbmRlck1pcG1h
cDo6T0VTRkJPUmVuZGVyTWlwbWFwKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiBPRVNG
Qk9SZW5kZXJNaXBtYXA6On5PRVNGQk9SZW5kZXJNaXBtYXAoKSA9IGRlZmF1bHQ7CkBAIC00OCw5
ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU0ZCT1JlbmRlck1pcG1h
cDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU0ZCT1JlbmRlck1pcG1hcE5hbWU7CiB9
CiAKLWJvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBt
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCmlu
ZGV4IDMzOTZmOWUxZTExNGU1MWFmY2RmZGQ4M2YzZWQyZWI2ODMzZTZkZjIuLjAyYTcyOGNjZWUx
ZmViZTAwNmQyZDk2YTRkMDg3MGQ4YTRmMjA0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwCmluZGV4IGU5MmIyZmVmYmYwOTQ2OGJlY2RiZDFlZjhkOWRkMjEwZDViOGMy
MGYuLjVkMWU4OTY3N2U2MTJjMjk3ZTQ2MjkxMTg0MzY3MzhmMzU5YjlkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTVGV4dHVyZUZsb2F0KTsKIE9FU1RleHR1cmVGbG9hdDo6T0VT
VGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9z
KTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWly
ZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAK
IE9FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTUzLDkg
KzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUZsb2F0Ojpn
ZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsKIH0KIAotYm9v
bCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0Nv
bnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsK
KyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxv
YXQiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IDhhNzI3NGRkZWNhOGY3ZDNiMjM0NjU2
YWIzZGY1YzdkOGZmZWQwNmMuLjEwZTE5ZWI3MGE3YmFkOTNlYzY5OWIwOWE2YTU3ODkyOWY1N2M4
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKaW5kZXggNDBiOTg5
OTZmNjdhYzFlOGFiNjVjZDY2NmQ2M2QyN2QzOWYzMWNlZS4uNGVhODY2ZGVlMjRjYzVhMGNlMWEz
MDgxZWU5NzM5Y2IwZTBhMzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUg
Ik9FU1RleHR1cmVIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9FU1RleHR1cmVIYWxm
RmxvYXQpOwogT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiX3MpOwogICAgIC8vIFJlbmRlcmFiaWxpdHkgaXMgaW1wbGljaXQgd2hl
biB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQog
CiBPRVNUZXh0dXJlSGFsZkZsb2F0Ojp+T0VTVGV4dHVyZUhhbGZGbG9hdCgpID0gZGVmYXVsdDsK
QEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVy
ZUhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU1RleHR1cmVIYWxmRmxv
YXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlSGFsZkZs
b2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXQuaAppbmRleCBhMzU0ZmNiN2UzOWI1MzBiZjQ5MzM2MTI5Njg5MTM2ZWE5NjIx
NjYzLi5kNTE5NDZhYmE0MzkwNGYzMDZlMWE3ZDA3Y2YwMGI5YWViZGU1MTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCAzMGQ0YjNmZjBj
YmQyNGY1MzgwODYzMGJjYzQzMDY3ZDhjZThmMDZkLi40ZjI4NWM1ZjRjMmUwMzAxZGJmNTQ3NDAz
Y2ZmMTBjYzg2OTRmZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
V0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDVhMzg3OTU3YzI2MDY2MjJkYjQ2ZjRiZjYw
ODhiZTMzMTA2MWFiYmIuLjZkMGE4NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTI0MCwxMCArMjM5LDEwIEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkK
IHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRoZSBXZWJHTCAyLjAgY29yZSBBUEkgYW5k
IHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgIG1fY29udGV4dC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIG1fY29u
dGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVw
dGgiKTsKIH0KIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRh
cmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKQEAgLTI3MTUs
MjAgKzI3MTQsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5l
YXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250
ZXh0IiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
QVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMxLCAiV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJU
QywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
LCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbywgbV93ZWJnbERlYnVnUmVuZGVyZXJJ
bmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIsIHRydWUpOwotICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9k
ZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUQ29sb3JCdWZmZXJGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdCIsIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwot
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29s
b3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xv
ckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1
cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRl
cnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9z
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENv
bG9yQnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBt
X2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVs
dGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIHRydWUpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtMjc0Myw0MiArMjc0Miw0MSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAo
bV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlm
IChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQorICAg
IGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6
c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAg
IH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykp
CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3Rj
Il9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250
ZXh0Il9zKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6
OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRo
aXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQi
X3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxl
bF9zaGFkZXJfY29tcGlsZSJfcyk7Ci0gICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0aV9kcmF3Il9zKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xv
ckJ1ZmZlckZsb2F0LmNwcAppbmRleCBhODFhNDljMmNhNzY5MzgwNTg2MjM0YzFmMjA5ZTQ4ZWEy
YzZkYzBmLi42YzBhOWJlNTYxZDc5ZTcwZDlmMzVkNThhOTcwNmM2NTU2NTBkODgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwx
MiArMzcsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29sb3JCdWZmZXJG
bG9hdCk7CiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OldlYkdMQ29sb3JCdWZmZXJGbG9hdChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CiAgICAgLy8gT3B0aW1p
c3RpY2FsbHkgZW5hYmxlIFJHQiBmbG9hdGluZy1wb2ludCByZW5kZXIgdGFyZ2V0cyBhbHNvLCBp
ZiBwb3NzaWJsZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOwogICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAgLy8gU3BlYyBy
ZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0bHkgaGVyZS4K
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsK
IH0KIAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2ViR0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBk
ZWZhdWx0OwpAQCAtNTMsMTAgKzUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1l
IFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojpz
dXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykKLSAgICAgICAgJiYgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpCisgICAgICAgICYmIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAppbmRleCAwZDJkMDdjMjU1
OTllMDRjY2VjYTA2NmE0NTk2NTA1ZDEwMmUxODY0Li45NGNkZWQ2Y2Q2MzY3YzE4ZDYwMDJhNmVh
ZWIyMTQwMzEzMjM5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXggNmVhY2ExZjJhMDI1MTc2ZGE0NTNiNTAw
MTI4YTM2ZjExMzZiODE1ZC4uNGZmMDIyZTllZDUxMmE5MmVkYTMxMDFjZjFjMjZjMmVlNWFmODM5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzksNDEgKzM4LDQxIEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyk7CiAKIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKLSAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfaGRyIl9zKSkKLSAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIl9zKSkKKyAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19oZHIiX3MpKQorICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lv
bl9hc3RjX2xkciJfcykpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tI
Uik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUik7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
Uik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CiAgICAgCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2
X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUik7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MngxMl9LSFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpAQCAtOTUsMTAgKzk0LDEwIEBAIFZlY3RvcjxT
dHJpbmc+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpnZXRTdXBwb3J0ZWRQcm9maWxlcygp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2hkciJfcykKLSAgICAgICAgfHwgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19oZHIiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKaW5kZXggMzBlZmUzZDgxYzFiOWI5NDYz
Mzk3MzFkMzc4ZDJjYzE3YTMxNTlmMC4uZmEwZTViOTllM2UxZjQ2Y2I4NTU0MDI3MjYyZTA2NWJm
MThmMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBnZXRTdXBwb3J0ZWRQcm9maWxlcygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNv
bnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSERSU3VwcG9y
dGVkIDogMTsKICAgICBib29sIG1faXNMRFJTdXBwb3J0ZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApp
bmRleCBjOWU3YmUzMGM2MzEwNTAzMDNkZmJlNjZhMTMzZmZkNDI0NmVjMjI5Li5iYzNlYmUyZDVl
NzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMjks
NyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTEgKzM4LDExIEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0g
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2Vk
X0FUQ190ZXh0dXJlIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQ
SEFfQU1EKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMoKSA9IGRlZmF1bHQ7CkBAIC01Myw5ICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDTmFtZTsKIH0KIAotYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU1EX2NvbXByZXNz
ZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oCmluZGV4IGUwYmQyNjYxMDk0NDBmY2IzMDdjOTNiMzVjNTQzMGIxZGQ5
NGQxZmEuLjEwNTY4YTlkZDk0YzNiZTI3NzhjMzI0Nzg5YzRmOGY3NTQ0YWE0YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4IDRmZWFhNWRkODc5MTIzNTkzMWY5
ODU5Zjk2NzBjNDY4YTVhM2JmYTMuLjkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5
ZjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zOSwxOCArMzgsMTggQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUjExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMy
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOwogfQogCiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpID0gZGVm
YXVsdDsKQEAgLTYwLDkgKzU5LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9v
bCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7
CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
CmluZGV4IDc0Njc3OGNjMmRlMDIzOWI5ZWUyYzc1M2RiMGY2OTJlMDRkODk3ZDQuLmMzODgyOTEx
YWI1OTZkOWYyMTA2YTgxODFlOWVmMjBjMjhkMDgxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZDlhN2NmYWI2OWU3NmVhZTMxN2VjMGJjZjU2NTQ5OTZj
ZjI0MTVlYS4uYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYxOTBiMTcwOTJmNjA4MDliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTKTsKKyAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhf
T0VTKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6On5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMSgpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMU5hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2NvbXBy
ZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKaW5kZXggMDZmZTI3YWFiMTc4M2RiYzFi
M2IwMWUxZWY0OTgwOWJkM2NkYjIzYy4uMDQ0OWY1NzA0NDY0YzI1NmJiMzgzZDc3NGFmYmM5ZTM2
ZjE3OTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoKTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApp
bmRleCAxYTIwYzA3ZDI3MzNjMTgwZTQ1YWRmYTQzZGFmOGU4NTM2YjQ0NWJhLi41YTg0OTllOWU0
Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQw
LDEyICszOSwxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQ
UFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKIH0KIAogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgPSBkZWZh
dWx0OwpAQCAtNTUsOSArNTQsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25f
cHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuaAppbmRleCBhODY2OWYwZWI4ZDAyZjA4OTgwMGNmMmMyNjViODFjN2E1ZjNj
YTVkLi4zMzcyYzI5YWIyNGU1Yzg5MGZhMzM3ZWIwZjk0OWVlZjllZjVjMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggMDdiYTRmYTViZTEy
NTdjM2M4MTIwMzc5OGMxZjk1ZmE3NzQ2YTlhZi4uZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBh
OTE4NmEzYTUwMjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00MCwxNSArMzksMTUgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKTsKIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKTsKLSAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgIGF1
dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAg
IGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQogCiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkg
PSBkZWZhdWx0OwpAQCAtNTgsMTYgKzU3LDE1IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CiAjaWYgVVNFKEFOR0xFKQotICAg
IHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAm
JiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDMiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKICNlbHNlCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgK
aW5kZXggYTM0NzNkOGVlZmJkMjIyZjFiMjZjYjEyOWQ0ZDQ0NzJjYzQxMTUwOS4uMWRiZjQ1YTRj
MGUyNDNiM2M2MDAwMTRmNTVmNmYwZDhmNTQ4MDM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRleCA1MGQwYmQ5MDdlOGZkZWU4ZmQ0MWQ2
NWQyMWI4ZDAwYTJmYWZmNTc3Li5mNjVmNDJhZTIyYWM3MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2
NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgi
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzks
MTMgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiIik7Ci0KLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0Y19zcmdiIik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6On5XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoKSA9IGRlZmF1bHQ7CkBAIC01NSwxMCArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0JOYW1lOwogfQog
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCmluZGV4IGM3OTNiOTE2ZGIwZTY2
Y2YzZTljNjc3MGY1NjYwN2YzMThmZjc0NmIuLjU5YTY2M2YxNGQxZmI0YmM2Yzg1ODY3NWY1NWY0
OGQ3YTdlZmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQigpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApp
bmRleCA2YjA0OTU0YTRhNTI5Y2U4ODJmMmE2NGJiM2Q4NjdmYTg0YzM4Y2YwLi5hNjlkYTI5MDM4
NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDcgKzQw
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVidWdTaGFkZXJzKTsKIFdl
YkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSIpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTcsNyArNTYsNyBAQCBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRl
cnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2Jq
ZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
Lm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9iamVjdCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IGE2OTE1MzIzYTg0OTQ0ZTU5YmMxNzJkM2Y1Yjk0MzM3
MjY4MTQzNzYuLjkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1NTgwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICszOCw5IEBAIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJHTERlcHRoVGV4dHVyZSk7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xE
ZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOworICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdM
RGVwdGhUZXh0dXJlKCkgPSBkZWZhdWx0OwpAQCAtNTIsOSArNTIsOCBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJv
b2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9k
ZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMGRjMTdlYTli
YzBjZGM3NGQxZTYxYzFmMDI1M2M4ZWNlYjM2ODk1My4uMDY3MGE0NzY0MmJmYmZlY2JkZWY1NjM3
OGEyYmViNWIxOGM5NWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3
QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQog
ewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
IH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBA
IC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRHJhd0J1
ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwog
I2VuZGlmCiB9CkBAIC03NSw3ICs3NCw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1
ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICB9CiAg
ICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJy
ZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hN
RU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyBidWZzWzBdID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCQUNLID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOworICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKHZhbHVlKTsKICAg
ICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0woY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAg
ICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAh
PSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKKyAgICAgICAgICAg
IGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FICYmIGJ1ZnNbaV0gIT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhU
IG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC05
OCw4ICs5Nyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlz
IHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50
ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKLSAgICBHQ0dMaW50IG1h
eENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNv
bnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
KTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAo
bWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywxMCArMTA2LDEwIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
d2ViCiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAw
LCAwLCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBm
b3Igb3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRo
U3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3Rl
bmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRo
U3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggNTBiYWNmNTY0ZmNhZjY2NmY4
NTdiZDQ5MTU2Mjc5NDJjZmM1MjA3My4uNDlmYjFkZGRmNThhOGVkZmMwMWI0OGRhNWRmZjQ5Nzcx
Zjc2ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKQEAgLTI3OSwyMSArMjc4LDIxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJp
dHNCeUF0dGFjaG1lbnRUeXBlKEdDR0xlbnVtIGF0dGFjaG1lbnQpCiB7CiAgICAgc3dpdGNoIChh
dHRhY2htZW50KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVO
VDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNI
TUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDhfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1F
TlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ1
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDdfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQxNV9FWFQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQlVGRkVSX0JJVDsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9BVFRBQ0hN
RU5UOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7
CkBAIC0zNjMsOCArMzYyLDggQEAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9ybWF0
KEdDR0xlbnVtIGZvcm1hdCkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMTZJOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEzMkk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQTMyVUk6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhB
X0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDE2OgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDI0OgpAQCAtNjMzLDcgKzYzMiw3
IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiBy
ZWFzb24pIGNvbnN0CiAgICAgICAgIEdDR0xlbnVtIGF0dGFjaG1lbnRGb3JtYXQgPSBhdHRhY2ht
ZW50LT5nZXRGb3JtYXQoKTsKIAogICAgICAgICAvLyBBdHRhY2hpbmcgYW4gU1JHQl9FWFQgZm9y
bWF0IGF0dGFjaG1lbnQgdG8gYSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkLgotICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUKQorICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQpCiAgICAgICAg
ICAgICBhdHRhY2htZW50Rm9ybWF0ID0gMDsKIAogICAgICAgICBpZiAoIWF0dGFjaG1lbnRGb3Jt
YXQpIHsKQEAgLTgzMywxOCArODMyLDE4IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1
ZmZlcnNJZk5lY2Vzc2FyeShib29sIGZvcmNlKQogICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+
aXNXZWJHTDIoKSkKICAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdM
KCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKG1f
ZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIEdDR0xlbnVtIFdl
YkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoR0NHTGVudW0gZHJhd0J1ZmZlcikKIHsKLSAg
ICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGRyYXdCdWZmZXIgLSBFeHRlbnNpb25zR0w6
OkRSQVdfQlVGRkVSMF9FWFQpOworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJh
d0J1ZmZlciAtIEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUKTsKICAgICBBU1NF
UlQoaW5kZXggPj0gMCk7CiAgICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihtX2RyYXdC
dWZmZXJzLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBtX2RyYXdCdWZmZXJzW2luZGV4XTsKLSAg
ICBpZiAoZHJhd0J1ZmZlciA9PSBFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQpCisgICAg
aWYgKGRyYXdCdWZmZXIgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVGRkVSMF9FWFQpCiAg
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDA7CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCmluZGV4IDY0YjE1ZDVmZjg2MTNjZmQ3ODRjN2Uz
MWQwMjJkNTNiZDYxM2NlZmUuLmYxY2M1NmM5ZGZiMTg4NGI4YjhkZWFhMmVlZmU1ODI3ZjkyZmVl
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xNdWx0
aURyYXcuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQyLDggQEAg
c3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlE
cmF3OjpJbnQzMkxpc3QmIGxpc3QsIEcKIFdlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKTsKLSAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX211bHRpX2RyYXciX3MpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiB9CiAKIFdlYkdMTXVsdGlEcmF3Ojp+V2ViR0xN
dWx0aURyYXcoKSA9IGRlZmF1bHQ7CkBAIC01NCwxMCArNTMsMTAgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBXZWJHTE11bHRpRHJhd05hbWU7CiB9CiAKLWJvb2wgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRl
ZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJl
dHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKLSAgICAgICAgJiYgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6
bXVsdGlEcmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3Qs
IEdDR0x1aW50IGZpcnN0c09mZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNv
dW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5oCmluZGV4IDY1OTI5ZjUxY2FiOGJmODkyN2I3YzkwYmU5NmMx
OGU0ODMxODFkNzYuLjUwZDZkYjgxYTJkOTc0Mzg4MDBiNGU3OWRhMzEyYTIwMjIyNTBkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
Jik7CiAKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c1dFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMy
TGlzdCBmaXJzdHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNM
aXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBmYTU3YmI1NDAyM2UzZmY5OTYzNGIzYTk5OTE4ZTA5M2NhYTJkNGJiLi5jOTYwYzI2
MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAi
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKQEAgLTE1MywxMCArMTUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0RlcHRoLCAiRVhUX2ZyYWdfZGVwdGgiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSkg
ewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVyZUxPRCkgewotICAgICAgICAgICAgaWYg
KCEobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9B
UkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCisgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkp
CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJfcyk7CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0g
YWRvcHRSZWYobmV3IEVYVFNoYWRlclRleHR1cmVMT0QoKnRoaXMpKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0xNjUsMzEgKzE2NCwzMSBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIH0KICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCAiRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJh
bGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVk
KCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21w
aWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwog
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTU3RhbmRhcmREZXJpdmF0aXZlcywgbV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZW5hYmxlU3VwcG9y
dGVkRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNf
dGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAi
T0VTX3RleHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKTsKLSAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBw
b3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxv
YXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNU
ZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChPRVNWZXJ0ZXhBcnJheU9iamVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoT0VTRWxlbWVudEluZGV4VWludCwgbV9vZXNFbGVtZW50SW5kZXhVaW50LCAiT0VTX2VsZW1l
bnRfaW5kZXhfdWludCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTRkJPUmVuZGVyTWlw
bWFwLCBtX29lc0ZCT1JlbmRlck1pcG1hcCwgIk9FU19mYm9fcmVuZGVyX21pcG1hcCIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQs
ICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3Ny
Z2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlcHRoVGV4dHVyZSwgbV93ZWJnbERl
cHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiLCBXZWJHTERlcHRoVGV4dHVyZTo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCR0xfZHJhd19idWZmZXJzIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZl
cnMpIHsKICAgICAgICAgICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IGFkb3B0UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJz
KCp0aGlzKSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQpAQCAtMTk4LDEwICsx
OTcsMTAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSkgewogICAgICAgICBpZiAoIW1f
YW5nbGVJbnN0YW5jZWRBcnJheXMpIHsKLSAgICAgICAgICAgIGlmICghQU5HTEVJbnN0YW5jZWRB
cnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgICAgICAgICBpZiAoIUFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBhZG9wdFJlZihuZXcgQU5HTEVJbnN0YW5j
ZWRBcnJheXMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0y
MDksMTEgKzIwOCwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gbV9hbmdsZUlu
c3RhbmNlZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1
Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIl9zKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwg
IkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTE11
bHRpRHJhdywgbV93ZWJnbE11bHRpRHJhdywgIldFQkdMX211bHRpX2RyYXciLCBXZWJHTE11bHRp
RHJhdzo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJF
WFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC0yMjcsNjkgKzIyNiw2OSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIGlm
IChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9ibGVu
ZF9taW5tYXgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21p
bm1heCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9FWFRfc1JHQiJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X0VYVF9zUkdCIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiX3MpOwotICAg
IGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVw
dGgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZnJh
Z19kZXB0aCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mcmFnX2RlcHRoIl9zKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFk
ZXJfdGV4dHVyZV9sb2QiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9z
KSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKKyAgICBp
ZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7Ci0gICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVt
ZW50X2luZGV4X3VpbnQiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMi
X3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NS
R0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgaWYgKFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlcHRoX3RleHR1cmUiX3MpOwogICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgaWYgKEFOR0xF
SW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChBTkdMRUluc3RhbmNl
ZEFycmF5czo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpCisg
ICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3No
YWRlcnMiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8i
X3MpOwotICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkK
KyAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsK
LSAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhURmxv
YXRCbGVuZDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfZmxvYXRfYmxlbmQiX3MpOwotICAgIGlmIChXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCpt
X2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxv
YXQiX3MpOwotICAgIGlmIChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhp
cykpCisgICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUi
KTsKLSAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQkdMX211bHRpX2RyYXciX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMCw3
ICszMjksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgogICAg
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CkBAIC0zNDMsMTYgKzM0MiwxNiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyPihvYmpl
Y3QpOwotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQ6IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKICAgICAgICAgICAgIGlm
ICghbV9leHRzUkdCKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciByZW5kZXJidWZmZXIgYXR0YWNobWVu
dCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiByZW5kZXJCdWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2JqZWN0LmdldCgpKTsKICAgICAgICAgICAg
IEdDR0xlbnVtIHJlbmRlckJ1ZmZlckZvcm1hdCA9IHJlbmRlckJ1ZmZlci0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEV4
dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpOworICAgICAgICAgICAg
QVNTRVJUKHJlbmRlckJ1ZmZlckZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQg
JiYgcmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VCk7CisgICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCOF9BTFBIQThfRVhUKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKTsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTM2Nyw5ICszNjYsOSBAQCBHQ0dMaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFX
X0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6
Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtMzc5
LDcgKzM3OCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29s
b3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKQEAgLTQ1
NCw5ICs0NTMsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEVx
dWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZVTkNfQUREOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZVTkNfU1VC
VFJBQ1Q6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19SRVZFUlNFX1NVQlRSQUNU
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNSU5fRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfRVhUOgotICAgICAgICBpZiAoKG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNSU5fRVhUIHx8
IG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNQVhfRVhUKSAmJiAhbV9leHRCbGVuZE1pbk1heCkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0VYVDoKKyAgICAgICAgaWYgKChtb2RlID09IEdyYXBoaWNzQ29udGV4dEdM
OjpNSU5fRVhUIHx8IG1vZGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9FWFQpICYmICFtX2V4
dEJsZW5kTWluTWF4KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIG1vZGUiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBi
OGI1ZmI2NWFjZjQxMmU5MzIyNTI0NWE0MWE1ZDgxODE1NTVkNjgxLi5hNWVlOGUzNzVhMzUzZThj
ODkyNGM4NjA3MDY4YWI2NGNmNjg4MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUg
IkVYVHNSR0IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01NTUsMTIgKzU1NCwxMiBAQCBzdGF0aWMg
dWludDhfdCBnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JBKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
NTY1OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KENoYW5uZWxCaXRzOjpSR0IpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCNV9BMToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCQSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfQ09NUE9ORU5UOgpAQCAtNjQzLDggKzY0Miw4IEBAIHN0YXRpYyBib29sIHBv
c3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMCiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NURU5DSUw4LCBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0lOVF8yNF84KTsKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEgzMkZfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVO
Q0lMLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfRVhU
LCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdC
X0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhULCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhULCBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9BTFBIQV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA5MSwx
NyArMTA5MCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3Mo
KQogICAgIC8vIHR1cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJD
b21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dM
RVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAg
ICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAg
ICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRo
X3RleHR1cmUiKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dM
RVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxzZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0
ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVf
bm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdv
Iik7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRl
eHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikgfHwg
bV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsK
ICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAgbV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3JvYnVzdG5lc3MiKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0zMzAzLDkgKzMzMDIs
OSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiAiV2ViR0wgMS4wIl9zdHI7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRf
T0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgaWYgKG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcykKLSAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRl
cihFeHRlbnNpb25zR0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRH
TDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOwogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFdlYkdMRGVidWdS
ZW5kZXJlckluZm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgpAQCAtMzMzNiwyNSArMzMzNSwy
NSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxlZCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8v
IEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAobV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJh
bWV0ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAg
ICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOwogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVmZmVycyBCRUdJTgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQ6IC8v
IEVYVF9kcmF3X2J1ZmZlcnMgQkVHSU4KICAgICAgICAgaWYgKG1fd2ViZ2xEcmF3QnVmZmVycyB8
fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdldE1heENvbG9yQXR0YWNobWVudHMo
KTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kcmF3
X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgogICAgICAgICBpZiAobV93ZWJnbERyYXdC
dWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0TWF4RHJhd0J1ZmZl
cnMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9k
cmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkK
LSAgICAgICAgICAgICYmIHBuYW1lID49IEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVAot
ICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dM
OjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkpIHsKKyAgICAgICAgICAg
ICYmIHBuYW1lID49IEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUCisgICAgICAg
ICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xlbnVtPihHcmFwaGljc0NvbnRleHRHTDo6
RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7CiAgICAgICAgICAgICBH
Q0dMaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiAgICAgICAgICAgICBpZiAo
bV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX2ZyYW1lYnVm
ZmVyQmluZGluZy0+Z2V0RHJhd0J1ZmZlcihwbmFtZSk7CkBAIC0zMzcyLDcgKzMzNzEsNyBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIC8vIENPTVBMRVRJT05fU1RBVFVTX0tIUiBzaG91
bGQgYWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IGlzIGxvc3QsIHNvIGFwcGxpY2F0
aW9ucwogICAgIC8vIGRvbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBwb2xsaW5nIGxvb3Au
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkgewotICAgICAgICBpZiAocG5hbWUg
PT0gRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFIpCisgICAgICAgIGlmIChwbmFt
ZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTMzOTks
NyArMzM5OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2toclBhcmFsbGVsU2hhZGVy
Q29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQcm9ncmFtUGFy
YW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5hYmxlZCIpOwpAQCAt
MzUwMyw3ICszNTAyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKICAgICAvLyBDT01QTEVU
SU9OX1NUQVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBp
cyBsb3N0LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5m
aW5pdGUgcG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpIHsK
LSAgICAgICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hS
KQorICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RB
VFVTX0tIUikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0zNTE3LDcgKzM1MTYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQt
PmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQYXJhbGxlbFNoYWRlckNv
bXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRl
ciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVuYWJsZWQiKTsKQEAgLTM1ODYs
NyArMzU4NSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYg
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQogICAgICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMgbm90IGVuYWJsZWQiKTsKQEAgLTM5NTksNyArMzk1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CiAgICAgICAgIGlz
VmFsaWQgPSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJB
R01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcywgb3IgY29yZSBpbiBXZWJHTCAyLjAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpG
UkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzLCBvciBjb3JlIGluIFdlYkdMIDIuMAogICAgICAgICBpZiAobV9vZXNTdGFuZGFyZERl
cml2YXRpdmVzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CkBAIC00NjEwLDggKzQ2MDksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VJbXBsKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
egogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjVfQTE6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6UkdCNTY1OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxf
SU5ERVg4OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUOgotICAgICAg
ICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUICYm
ICFtX2V4dHNSR0IpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThf
RVhUOgorICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNS
R0I4X0FMUEhBOF9FWFQgJiYgIW1fZXh0c1JHQikgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBpbnRlcm5hbGZvcm1hdCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC00NjIyLDcgKzQ2MjEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VJbXBsKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpegogICAgICAgICBicmVh
azsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMOgogICAgICAgICBp
ZiAoaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSkKLSAgICAgICAgICAgIG1fY29udGV4dC0+cmVu
ZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIEV4dGVuc2lvbnNHTDo6REVQVEgyNF9TVEVOQ0lMOCwg
d2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UodGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhl
aWdodCk7CiAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+c2V0U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJc1ZhbGlkKGlzRGVwdGhT
dGVuY2lsU3VwcG9ydGVkKCkpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmctPnNldElu
dGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0KTsKQEAgLTU2MTYsOCArNTYxNSw4IEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShj
b25zdCBjaGFyKiBmdW5jdGlvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VDoKICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgInNSR0Ig
dGV4dHVyZSBmb3JtYXRzIG5vdCBlbmFibGVkIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC01Nzc1LDcgKzU3NzQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgIElOVEVS
TkFMX0ZPUk1BVF9DQVNFKERFUFRIX1NURU5DSUwgICAgICwgREVQVEhfU1RFTkNJTCAgLCBHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzggICAgICAgICAgICAgLCAwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAw
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIElOVEVSTkFMX0ZPUk1BVF9DQVNFKERFUFRI
MjRfU1RFTkNJTDggICwgREVQVEhfU1RFTkNJTCAgLCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdO
RURfSU5UXzI0XzggICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAg
ICApOwogICAgIElOVEVSTkFMX0ZPUk1BVF9DQVNFKERFUFRIMzJGX1NURU5DSUw4ICwgREVQVEhf
U1RFTkNJTCAgLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0Xzhf
UkVWLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVDoK
ICAgICAgICAgaWYgKGZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkgewogICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IG11c3QgbWF0Y2giKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU3ODUsNyArNTc4NCw3IEBAIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFy
KiBmdW5jdGlvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICBpZiAoZm9ybWF0ICE9
IGludGVybmFsRm9ybWF0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImZvcm1hdCBhbmQg
aW50ZXJuYWxmb3JtYXQgbXVzdCBtYXRjaCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTk2OCw3ICs1OTY3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhQ
YXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0MKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYgKCFt
X2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInRleFBhcmFtZXRlciIsICJp
bnZhbGlkIHBhcmFtZXRlciwgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFi
bGVkIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC02Mzg1LDcgKzYzODQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMb3N0QwogICAgICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCk7CiAg
ICAgICAgIGlmIChjYW52YXMpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1l
ID0gY2FudmFzLT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRleHQobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2NvbnRleHQtPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY4OTgsMTgg
KzY4OTcsMTggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgQmxvY2tQYXJhbWV0
ZXJzIHsgMTIsIDEwLCBrQVNUQ0Jsb2NrU2l6ZSB9LAogICAgICAgICBCbG9ja1BhcmFtZXRlcnMg
eyAxMiwgMTIsIGtBU1RDQmxvY2tTaXplIH0KICAgICB9OwotICAgIGNvbnN0IEdDR0xlbnVtIEFT
VENFbnVtU3RhcnRSR0JBID0gRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRf
S0hSOwotICAgIGNvbnN0IEdDR0xlbnVtIEFTVENFbnVtU3RhcnRTUkdCOCA9IEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOworICAgIGNvbnN0IEdDR0xl
bnVtIEFTVENFbnVtU3RhcnRSR0JBID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzR4NF9LSFI7CisgICAgY29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFNSR0I4ID0g
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjsK
IAogICAgIGNvbnN0IGludCBrRUFDQW5kRVRDMkJsb2NrU2l6ZSA9IDQ7CiAKICAgICBzd2l0Y2gg
KGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9F
WFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTOiB7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVM6IHsKICAgICAgICAgY29uc3Qg
aW50IGtCbG9ja1NpemUgPSA4OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0Owog
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTY5MTgsMTIgKzY5MTcsMTIg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhG
dW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJs
b2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
M19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RD
X0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENf
UkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQ
SEFfQU1EOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
SU5URVJQT0xBVEVEX0FMUEhBX0FNRDoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50
IGtCbG9ja1NpemUgPSAxNjsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7
CkBAIC02OTMzLDggKzY5MzIsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAg
ICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxv
Y2tTaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgogICAgICAgICB7
CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgICAgICBjb25z
dCBpbnQga0Jsb2NrV2lkdGggPSA4OwpAQCAtNjk0Miw4ICs2OTQxLDggQEAgYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBj
aGFyKiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgs
IGtCbG9ja1dpZHRoKSAqIHN0ZDo6bWF4KGhlaWdodCwga0Jsb2NrSGVpZ2h0KSAqIDQgKyA3KSAv
IGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKICAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDE2OwpAQCAtNjk1MSw0NCArNjk1MCw0NCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1h
eCh3aWR0aCwga0Jsb2NrV2lkdGgpICogc3RkOjptYXgoaGVpZ2h0LCBrQmxvY2tIZWlnaHQpICog
MiArIDcpIC8ga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfMTB4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9B
U1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ180eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CiAgICAg
ICAgIGJ5dGVzUmVxdWlyZWQgPSBjYWxjdWxhdGVCeXRlc0ZvckFTVEMod2lkdGgsIGhlaWdodCwg
QVNUQ1BhcmFtZXRlcnNbZm9ybWF0IC0gQVNUQ0VudW1TdGFydFJHQkFdKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
NHg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzV4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tI
UjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9L
SFI6CiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBjYWxjdWxhdGVCeXRlc0ZvckFTVEMod2lkdGgs
IGhlaWdodCwgQVNUQ1BhcmFtZXRlcnNbZm9ybWF0IC0gQVNUQ0VudW1TdGFydFNSR0I4XSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOiB7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VU
QzI6IHsKICAgICAgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQnl0ZXNSZXF1aXJlZCA9ICh3aWR0
aCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAg
ICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gKGhlaWdodCArIGtFQUNBbmRFVEMyQmxvY2tT
aXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAgICAgICAgY2hlY2tlZEJ5dGVzUmVx
dWlyZWQgKj0gODsKQEAgLTY5OTksMTAgKzY5OTgsMTAgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5j
dGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9F
QUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogeworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogewogICAg
ICAgICBDaGVja2VkVWludDMyIGNoZWNrZWRCeXRlc1JlcXVpcmVkID0gKHdpZHRoICsga0VBQ0Fu
ZEVUQzJCbG9ja1NpemUgLSAxKSAvIGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVj
a2VkQnl0ZXNSZXF1aXJlZCAqPSAoaGVpZ2h0ICsga0VBQ0FuZEVUQzJCbG9ja1NpemUgLSAxKSAv
IGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVja2VkQnl0ZXNSZXF1aXJlZCAqPSAx
NjsKQEAgLTcwMTMsOCArNzAxMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAg
IGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQ6IHsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VY
VDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgIGNvbnN0IGlu
dCBrQmxvY2tXaWR0aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpA
QCAtNzAyMyw4ICs3MDIyLDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0
ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXpl
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOiB7CiAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0
aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpAQCAtNzA0OSwxNCAr
NzA0OCwxNCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZv
cm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQ1X0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKICAg
ICAgICAgY29uc3QgR0NHTHNpemVpIGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgR0NH
THNpemVpIGtCbG9ja0hlaWdodCA9IDQ7CiAgICAgICAgIGNvbnN0IEdDR0xpbnQgbWF4VGV4dHVy
ZVNpemUgPSB0YXJnZXQgPyBtX21heFRleHR1cmVTaXplIDogbV9tYXhDdWJlTWFwVGV4dHVyZVNp
emU7CkBAIC03MDY5LDU1ICs3MDY4LDU1IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1H
OgogICAgICAgICAvLyBIZWlnaHQgYW5kIHdpZHRoIG11c3QgYmUgcG93ZXJzIG9mIDIuCiAgICAg
ICAgIGlmICgod2lkdGggJiAod2lkdGggLSAxKSkgfHwgKGhlaWdodCAmIChoZWlnaHQgLSAxKSkp
IHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IGludmFsaWQgZm9y
IGxldmVsIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4
NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
Xzh4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFf
RUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182
eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
Xzh4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNng1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMngxMl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUM6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRD
Ml9FQUM6CiAgICAgICAgIC8vIE5vIGhlaWdodCBhbmQgd2lkdGggcmVzdHJpY3Rpb25zIG9uIEFT
VEMsIEVUQzEgb3IgRVRDMi4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAg
LTcxMzMsMTQgKzcxMzIsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICB9CiAKICAg
ICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19E
WFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1Mz
VENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQ1X0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
NV9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29u
c3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CiAgICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dp
ZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpIHsKQEAgLTcxNTQsMTAgKzcxNTMsMTAg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhT
dWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFs
aWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWws
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6
IHsKICAgICAgICAgaWYgKHhvZmZzZXQgfHwgeW9mZnNldCkgewogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlv
bk5hbWUsICJ4b2Zmc2V0IGFuZCB5b2Zmc2V0IG11c3QgYmUgemVybyIpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzE2OSwxOSArNzE2OCwxOSBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoY29uc3QgY2hh
ciogZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1l
bnNpb25zKGZ1bmN0aW9uTmFtZSwgdGFyZ2V0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
KTsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkVUQzFfUkdCOF9PRVM6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzoKICAgICAgICAgLy8gTm90IHN1cHBv
cnRlZCBmb3IgRVRDMV9SR0I4X09FUyB0ZXh0dXJlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU0lHTkVEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1Ix
MV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfRVRDMl9FQUM6IHsKICAgICAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV8zRCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJub3Qgc3Vw
cG9ydGVkIG9uIFRFWFRVUkVfM0QgdGV4dHVyZXMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTc2OTgsNyArNzY5Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgaWYgKCFtX3Jlc3RvcmVBbGxvd2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgaW50IGNvbnRleHRM
b3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAKICAg
ICBzd2l0Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Tk9fRVJST1I6CkBAIC03NzA3LDE1ICs3NzA2LDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgICAgIC8vIFdFQkdMX2xvc2Vf
Y29udGV4dCBleHRlbnNpb24gbWlnaHQgaGF2ZSBiZWVuIHVzZWQgdG8gZm9yY2UKICAgICAgICAg
Ly8gYSBsb3N0IGNvbnRleHQuCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIGNvbnRl
eHQgaXMgbm90IHJlc3RvcmVkIGlmIHRoaXMgY29udGV4dCB3YXMKICAgICAgICAgLy8gZ3VpbHR5
IG9mIGNhdXNpbmcgdGhlIGdyYXBoaWNzIHJlc2V0LgogICAgICAgICBwcmludFRvQ29uc29sZShN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXQVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRoZSBwYWdl
IGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNldDsgbm90IHJlc3RvcmluZyB0aGUgY29u
dGV4dCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OklOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OklOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBBbHdheXMgYWxsb3cgdGhlIGNvbnRleHQg
dG8gYmUgcmVzdG9yZWQuCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpV
TktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVO
S05PV05fQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIFdhcm4uIElkZWFsbHksIHByb21w
dCB0aGUgdXNlciB0ZWxsaW5nIHRoZW0gdGhhdCBXZWJHTAogICAgICAgICAvLyBjb250ZW50IG9u
IHRoZSBwYWdlIG1pZ2h0IGhhdmUgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvCiAgICAgICAg
IC8vIHJlc2V0IGFuZCBhc2sgdGhlbSB3aGV0aGVyIHRoZXkgd2FudCB0byBjb250aW51ZSBydW5u
aW5nCkBAIC03ODgyLDkgKzc4ODEsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBt
X21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0RSQVdfQlVGRkVSU19FWFQpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAg
ICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRB
Q0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQp
OwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVO
VFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVm
ZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTc4OTQsNyArNzg5Myw3IEBAIEdD
R0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygp
CiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX21heENvbG9yQXR0YWNobWVu
dHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNI
TUVOVFNfRVhUKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsK
ICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCkBAIC04MDM5LDExICs4MDM4
LDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliRGl2aXNv
cihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2CiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uTmFt
ZUxpdGVyYWwpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIFN0cmluZyBleHRlbnNpb25OYW1l
IHsgZXh0ZW5zaW9uTmFtZUxpdGVyYWwgfTsKLSAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMo
ZXh0ZW5zaW9uTmFtZSkpCisgICAgaWYgKCFtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKGV4
dGVuc2lvbk5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKGV4dGVuc2lvbk5hbWUpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChleHRlbnNpb25OYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcAppbmRleCA3MmI5Njg4ZTZmOTVlZmMyYzAwOTllZWJkNWRlY2Q0MzNlZDY5YWNmLi5lMTIx
MTZkODBlNjAzOWM3Y2Q4MjNiMzljOTE4NWVjMjcwM2NhOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcApA
QCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDdhN2ExYjVmMjRjNThjMDg5YzIwOWYyZWYzMDM1
MzMxMzQ0NjE3NzguLjc5NDM1YTNhYzI0NzU2ZjdmOWQ5NGE1OTI2YzIwMTZlOTExNjcyMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNDEsNyArMzQx
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dX
ZWJHTChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdz
OyB9CiAgICAgLy8gSW5mb3JtcyB0aGUgZW1iZWRkZXIgdGhhdCBhIFdlYkdMIGNhbnZhcyBpbnNp
ZGUgdGhpcyBmcmFtZSByZWNlaXZlZCBhIGxvc3QgY29udGV4dAotICAgIC8vIG5vdGlmaWNhdGlv
biB3aXRoIHRoZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9pbm5vY2VuY2UgY29kZSAo
c2VlIEV4dGVuc2lvbnNHTC5oKS4KKyAgICAvLyBub3RpZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4g
R0xfQVJCX3JvYnVzdG5lc3MgZ3VpbHQvaW5ub2NlbmNlIGNvZGUgKHNlZSBHcmFwaGljc0NvbnRl
eHRHTC5oKS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZVdlYkdMQ29udGV4dChpbnQpIHsgfQog
ICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYp
IGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAg
ICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9u
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjA3NjMwOGM1OGEwYmQ0NTkzOWIwYTdi
YzVlNjI0ZDU2NGViNTEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBpcyBhIGJhc2UgY2xhc3MgY29u
dGFpbmluZyBvbmx5IHB1cmUgdmlydHVhbCBmdW5jdGlvbnMuCi0vLyBJbXBsZW1lbnRhdGlvbnMg
bXVzdCBwcm92aWRlIGEgc3ViY2xhc3MuCi0vLwotLy8gVGhlIHN1cHBvcnRlZCBleHRlbnNpb25z
IGFyZSBkZWZpbmVkIGJlbG93IGFuZCBpbiBzdWJjbGFzc2VzLAotLy8gcG9zc2libHkgcGxhdGZv
cm0tc3BlY2lmaWMgb25lcy4KLS8vCi0vLyBDYWxsaW5nIGFueSBleHRlbnNpb24gZnVuY3Rpb24g
bm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBjb250ZXh0Ci0vLyBtdXN0IGJlIGEgbm8tb3A7
IGluIHBhcnRpY3VsYXIsIGl0IG1heSBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuIEluCi0vLyB0aGlz
IHNpdHVhdGlvbiwgaWYgdGhlIGZ1bmN0aW9uIGhhcyBhIHJldHVybiB2YWx1ZSwgMCBpcyByZXR1
cm5lZC4KLWNsYXNzIEV4dGVuc2lvbnNHTCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RXh0ZW5z
aW9uc0dMKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gU3VwcG9ydGVkIGV4dGVuc2lvbnM6Ci0gICAg
Ly8gICBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICAvLyAgIEdMX0VYVF9yZWFk
X2Zvcm1hdF9iZ3JhCi0gICAgLy8gICBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vICAgR0xfQVJC
X3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byAvIEdMX09FU190ZXh0dXJlX25wb3QKLSAgICAvLyAg
IEdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCAvIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bAotICAgIC8vICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAvIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlCi0gICAgLy8gICBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190
ZXh0dXJlCi0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdAotICAgIC8vICAgR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyCi0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0g
ICAgLy8gICBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhcgotICAgIC8vICAgR0xfT0VT
X3N0YW5kYXJkX2Rlcml2YXRpdmVzCi0gICAgLy8gICBHTF9PRVNfcmdiOF9yZ2JhOAotICAgIC8v
ICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKLSAgICAvLyAgIEdMX09FU19lbGVtZW50X2lu
ZGV4X3VpbnQKLSAgICAvLyAgIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAg
IC8vICAgR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIChvbmx5IHRoZSBzdWJzZXQgcmVxdWlyZWQg
dG8KLSAgICAvLyAgICAgaW1wbGVtZW50IElPU3VyZmFjZSBiaW5kaW5nOyBpdCdzIHJlY29tbWVu
ZGVkIHRvIHN1cHBvcnQKLSAgICAvLyAgICAgdGhpcyBvbmx5IG9uIE1hYyBPUyBYIHRvIGxpbWl0
IHRoZSBhbW91bnQgb2YgY29kZSBkZXBlbmRlbnQKLSAgICAvLyAgICAgb24gdGhpcyBleHRlbnNp
b24pCi0gICAgLy8gICBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gICBH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCi0gICAgLy8gICBHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjX3NyZ2IKLSAgICAvLyAgIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdC
OF90ZXh0dXJlCi0gICAgLy8gICBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAg
IC8vICAgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKLSAgICAvLyAgIEdMX0tI
Ul90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyCi0gICAgLy8gICBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMKLSAgICAvLyAgIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICAvLyAgIEdM
X0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCi0gICAgLy8gICBHTF9BTkdM
RV9pbnN0YW5jZWRfYXJyYXlzCi0gICAgLy8gICBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9y
eQotCi0gICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCi0g
ICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpID0gMDsKLQotICAgIC8vIENlcnRhaW4gT3BlbkdMIGFu
ZCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgbWF5IHN1cHBvcnQgZW5hYmxpbmcKLSAgICAvLyBleHRl
bnNpb25zIGxhemlseS4gVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVkIHdpdGgKLSAgICAv
LyBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVybnMgdHJ1ZS4KLSAgICB2
aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAvLyBU
YWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBmb3IgZXhhbXBsZSwgIkdMX0VYVF90ZXh0dXJl
X2Zvcm1hdF9CR1JBODg4OCIuCi0gICAgLy8gQ2hlY2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBnaXZl
biBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxlZCAoc2VlIGVuc3VyZUVuYWJsZWQpLgotICAg
IC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCi0gICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAvLyBFWFRfc1JHQiBmb3JtYXRzCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0VYVCA9IDB4OEM0MDsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIFNSR0JfQUxQSEFfRVhUID0gMHg4QzQyOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gU1JHQjhfQUxQSEE4X0VYVCA9IDB4OEM0MzsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhU
ID0gMHg4MjEwOwotCi0gICAgLy8gRVhUX2JsZW5kX21pbm1heCBlbnVtcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gTUlOX0VYVCA9IDB4ODAwNzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIE1BWF9FWFQgPSAweDgwMDg7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEJHUkFfRVhU
ID0gMHg4MEUxOwotCi0gICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MgZW51bXMKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1MzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIElOTk9DRU5UX0NPTlRFWFRfUkVTRVRfQVJCID0g
MHg4MjU0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVU5LTk9XTl9DT05URVhUX1JF
U0VUX0FSQiA9IDB4ODI1NTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTlRFWFRf
Uk9CVVNUX0FDQ0VTUyA9IDB4OTBGMzsKLQotICAgIC8vIEdMX0VYVC9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwgZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERFUFRIMjRfU1RF
TkNJTDggPSAweDg4RjA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IG5hbWVz
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRUFEX0ZSQU1FQlVGRkVSID0gMHg4Q0E4
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19GUkFNRUJVRkZFUiA9IDB4OENB
OTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfRlJBTUVCVUZGRVJfQklORElO
RyA9IDB4OENBNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFQURfRlJBTUVCVUZG
RVJfQklORElORyA9IDB4OENBQTsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlIG5hbWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJf
U0FNUExFUyA9IDB4OENBQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEUgPSAweDhENTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBNQVhfU0FNUExFUyA9IDB4OEQ1NzsKLQotICAgIC8vIEdMX0lNR19tdWx0aXNh
bXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJF
TkRFUkJVRkZFUl9TQU1QTEVTX0lNRyA9IDB4OTEzMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HID0gMHg5MTM0Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVNfSU1HID0gMHg5MTM1Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9TQU1QTEVTX0lNRyA9IDB4OTEz
NjsKLQotICAgIC8vIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBuYW1lcwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMg
PSAweDhCOEI7Ci0KLSAgICAvLyBHTF9PRVNfcmdiOF9yZ2JhOCBuYW1lcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gUkdCOF9PRVMgPSAweDgwNTE7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBSR0JBOF9PRVMgPSAweDgwNTg7Ci0KLSAgICAvLyBHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVkVSVEVYX0FS
UkFZX0JJTkRJTkdfT0VTID0gMHg4NUI1OwotCi0gICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBUUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0EwOwotCi0gICAgLy8gR0xfQVJCX3RleHR1
cmVfcmVjdGFuZ2xlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX1JFQ1RB
TkdMRV9BUkIgPSAgMHg4NEY1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9CSU5ESU5HX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjY7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVCA9IDB4ODNGMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUID0gMHg4M0YxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAweDgzRjI7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNGMzsK
LQotICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhD
NEM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUID0gMHg4QzRFOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQgPSAw
eDhDNEY7Ci0KLSAgICAvLyBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRVRDMV9SR0I4X09FUyA9IDB4OEQ2NDsKLQotICAg
IC8vIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUjExX0VBQyA9IDB4OTI3MDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMgPSAweDkyNzE7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHMTFfRUFDID0gMHg5MjcyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMgPSAweDky
NzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQjhfRVRDMiA9
IDB4OTI3NDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhf
RVRDMiA9IDB4OTI3NTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIgPSAweDkyNzY7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiA9
IDB4OTI3NzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMgPSAweDkyNzg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQyA9IDB4OTI3OTsKLQotICAgIC8vIEdMX0lNR190ZXh0
dXJlX2NvbXByZXNzaW9uX3B2cnRjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFf
SU1HID0gMHg4QzAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDM7Ci0KLSAgICAvLyBHTF9BTURfY29tcHJlc3Nl
ZF9BVENfdGV4dHVyZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9B
VENfUkdCX0FNRCA9IDB4OEM5MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EID0gMHg4QzkzOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EID0gMHg4N0VFOwotCi0gICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19o
ZHIKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4
NF9LSFIgPSAweDkzQjA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ181eDRfS0hSID0gMHg5M0IxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiA9IDB4OTNCMjsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIgPSAweDkzQjM7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hS
ID0gMHg5M0I0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg1X0tIUiA9IDB4OTNCNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIgPSAweDkzQjY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSID0gMHg5M0I3OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgPSAw
eDkzQjg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMHg2X0tIUiA9IDB4OTNCOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDhfS0hSID0gMHg5M0JBOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSID0gMHg5M0JCOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSID0g
MHg5M0JDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTJ4MTJfS0hSID0gMHg5M0JEOwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIgPSAweDkzRDA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIg
PSAweDkzRDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NV9LSFIgPSAweDkzRDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgPSAweDkzRDM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4
Nl9LSFIgPSAweDkzRDQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIgPSAweDkzRDU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIgPSAweDkzRDY7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4OF9LSFIgPSAweDkzRDc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSID0gMHg5M0Q4OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiA9
IDB4OTNEOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4OF9LSFIgPSAweDkzREE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiA9IDB4OTNEQjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTJ4MTBfS0hSID0gMHg5M0RDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQ7Ci0KLSAgICAvLyBHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkI7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUID0gMHg4REJDOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
ID0gMHg4REJEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdO
RURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRTsKLQotICAgIC8vIEdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7Ci0KLSAgICAvLyBH
TF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gTUFYX0RSQVdfQlVGRkVSU19FWFQgPSAweDg4MjQ7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjBfRVhUID0gMHg4ODI1OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxX0VYVCA9IDB4ODgyNjsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMl9FWFQgPSAweDg4Mjc7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjNfRVhUID0gMHg4ODI4OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI0X0VYVCA9IDB4ODgyOTsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNV9FWFQgPSAweDg4MkE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjZfRVhUID0gMHg4ODJCOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI3X0VYVCA9IDB4ODgyQzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSOF9FWFQgPSAweDg4MkQ7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjlfRVhUID0gMHg4ODJFOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMF9FWFQgPSAweDg4MkY7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjExX0VYVCA9IDB4ODgz
MDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTJfRVhUID0gMHg4
ODMxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxM19FWFQgPSAw
eDg4MzI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE0X0VYVCA9
IDB4ODgzMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTVfRVhU
ID0gMHg4ODM0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0NPTE9SX0FUVEFD
SE1FTlRTX0VYVCA9IDB4OENERjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQwX0VYVCA9IDB4OENFMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTE9SX0FUVEFDSE1FTlQxX0VYVCA9IDB4OENFMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTE9SX0FUVEFDSE1FTlQyX0VYVCA9IDB4OENFMjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQzX0VYVCA9IDB4OENFMzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCA9IDB4OENFNDsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ1X0VYVCA9IDB4OENFNTsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ2X0VYVCA9IDB4
OENFNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ3X0VY
VCA9IDB4OENFNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQ4X0VYVCA9IDB4OENFODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQ5X0VYVCA9IDB4OENFOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TE9SX0FUVEFDSE1FTlQxMF9FWFQgPSAweDhDRUE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUID0gMHg4Q0VCOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEyX0VYVCA9IDB4OENFQzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxM19FWFQgPSAweDhDRUQ7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VF
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9
IDB4OENFRjsKLQotICAgIC8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOwot
Ci0gICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNpb24KLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7Ci0KLSAgICAv
LyBXZWJHTCBmdW5jdGlvbnMuCi0KLSAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vIE5v
dGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0
bmVzcwotICAgIC8vIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6Ci0gICAgLy8g
VGhlIGltcGxlbWVudGF0aW9uIG11c3Qgbm90IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcg
dGhpcyBjYWxsLgotICAgIC8vIElmIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBh
biBlcnJvciwgaXQgc2hvdWxkIGNvbnRpbnVlCi0gICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVy
cm9yLiBSZXN0b3JpbmcgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKLSAg
ICAvLyBleHRlcm5hbGx5LgotICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgPSAwOwotCi0gICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNl
Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QpID0gMDsKLQotICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRf
ZHJhd19idWZmZXJzCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7Ci0KLSAgICAvLyBPdGhlciBmdW5jdGlvbnMuCi0jaWYg
IVVTRShBTkdMRSkKLSAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQgotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMdm9pZCogZGF0YSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LQotI2VuZGlmCi0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRl
eCBkNjBjMzdhOWZmZTVjMmNiZTAzNjZlMjc2ZDg0ODg2NjViZDZlMjBiLi5hMTQwOTBhN2Y5OGQ0
YWZjYWUzNTgwZGRjOGU3OWU2MTkzNDNkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKQEAgLTM3NiwxMyArMzc1LDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0w6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjoKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JfSU5URUdFUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CiAg
ICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSAzOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJH
QkFfSU5URUdFUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6QkdSQV9FWFQ6IC8vIEdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhB
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBX0VYVDogLy8gR0xfRVhUX3Rl
eHR1cmVfZm9ybWF0X0JHUkE4ODg4CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9B
TFBIQV9FWFQ6CiAgICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSA0OwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYjVmNWVjZDM4MWNhOTBhMjdkOGQyYWI1MmQz
ZWZiMjUyYmVkMWI2Yy4uMWNjZWViNTM3MzUzOGQ1MzUyM2Y0OWRjZTJhMDY4MmU0N2RmYzhkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCkBAIC02NzQsNiArNjc0LDE0NSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjU7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX0JJTkRJTkdfUkVDVEFOR0xFX0FSQiA9IDB4ODRG
NjsKIAorICAgIC8vIEVYVF9zUkdCIGZvcm1hdHMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFNSR0JfRVhUID0gMHg4QzQwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JH
Ql9BTFBIQV9FWFQgPSAweDhDNDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdC
OF9BTFBIQThfRVhUID0gMHg4QzQzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQgPSAweDgyMTA7CisKKyAgICAv
LyBFWFRfYmxlbmRfbWlubWF4IGVudW1zCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBN
SU5fRVhUID0gMHg4MDA3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0VYVCA9
IDB4ODAwODsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBlbnVtcwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQkdSQV9FWFQgPSAweDgwRTE7CisKKyAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcyBlbnVtcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjUzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gSU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTQ7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjU1Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09OVEVYVF9ST0JVU1RfQUNDRVNTID0gMHg5
MEYzOworCisgICAgLy8gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIG5hbWVzCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09F
UyA9IDB4OEI4QjsKKworICAgIC8vIEdMX09FU19yZ2I4X3JnYmE4IG5hbWVzCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBSR0I4X09FUyA9IDB4ODA1MTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFJHQkE4X09FUyA9IDB4ODA1ODsKKworICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVFJBTlNM
QVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9IDB4OTNBMDsKKworICAgIC8vIEdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUID0gMHg4M0YwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAweDgzRjE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCA9IDB4ODNGMjsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0g
MHg4M0YzOworCisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VY
VCA9IDB4OEM0QzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
Ql9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQgPSAweDhDNEU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1
X0VYVCA9IDB4OEM0RjsKKworICAgIC8vIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0
dXJlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBFVEMxX1JHQjhfT0VTID0gMHg4RDY0
OworCisgICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhD
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9QVlJUQ18y
QlBQVjFfSU1HID0gMHg4QzAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMzsKKwor
ICAgIC8vIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JfQU1EID0gMHg4QzkyOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQg
PSAweDhDOTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19S
R0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQgPSAweDg3RUU7CisKKyAgICAvLyBHTF9LSFJfdGV4
dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkcgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiA9IDB4OTNCMDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIgPSAweDkzQjE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSID0g
MHg5M0IyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfNng1X0tIUiA9IDB4OTNCMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIgPSAweDkzQjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSID0gMHg5M0I1OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiA9IDB4OTNC
NjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4
OF9LSFIgPSAweDkzQjc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMHg1X0tIUiA9IDB4OTNCODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSID0gMHg5M0I5OworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIgPSAweDkzQkE7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgx
MF9LSFIgPSAweDkzQkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMF9LSFIgPSAweDkzQkM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIgPSAweDkzQkQ7CisKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tI
UiA9IDB4OTNEMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNXg0X0tIUiA9IDB4OTNEMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiA9IDB4OTNEMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUiA9IDB4OTNEMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiA9IDB4OTNENDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiA9IDB4OTNE
NTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg2X0tIUiA9IDB4OTNENjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiA9IDB4OTNENzsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIg
PSAweDkzRDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDZfS0hSID0gMHg5M0Q5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiA9IDB4OTNEQTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4MTBfS0hSID0gMHg5M0RCOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIgPSAweDkzREM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiA9
IDB4OTNERDsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCA9IDB4OERC
QjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9S
R1RDMV9FWFQgPSAweDhEQkM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJFOwor
CisgICAgLy8gR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VY
VCA9IDB4ODRGRjsKKworICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19i
dWZmZXJzCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRFJBV19CVUZGRVJTX0VY
VCA9IDB4ODgyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMF9F
WFQgPSAweDg4MjU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjFf
RVhUID0gMHg4ODI2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIy
X0VYVCA9IDB4ODgyNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVS
M19FWFQgPSAweDg4Mjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZF
UjRfRVhUID0gMHg4ODI5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZG
RVI1X0VYVCA9IDB4ODgyQTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVG
RkVSNl9FWFQgPSAweDg4MkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JV
RkZFUjdfRVhUID0gMHg4ODJDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVI4X0VYVCA9IDB4ODgyRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
QlVGRkVSOV9FWFQgPSAweDg4MkU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjEwX0VYVCA9IDB4ODgyRjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSMTFfRVhUID0gMHg4ODMwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVIxMl9FWFQgPSAweDg4MzE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjEzX0VYVCA9IDB4ODgzMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIERSQVdfQlVGRkVSMTRfRVhUID0gMHg4ODMzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIxNV9FWFQgPSAweDg4MzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUID0gMHg4Q0RGOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDBfRVhUID0gMHg4Q0UwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDFfRVhUID0gMHg4Q0UxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDJfRVhUID0gMHg4
Q0UyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDNfRVhU
ID0gMHg4Q0UzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDRfRVhUID0gMHg4Q0U0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRU
QUNITUVOVDVfRVhUID0gMHg4Q0U1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09M
T1JfQVRUQUNITUVOVDZfRVhUID0gMHg4Q0U2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09MT1JfQVRUQUNITUVOVDdfRVhUID0gMHg4Q0U3OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDhfRVhUID0gMHg4Q0U4OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDlfRVhUID0gMHg4Q0U5OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEwX0VYVCA9IDB4OENFQTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMV9FWFQgPSAweDhD
RUI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTJfRVhU
ID0gMHg4Q0VDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDEzX0VYVCA9IDB4OENFRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQxNF9FWFQgPSAweDhDRUU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UMTVfRVhUID0gMHg4Q0VGOworCisgICAgLy8gR0xfS0hSX3BhcmFsbGVs
X3NoYWRlcl9jb21waWxlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9O
X1NUQVRVU19LSFIgPSAweDkxQjE7CisKKyAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lv
bgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19B
TkdMRSA9IDB4OTNBODsKKwogICAgIC8vIEF0dGVtcHQgdG8gZW51bWVyYXRlIGFsbCBwb3NzaWJs
ZSBuYXRpdmUgaW1hZ2UgZm9ybWF0cyB0bwogICAgIC8vIHJlZHVjZSB0aGUgYW1vdW50IG9mIHRl
bXBvcmFyeSBhbGxvY2F0aW9ucyBkdXJpbmcgdGV4dHVyZQogICAgIC8vIHVwbG9hZGluZy4gVGhp
cyBlbnVtIG11c3QgYmUgcHVibGljIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQKQEAgLTEyMzMsNiAr
MTM3MiwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3
Y291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwog
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsK
KworICAgIC8vIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJlIGNhbGxlZCB3aXRoIGV4dGVuc2lvbiBu
YW1lcyBmb3Igd2hpY2ggc3VwcG9ydHMgcmV0dXJucyB0cnVlLgorICAgIHZpcnR1YWwgdm9pZCBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIC8vIFRha2Vz
IGZ1bGwgbmFtZSBvZiBleHRlbnNpb246IGZvciBleGFtcGxlLCAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4Ii4KKyAgICAvLyBDaGVja3MgdG8gc2VlIHdoZXRoZXIgdGhlIGdpdmVuIGV4
dGVuc2lvbiBpcyBhY3R1YWxseSBlbmFibGVkIChzZWUgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCku
CisgICAgLy8gSGFzIG5vIG90aGVyIHNpZGUtZWZmZWN0cy4KKyAgICB2aXJ0dWFsIGJvb2wgaXNF
eHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIC8vIEdMX0FSQl9yb2J1
c3RuZXNzCisgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20g
dGhlIEdMX0FSQl9yb2J1c3RuZXNzCisgICAgLy8gc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9sbG93
aW5nIHdheToKKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gbXVzdCBub3QgcmVzZXQgdGhlIGVy
cm9yIHN0YXRlIGR1cmluZyB0aGlzIGNhbGwuCisgICAgLy8gSWYgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQiByZXR1cm5zIGFuIGVycm9yLCBpdCBzaG91bGQgY29udGludWUKKyAgICAvLyByZXR1
cm5pbmcgdGhlIHNhbWUgZXJyb3IuIFJlc3RvcmluZyB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgaXMgaGFuZGxlZAorICAgIC8vIGV4dGVybmFsbHkuCisgICAgdmlydHVhbCBHQ0dMaW50IGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CisKKyAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOworCisgICAgLy8gR0xfQVJCX2RyYXdf
YnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKKwogICAgIC8vID09PT09
PT09PT0gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBw
bmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0x
MjQzLDExICsxNDA3LDYgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lk
IHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CiAKLSAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNp
b25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90Ci0gICAgLy8gYWxsIG1l
dGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAg
ICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygp
IHRvCi0gICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgdmlydHVhbCBFeHRlbnNpb25zR0wmIGdl
dEV4dGVuc2lvbnMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHko
Ym9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4
IDIzM2IwZGY3NTZlY2RkNGJjOTJkOTBiYWFmMDE1M2NjNmE1OTVmZjcuLjhmNWZmMWFlNzYwMGY1
ZGM5MDA5ZDg0NTVjY2ZmOTE1YmNhMWU2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKQEAgLTQ2LDc4ICs0Niw3IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CiAKLUV4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQotewotICAgIHJldHVybiAqdGhp
czsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
LXsKLSNpZiBFTkFCTEUoV0VCR0wyKQotICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLndl
YkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwotI2Vs
c2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKLXsKLSAgICAvLyBGSVhNRTog
VGhlIGNhbGxlciBzaG91bGQgdHJhY2sgdGhpcyBzdGF0ZS4KLSAgICBpZiAobV9sYXllckNvbXBv
c2l0ZWQpIHsKLSAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgICAgIEdy
YXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQoKTsKLSAgICB9Ci19Ci0KLWJvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYg
bmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwotICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHdhaXRVbnRpbElu
aXRpYWxpemVkKCk7Ci0gICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQobmFtZSk7Ci0gICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMu
YWRkKG5hbWUpOwotICAgIH0KLX0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0
aWFsaXplZCgpOwotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQot
ewotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQotICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkK
LSAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci19Ci0KLSNp
ZiAhVVNFKEFOR0xFKQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cmVh
ZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCopCi17Ci19CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdD
R0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0KikKLXsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwg
R0NHTHNpemVpLCBHQ0dMaW50KikKLXsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgIVBMQVRGT1JNKENPQ09BKQotI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDVlNWMwOWI4NzIwNDNlYTBmYTJhOTY3ZjRm
Mzk5M2JhZDgwYTc5NDEuLjc4YzEwMDczYzkwOGU0MWRiZTA0ZmQ1MDdhZjgxZDQwZThjMGNhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtMjcsNyArMjcsNiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRl
ICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM5LDQyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUg
aW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKIC8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tpbmcgbWFu
YWdlbWVudC4KIC8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4
dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMIHsKIHB1
YmxpYzoKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoKSBvdmVycmlkZTsKIAotICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KLSAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOwot
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwotICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKIAotICAg
IC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KLSAgICB1c2luZyBFeHRlbnNpb25zR0w6
OmlzRW5hYmxlZDsKLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAg
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIGlzRW5h
YmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLQotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCBy
ZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2b2lkKikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCop
IGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NH
THNpemVpLCBHQ0dMaW50KikgZmluYWw7Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKSA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0
aWFsaXplZCgpLgotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7Ci0g
ICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwotCi0gICAgSGFzaFNl
dDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMDQ5YzUxMDkyNjYxNDVkZTkx
MTc3OTcwNDNlOTVlYmI5ODdhNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgotCi0jaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRl
eHRHTEFOR0xFKiBjb250ZXh0KQotICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKLXsKLX0KLQotRXh0ZW5zaW9uc0dM
QU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKLQotYm9vbCBFeHRlbnNpb25z
R0xBTkdMRTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmICghbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
bml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9y
dHNFeHRlbnNpb24obmFtZSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmVuc3VyZUVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIC8vIEVuYWJsZSBzdXBwb3J0IGluIEFO
R0xFIChpZiBub3QgZW5hYmxlZCBhbHJlYWR5KS4KLSAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUobmFtZS5h
c2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOwot
Ci0gICAgICAgIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdi
YSJfcykKLSAgICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSA9IHRydWU7Ci0g
ICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2IiX3MpCi0gICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiA9IHRydWU7Ci0g
ICAgfQotfQotCi1ib29sIEV4dGVuc2lvbnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQotewotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotR0xpbnQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7Ci19Ci0KLVN0cmluZyBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+
Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5H
TEUpOwotCi0gICAgaWYgKCFzb3VyY2VMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNM
QVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9u
LgotICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwotICAgIEdMX0dldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBu
YW1lLmRhdGEoKSk7Ci0gICAgaWYgKCFyZXR1cm5lZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci0gICAgLy8gcmV0dXJuZWRMZW5ndGggZG9lcyBub3QgaW5jbHVkZSB0aGUg
bnVsbCB0ZXJtaW5hdG9yLgotICAgIEFTU0VSVChyZXR1cm5lZExlbmd0aCA9PSBzb3VyY2VMZW5n
dGggLSAxKTsKLSAgICByZXR1cm4gU3RyaW5nKG5hbWUuZGF0YSgpLCByZXR1cm5lZExlbmd0aCk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNp
b25zKCkKLXsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsK
LSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
LSAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIGV4dGVu
c2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0
U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAgZm9yIChhdXRv
JiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgIG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIG1faW5pdGlhbGl6ZWRBdmFp
bGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKLX0KLQotYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xfRHJhd0J1
ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwotfQotCi1TdHJpbmcgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEV4dGVuc2lvbnMoKQotewotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7Ci19Ci0K
LUdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxG
b3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSkKLXsKLSAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV0VCR0xfY29sb3JfYnVmZmVy
X2Zsb2F0IGZvciBXZWJHTCAxLjAgLyBFUyAyLjAgcmVxdWlyZXMgYSBzaXplZAotICAgIC8vIGlu
dGVybmFsIGZvcm1hdC4gQWRqdXN0IGl0IGlmIG5lY2Vzc2FyeSBhdCB0aGlzIGxvd2VzdCBsZXZl
bC4KLSAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgewotICAgICAgICBpZiAobV93ZWJnbENvbG9y
QnVmZmVyRmxvYXRSR0JBICYmIGZvcm1hdCA9PSBHTF9SR0JBICYmIGludGVybmFsZm9ybWF0ID09
IEdMX1JHQkEpCi0gICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRjsKLSAgICAgICAgaWYgKG1f
d2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCICYmIGZvcm1hdCA9PSBHTF9SR0IgJiYgaW50ZXJuYWxm
b3JtYXQgPT0gR0xfUkdCKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRjsKLSAgICB9Ci0g
ICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTc4ZTJmOWY2NGI5ZjYxNWMzYjNhODVj
NDNhM2NhMDU0ZWQ3NWNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKLQotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU7Ci0KLWNsYXNzIEV4dGVuc2lvbnNH
TEFOR0xFIDogcHVibGljIEV4dGVuc2lvbnNHTCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRp
YXRlZCBieSBHcmFwaGljc0NvbnRleHRHTEFOR0xFIGltcGxlbWVudGF0aW9ucy4KLSAgICBleHBs
aWNpdCBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEFOR0xFKik7Ci0gICAgdmly
dHVhbCB+RXh0ZW5zaW9uc0dMQU5HTEUoKTsKLQotICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2Rz
LgotICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbmFibGVk
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwotCi0gICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLQotICAgIC8vIE9ubHkg
Zm9yIG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCi0gICAgR0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4
dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUpOwotCi1wcml2YXRlOgotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJik7Ci0gICAgU3RyaW5nIGdldEV4dGVuc2lvbnMoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwotICAgIGJvb2wgbV9p
bml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fYXZh
aWxhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICAv
LyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTEFOR0xFLgotICAgIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEUqIG1fY29udGV4dDsKLQotICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdM
IDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZl
IGJlZW4gZW5hYmxlZC4KLSAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFs
c2UgfTsKLSAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDQ4ZjczNDJmM2UwOTAxZmU0NjcyY2E1YjVlMDMyMWU4NDE2YTk2NmQuLmM1YzZi
ZmE1NzVlOTQ5NDY2MTAwZTE2NTMxODMyODNhMDhhMGRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBTkdMRUhlYWRl
cnMuaCIKICNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TEFOR0xFLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC03MSw2ICs3
MCwzMCBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgs
IGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeAogfQogI2VuZGlmCiAKKworYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIXBsYXRmb3JtSW5p
dGlhbGl6ZUNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBleHRl
bnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dl
dFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0
ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
YWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9O
U19BTkdMRSkpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcu
c3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7CisgICAgcmV0dXJuIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKIHsKICNpZiAhUExBVEZPUk0o
Q09DT0EpCkBAIC0zNTQsNyArMzc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpn
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGUKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2lzRm9y
V2ViR0wyKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnNH
TEFOR0xFJj4oZ2V0RXh0ZW5zaW9ucygpKS5hZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGludGVybmFsZm9ybWF0
ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3Jt
YXQsIHR5cGUpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBHTF9UZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6
ZSwgcGl4ZWxzLmRhdGEpOwpAQCAtNDI1LDEzICs0NDgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKICAgICBHTF9DbGVhckRlcHRo
ZihzdGF0aWNfY2FzdDxmbG9hdD4oZGVwdGgpKTsKIH0KIAotRXh0ZW5zaW9uc0dMJiBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpnZXRFeHRlbnNpb25zKCkKLXsKLSAgICBpZiAoIW1fZXh0ZW5zaW9u
cykKLSAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xBTkdMRT4o
dGhpcyk7Ci0gICAgcmV0dXJuICptX2V4dGVuc2lvbnM7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIGRhdGEuZGF0YSwgZmFsc2UpOwpAQCAtNDgzLDEyICs0OTksMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWQKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7
Ci0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIC8v
IEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBu
b3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVj
dGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0
aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCiAgICAgLy8gdXNlIHRvIHR1cm4gb24gZmVh
dHVyZSBmbGFncy4KLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICAgICAgbV9pbnRlcm5hbERlcHRoU3Rl
bmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOwogICAgIH0gZWxzZQogICAgICAg
ICBtX2ludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7CkBA
IC01MDUsMTcgKzUyMCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRl
RGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbAogCiAgICAgaWYgKGF0
dHJzLmFudGlhbGlhcykgewogICAgICAgICAvLyBGSVhNRTogbXVzdCBhZGp1c3QgdGhpcyB3aGVu
IHVwZ3JhZGluZyB0byBXZWJHTCAyLjAgLyBPcGVuR0wgRVMgMy4wIHN1cHBvcnQuCi0gICAgICAg
IGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
IHx8ICFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSB7CisgICAgICAg
IGlmICghc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
IikgfHwgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikgfHwg
IXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSB7CiAgICAgICAgICAgICBh
dHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVz
KGF0dHJzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJl
RW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOwot
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIp
OworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4Iik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0
dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewogICAgICAgICAvLyBOZWVkZWQgZm9yIHByZXNl
cnZlRHJhd2luZ0J1ZmZlcjp0cnVlIHN1cHBvcnQgd2l0aG91dCBhbnRpYWxpYXNpbmcuCi0gICAg
ICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
OworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9i
bGl0Iik7CiAgICAgfQogfQogCkBAIC0yODkwLDYgKzI5MDUsNjQgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0wKICAgICBHTF9NdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50cy5kYXRhLCB0eXBlLCBwb2ludGVycy5kYXRhKCksIGluc3RhbmNlQ291bnRzLmRhdGEsIGRy
YXdjb3VudCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgLy8gRW5hYmxlIHN1cHBvcnQgaW4g
QU5HTEUgKGlmIG5vdCBlbmFibGVkIGFscmVhZHkpLgorICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgeworICAgICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUobmFtZS5hc2NpaSgpLmRh
dGEoKSk7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworCisgICAgICAg
IGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcykKKyAg
ICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSA9IHRydWU7CisgICAgICAgIGVs
c2UgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpCisg
ICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiA9IHRydWU7CisgICAgfQorfQor
Citib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCitHTGlu
dCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sK
KyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOworfQorCitTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGludCBzb3VyY2VMZW5ndGggPSBnZXRTaGFk
ZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7CisK
KyAgICBpZiAoIXNvdXJjZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cisg
ICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAg
R0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0xfR2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0
YSgpKTsKKyAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKKyAgICAvLyByZXR1cm5lZExlbmd0aCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBudWxsIHRl
cm1pbmF0b3IuCisgICAgQVNTRVJUKHJldHVybmVkTGVuZ3RoID09IHNvdXJjZUxlbmd0aCAtIDEp
OworICAgIHJldHVybiBTdHJpbmcobmFtZS5kYXRhKCksIHJldHVybmVkTGVuZ3RoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBHTF9EcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMu
ZGF0YSk7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6d2FpdEFuZFVwZGF0ZU9s
ZGVzdEZyYW1lKCkKIHsKICAgICBzaXplX3Qgb2xkZXN0RnJhbWVDb21wbGV0aW9uRmVuY2UgPSBt
X29sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlKysgJSBtYXhQZW5kaW5nRnJhbWVzOwpAQCAtMjk5
Nyw2ICszMDcwLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW52YWxpZGF0ZUtu
b3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpCiB7CiB9CiAKK0dDR0xlbnVtIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKQoreworICAgIC8v
IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQgZm9yIFdlYkdM
IDEuMCAvIEVTIDIuMCByZXF1aXJlcyBhIHNpemVkCisgICAgLy8gaW50ZXJuYWwgZm9ybWF0LiBB
ZGp1c3QgaXQgaWYgbmVjZXNzYXJ5IGF0IHRoaXMgbG93ZXN0IGxldmVsLgorICAgIGlmICh0eXBl
ID09IEdMX0ZMT0FUKSB7CisgICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
JiYgZm9ybWF0ID09IEdMX1JHQkEgJiYgaW50ZXJuYWxmb3JtYXQgPT0gR0xfUkdCQSkKKyAgICAg
ICAgICAgIHJldHVybiBHTF9SR0JBMzJGOworICAgICAgICBpZiAobV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgJiYgZm9ybWF0ID09IEdMX1JHQiAmJiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0Ip
CisgICAgICAgICAgICByZXR1cm4gR0xfUkdCMzJGOworICAgIH0KKyAgICByZXR1cm4gaW50ZXJu
YWxmb3JtYXQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IDEwN2VjMjM4Yjc4MGY0NDkxNjBm
ZjVmMTE5NzViMWIwNDQwYmJjZDguLjQ0ZDFlYzNmMGQ5ZjNlNTEwODA1NjhlNGQ0OGIzNzEyYTM4
NzdiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTUzLDcgKzUzLDYgQEAg
c3RydWN0IGdibV9ibzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXh0ZW5zaW9uc0dM
OwotY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7CiBjbGFzcyBHTENvbnRleHQ7CiBjbGFzcyBIb3N0
V2luZG93OwogY2xhc3MgSW1hZ2VCdWZmZXI7CkBAIC0zMzIsNiArMzMxLDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBj
b3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKKyAg
ICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBHQ0dM
aW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKKwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CiAgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlUHJvZ3JhbSgpIGZpbmFsOwpAQCAtMzQ2LDEyICszNTIsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICB2
b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKICAgICBib29sIG1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwotICAgIEV4dGVuc2lvbnNHTCYg
Z2V0RXh0ZW5zaW9ucygpIGZpbmFsOwogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3Rpbmco
U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFs
OwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikg
ZmluYWw7Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpOwpAQCAtMzY2
LDE1ICszNzAsMjEgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQotICAgIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBjb25zdCBQcm9jZXNzSWRlbnRp
dHkmKTsKLSNlbHNlCiAgICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMpOwotI2VuZGlmCisKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1
YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIC8vIENh
bGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCisgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNl
LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBpbnN0YW5jZSBzaG91bGQgbm90IGJlIHVzZWQuCisgICAg
Ym9vbCBpbml0aWFsaXplKCk7CisgICAgLy8gQ2FsbGVkIGZpcnN0IGJ5IGluaXRpYWxpemUoKS4g
U3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGJpdHMgb2YgRUdMQ29udGV4dC4KKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IHBsYXRm
b3JtcyBkbyBub3Qgc2hhcmUgdGhlIGNvbnRleHQgY3JlYXRpb24uIFRoZXkgc2hvdWxkLgorICAg
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCk7CisgICAgLy8gQ2FsbGVk
IGxhc3QgYnkgaW5pdGlhbGl6ZSgpLiBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0byBpbnN0
YW50aWF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBzdGF0ZSB0aGF0IGRlcGVuZCBvbgorICAgIC8vIHRo
ZSBzaGFyZWQgc3RhdGUuCisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwor
CiAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBj
cmVhdGlvbiBhdHRyaWJ1dGVzLAogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCkBAIC0zOTUs
MTMgKzQwNSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZUltcGwoKTsK
ICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoY29uc3QgSW50UmVjdCYg
PSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZOZWVk
ZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50IGhl
aWdodCk7Ci0KLSAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKTsKLSAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICAgICBzdGF0aWMgYm9vbCBtYWtl
Q3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSwgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTCk7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZm
ZXJCYWNraW5nKCkgPSAwOworCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250ZXh0IHNob3Vs
ZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0ZU9sZGVzdEZy
YW1lKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCkBAIC00MTAsNiArNDE4LDE0IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dM
dWludCk7CiAKKyAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgorICAgIEdD
R0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKKworICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNp
b25zOworICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OworICAg
IGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKICAgICBHQ0dMdWlu
dCBtX3RleHR1cmUgeyAwIH07CiAgICAgR0NHTHVpbnQgbV9mYm8geyAwIH07CiAgICAgR0NHTHVp
bnQgbV9kZXB0aFN0ZW5jaWxCdWZmZXIgeyAwIH07CkBAIC00MzQsNyArNDUwLDYgQEAgcHJvdGVj
dGVkOgogICAgIHNpemVfdCBtX29sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlIHsgMCB9OwogICAg
IFNjb3BlZEdMRmVuY2UgbV9mcmFtZUNvbXBsZXRpb25GZW5jZXNbbWF4UGVuZGluZ0ZyYW1lc107
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xTdGF0ZSBtX3N0YXRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHRlbnNpb25zR0xBTkdMRT4gbV9leHRlbnNpb25zOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYS4KQEAg
LTQ0Nyw3ICs0NjIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gV2hlbiBwcmVzZXJ2ZURyYXdpbmdC
dWZmZXIgPT0gdHJ1ZSwgdGhpcyBpcyBibGl0dGVkIHRvIGR1cmluZyBkaXNwbGF5IHByZXBhcmUu
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyQmFja2luZzsK
ICAgICB2b2lkKiBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIHsgbnVsbHB0ciB9OwotICAgIFByb2Nl
c3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjZW5kaWYKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgR0NHTHVpbnQgbV9jb21wb3NpdG9yVGV4dHVyZSB7IDAgfTsKQEAgLTQ4
Niw3ICs1MDAsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBw
ZXJHQ0dMUGxhdGZvcm1MYXllcj4gbV90ZXhtYXBMYXllcjsKICNlbmRpZgogCi0gICAgZnJpZW5k
IGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogI2lmIFVTRShOSUNPU0lBKQogICAgIGZyaWVuZCBj
bGFzcyBOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcjsKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6
R0NHTExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYTA4ZGEwZjRmMTBlNGMzZTRh
OWE3MWVlOGY1MzI1ZmE2NmUwOTFmZi4uN2IzYjRhMDFmMjY5NmMwZDliMDYxMjgwNjQ2MzhkZjY5
MjJhMWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1w
b3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgiCi0jaW1wb3J0ICJFeHRlbnNpb25zR0wuaCIKICNpbXBvcnQg
IkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0
ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgK
aW5kZXggYzU2ZTY5NTM1ZTcwOTdmZGQyNWQyZmNlMzAyZTEwNjhlNzZjNmUzYi4uYzMxZjVlZmJl
MmVhODIwZGM3MGZkNTBkNTdhMjg3MWNjMzk2ZjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
Q29jb2EuaApAQCAtNzksMTcgKzc5LDIzIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8TWVkaWFTYW1w
bGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYK
ICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IHVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24oKTsKICNlbmRpZgogcHJvdGVj
dGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIpOwotICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0OwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBvdmVy
cmlkZXMuCisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkgZmluYWw7CisgICAg
Ym9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBmaW5hbDsKICAgICB2b2lkIGludmFsaWRhdGVLbm93
blRleHR1cmVDb250ZW50KEdDR0x1aW50KSBmaW5hbDsKKyAgICBib29sIHJlc2hhcGVEaXNwbGF5
QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1
ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKIAorICAgIFByb2Nl
c3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+IG1fY3Y7CiAjZW5kaWYKQEAgLTEw
MCw2ICsxMDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9tZWRpYVNhbXBsZVJvdGF0
aW9uU2Vzc2lvbjsKICNlbmRpZgorCiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1ZDb2NvYTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDBjZDBh
MjRmZGI3MmMzN2JjZDI1YzAwMGM1NDYyYzYxYzIwNWY3NTEuLjM2ZThmMGZiMDI5Mzc3YjRlZmZl
NDA1MzUyMzdlNTgyMjJmYmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpA
QCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQU5HTEVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFO
R0xFVXRpbGl0aWVzQ29jb2EuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJF
eHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMTk3LDI5ICsxOTYsMTUgQEAgc3RhdGljIGJvb2wgbmVl
ZHNFQUdMT25NYWMoKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyKQogewogICAgIGF1dG8gY29udGV4
dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0
ZXMpLCBXVEZNb3ZlKHJlc291cmNlT3duZXIpKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlk
KCkpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpH
cmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGNyZWF0
aW9uQXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcikKLSAgICA6Ci0j
aWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKLSAgICBHcmFw
aGljc0NvbnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSwgcmVzb3VyY2VP
d25lcikKLSNlbHNlCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3ZlKGNyZWF0aW9u
QXR0cmlidXRlcykpCi0jZW5kaWYKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUoV1RGTW92
ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQorICAgICwgbV9yZXNvdXJjZU93bmVyKFdURk1vdmUocmVz
b3VyY2VPd25lcikpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGluaXRpYWxpemVyIGxpc3Qgb25jZSBtX3Jlc291cmNl
T3duZXIgbW92ZXMgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYS4KLSAgICBtX3Jlc291cmNlT3du
ZXIgPSBXVEZNb3ZlKHJlc291cmNlT3duZXIpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGF1
dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVz
LnVzZU1ldGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93ZXJQcmVmZXJlbmNlKCkgPT0gR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKLSAgICAgICAg
bV9zd2l0Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlvbiA9IHRydWU7Ci0jZW5kaWYKIH0K
IAogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6fkdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7CkBAIC0yMzYsMzggKzIyMSwzOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQogCiAvLyBGSVhNRTogQmVsb3cgaXMgZnVuY3Rpb25h
bGl0eSB0aGF0IHNob3VsZCBiZSBtb3ZlZCB0byBHcmFwaGljc0NvbnRleHRHTENvY29hIHRvIHNp
bXBsaWZ5IHRoZSBiYXNlIGNsYXNzLgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFT
S19JREVOVElUWV9UT0tFTikKLUdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBjb25zdCBQcm9jZXNz
SWRlbnRpdHkmIHJlc291cmNlT3duZXIpCi0jZWxzZQogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMp
Ci0jZW5kaWYKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzKQogewotICAgIG1faXNGb3JX
ZWJHTDIgPSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNp
b246OldlYkdMMjsKLSAgICBpZiAoYXR0cnMudXNlTWV0YWwgJiYgIXBsYXRmb3JtU3VwcG9ydHNN
ZXRhbChtX2lzRm9yV2ViR0wyKSkgewotICAgICAgICBhdHRycy51c2VNZXRhbCA9IGZhbHNlOwot
ICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7Cit9CisKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCit7CisgICAgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwor
ICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0Nv
bnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIGlmIChhdHRyaWJ1dGVzLnVzZU1ldGFs
ICYmICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0ZvcldlYkdMMikpIHsKKyAgICAgICAgYXR0
cmlidXRlcy51c2VNZXRhbCA9IGZhbHNlOworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiBFTkFCTEUoV0VCWFIpCi0gICAgaWYgKGF0dHJzLnhy
Q29tcGF0aWJsZSkgeworICAgIGlmIChhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkgewogICAgICAg
ICAvLyBGSVhNRTogSXQncyBhbG1vc3QgY2VydGFpbiB0aGF0IGFueSBjb25uZWN0ZWQgaGVhZHNl
dCB3aWxsIHJlcXVpcmUgdGhlIGhpZ2gtcG93ZXIgR1BVLAogICAgICAgICAvLyB3aGljaCBpcyB0
aGUgc2FtZSBHUFUgd2UgbmVlZCB0aGlzIGNvbnRleHQgdG8gdXNlLiBIb3dldmVyLCB0aGlzIGlz
IG5vdCBndWFyYW50ZWVkLCBhbmQKICAgICAgICAgLy8gdGhlcmUgaXMgYWxzbyB0aGUgY2hhbmNl
IHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIEdQVXMuIEdpdmVuIHRoYXQgeW91IGNhbiByZXF1ZXN0
IHRoZQogICAgICAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRo
ZSBXZWJYUiBzZXNzaW9uLCB3ZSdsbCBuZWVkIHNvbWUgd2F5IHRvCiAgICAgICAgIC8vIG1pZ3Jh
dGUgdGhlIGNvbnRleHQgdG8gdGhlIGFwcHJvcHJpYXRlIEdQVSB3aGVuIHRoZSBjb2RlIGhlcmUg
ZG9lcyBub3Qgd29yay4KICAgICAgICAgTE9HKFdlYkdMLCAiV2ViWFIgY29tcGF0aWJsZSBjb250
ZXh0IHJlcXVlc3RlZC4gVGhpcyB3aWxsIGFsc28gdHJpZ2dlciBhIHJlcXVlc3QgZm9yIHRoZSBo
aWdoLXBvd2VyIEdQVS4iKTsKLSAgICAgICAgYXR0cnMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZv
cm1hbmNlR1BVID0gdHJ1ZTsKLSAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwor
ICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IHRy
dWU7CisgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KICNl
bmRpZgogCi0gICAgbV9kaXNwbGF5T2JqID0gaW5pdGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwor
ICAgIG1fZGlzcGxheU9iaiA9IGluaXRpYWxpemVFR0xEaXNwbGF5KGF0dHJpYnV0ZXMpOwogICAg
IGlmICghbV9kaXNwbGF5T2JqKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWF0dHJzLnVzZU1ldGFsKSB7CisgICAg
aWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKSB7CiAgICAgICAgIC8vIEZvciBPcGVuR0wsIEVHTF9B
TkdMRV9wb3dlcl9wcmVmZXJlbmNlIGlzIHVzZWQuIFRoZSBjb250ZXh0IGlzIGluaXRpYWxpemVk
IHdpdGggdGhlCiAgICAgICAgIC8vIGRlZmF1bHQsIGxvdy1wb3dlciBkZXZpY2UuIEZvciBoaWdo
LXBlcmZvcm1hbmNlIGNvbnRleHRzLCB3ZSByZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlCiAg
ICAgICAgIC8vIEdQVSBpbiBzZXRDb250ZXh0VmlzaWJpbGl0eS4gV2hlbiB0aGUgcmVxdWVzdCBp
cyBmdWxsZmlsbGVkIGJ5IHRoZSBzeXN0ZW0sIHdlIGdldCB0aGUKQEAgLTI3NSwxMSArMjYxLDEx
IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgICAgIGNvbnN0IGNoYXIgKmRpc3BsYXlF
eHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxheU9iaiwgRUdMX0VYVEVOU0lPTlMp
OwogICAgICAgICBib29sIHN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlID0gc3Ryc3RyKGRpc3BsYXlF
eHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKTsKICAgICAgICAgaWYgKCFz
dXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSkgewotICAgICAgICAgICAgYXR0cnMuZm9yY2VSZXF1ZXN0
Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXR0cnMucG93
ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVy
Zm9ybWFuY2UpIHsKLSAgICAgICAgICAgICAgICBhdHRycy5wb3dlclByZWZlcmVuY2UgPSBHcmFw
aGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKKyAgICAgICAgICAgIGF0dHJp
YnV0ZXMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3NDb250ZXh0R0xQ
b3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgeworICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
OkRlZmF1bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRl
cyhhdHRycyk7CisgICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsK
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjk4LDE0ICsyODQsMTQgQEAgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cnMKICAgICBFR0xfQ2hvb3NlQ29uZmlnKG1fZGlzcGxheU9iaiwgY29uZmln
QXR0cmlidXRlcywgJm1fY29uZmlnT2JqLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKTsKICAg
ICBpZiAobnVtYmVyQ29uZmlnc1JldHVybmVkICE9IDEpIHsKICAgICAgICAgTE9HKFdlYkdMLCAi
RUdMQ29uZmlnIEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb25maWci
KTsKIAogICAgIEVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKICAgICBpZiAoRUdMX0dl
dEVycm9yKCkgIT0gRUdMX1NVQ0NFU1MpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiVW5hYmxlIHRv
IGJpbmQgdG8gT1BFTkdMX0VTX0FQSSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBWZWN0b3I8RUdMaW50PiBlZ2xDb250ZXh0QXR0cmlidXRl
czsKQEAgLTMzMywxMyArMzE5LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgZWds
Q29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX0JJTkRfR0VORVJBVEVTX1JFU09V
UkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0ZBTFNF
KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCisj
aWYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQogICAgIGF1dG8gZGlzcGxheUV4dGVuc2lvbnMg
PSBFR0xfUXVlcnlTdHJpbmcobV9kaXNwbGF5T2JqLCBFR0xfRVhURU5TSU9OUyk7CiAgICAgYm9v
bCBzdXBwb3J0c093bmVyc2hpcElkZW50aXR5ID0gc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAi
RUdMX0FOR0xFX21ldGFsX2NyZWF0ZV9jb250ZXh0X293bmVyc2hpcF9pZGVudGl0eSIpOwotICAg
IC8vIEZJWE1FOiBVc2UgbV9yZXNvdXJjZU93bmVyIG9uY2UgaXQgbW92ZXMgdG8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS4KLSAgICBpZiAoYXR0cnMudXNlTWV0YWwgJiYgcmVzb3VyY2VPd25lciAm
JiBzdXBwb3J0c093bmVyc2hpcElkZW50aXR5KSB7CisgICAgaWYgKGF0dHJpYnV0ZXMudXNlTWV0
YWwgJiYgbV9yZXNvdXJjZU93bmVyICYmIHN1cHBvcnRzT3duZXJzaGlwSWRlbnRpdHkpIHsKICAg
ICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX01FVEFMX09XTkVS
U0hJUF9JREVOVElUWV9BTkdMRSk7Ci0gICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVu
ZChyZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCkpOworICAgICAgICBlZ2xDb250ZXh0QXR0cmli
dXRlcy5hcHBlbmQobV9yZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCkpOwogICAgIH0KICNlbmRp
ZgogCkBAIC0zNDgsMTAgKzMzMywxNCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGlj
c0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIG1f
Y29udGV4dE9iaiA9IEVHTF9DcmVhdGVDb250ZXh0KG1fZGlzcGxheU9iaiwgbV9jb25maWdPYmos
IEVHTF9OT19DT05URVhULCBlZ2xDb250ZXh0QXR0cmlidXRlcy5kYXRhKCkpOwogICAgIGlmICht
X2NvbnRleHRPYmogPT0gRUdMX05PX0NPTlRFWFQgfHwgIW1ha2VDdXJyZW50KG1fZGlzcGxheU9i
aiwgbV9jb250ZXh0T2JqKSkgewogICAgICAgICBMT0coV2ViR0wsICJFR0xDb250ZXh0IEluaXRp
YWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb250ZXh0Iik7CisgICAgcmV0dXJu
IHRydWU7Cit9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK3sKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogICAg
IGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBHTF9FbmFibGUoR3JhcGhpY3NDb250ZXh0R0w6
OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIApAQCAtMzYzLDM4ICszNTIsMzcgQEAg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIGlmICghbmVlZHNFQUdMT25NYWMoKSkgewogICAgICAgICAvLyBGb3Ig
SU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KLSAgICAgICAgaWYgKCFhdHRycy51c2VNZXRhbCkK
KyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKQogICAgICAgICAgICAgcmVxdWlyZWRF
eHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3MpOwogICAgICAg
ICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgogICAg
ICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiX3MpOwogICAgIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogI2lmIEVOQUJMRShXRUJYUikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKQotICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnhyQ29tcGF0aWJsZSkKKyAgICBp
ZiAoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5h
cHBlbmQoIkdMX09FU19FR0xfaW1hZ2UiX3MpOwogI2VuZGlmCiAgICAgaWYgKG1faXNGb3JXZWJH
TDIpCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIl9zKTsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRF
eHRlbnNpb25zKCk7CiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lv
bnMpIHsKLSAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAg
ICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbihleHRlbnNpb24pKSB7CiAgICAgICAgICAgICBM
T0coV2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCBleHRlbnNpb24uY2hh
cmFjdGVycygpKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9u
KTsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSAg
ICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS51c2VNZXRhbCkgeworICAgIGlmIChhdHRyaWJ1dGVz
LnVzZU1ldGFsKSB7CiAgICAgICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgdXNlcyBzeW5j
IG9iamVjdHMgdG8gdGhyb3R0bGUgZGlzcGxheSBvbiBNZXRhbCBpbXBsZW1lbnRhdGlvbnMuCiAg
ICAgICAgIC8vIE9wZW5HTCBzeW5jIG9iamVjdHMgYXJlIG5vdCBzaWduYWxpbmcgdXBvbiBjb21w
bGV0aW9uIG9uIENhdGFsaW5hLWVyYSBkcml2ZXJzLCBzbwogICAgICAgICAvLyBPcGVuR0wgY2Fu
bm90IHVzZSB0aGlzIG1ldGhvZCBvZiB0aHJvdHRsaW5nLiBPcGVuR0wgZHJpdmVycyB0eXBpY2Fs
bHkgaW1wbGVtZW50CiAgICAgICAgIC8vIHNvbWUgc29ydCBvZiBpbnRlcm5hbCB0aHJvdHRsaW5n
LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQVJCX3N5bmMiX3MpKSB7Cisg
ICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3N5bmMiX3MpKSB7CiAgICAgICAg
ICAgICBtX3VzZUZlbmNlU3luY0ZvckRpc3BsYXlSYXRlTGltaXQgPSB0cnVlOwotICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BUkJfc3luYyJfcyk7CisgICAgICAgICAg
ICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfc3luYyJfcyk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0gICAgYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCisgICAg
YXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdl
ZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAogICAgIC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdp
bGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0
ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKQEAgLTQxMSwxOCArMzk5LDE4IEBAIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtX2Zibyk7CiAgICAgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPSBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9IG1fZmJvOwogCi0gICAgaWYgKCFhdHRycy5hbnRpYWxpYXMgJiYgKGF0dHJzLnN0ZW5j
aWwgfHwgYXR0cnMuZGVwdGgpKQorICAgIGlmICghYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgKGF0
dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSkKICAgICAgICAgR0xfR2VuUmVu
ZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogCiAgICAgLy8gSWYgbmVjZXNz
YXJ5LCBjcmVhdGUgYW5vdGhlciBmcmFtZWJ1ZmZlciBmb3IgdGhlIG11bHRpc2FtcGxlIHJlc3Vs
dHMuCi0gICAgaWYgKGF0dHJzLmFudGlhbGlhcykgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlh
bGlhcykgewogICAgICAgICBHTF9HZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8p
OwogICAgICAgICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1w
bGVGQk8pOwogICAgICAgICBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9IG1fc3RhdGUuYm91bmRSZWFk
RkJPID0gbV9tdWx0aXNhbXBsZUZCTzsKICAgICAgICAgR0xfR2VuUmVuZGVyYnVmZmVycygxLCAm
bV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKLSAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwgfHwg
YXR0cnMuZGVwdGgpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRl
cy5kZXB0aCkKICAgICAgICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgIH0gZWxzZSBpZiAoYXR0cnMucHJlc2VydmVEcmF3
aW5nQnVmZmVyKSB7CisgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1
ZmZlcikgewogICAgICAgICAvLyBJZiBuZWNlc3NhcnksIGNyZWF0ZSBhbm90aGVyIHRleHR1cmUg
dG8gaGFuZGxlIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjp0cnVlIHdpdGhvdXQKICAgICAgICAgLy8g
YW50aWFsaWFzaW5nLgogICAgICAgICBHTF9HZW5UZXh0dXJlcygxLCAmbV9wcmVzZXJ2ZURyYXdp
bmdCdWZmZXJUZXh0dXJlKTsKQEAgLTQzOCw3ICs0MjYsMTEgQEAgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cnMKIAogICAgIEdMX0NsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAKLSAgICBMT0coV2ViR0ws
ICJDcmVhdGVkIGEgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSAoJXApLiIsIHRoaXMpOworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBpZiAoIWF0dHJpYnV0ZXMudXNlTWV0YWwgJiYgYXR0cmlidXRlcy5l
ZmZlY3RpdmVQb3dlclByZWZlcmVuY2UoKSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6SGlnaFBlcmZvcm1hbmNlKQorICAgICAgICBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVj
b25maWd1cmF0aW9uID0gdHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCkBAIC00ODUsMTEg
KzQ3Nyw2IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xF
KCkKICAgICBMT0coV2ViR0wsICJEZXN0cm95ZWQgYSBHcmFwaGljc0NvbnRleHRHTEFOR0xFICgl
cCkuIiwgdGhpcyk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGV4dHVyZTsKLX0KLQogYm9vbCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9jb250ZXh0T2Jq
KQpAQCAtNTUwLDcgKzUzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6dXBkYXRl
Q29udGV4dE9uRGlzcGxheVJlY29uZmlndXJhdGlvbigpCiB9CiAjZW5kaWYKIAotYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQorYm9vbCBH
cmFwaGljc0NvbnRleHRHTENvY29hOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewog
ICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAg
IC8vIFJlc2V0IHRoZSBjdXJyZW50IGJhY2tidWZmZXIgbm93IGJlZm9yZSBhbGxvY2F0aW5nIGEg
bmV3IG9uZSBpbiBvcmRlciB0byBzbGlnaHRseSByZWR1Y2UgbWVtb3J5IHByZXNzdXJlLgpAQCAt
NTY4LDcgKzU1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nKCkKICAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjphbGxvY2F0ZUFu
ZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcg
PSBJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CkBAIC01OTgsNyArNTg1LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiAg
ICAgcmV0dXJuIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhXVEZNb3ZlKGJhY2tpbmcpLCBwYnVm
ZmVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpiaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZl
cikKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6YmluZERpc3BsYXlCdWZmZXJCYWNraW5n
KHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpCiB7CiAg
ICAgR0NHTGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7
CiAgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdC
dWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0
ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CkBA
IC02ODksNyArNjc2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hJT1N1
cmZhY2VGcm9tU2hhcmVkVGV4dHVyZSh2b2lkKiBoYW5kbGUpCiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAobV9sYXllckNv
bXBvc2l0ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggN2QwY2UzNmI2MGEwZDY5YTU5MjNjMjQwMGQwM2Ji
N2JhZDM4NjQ5OC4uMGJiMTA2NWIzYTYxNjY5Yjk4NTAxODUzMDQ1YTcwYjZmYWExYjUwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTE1
MSw3ICsxNTEsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogICAgIGlmIChHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55Q29udGV4dHMo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYo
bmV3IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQor
ICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwogICAgIHJldHVybiBjb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA3ZDUwMGFiYzBjZjFlZTU1MjY4MzExMmFm
Y2YyMjI0YWU2OTU3MWJmLi43Yjc5ZDBmODg2MjAwOGU0MWFlMWEyZGQ2M2M0MmZkOTQ2NzQ0NTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0cyhjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3Nv
dXJjZSIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzdXBwb3J0c0V4dGVu
c2lvbihuYW1lKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsK
IH0KIAogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CiAg
ICAgICAgIGlmICghQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykgewogICAgICAgICAg
ICAgQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgICAgICBBTkdM
RVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNp
b25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2Vz
Lk1heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJj
ZXMoQU5HTEVSZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgewpAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAg
ICAgICBBTkdMRVdlYktpdEJyaWRnZSYgY29tcGlsZXIgPSBtX2NvbnRleHQtPm1fY29tcGlsZXI7
CiAgICAgICAgIHJldHVybiBjb21waWxlci5nZXRSZXNvdXJjZXMoKS5PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXM7CiAgICAgfQotICAgIHJldHVybiBzdXBwb3J0cyhuYW1lKTsKKyAgICByZXR1cm4g
c3VwcG9ydHNFeHRlbnNpb24obmFtZSk7CiB9CiAKIGludCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCmluZGV4IDI5YTBjNGQ4ZjVhOTI2YzcwOTUzNTQxYzBiMjYxM2ZkYTc1MmI0MjYu
LmUxM2Q2YTdkYzc0NjY0OGUzMThjOTRmOWM5ZjY3ZmJjYzZjNGEwYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTI2LDcgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtMzUsMzUgKzM0LDMzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKLWNs
YXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25zR0wgeworY2xh
c3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVuR0xDb21tb24oKTsKIAot
ICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgotICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7Ci0KKyAgICAvLyBNZXRo
b2RzIGZvcndhcmRlZCBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRW5h
YmxlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0
cmluZyYpOworICAgIHZpcnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKSA9IDA7CisgICAgCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9v
YmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlID0gMDsKLQotICAgIFN0cmluZyBnZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Ci0KICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xp
bnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEVY
VCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLSAgICB2b2lk
IHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCB2b2lkICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0s
IGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIGZsb2F0ICpwYXJhbXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFy
YW1zKTsKIAogICAgIGJvb2wgaXNOVklESUEoKSBjb25zdCB7IHJldHVybiBtX2lzTlZJRElBOyB9
CiAgICAgYm9vbCBpc0FNRCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7IH0KQEAgLTc4LDcgKzc1
LDcgQEAgcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsK
ICAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24oR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBi
b29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
RXh0ZW5zaW9ucygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQXZhaWxhYmxl
RXh0ZW5zaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggMTU0NjIz
NmY4YjZiZGI1MjIzZDBlZGUzN2FiNzRmMGVkNmYxMGJjZi4uNThjYTFiYzlhNWUxNzE0ZWI2MmM0
ZDhmNDkxM2M0MmNhZjI1ODlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC03NSw3ICs3NSw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZChjb25z
dCBTdHJpbmcmIG5hbWUpCiAKICAgICAvLyBGb3IgR0xfRVhUX3JvYnVzdG5lc3MsIGNoZWNrIHRo
YXQgdGhlIGNvbnRleHQgc3VwcG9ydHMgcm9idXN0IGFjY2Vzcy4KICAgICBpZiAobmFtZSA9PSAi
R0xfRVhUX3JvYnVzdG5lc3MiKQotICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9UUlVFOworICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpDT05URVhU
X1JPQlVTVF9BQ0NFU1MpID09IEdMX1RSVUU7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggOWE1ODFhMDAwZGQzNzJmZjFlY2RkOTFmZjk5ZGVj
OThhZDhlMzg1OC4uNjY5ODM4MDFmZGQ4ZGIyMTYxMmM3M2IzNmZlYzczYzZiYjJlZGJmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTcxLDYgKzcxLDEyIEBAIGNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOwogCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUyA6IHB1Ymxp
YyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24gewogcHVibGljOgorICAgIC8vIEdMX0lNR19tdWx0
aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IFJFTkRFUkJVRkZFUl9TQU1QTEVTX0lNRyA9IDB4OTEzMzsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HID0gMHg5MTM0
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVNfSU1HID0gMHg5MTM1
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9TQU1QTEVTX0lNRyA9IDB4
OTEzNjsKKwogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQg
YnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVtZW50YXRpb25zLgogICAgIEV4dGVuc2lv
bnNHTE9wZW5HTEVTKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0
U3RyaW5nKTsKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVuR0xFUygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggZjMwYjVlMWU2ZWE5ZDAxNTc3NGY4MDYw
YjkxNTNmNDdlMzA2MmVhYi4uYmJmMGU4MWViOTg1NTI1ZjMyNDc3MTI4ZTQ0MzczMzA0OWE5YzU1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMTIsMTggKzMx
MiwyMCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3QKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCisjaWYgUExB
VEZPUk0oR1RLKSAmJiBVU0UoT1BFTkdMX0VTKQorRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKLSAgICBpZiAoIW1fZXh0ZW5z
aW9ucykgewotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgICAgIC8vIGdsR2V0U3RyaW5naSBpcyBu
b3QgYXZhaWxhYmxlIG9uIEdMRVMyLgorICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3QgYXZhaWxh
YmxlIG9uIEdMRVMyLgorICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lv
bnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTEVTPih0aGlzLCAgZmFsc2UpOwotI2Vs
c2UKLSAgICAgICAgLy8gRnJvbSBPcGVuR0wgMy4yIG9uIHdlIHVzZSB0aGUgQ29yZSBwcm9maWxl
LCBhbmQgdGhlcmUgd2UgbXVzdCB1c2UgZ2xHZXRTdHJpbmdpLgorICAgIHJldHVybiAqbV9leHRl
bnNpb25zOworfQorI2VsaWYgUExBVEZPUk0oR1RLKQorRXh0ZW5zaW9uc0dMT3BlbkdMJiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgLy8gRnJvbSBPcGVu
R0wgMy4yIG9uIHdlIHVzZSB0aGUgQ29yZSBwcm9maWxlLCBhbmQgdGhlcmUgd2UgbXVzdCB1c2Ug
Z2xHZXRTdHJpbmdpLgorICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lv
bnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTD4odGhpcywgR0xDb250ZXh0OjpjdXJy
ZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwotI2VuZGlmCi0gICAgfQogICAgIHJldHVybiAqbV9l
eHRlbnNpb25zOwogfQogI2VuZGlmCkBAIC0zNTEsMTAgKzM1Myw5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERl
cHRoU3RlbmNpCiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAg
ICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7
CiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9y
dHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgZXh0ZW5zaW9u
cy5lbnN1cmVFbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIGlm
IChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAg
ICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bik7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRydWUuCiAgICAg
ICAgICAgICBhdHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtMzYyLDExICsz
NjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5j
aWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kKICAgICAgICAgc2V0Q29udGV4dEF0dHJp
YnV0ZXMoYXR0cnMpOwogICAgIH0KICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmICFtX2lzRm9y
V2ViR0wyKSB7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUiKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKSB7CiAgICAgICAgICAgICBhdHRy
cy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0
dHJzKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJs
ZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgICAgICBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwog
ICAgIH0KIH0KIApAQCAtMzA2OSw2ICszMDcwLDM2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0sIEdDR0xTcGFu
CiAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFU
SU9OKTsKIH0KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBnZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMobmFtZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKG5hbWUpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojppc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBn
ZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKG5hbWUpOworfQorCitHTGludCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCit7CisgICAgcmV0dXJuIGdl
dEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPiBidWZmZXJzKQoreworICAgIHJldHVybiBnZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNF
WFQoYnVmZmVycyk7Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAg
IHJldHVybiBnZXRFeHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNo
YWRlcik7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkRSZXNv
dXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IHVucGFja0FsaWdubWVu
dCkKIHsKICAgICBBU1NFUlQodW5wYWNrQWxpZ25tZW50ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50
ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQgfHwgdW5wYWNrQWxpZ25tZW50ID09IDgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA5MWZlZmVmNTEyZjY1MjhiYzNh
Nzc4MzFlYmU5YjY0NTFkOTc0NTZjLi41OTc5NjhlMGZmZTkyNzgzMDgwNjEzMjkzYmZmODBhYzgw
ODIwYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDMsMTAgKzQz
LDkgQEAgY2xhc3MgR0NHTExheWVyOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEV4dGVuc2lvbnNHTDsKICNpZiBVU0UoT1BFTkdMX0VTKQogY2xhc3MgRXh0ZW5zaW9uc0dM
T3BlbkdMRVM7Ci0jZWxpZiBVU0UoT1BFTkdMKQorI2Vsc2UKIGNsYXNzIEV4dGVuc2lvbnNHTE9w
ZW5HTDsKICNlbmRpZgogY2xhc3MgSG9zdFdpbmRvdzsKQEAgLTM3MCw2ICszNjksMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291
bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKIAorICAgIGJvb2wgc3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIEdMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKwogICAgIC8vIEhlbHBlciBtZXRob2RzLgogICAg
IHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwogICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKTsKQEAg
LTQwNSwxMSArNDExLDEzIEBAIHB1YmxpYzoKIAogICAgIC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lv
bnMuIFJldHVybnMgYSBub24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QKICAgICAvLyBhbGwgbWV0
aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQotICAg
IC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkg
dG8KKyAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMT3BlbkdM
e0VTfTo6c3VwcG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgotICAgIC8vIFVzZSBj
b3ZhcmlhbnQgcmV0dXJuIHR5cGUgZm9yIE9QRU5HTC9PUEVOR0xfRVMKLSAgICBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb24mIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKLQorI2lmIFVTRShPUEVOR0xf
RVMpCisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGdldEV4dGVuc2lvbnMoKTsKKyNlbHNlCisg
ICAgRXh0ZW5zaW9uc0dMT3BlbkdMJiBnZXRFeHRlbnNpb25zKCk7CisjZW5kaWYKICAgICB2b2lk
IHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZykgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgb3ZlcnJpZGU7CkBAIC00MjAsNyAr
NDI4LDcgQEAgcHJvdGVjdGVkOgogICAgIEdDR0x1aW50IG1fdGV4dHVyZSB7IDAgfTsKIAogICAg
IC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IGV2ZW50
dWFsbHkgY2FsbCBPcGVuR0wuCi0gICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMg
ZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wu
CisgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIG9mIEV4
dGVuc2lvbnNHTE9wZW5HTC9FeHRlbnNpb25HTE9wZW5HTEVTIHRoYXQgZXZlbnR1YWxseSBjYWxs
IE9wZW5HTC4KICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVS
TjsKIAogICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRl
eHQgY3JlYXRpb24gYXR0cmlidXRlcywKQEAgLTUxMiwxMyArNTIwLDEyIEBAIHByb3RlY3RlZDoK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkZXJOYW1lSGFzaD4gbmFtZUhhc2hNYXBGb3JTaGFk
ZXJzOwogCisgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICNpZiBV
U0UoT1BFTkdMX0VTKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKLSAg
ICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zR0xPcGVuR0xFUz4gbV9leHRlbnNpb25zOwotI2VsaWYgVVNFKE9QRU5H
TCkKKyNlbHNlCiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTDsKLSAgICBmcmll
bmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
eHRlbnNpb25zR0xPcGVuR0w+IG1fZXh0ZW5zaW9uczsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDY4YjZjZDNmNTI0YmY2YTA5ZWFm
N2ZkNjg0OGZiYWMxZGE3MzNhYjMuLmMzNWIyZjBmMTVkOWNkMDliOWIyOGJlMGJmNDQ3Nzg4NzQz
MDU3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBA
IC0zNDUsMTAgKzM0NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudQogICAgICAgICB0eXBl
ID0gR0xfSEFMRl9GTE9BVF9BUkI7CiAgICAgfQogCi0gICAgQVNTRVJUKGZvcm1hdCAhPSBFeHRl
bnNpb25zR0w6OlNSR0I4X0FMUEhBOF9FWFQpOwotICAgIGlmIChmb3JtYXQgPT0gRXh0ZW5zaW9u
c0dMOjpTUkdCX0FMUEhBX0VYVCkKKyAgICBBU1NFUlQoZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCOF9BTFBIQThfRVhUKTsKKyAgICBpZiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCX0FMUEhBX0VYVCkKICAgICAgICAgb3BlbkdMRm9ybWF0ID0gR0xfUkdCQTsKLSAg
ICBlbHNlIGlmIChmb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCkKKyAgICBlbHNlIGlm
IChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKQogICAgICAgICBvcGVuR0xG
b3JtYXQgPSBHTF9SR0I7CiAjZW5kaWYKIApAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0KIAogI2lm
ICFQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTCYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25z
KQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTD4o
dGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcAppbmRleCAzODY0MTk4Zjc0YTU5MmJhNDI5YzZkMGE4YmM2MWRlODFhMzhmNjA5
Li44M2I5Yjg2YzUzMjcyZmM1NDE1N2M5MGY0NjY1YWY4MTE5OGRhNGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IAogICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVp
cmVkIGFuZCBkZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2ls
QnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBnZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAg
IGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5j
aWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAgIGJv
b2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTEzMSwxMCArMTMxLDEwIEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwogI2VuZGlmCiAKLSAgICBFeHRl
bnNpb25zR0xPcGVuR0xFUyYgZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnNHTE9w
ZW5HTEVTJj4oZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBFeHRlbnNpb25zR0xPcGVuR0xFUyYgZXh0
ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoZXh0ZW5zaW9ucy5pc0ltYWdpbmF0
aW9uKCkgJiYgYXR0cmlidXRlcy5hbnRpYWxpYXMpIHsKICAgICAgICAgR0xpbnQgbWF4U2FtcGxl
Q291bnQ7Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9TQU1QTEVT
X0lNRywgJm1heFNhbXBsZUNvdW50KTsgCisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihFeHRlbnNp
b25zR0xPcGVuR0xFUzo6TUFYX1NBTVBMRVNfSU1HLCAmbWF4U2FtcGxlQ291bnQpOyAKICAgICAg
ICAgR0xpbnQgc2FtcGxlQ291bnQgPSBzdGQ6Om1pbig4LCBtYXhTYW1wbGVDb3VudCk7CiAKICAg
ICAgICAgZXh0ZW5zaW9ucy5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJl
LCAwLCBzYW1wbGVDb3VudCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYg
IWdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9f
dGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4
dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpKSB7CiAgICAg
ICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNp
ZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xFUyYgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNp
b25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5H
TEVTPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRl
eCBlNTRhZTNmNzk5Zjg1MmUxZWU3YTcwNjA3YzkwN2JmYzJjNDVhYzEyLi45MWU4ZWE4MDE0Yjdh
OTU4OTAwYjRmNzFjNjA0MzcxOTY2YzE1ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAt
MjQsNyArMjQsNiBAQAogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogCi0jaW5jbHVkZSAi
RXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
Ikxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDc1MGE4NGFmNjM4
MmM1NDEzMGNmMzZlODZkOWJjOGM3NjA0Y2ZiY2IuLmM1ZDdiMmVmMzg3OGY1NzhhNzJmOWI0NTRh
Y2VhMzJmY2RhMDJhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIuY3BwCkBAIC00NywxNSArNDcsOCBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgi
CiAjZW5kaWYKIAotI2lmIFVTRShBTkdMRSkKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5o
IgotI2Vsc2UKKyNpZiAhVVNFKEFOR0xFKQogI2luY2x1ZGUgPEFOR0xFL1NoYWRlckxhbmcuaD4K
LSNpZiBVU0UoT1BFTkdMX0VTKQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTEVTLmgiCi0j
ZWxzZQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgotI2VuZGlmCiAjZW5kaWYKIAog
I2lmIFVTRShOSUNPU0lBKQpAQCAtMTA4LDcgKzEwMSwxMCBAQCBwcml2YXRlOgogCiBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cihXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5l
dyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOwor
ICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gY29udGV4dDsKIH0KIAogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
Ojp+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0OwpAQCAtMTQ4LDcg
KzE0NCw4IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4CiAKICAgICAvLyBDcmVhdGUgdGhlIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMIG9iamVjdCBmaXJzdCBpbiBvcmRlciB0byBlc3RhYmxpc3Qg
YSBjdXJyZW50IGNvbnRleHQgb24gdGhpcyB0aHJlYWQuCiAgICAgYXV0byBjb250ZXh0ID0gR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKLQorICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAjaWYgVVNFKExJQkVQT1hZKSAmJiBVU0UoT1BFTkdMX0VTKSAmJiBFTkFC
TEUoV0VCR0wyKQogICAgIC8vIEJhaWwgaWYgR0xFUzMgd2FzIHJlcXVlc3RlZCBidXQgY2Fubm90
IGJlIHByb3ZpZGVkLgogICAgIGlmIChhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGlj
c0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyICYmICFlcG94eV9pc19kZXNrdG9wX2dsKCkg
JiYgZXBveHlfZ2xfdmVyc2lvbigpIDwgMzApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmgKaW5kZXggMmRiMmU4ZDdkOWNkN2I5Y2FiYjRjOWNhNDE3MjQzZjBl
N2EwYjUyMi4uOTFmYTU1YmNmODRkNzE5NzBiYzUwZjg0Mzc3ZTU1YTQwZDdmMGEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaApAQCAtNDUsNyArNDUs
NyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIg
OiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xUZQogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYpOwogICAgIH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIoKTsKLQorICAgIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ug
b3ZlcnJpZGVzLgogICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklE
RU8pCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIFVTRShBTkdMRSkKICAg
ICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIGJvb2wgcmVzaGFw
ZURpc3BsYXlCdWZmZXJCYWNraW5nKCkgZmluYWw7CisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxh
eSgpIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCmluZGV4IDY2ZTMyYWEwMzMzZjdi
OGE2YjVmNDg3NDJhNjg1NzlkZWVmNzFjZTUuLmJmY2Y3MjFmZjVjMWU0ZmI3NWU2YmQ4OGVkMGY3
NTNmOWQ4M2VhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiQU5HTEVI
ZWFkZXJzLmgiCiAjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJFeHRlbnNp
b25zR0xBTkdMRS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5o
IgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAKQEAgLTY3LDYgKzY2LDggQEAgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmkKICNlbmRpZgogICAgIGJvb2wgc3VjY2VzcyA9IG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CisgICAgc3VjY2Vz
cyA9IGluaXRpYWxpemUoKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwog
CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAgYXR0cmlidXRlcyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KQEAg
LTI2MCwxMSArMjYxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnByZXBhcmVGb3JEaXNwbGF5KCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKK2Jvb2wgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewogICAg
IGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogICAgIGNvbnN0IGF1dG8gc2l6ZSA9
IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4
IGQyNjFhNDAyNGNmN2VmNzE4N2ExMGY0NzdlYjUzM2VmMjQ2Yzg4Y2EuLmEzN2Y0YTU4YzZlODBk
MzY2NDYyM2ZjNzZkMTAwYTkzNjkzMTU2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0y
Niw3ICsyNiw2IEBACiAKICNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKICNpbmNsdWRlICJC
aXRtYXBUZXh0dXJlUG9vbC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUg
IkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJG
bG9hdFJvdW5kZWRSZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBlY2I0YjU3
NjdjYzlhOGUyNjg2NDZkY2UzOWQyNjYyYzM0MmMzM2I2Li44OTcyYzIzOTYzOWRjM2M1MDVkZDhi
YWZmNGEzMDc0YzZmOTkyNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTEyMCw3
ICsxMjAsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFs
aXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cgogICAgIGlmIChtX2NvbnRleHQpIHsK
ICAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICBTdHJpbmcgZXh0
ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJ
T05TKTsKLSAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+
Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7Cisg
ICAgICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmlu
ZyhHcmFwaGljc0NvbnRleHRHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CiAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0
ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBT
ZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CkBAIC0xODgs
MTAgKzE4OCwxMCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpnZXRFcnJvcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJiBleHRlbnNpb24pCiB7
CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKLSAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CisgICAgbV9jb250ZXh0LT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbik7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQoKQogewogICAgIGFzc2VydElzQ3VycmVu
dChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9jb250ZXh0LT5tYXJrQ29udGV4dENoYW5nZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWIyMGQxNmMzNzdmNWYzZTAwN2YyMWJhMjU2MjRk
ZDE5ZTM2YmIxNy4uZDhiOTgyMDcxMGI3MmQ5YjQ0MDhiOWJjOTA1NzViYWUyYTYwZDhhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTY29wZWRX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCIKICNpbmNsdWRlICJTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgpAQCAtOTQsOSArOTMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRj
aENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcyB0
byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpOwogICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcmJik7Ci0gICAg
dm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hh
bmdlZCgpOworICAgIHZvaWQgcmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmKSA9IDA7CiAj
ZWxpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KaW5kZXggYzhhYjI5NzcyOTMwYmZkNDA4YTAzY2ViMzdhMGMyOTg5OGUzMDJi
Mi4uOTc2ODBhODdhYjNhYTRhMDczZjIxOTMzYzVmZWNiNWIyMjRkZmViMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMzYsNyArMzYsNyBAQCBtZXNzYWdl
cyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAg
dm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICB2
b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKLSAgICB2b2lkIE5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisgICAgdm9pZCBNYXJrQ29udGV4dENoYW5nZWQoKQog
ICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCiAgICAgdm9pZCBHZXRF
cnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIFBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5kZXggZDFjMzI5MDUxN2Qy
OTZjNTFlMzU2ZThiNGU1NzBjMDY3YmI3NzU4ZC4uOTNiZDY3NzE2OGJiNDRjOTgxMzRkYzc4OThj
OTAzZTBmYmQwM2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVu
Y3Rpb25zR2VuZXJhdGVkLmgKQEAgLTEzMzcsMjAgKzEzMzcsMjAgQEAKICAgICB7CiAgICAgICAg
IEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CiAgICAgICAgIGFzc2VydElzQ3VycmVudChtX3N0
cmVhbVRocmVhZCk7Ci0gICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CiAgICAgfQogICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OwogICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwot
ICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwogICAgIH0KICAgICB2b2lkIGRy
YXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+JiYgYnVmcykKICAgICB7
CiAgICAgICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7Ci0gICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOwor
ICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dMU3BhbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZzLnNpemUoKSkpOwogICAg
IH0KICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJf
dCBpbnRlcm5hbGZvcm1hdCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAKaW5kZXggN2FlMWVlNzZkYzRiMDdjNDAzZjYwYjhhZDEzZGFkOWI4N2JkZWQwYS4u
MzhjOTRiM2E4Yjc3ZjAyMTlmMTZjZDMyMDk5ZWNjZGZjNzkzMGYxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFN0cmVhbVNp
emUgPSAxIDw8IDIxOwogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVj
dGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cmlidXRlcykKKyAgICA6IEdyYXBoaWNzQ29udGV4
dEdMKGF0dHJpYnV0ZXMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZncHVQcm9jZXNz
Q29ubmVjdGlvbikKICAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihncHVQcm9jZXNzQ29ubmVjdGlv
bi5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXplKQogewpAQCAtNTksMzEgKzU5LDczIEBA
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5KCkKICAgICBkaXNjb25uZWN0R3B1UHJvY2Vzc0lmTmVlZGVkKCk7CiB9CiAKLXZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNldENvbnRleHRWaXNpYmlsaXR5
KGJvb2wpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IG1fY3VycmVudFdpZHRoID0gd2lkdGg7Ci0gICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0Owot
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpKTsKLSAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAg
ICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3QoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbikpOwot
ICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisjaWYgRU5B
QkxFKFdFQkdMMikKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMoKS53ZWJHTFZlcnNpb24g
PT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMjsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTogVGhlIGNhbGxlciBzaG91
bGQgdHJhY2sgdGhpcyBzdGF0ZS4KKyAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpIHsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0R0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpOworICAgICAgICBpZiAo
aXNDb250ZXh0TG9zdCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TWFya0NvbnRl
eHRDaGFuZ2VkKCkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJr
Q29udGV4dExvc3QoKTsKKyAgICB9CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1l
KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNp
b25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXpl
ZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAh
bV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBtX2VuYWJsZWRF
eHRlbnNpb25zLmFkZChuYW1lKTsKKyAgICAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQobmFtZSkpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsK
KyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFeHRlbnNp
b25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXpl
ZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwg
bV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCit7CisgICAgZm9y
IChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAg
ICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBmb3IgKGF1dG8m
IGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsK
ICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpKTsKKyAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOworICAgIG1f
Y3VycmVudEhlaWdodCA9IGhlaWdodDsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSk7CiAg
ICAgaWYgKCFzZW5kUmVzdWx0KQogICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggMjlmMDE5ODcxOTU1OTk4Nzky
ZWU3Nzk1ZDlhYTYwYzJmMzk3Mzk3MS4uNTczZjdjYjRjMGM5NWY1NDVlZjZlMDY1NDQ4NDZmMTc0
OGMzM2EyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTM2
LDggKzM2LDggQEAKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgOiBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwcml2YXRlIEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpDbGllbnQKLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZSB7CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgp
OwpAQCAtNTgsMTEgKzU4LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCBv
dmVycmlkZXMuCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7
Ci0gICAgdXNpbmcgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omlz
RW5hYmxlZDsKLSAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmlu
YWw7CisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKKyAgICBib29s
IGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hh
bmdlZCgpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikg
ZmluYWw7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NH
TGVudW0gZXJyb3IpIGZpbmFsOwpAQCAtMzIxLDkgKzMyNCw2IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwogCi0gICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2Ugb3ZlcnJpZGVzLgotICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKSBmaW5hbDsK
LQogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpIGNvbnN0IHsgcmV0dXJuICFtX2dwdVByb2Nlc3ND
b25uZWN0aW9uOyB9CiAgICAgdm9pZCBtYXJrQ29udGV4dExvc3QoKTsKIApAQCAtMzUwLDExICsz
NTAsMTggQEAgcHJpdmF0ZToKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IG92
ZXJyaWRlcy4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mKSBmaW5hbDsKIAorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcm
IGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25z
KTsKKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CiAgICAgdm9pZCBkaXNjb25uZWN0
R3B1UHJvY2Vzc0lmTmVlZGVkKCk7CiAgICAgdm9pZCBhYmFuZG9uR3B1UHJvY2VzcygpOwogCiAg
ICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgYm9v
bCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OworICAgIC8vIEd1YXJkZWQgYnkgd2FpdFVudGls
SW5pdGlhbGl6ZWQoKS4KKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNpb25z
OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKKworICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOwogICAgIEdDR0xlbnVtIG1fZXJyb3JX
aGVuQ29udGV4dElzTG9zdCA9IE5PX0VSUk9SOwogICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhiN2U0MjI4MzYzNWI3NzYyOTU4YWNmMWRiMThiMDBk
MTMzYTQ4NTkuLmExNTM0MTQ2M2YwNzllMzAzZjc2OWNlNWVkMWM2NGVjZDVmM2M0NjEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMi0wMi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgor
CisgICAgICAgIEV4dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUg
cmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM2NDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIG1hbnVhbGx5IGltcGxlbWVudGVkIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBTY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjItMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IHRvIHF1ZXJ5IGNhbWVyYSBhbmQg
bWljcm9waG9uZSBwZXJtaXNzaW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IDMw
ZjdmZDgyYjMzMWEwNmY0YzRlMGNiNGUzYjg5Zjc1ZmZlNmIxODEuLmM2NWQ4NzZhNGFmMjExY2Jm
NzNjYjcyOTg2NDMxMDgxYjYwZjg4ZjYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAg
LTQxLDcgKzQxLDYgQEAgaW1wb3J0IGNvbGxlY3Rpb25zCiBmcm9tIHR5cGluZyBpbXBvcnQgTGlz
dCwgRGljdCwgSXRlcmFibGUsIENhbGxhYmxlLCBUdXBsZSwgU2V0LCBPcHRpb25hbCwgR2VuZXJh
dG9yLCBJdGVyYXRvciwgQ291bnRlcgogCiByb290X2RpciA9IChwYXRobGliLlBhdGgoX19maWxl
X18pLnBhcmVudCAvICIuLiIgLyAiLi4iKS5yZXNvbHZlKCkKLWV4dGVuc2lvbnNfaW5wdXRfZm4g
PSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYkNvcmUiIC8gInBsYXRmb3JtIiAvICJncmFwaGlj
cyIgLyAiRXh0ZW5zaW9uc0dMLmgiCiAKIGZ1bmN0aW9uc19pbnB1dF9mbnMgPSBbCiAgICAgcm9v
dF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3MiIC8gIkdQVSIgLyAiZ3Jh
cGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKQEAgLTk4LDcgKzk3LDcg
QEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJl
YW0ge3sKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKICNl
bmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQot
ICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKKyAgICB2b2lkIE1hcmtDb250ZXh0
Q2hhbmdlZCgpCiAgICAgdm9pZCBTeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKICAg
ICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwog
ICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwpAQCAtNDIw
LDE0ICs0MTksMTIgQEAgY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKICAgICBuYW1lOiBzdHIKICAg
ICBhcmdzOiBjcHBfYXJnX2xpc3QKICAgICByZXR1cm5fdHlwZTogY3BwX3R5cGUKLSAgICBpc19l
eHRlbnNpb246IGJvb2wKICAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgogCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBfYXJn
X2xpc3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6
IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBfYXJnX2xpc3QpOgogICAgICAg
ICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYucmV0dXJuX3R5cGUgPSByZXR1cm5fdHlw
ZQogICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCi0gICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0g
aXNfZXh0ZW5zaW9uCiAgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4ID0gIiIKIAogICAgIGRl
ZiBfX3N0cl9fKHNlbGYpOgpAQCAtNzExLDcgKzcwOCw2IEBAIGNsYXNzIGNvbnRleHRfcHJveHlf
Y3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CiBjbGFzcyB3ZWJraXRfaXBjX2NwcF9p
bXBsKG9iamVjdCk6CiAgICAgbmFtZTogc3RyCiAgICAgYXJnczogY3BwX2FyZ19saXN0Ci0gICAg
aXNfZXh0ZW5zaW9uOiBib29sCiAgICAgcHJlX2NhbGxfc3RtdHM6IExpc3Rbc3RyXQogICAgIGNh
bGxfc3RtdHM6IExpc3Rbc3RyXQogICAgIHBvc3RfY2FsbF9zdG10czogTGlzdFtzdHJdCkBAIC03
MjMsNyArNzE5LDYgQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgogICAgICAg
ICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCiAgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4
ID0gY3BwX2Z1bmMub3ZlcmxvYWRfc3VmZml4CiAgICAgICAgIHNlbGYuYXJncyA9IGNwcF9hcmdf
bGlzdChbXSkKLSAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBjcHBfZnVuYy5pc19leHRlbnNp
b24KICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCiAgICAgICAgIHNlbGYuY2FsbF9z
dG10cyA9IFtdCiAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gW10KQEAgLTczOCwxMiAr
NzMzLDExIEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKIAogICAgIGRlZiBw
cm9jZXNzX2NhbGwoc2VsZik6CiAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbICJhc3NlcnRJ
c0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOyIgXQotICAgICAgICBleHQgPSAiZ2V0RXh0ZW5zaW9u
cygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgogCiAgICAgICAgIGluX2V4cHJzID0g
IiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQogICAgICAgICBpc19hc3lu
YyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAogCi0gICAgICAgIGNhbGxfZXhwciA9IGYibV9j
b250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAgICAgICBjYWxsX2V4cHIg
PSBmIm1fY29udGV4dC0+e3NlbGYubmFtZX0oe2luX2V4cHJzfSkiCiAgICAgICAgIGlmIG5vdCBz
ZWxmLnJldHVybl92YWx1ZV9leHByOgogICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFtm
IntjYWxsX2V4cHJ9OyJdCiAgICAgICAgIGVsc2U6CkBAIC04NzksOCArODczLDggQEAgZGVmIGNy
ZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjczogSXRlcmFibGVbc3RyXSk6CiAgICAgcmV0dXJu
IGNwcF9hcmdfbGlzdChbY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM9ZSwgYXJnX2luZGV4PWkpIGZv
ciBpLCBlIGluIGVudW1lcmF0ZShhcmdzX3NwZWNzKV0pCiAKIAotZGVmIGNyZWF0ZV9jcHBfZnVu
YyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSwgaXNf
ZXh0ZW5zaW9uOiBib29sKToKLSAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5f
dHlwZT1nZXRfY3BwX3R5cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3Qo
YXJnc19zcGVjcyksIGlzX2V4dGVuc2lvbj1pc19leHRlbnNpb24pCitkZWYgY3JlYXRlX2NwcF9m
dW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdKToK
KyAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUo
cmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcykpCiAKIAog
ZGVmIHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVyYWJsZVtzdHJdLCBtYXRjaCA6IHN0cikg
LT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06CkBAIC04OTYsMjAgKzg5MCw2IEBAIGRlZiBt
YWluKCk6CiAKICAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdG8gcmVtb3Rl
IGZyb20gd2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCiAKLSAgICAjIEZJWE1FOiBVbnRpbCBl
eHRlbnNpb25zIGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNvbXBsaWNhdGUgdGhlIGlt
cGxlbWVudGF0aW9uCi0gICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBvZiB3aGV0aGVyIGEgZnVu
Y3Rpb24gaXMgb3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4KLSAgICBleHRlbnNpb25f
c2lnbmF0dXJlcyA6IFNldFtzdHJdID0gc2V0KCkKLSAgICB3aXRoIG9wZW4oZXh0ZW5zaW9uc19p
bnB1dF9mbikgYXMgZjoKLSAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKLSAgICAg
ICAgICAgIG0gPSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhcdyspXCgoLiopXCkgPSAw
OyIsIGxpbmUpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIGZ1bmMgPSBjcmVh
dGVfY3BwX2Z1bmMoCi0gICAgICAgICAgICAgICAgICAgIG5hbWU9bVsyXSwKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKLSAgICAgICAgICAgICAgICAgICAgYXJnc19zcGVj
cz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKLSAgICAgICAgICAgICAgICAgICAgaXNfZXh0
ZW5zaW9uPVRydWUsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGV4dGVuc2lv
bl9zaWduYXR1cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKICAgICBmdW5jcyA9IFtdCiAgICAgdW5p
bXBsZW1lbnRlZCA9IFtdCiAgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19pbnB1dF9mbnM6CkBAIC05
MjYsOSArOTA2LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9
ZnVuY19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVsz
XSksCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249RmFsc2UsCiAgICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgZnVuYy5pc19leHRlbnNpb24gPSBz
dHIoZnVuYykgaW4gZXh0ZW5zaW9uX3NpZ25hdHVyZXMKICAgICAgICAgICAgICAgICAgICAgaWYg
ZnVuYy5pc19pbXBsZW1lbnRlZCgpOgogICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3MuYXBw
ZW5kKGZ1bmMpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Cg==
</data>
<flag name="commit-queue"
          id="478482"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451677</attachid>
            <date>2022-02-11 05:01:34 -0800</date>
            <delta_ts>2022-02-11 06:21:03 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236490-20220211150128.patch</filename>
            <type>text/plain</type>
            <size>278343</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uNDA1NWY5MWUxZDUyMjliMThkN2Y4MjlhMjFkNDVj
NDEwNTIxOGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJv
dGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFnZSI+
IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTM1
Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZWJjMDFjOWZiNDA4YmQxNjZk
NTQ2OTBkZTU4NjgzZjlhNjUxZjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTEx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDU3YzRhYTliMWExOGNjZmE5YWIyODdlNGUwYjM3MGVlM2FkNTA5Yy4uMWQ2
ODAxNTBlYmY5YzExMTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MDgsNyArMTkwOCw2IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICkKICAg
ICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFm
NWJhZmFjMi4uNDI4OWIxM2FkZTgwM2YyZjJhOTQwOTVjMzg1OGNkZWMzNzM3NTFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xNDM1LDcgKzE0MzUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgKQEAgLTE1NTMsNyArMTU1Miw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMTU4MSw3ICsxNTc5LDYgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
SGVhZGVycy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMjM5YTIyYmQxMDMwMjFkMTI3NTI2YTBmNDhjNzAxZDliNjc0MGUzNS4uYWRkYzEw
MjFmODA5M2UxMDE1OTZmYTc0ZGJhYjY5MGZjYzk4Zjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzIsMTIgKzI3MiwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwog
ICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbGlmIFVTRShP
UEVOR0xfRVMpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5z
aW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGF1dG8mIGV4dGVuc2lv
bnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4
dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwg
PSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsK
ICNlbHNlCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBhdXRvJiBleHRlbnNp
b25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCY+KGdsKS5nZXRF
eHRlbnNpb25zKCk7CiAgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2ls
ID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9D
T01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5U
OwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBG
cmFtZWJ1ZmZlcigpCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBnbC5nZXRJbnRlZ2VydihHTDo6
TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbHNlCi0g
ICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dM
U3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NHTFNwYW4oJm1heFNhbXBsZUNvdW50LCAx
KSk7CiAjZW5kaWYKICAgICAgICAgLy8gQ2FwIHRoZSBtYXhpdW11bSBtdWx0aXNhbXBsZSBjb3Vu
dCBhdCA0LiBBbnkgbW9yZSB0aGFuIHRoaXMgaXMgbGlrZWx5IG92ZXJraWxsIGFuZCB3aWxsIGlt
cGFjdCBwZXJmb3JtYW5jZS4KICAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1h
eFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0
YWIzM2E4YmQ3NWU3YTU4YS4uOGM4MDVmMmYwNzdmZmVjYWI3YzUxNWE2YWM3NzQ1ZmIzZWMxY2Nm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIwNzMsNyArMjA3Myw2IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQx
ZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uN2JkNWEyNGI0YTYxYWJhMjEwYmZiNDVhYThjYjczMzIz
MjJmNWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTUsNiArNjE1LDUgQEAgdGVz
dGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCiAvLyB3aXRo
IGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdMLgogCiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2
MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uYjQ1YmQwZDlmYTJkMWM1NmQ1ZGYyMGIx
MjZiYTJjMzU3YWY2NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NywxMSArMjE4Nyw4IEBACiAJCTZFNDdFNjYxMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJD
RDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQy
OTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBF
eHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Ki87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUy
OTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07
Ci0JCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDQyMjlDOUY4
RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi87IH07CiAJCTZFNzJGNTUxMjI5RENE
MUEwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLzsgfTsKIAkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RThBQ0RFRDIzMzQ1
Q0JDMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4QUNERUIyMzM0NUNBRjAwMjRBQUY1
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCAqLzsgfTsKQEAgLTI0MTIsNyArMjQwOSw2
IEBACiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhB
QzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5NUNGRUQyNzU0
RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwODY5LDggKzEwODY1LDYgQEAKIAkJNkUyNDJCMjkyMzM1OTNENzAw
MkNBREQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjQyQjJBMjMzNTkzRDgwMDJDQURENCAvKiBKU1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xB
TkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25z
R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQ0MjI5QzlG
OEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFyeUFOR0xFU2V0
dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYzMjI5REI5NzAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA5MDIsNyArMTA4OTYsNiBAQAogCQk2RTUzODhFMDI0NThBRTFEMDA3NkFFMDMgLyogV2Vi
R0xDb2xvckJ1ZmZlckZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTM4OEUxMjQ1OEFF
MUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29sb3JC
dWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTc2QkMzMjRF
QjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVu
c2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTdDQTMwQTI1QjREMjhB
MDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMTXVs
dGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFN0NBMzBCMjVCNEQzMjgw
MDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xNdWx0aURyYXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTg0RTlERTE3
NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE1MjYsNyArMTE1MTksNiBAQAogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I5MDQxNkUyNTUwMTEw
OTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTVDRkVDMjc1
NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1NDIsNyArMTE1MzQsNiBAQAogCQk3
QkREQTMxRDI3NEY5REE1MDAzODY1OUUgLyogR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzQ5Mjc1QTAxMzAwMDM4NjU5RSAvKiBQ
cm9jZXNzSWRlbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c0lkZW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzRCMjc1QTAx
MzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RUYy
NzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRkY1OUYxMjc1NzcxRTgwMDc3M0QzOSAv
KiBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdz
LmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0Mzk1LDggKzI0Mzg2LDYgQEAKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIg
LyogQU5HTEVIZWFkZXJzLmggKi8sCiAJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFO
R0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5H
TEVVdGlsaXRpZXMuaCAqLywKLQkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwICovLAotCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRl
bnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKIAkJCQk3Qjk1Q0ZFQzI3NTRGRjdDMDAwMDYwQ0Ug
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5
ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLApAQCAtMjg4NzAsNyArMjg4NTks
NiBAQAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcyQyAvKiBEaXNwbGF5VXBkYXRlLmNwcCAq
LywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMgLyogRGlzcGxheVVwZGF0ZS5oICovLAog
CQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLywK
LQkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8sCiAJCQkJ
MkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5jcHAgKi8sCiAJCQkJMkU4ODhD
QTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5oICovLAogCQkJCUIyNzUzNTNBMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKQEAgLTI5MDY1LDggKzI5MDUzLDYgQEAK
IAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyogUGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAot
CQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgKi8sCi0JCQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEw
OEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBF
QTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMzQ0NDEsOCArMzQ0MjcsNiBAQAogCQkJ
CTJEMjkzODZCMjM1RjZCNjkwMEM3RjNCMiAvKiBFeGNlcHRpb25EZXRhaWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTcyRjU1MDIyOURDRDE3MDBC
M0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0UyNzY1
MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY3NjEsNyArMzY3NDUsNiBA
QAogCQkJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjkwNDE3MDI1NTAxMTQy
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXli
YWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0MjE3
N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
ODY0OCw3ICszODYzMSw2IEBACiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1By
b3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyMjgzMDMyM0E4NDcwNzAwMzY0
QjdFIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTU5MjI4MEU5MjYw
MDJCMjJBQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkU3
MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdhbWVDb250
cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRENjE2MDBG
QTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRleCA4MjIwMzM5MTVk
MDRlM2IwYzI5NjJmYmI1MjM0ZTkzNGY5M2E3MTE3Li44NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZm
YzE4N2Y2Y2Y1YmJlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
QU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0yOCwxMCArMjgsNiBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbmNsdWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0o
R1RLKSB8fCBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKFdQRSkKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArMzgsNyBAQCBBTkdMRUluc3RhbmNlZEFycmF5czo6
QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKICNlbmRpZgogfQogCkBAIC01MywxMCArNDksMTAgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBBTkdMRUluc3RhbmNlZEFycmF5c05hbWU7CiB9CiAKLWJvb2wgQU5HTEVJbnN0YW5jZWRBcnJh
eXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBB
TkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDMyZWI4
OTdiMTZkOTA5ZDM5NGExMGE3ODUxYzFlMzI2NzU0ZWM5MzYuLjY5YzQ0ZGQ0OTEzYWZlM2Q1ZjBl
YjNkZjMwYTgxN2MzNGJmZjA4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKaW5kZXggMDllNTBjNGNiYWQzZjU5
OGEzMjJkOTA1MWM5ODNmZmIwZTdiMjVlNy4uNzk2NTYwYmQ0Y2U2YTUwOTYxNjNiZTE5NDAwYmVl
ZTI0ODJmMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsMTAgKzM3LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRD
b2xvckJ1ZmZlckZsb2F0KTsKIEVYVENvbG9yQnVmZmVyRmxvYXQ6OkVYVENvbG9yQnVmZmVyRmxv
YXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
S2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zs
b2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVYVENvbG9y
QnVmZmVyRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSAr
NTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckZsb2F0
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9
CiAKLWJvb2wgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZm
ZXJGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5oCmluZGV4IGViMjlmYTBlNTQ5M2EyNDgxMWNjMTA2ODczNjNhMWQ4OWNiZGZkNzYuLjk1NDhm
MGY5M2YwZTQ2N2Q2YjkyYWFlZmRjNTk1M2Y0OGQ1MzgwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCmluZGV4IDc5ZTFjYzE5ZDFlYmY3
ZWMwNzQ3ZTM2NWIyMGJmNDFiY2MzMzIwNGYuLjBlZmVkODNhZDZhOTFmMDQ0MWIyM2U0NzE0MmFi
OTg3NzgzMzQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KTsKIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0
OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29s
b3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
Il9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdCgpID0gZGVmYXVsdDsKQEAgLTQ4LDEwICs0NywxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0
ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxm
RmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZs
b2F0LmgKaW5kZXggMTA3NzllZjZjMmM5YzQyNmYzZDY1MTE2MWU4ZjZkMGRkZjIzY2Y3NS4uNmY0
YmM0ODFhMzA0ZjY0ZDQ1ZDkyMmIxYjcyMzExZmM5OGQ5Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKaW5kZXggOGVmNjg3OTMzYWFlY2Y1YjhkMzNjZTAy
MDc4ODJjMmJkZDU3ODk2MS4uYmRkODVkMDcwZDA4NzEzOTYzZGMxN2IxNjRhMmZiYWVlNjA3MDIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhURmxvYXRCbGVu
ZC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhURmxvYXRCbGVuZCk7CiBFWFRGbG9hdEJsZW5kOjpF
WFRGbG9hdEJsZW5kKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBFWFRGbG9hdEJsZW5kOjp+RVhURmxvYXRC
bGVuZCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgRVhURmxvYXRCbGVuZDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVYVEZs
b2F0QmxlbmROYW1lOwogfQogCi1ib29sIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBFWFRGbG9hdEJsZW5kOjpz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZmxvYXRfYmxlbmQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCmluZGV4IDIyYzMwMmEz
MzBhNjIyMjM1Y2Y2ODUyOTNjZDhjMTY4NTZhNDU3YmUuLjQ0NmI5ZmYzNzFkYzI5MmI4ZmU2MTgy
OTMyZDU4ZjU2NjYwNjc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZsb2F0QmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9h
dEJsZW5kLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcAppbmRleCA0NjNhNTg3M2NmMzA5NjMxMmQ5N2Q2MzI3ZjYxYWU4MWU0NzFkZDdk
Li40NmM5NjBmMTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM4LDEyICszNywxMiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9S
R1RDMl9FWFQpOwogfQogCiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCmluZGV4IDUyNzEzOGYzMGY3
NWZhZDA3Mzk4NTk0YjMzM2E3ZGY5YzE0MmQyODAuLmU2NmJiODI0M2E3Mzc5MjFhMGQ1MzUzNzVm
ZWM2Y2RmM2IzOWFmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCIKIAotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk7CiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGU6OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3BhcmFsbGVsX3NoYWRl
cl9jb21waWxlIl9zKTsKIH0KIAogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjp+S0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGVOYW1lOwogfQogCi1ib29s
IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3Bh
cmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKIH0KICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKaW5kZXggMWZjZmMyYjU4ZWQ5ZmI0ZTZkMTE3
NDE4NjE0N2RmM2JkYzAyNTNhOS4uODM4MDRkNmRmOWYyNjMxZDlhNzNkOTUwOGVhNzEwZjlhY2I1
MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1h
cC5jcHAKaW5kZXggNzFhODFkMGQ5MzA5ZDY0NGVlNDg2OGJkYWEyM2VkODc4NGFmNTIxYi4uNjUy
MjBiN2FiYzA3MTMzNTY1NmJkN2ZiMzUzNjJmM2U0YTIyZjZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIk9FU0ZCT1JlbmRlck1pcG1hcC5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTRkJPUmVuZGVyTWlwbWFwKTsKIE9FU0ZCT1JlbmRlck1pcG1h
cDo6T0VTRkJPUmVuZGVyTWlwbWFwKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiBPRVNG
Qk9SZW5kZXJNaXBtYXA6On5PRVNGQk9SZW5kZXJNaXBtYXAoKSA9IGRlZmF1bHQ7CkBAIC00OCw5
ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU0ZCT1JlbmRlck1pcG1h
cDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU0ZCT1JlbmRlck1pcG1hcE5hbWU7CiB9
CiAKLWJvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBt
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCmlu
ZGV4IDMzOTZmOWUxZTExNGU1MWFmY2RmZGQ4M2YzZWQyZWI2ODMzZTZkZjIuLjAyYTcyOGNjZWUx
ZmViZTAwNmQyZDk2YTRkMDg3MGQ4YTRmMjA0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwCmluZGV4IGU5MmIyZmVmYmYwOTQ2OGJlY2RiZDFlZjhkOWRkMjEwZDViOGMy
MGYuLjVkMWU4OTY3N2U2MTJjMjk3ZTQ2MjkxMTg0MzY3MzhmMzU5YjlkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTVGV4dHVyZUZsb2F0KTsKIE9FU1RleHR1cmVGbG9hdDo6T0VT
VGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9z
KTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWly
ZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAK
IE9FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTUzLDkg
KzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUZsb2F0Ojpn
ZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsKIH0KIAotYm9v
bCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0Nv
bnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsK
KyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxv
YXQiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IDhhNzI3NGRkZWNhOGY3ZDNiMjM0NjU2
YWIzZGY1YzdkOGZmZWQwNmMuLjEwZTE5ZWI3MGE3YmFkOTNlYzY5OWIwOWE2YTU3ODkyOWY1N2M4
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKaW5kZXggNDBiOTg5
OTZmNjdhYzFlOGFiNjVjZDY2NmQ2M2QyN2QzOWYzMWNlZS4uNGVhODY2ZGVlMjRjYzVhMGNlMWEz
MDgxZWU5NzM5Y2IwZTBhMzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUg
Ik9FU1RleHR1cmVIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9FU1RleHR1cmVIYWxm
RmxvYXQpOwogT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiX3MpOwogICAgIC8vIFJlbmRlcmFiaWxpdHkgaXMgaW1wbGljaXQgd2hl
biB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQog
CiBPRVNUZXh0dXJlSGFsZkZsb2F0Ojp+T0VTVGV4dHVyZUhhbGZGbG9hdCgpID0gZGVmYXVsdDsK
QEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVy
ZUhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU1RleHR1cmVIYWxmRmxv
YXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlSGFsZkZs
b2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXQuaAppbmRleCBhMzU0ZmNiN2UzOWI1MzBiZjQ5MzM2MTI5Njg5MTM2ZWE5NjIx
NjYzLi5kNTE5NDZhYmE0MzkwNGYzMDZlMWE3ZDA3Y2YwMGI5YWViZGU1MTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCAzMGQ0YjNmZjBj
YmQyNGY1MzgwODYzMGJjYzQzMDY3ZDhjZThmMDZkLi40ZjI4NWM1ZjRjMmUwMzAxZGJmNTQ3NDAz
Y2ZmMTBjYzg2OTRmZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
V0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDVhMzg3OTU3YzI2MDY2MjJkYjQ2ZjRiZjYw
ODhiZTMzMTA2MWFiYmIuLjZkMGE4NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTI0MCwxMCArMjM5LDEwIEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkK
IHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRoZSBXZWJHTCAyLjAgY29yZSBBUEkgYW5k
IHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgIG1fY29udGV4dC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIG1fY29u
dGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVw
dGgiKTsKIH0KIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRh
cmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKQEAgLTI3MTUs
MjAgKzI3MTQsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5l
YXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250
ZXh0IiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
QVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMxLCAiV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJU
QywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
LCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbywgbV93ZWJnbERlYnVnUmVuZGVyZXJJ
bmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIsIHRydWUpOwotICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9k
ZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUQ29sb3JCdWZmZXJGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdCIsIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwot
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29s
b3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xv
ckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1
cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRl
cnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9z
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENv
bG9yQnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBt
X2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVs
dGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIHRydWUpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtMjc0Myw0MiArMjc0Miw0MSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAo
bV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlm
IChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQorICAg
IGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6
c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAg
IH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykp
CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3Rj
Il9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250
ZXh0Il9zKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6
OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRo
aXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQi
X3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxl
bF9zaGFkZXJfY29tcGlsZSJfcyk7Ci0gICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0aV9kcmF3Il9zKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xv
ckJ1ZmZlckZsb2F0LmNwcAppbmRleCBhODFhNDljMmNhNzY5MzgwNTg2MjM0YzFmMjA5ZTQ4ZWEy
YzZkYzBmLi42YzBhOWJlNTYxZDc5ZTcwZDlmMzVkNThhOTcwNmM2NTU2NTBkODgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwx
MiArMzcsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29sb3JCdWZmZXJG
bG9hdCk7CiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OldlYkdMQ29sb3JCdWZmZXJGbG9hdChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CiAgICAgLy8gT3B0aW1p
c3RpY2FsbHkgZW5hYmxlIFJHQiBmbG9hdGluZy1wb2ludCByZW5kZXIgdGFyZ2V0cyBhbHNvLCBp
ZiBwb3NzaWJsZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOwogICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAgLy8gU3BlYyBy
ZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0bHkgaGVyZS4K
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsK
IH0KIAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2ViR0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBk
ZWZhdWx0OwpAQCAtNTMsMTAgKzUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1l
IFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojpz
dXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykKLSAgICAgICAgJiYgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpCisgICAgICAgICYmIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAppbmRleCAwZDJkMDdjMjU1
OTllMDRjY2VjYTA2NmE0NTk2NTA1ZDEwMmUxODY0Li45NGNkZWQ2Y2Q2MzY3YzE4ZDYwMDJhNmVh
ZWIyMTQwMzEzMjM5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXggNmVhY2ExZjJhMDI1MTc2ZGE0NTNiNTAw
MTI4YTM2ZjExMzZiODE1ZC4uNGZmMDIyZTllZDUxMmE5MmVkYTMxMDFjZjFjMjZjMmVlNWFmODM5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzksNDEgKzM4LDQxIEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyk7CiAKIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKLSAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfaGRyIl9zKSkKLSAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIl9zKSkKKyAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19oZHIiX3MpKQorICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lv
bl9hc3RjX2xkciJfcykpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tI
Uik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUik7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
Uik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CiAgICAgCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2
X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUik7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MngxMl9LSFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpAQCAtOTUsMTAgKzk0LDEwIEBAIFZlY3RvcjxT
dHJpbmc+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpnZXRTdXBwb3J0ZWRQcm9maWxlcygp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2hkciJfcykKLSAgICAgICAgfHwgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19oZHIiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKaW5kZXggMzBlZmUzZDgxYzFiOWI5NDYz
Mzk3MzFkMzc4ZDJjYzE3YTMxNTlmMC4uZmEwZTViOTllM2UxZjQ2Y2I4NTU0MDI3MjYyZTA2NWJm
MThmMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBnZXRTdXBwb3J0ZWRQcm9maWxlcygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNv
bnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSERSU3VwcG9y
dGVkIDogMTsKICAgICBib29sIG1faXNMRFJTdXBwb3J0ZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApp
bmRleCBjOWU3YmUzMGM2MzEwNTAzMDNkZmJlNjZhMTMzZmZkNDI0NmVjMjI5Li5iYzNlYmUyZDVl
NzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMjks
NyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTEgKzM4LDExIEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0g
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2Vk
X0FUQ190ZXh0dXJlIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQ
SEFfQU1EKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMoKSA9IGRlZmF1bHQ7CkBAIC01Myw5ICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDTmFtZTsKIH0KIAotYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU1EX2NvbXByZXNz
ZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oCmluZGV4IGUwYmQyNjYxMDk0NDBmY2IzMDdjOTNiMzVjNTQzMGIxZGQ5
NGQxZmEuLjEwNTY4YTlkZDk0YzNiZTI3NzhjMzI0Nzg5YzRmOGY3NTQ0YWE0YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4IDRmZWFhNWRkODc5MTIzNTkzMWY5
ODU5Zjk2NzBjNDY4YTVhM2JmYTMuLjkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5
ZjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zOSwxOCArMzgsMTggQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUjExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMy
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOwogfQogCiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpID0gZGVm
YXVsdDsKQEAgLTYwLDkgKzU5LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9v
bCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7
CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
CmluZGV4IDc0Njc3OGNjMmRlMDIzOWI5ZWUyYzc1M2RiMGY2OTJlMDRkODk3ZDQuLmMzODgyOTEx
YWI1OTZkOWYyMTA2YTgxODFlOWVmMjBjMjhkMDgxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZDlhN2NmYWI2OWU3NmVhZTMxN2VjMGJjZjU2NTQ5OTZj
ZjI0MTVlYS4uYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYxOTBiMTcwOTJmNjA4MDliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTKTsKKyAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhf
T0VTKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6On5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMSgpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMU5hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2NvbXBy
ZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKaW5kZXggMDZmZTI3YWFiMTc4M2RiYzFi
M2IwMWUxZWY0OTgwOWJkM2NkYjIzYy4uMDQ0OWY1NzA0NDY0YzI1NmJiMzgzZDc3NGFmYmM5ZTM2
ZjE3OTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoKTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApp
bmRleCAxYTIwYzA3ZDI3MzNjMTgwZTQ1YWRmYTQzZGFmOGU4NTM2YjQ0NWJhLi41YTg0OTllOWU0
Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQw
LDEyICszOSwxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQ
UFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKIH0KIAogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgPSBkZWZh
dWx0OwpAQCAtNTUsOSArNTQsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25f
cHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuaAppbmRleCBhODY2OWYwZWI4ZDAyZjA4OTgwMGNmMmMyNjViODFjN2E1ZjNj
YTVkLi4zMzcyYzI5YWIyNGU1Yzg5MGZhMzM3ZWIwZjk0OWVlZjllZjVjMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggMDdiYTRmYTViZTEy
NTdjM2M4MTIwMzc5OGMxZjk1ZmE3NzQ2YTlhZi4uZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBh
OTE4NmEzYTUwMjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00MCwxNSArMzksMTUgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKTsKIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKTsKLSAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgIGF1
dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAg
IGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQogCiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkg
PSBkZWZhdWx0OwpAQCAtNTgsMTYgKzU3LDE1IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CiAjaWYgVVNFKEFOR0xFKQotICAg
IHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAm
JiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDMiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKICNlbHNlCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgK
aW5kZXggYTM0NzNkOGVlZmJkMjIyZjFiMjZjYjEyOWQ0ZDQ0NzJjYzQxMTUwOS4uMWRiZjQ1YTRj
MGUyNDNiM2M2MDAwMTRmNTVmNmYwZDhmNTQ4MDM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRleCA1MGQwYmQ5MDdlOGZkZWU4ZmQ0MWQ2
NWQyMWI4ZDAwYTJmYWZmNTc3Li5mNjVmNDJhZTIyYWM3MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2
NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgi
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzks
MTMgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiIik7Ci0KLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0Y19zcmdiIik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6On5XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoKSA9IGRlZmF1bHQ7CkBAIC01NSwxMCArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0JOYW1lOwogfQog
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCmluZGV4IGM3OTNiOTE2ZGIwZTY2
Y2YzZTljNjc3MGY1NjYwN2YzMThmZjc0NmIuLjU5YTY2M2YxNGQxZmI0YmM2Yzg1ODY3NWY1NWY0
OGQ3YTdlZmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQigpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApp
bmRleCA2YjA0OTU0YTRhNTI5Y2U4ODJmMmE2NGJiM2Q4NjdmYTg0YzM4Y2YwLi5hNjlkYTI5MDM4
NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDcgKzQw
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVidWdTaGFkZXJzKTsKIFdl
YkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSIpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTcsNyArNTYsNyBAQCBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRl
cnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2Jq
ZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
Lm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9iamVjdCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IGE2OTE1MzIzYTg0OTQ0ZTU5YmMxNzJkM2Y1Yjk0MzM3
MjY4MTQzNzYuLjkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1NTgwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICszOCw5IEBAIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJHTERlcHRoVGV4dHVyZSk7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xE
ZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOworICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdM
RGVwdGhUZXh0dXJlKCkgPSBkZWZhdWx0OwpAQCAtNTIsOSArNTIsOCBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJv
b2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9k
ZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMGRjMTdlYTli
YzBjZGM3NGQxZTYxYzFmMDI1M2M4ZWNlYjM2ODk1My4uMDY3MGE0NzY0MmJmYmZlY2JkZWY1NjM3
OGEyYmViNWIxOGM5NWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3
QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQog
ewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
IH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBA
IC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRHJhd0J1
ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwog
I2VuZGlmCiB9CkBAIC03NSw3ICs3NCw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1
ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICB9CiAg
ICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJy
ZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hN
RU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyBidWZzWzBdID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCQUNLID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOworICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKHZhbHVlKTsKICAg
ICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0woY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAg
ICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAh
PSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKKyAgICAgICAgICAg
IGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FICYmIGJ1ZnNbaV0gIT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhU
IG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC05
OCw4ICs5Nyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlz
IHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50
ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKLSAgICBHQ0dMaW50IG1h
eENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNv
bnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
KTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAo
bWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywxMCArMTA2LDEwIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
d2ViCiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAw
LCAwLCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBm
b3Igb3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRo
U3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3Rl
bmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRo
U3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggNTBiYWNmNTY0ZmNhZjY2NmY4
NTdiZDQ5MTU2Mjc5NDJjZmM1MjA3My4uNDlmYjFkZGRmNThhOGVkZmMwMWI0OGRhNWRmZjQ5Nzcx
Zjc2ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKQEAgLTI3OSwyMSArMjc4LDIxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJp
dHNCeUF0dGFjaG1lbnRUeXBlKEdDR0xlbnVtIGF0dGFjaG1lbnQpCiB7CiAgICAgc3dpdGNoIChh
dHRhY2htZW50KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVO
VDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNI
TUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDhfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1F
TlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ1
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDdfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQxNV9FWFQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQlVGRkVSX0JJVDsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9BVFRBQ0hN
RU5UOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7
CkBAIC0zNjMsOCArMzYyLDggQEAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9ybWF0
KEdDR0xlbnVtIGZvcm1hdCkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMTZJOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEzMkk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQTMyVUk6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhB
X0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDE2OgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDI0OgpAQCAtNjMzLDcgKzYzMiw3
IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiBy
ZWFzb24pIGNvbnN0CiAgICAgICAgIEdDR0xlbnVtIGF0dGFjaG1lbnRGb3JtYXQgPSBhdHRhY2ht
ZW50LT5nZXRGb3JtYXQoKTsKIAogICAgICAgICAvLyBBdHRhY2hpbmcgYW4gU1JHQl9FWFQgZm9y
bWF0IGF0dGFjaG1lbnQgdG8gYSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkLgotICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUKQorICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQpCiAgICAgICAg
ICAgICBhdHRhY2htZW50Rm9ybWF0ID0gMDsKIAogICAgICAgICBpZiAoIWF0dGFjaG1lbnRGb3Jt
YXQpIHsKQEAgLTgzMywxOCArODMyLDE4IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1
ZmZlcnNJZk5lY2Vzc2FyeShib29sIGZvcmNlKQogICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+
aXNXZWJHTDIoKSkKICAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdM
KCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKG1f
ZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIEdDR0xlbnVtIFdl
YkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoR0NHTGVudW0gZHJhd0J1ZmZlcikKIHsKLSAg
ICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGRyYXdCdWZmZXIgLSBFeHRlbnNpb25zR0w6
OkRSQVdfQlVGRkVSMF9FWFQpOworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJh
d0J1ZmZlciAtIEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUKTsKICAgICBBU1NF
UlQoaW5kZXggPj0gMCk7CiAgICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihtX2RyYXdC
dWZmZXJzLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBtX2RyYXdCdWZmZXJzW2luZGV4XTsKLSAg
ICBpZiAoZHJhd0J1ZmZlciA9PSBFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQpCisgICAg
aWYgKGRyYXdCdWZmZXIgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVGRkVSMF9FWFQpCiAg
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDA7CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCmluZGV4IDY0YjE1ZDVmZjg2MTNjZmQ3ODRjN2Uz
MWQwMjJkNTNiZDYxM2NlZmUuLmYxY2M1NmM5ZGZiMTg4NGI4YjhkZWFhMmVlZmU1ODI3ZjkyZmVl
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xNdWx0
aURyYXcuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQyLDggQEAg
c3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlE
cmF3OjpJbnQzMkxpc3QmIGxpc3QsIEcKIFdlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKTsKLSAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX211bHRpX2RyYXciX3MpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiB9CiAKIFdlYkdMTXVsdGlEcmF3Ojp+V2ViR0xN
dWx0aURyYXcoKSA9IGRlZmF1bHQ7CkBAIC01NCwxMCArNTMsMTAgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBXZWJHTE11bHRpRHJhd05hbWU7CiB9CiAKLWJvb2wgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRl
ZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJl
dHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKLSAgICAgICAgJiYgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6
bXVsdGlEcmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3Qs
IEdDR0x1aW50IGZpcnN0c09mZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNv
dW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5oCmluZGV4IDY1OTI5ZjUxY2FiOGJmODkyN2I3YzkwYmU5NmMx
OGU0ODMxODFkNzYuLjUwZDZkYjgxYTJkOTc0Mzg4MDBiNGU3OWRhMzEyYTIwMjIyNTBkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
Jik7CiAKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c1dFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMy
TGlzdCBmaXJzdHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNM
aXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBmYTU3YmI1NDAyM2UzZmY5OTYzNGIzYTk5OTE4ZTA5M2NhYTJkNGJiLi5jOTYwYzI2
MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAi
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKQEAgLTE1MywxMCArMTUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0RlcHRoLCAiRVhUX2ZyYWdfZGVwdGgiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSkg
ewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVyZUxPRCkgewotICAgICAgICAgICAgaWYg
KCEobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9B
UkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCisgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkp
CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJfcyk7CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0g
YWRvcHRSZWYobmV3IEVYVFNoYWRlclRleHR1cmVMT0QoKnRoaXMpKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0xNjUsMzEgKzE2NCwzMSBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIH0KICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCAiRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJh
bGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVk
KCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21w
aWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwog
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTU3RhbmRhcmREZXJpdmF0aXZlcywgbV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZW5hYmxlU3VwcG9y
dGVkRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNf
dGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAi
T0VTX3RleHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKTsKLSAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBw
b3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxv
YXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNU
ZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChPRVNWZXJ0ZXhBcnJheU9iamVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoT0VTRWxlbWVudEluZGV4VWludCwgbV9vZXNFbGVtZW50SW5kZXhVaW50LCAiT0VTX2VsZW1l
bnRfaW5kZXhfdWludCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTRkJPUmVuZGVyTWlw
bWFwLCBtX29lc0ZCT1JlbmRlck1pcG1hcCwgIk9FU19mYm9fcmVuZGVyX21pcG1hcCIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQs
ICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3Ny
Z2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlcHRoVGV4dHVyZSwgbV93ZWJnbERl
cHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiLCBXZWJHTERlcHRoVGV4dHVyZTo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCR0xfZHJhd19idWZmZXJzIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZl
cnMpIHsKICAgICAgICAgICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IGFkb3B0UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJz
KCp0aGlzKSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQpAQCAtMTk4LDEwICsx
OTcsMTAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSkgewogICAgICAgICBpZiAoIW1f
YW5nbGVJbnN0YW5jZWRBcnJheXMpIHsKLSAgICAgICAgICAgIGlmICghQU5HTEVJbnN0YW5jZWRB
cnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgICAgICAgICBpZiAoIUFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBhZG9wdFJlZihuZXcgQU5HTEVJbnN0YW5j
ZWRBcnJheXMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0y
MDksMTEgKzIwOCwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gbV9hbmdsZUlu
c3RhbmNlZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1
Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIl9zKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwg
IkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTE11
bHRpRHJhdywgbV93ZWJnbE11bHRpRHJhdywgIldFQkdMX211bHRpX2RyYXciLCBXZWJHTE11bHRp
RHJhdzo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJF
WFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC0yMjcsNjkgKzIyNiw2OSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIGlm
IChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9ibGVu
ZF9taW5tYXgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21p
bm1heCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9FWFRfc1JHQiJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X0VYVF9zUkdCIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiX3MpOwotICAg
IGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVw
dGgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZnJh
Z19kZXB0aCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mcmFnX2RlcHRoIl9zKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFk
ZXJfdGV4dHVyZV9sb2QiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9z
KSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKKyAgICBp
ZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7Ci0gICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVt
ZW50X2luZGV4X3VpbnQiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMi
X3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NS
R0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgaWYgKFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlcHRoX3RleHR1cmUiX3MpOwogICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgaWYgKEFOR0xF
SW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChBTkdMRUluc3RhbmNl
ZEFycmF5czo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpCisg
ICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3No
YWRlcnMiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8i
X3MpOwotICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkK
KyAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsK
LSAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhURmxv
YXRCbGVuZDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfZmxvYXRfYmxlbmQiX3MpOwotICAgIGlmIChXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCpt
X2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxv
YXQiX3MpOwotICAgIGlmIChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhp
cykpCisgICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUi
KTsKLSAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQkdMX211bHRpX2RyYXciX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMCw3
ICszMjksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgogICAg
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CkBAIC0zNDMsMTYgKzM0MiwxNiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyPihvYmpl
Y3QpOwotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQ6IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKICAgICAgICAgICAgIGlm
ICghbV9leHRzUkdCKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciByZW5kZXJidWZmZXIgYXR0YWNobWVu
dCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiByZW5kZXJCdWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2JqZWN0LmdldCgpKTsKICAgICAgICAgICAg
IEdDR0xlbnVtIHJlbmRlckJ1ZmZlckZvcm1hdCA9IHJlbmRlckJ1ZmZlci0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEV4
dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpOworICAgICAgICAgICAg
QVNTRVJUKHJlbmRlckJ1ZmZlckZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQg
JiYgcmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VCk7CisgICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCOF9BTFBIQThfRVhUKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKTsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTM2Nyw5ICszNjYsOSBAQCBHQ0dMaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFX
X0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6
Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtMzc5
LDcgKzM3OCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29s
b3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKQEAgLTQ1
NCw5ICs0NTMsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEVx
dWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZVTkNfQUREOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZVTkNfU1VC
VFJBQ1Q6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19SRVZFUlNFX1NVQlRSQUNU
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNSU5fRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfRVhUOgotICAgICAgICBpZiAoKG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNSU5fRVhUIHx8
IG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNQVhfRVhUKSAmJiAhbV9leHRCbGVuZE1pbk1heCkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0VYVDoKKyAgICAgICAgaWYgKChtb2RlID09IEdyYXBoaWNzQ29udGV4dEdM
OjpNSU5fRVhUIHx8IG1vZGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9FWFQpICYmICFtX2V4
dEJsZW5kTWluTWF4KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIG1vZGUiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBi
OGI1ZmI2NWFjZjQxMmU5MzIyNTI0NWE0MWE1ZDgxODE1NTVkNjgxLi5hNWVlOGUzNzVhMzUzZThj
ODkyNGM4NjA3MDY4YWI2NGNmNjg4MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUg
IkVYVHNSR0IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01NTUsMTIgKzU1NCwxMiBAQCBzdGF0aWMg
dWludDhfdCBnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JBKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
NTY1OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KENoYW5uZWxCaXRzOjpSR0IpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCNV9BMToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCQSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfQ09NUE9ORU5UOgpAQCAtNjQzLDggKzY0Miw4IEBAIHN0YXRpYyBib29sIHBv
c3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMCiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NURU5DSUw4LCBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0lOVF8yNF84KTsKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEgzMkZfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVO
Q0lMLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfRVhU
LCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdC
X0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhULCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhULCBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9BTFBIQV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA5MSwx
NyArMTA5MCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3Mo
KQogICAgIC8vIHR1cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJD
b21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dM
RVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAg
ICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAg
ICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRo
X3RleHR1cmUiKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dM
RVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxzZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0
ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVf
bm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdv
Iik7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRl
eHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikgfHwg
bV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsK
ICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAgbV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3JvYnVzdG5lc3MiKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0zMzAzLDkgKzMzMDIs
OSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiAiV2ViR0wgMS4wIl9zdHI7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRf
T0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgaWYgKG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcykKLSAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRl
cihFeHRlbnNpb25zR0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRH
TDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOwogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFdlYkdMRGVidWdS
ZW5kZXJlckluZm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgpAQCAtMzMzNiwyNSArMzMzNSwy
NSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxlZCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8v
IEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAobV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJh
bWV0ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAg
ICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOwogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVmZmVycyBCRUdJTgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQ6IC8v
IEVYVF9kcmF3X2J1ZmZlcnMgQkVHSU4KICAgICAgICAgaWYgKG1fd2ViZ2xEcmF3QnVmZmVycyB8
fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdldE1heENvbG9yQXR0YWNobWVudHMo
KTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kcmF3
X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgogICAgICAgICBpZiAobV93ZWJnbERyYXdC
dWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0TWF4RHJhd0J1ZmZl
cnMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9k
cmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkK
LSAgICAgICAgICAgICYmIHBuYW1lID49IEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVAot
ICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dM
OjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkpIHsKKyAgICAgICAgICAg
ICYmIHBuYW1lID49IEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUCisgICAgICAg
ICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xlbnVtPihHcmFwaGljc0NvbnRleHRHTDo6
RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7CiAgICAgICAgICAgICBH
Q0dMaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiAgICAgICAgICAgICBpZiAo
bV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX2ZyYW1lYnVm
ZmVyQmluZGluZy0+Z2V0RHJhd0J1ZmZlcihwbmFtZSk7CkBAIC0zMzcyLDcgKzMzNzEsNyBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIC8vIENPTVBMRVRJT05fU1RBVFVTX0tIUiBzaG91
bGQgYWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IGlzIGxvc3QsIHNvIGFwcGxpY2F0
aW9ucwogICAgIC8vIGRvbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBwb2xsaW5nIGxvb3Au
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkgewotICAgICAgICBpZiAocG5hbWUg
PT0gRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFIpCisgICAgICAgIGlmIChwbmFt
ZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTMzOTks
NyArMzM5OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2toclBhcmFsbGVsU2hhZGVy
Q29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQcm9ncmFtUGFy
YW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5hYmxlZCIpOwpAQCAt
MzUwMyw3ICszNTAyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKICAgICAvLyBDT01QTEVU
SU9OX1NUQVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBp
cyBsb3N0LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5m
aW5pdGUgcG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpIHsK
LSAgICAgICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hS
KQorICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RB
VFVTX0tIUikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0zNTE3LDcgKzM1MTYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQt
PmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQYXJhbGxlbFNoYWRlckNv
bXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRl
ciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVuYWJsZWQiKTsKQEAgLTM1ODYs
NyArMzU4NSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYg
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQogICAgICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMgbm90IGVuYWJsZWQiKTsKQEAgLTM5NTksNyArMzk1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CiAgICAgICAgIGlz
VmFsaWQgPSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJB
R01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcywgb3IgY29yZSBpbiBXZWJHTCAyLjAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpG
UkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzLCBvciBjb3JlIGluIFdlYkdMIDIuMAogICAgICAgICBpZiAobV9vZXNTdGFuZGFyZERl
cml2YXRpdmVzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CkBAIC00NjEwLDggKzQ2MDksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VJbXBsKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
egogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjVfQTE6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6UkdCNTY1OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxf
SU5ERVg4OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUOgotICAgICAg
ICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUICYm
ICFtX2V4dHNSR0IpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThf
RVhUOgorICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNS
R0I4X0FMUEhBOF9FWFQgJiYgIW1fZXh0c1JHQikgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBpbnRlcm5hbGZvcm1hdCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC00NjIyLDcgKzQ2MjEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VJbXBsKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpegogICAgICAgICBicmVh
azsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMOgogICAgICAgICBp
ZiAoaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSkKLSAgICAgICAgICAgIG1fY29udGV4dC0+cmVu
ZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIEV4dGVuc2lvbnNHTDo6REVQVEgyNF9TVEVOQ0lMOCwg
d2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UodGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhl
aWdodCk7CiAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+c2V0U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJc1ZhbGlkKGlzRGVwdGhT
dGVuY2lsU3VwcG9ydGVkKCkpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmctPnNldElu
dGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0KTsKQEAgLTU2MTYsOCArNTYxNSw4IEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShj
b25zdCBjaGFyKiBmdW5jdGlvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VDoKICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgInNSR0Ig
dGV4dHVyZSBmb3JtYXRzIG5vdCBlbmFibGVkIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC01Nzc1LDcgKzU3NzQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgIElOVEVS
TkFMX0ZPUk1BVF9DQVNFKERFUFRIX1NURU5DSUwgICAgICwgREVQVEhfU1RFTkNJTCAgLCBHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzggICAgICAgICAgICAgLCAwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAw
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIElOVEVSTkFMX0ZPUk1BVF9DQVNFKERFUFRI
MjRfU1RFTkNJTDggICwgREVQVEhfU1RFTkNJTCAgLCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdO
RURfSU5UXzI0XzggICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAg
ICApOwogICAgIElOVEVSTkFMX0ZPUk1BVF9DQVNFKERFUFRIMzJGX1NURU5DSUw4ICwgREVQVEhf
U1RFTkNJTCAgLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0Xzhf
UkVWLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVDoK
ICAgICAgICAgaWYgKGZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkgewogICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IG11c3QgbWF0Y2giKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU3ODUsNyArNTc4NCw3IEBAIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFy
KiBmdW5jdGlvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICBpZiAoZm9ybWF0ICE9
IGludGVybmFsRm9ybWF0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImZvcm1hdCBhbmQg
aW50ZXJuYWxmb3JtYXQgbXVzdCBtYXRjaCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTk2OCw3ICs1OTY3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhQ
YXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0MKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYgKCFt
X2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInRleFBhcmFtZXRlciIsICJp
bnZhbGlkIHBhcmFtZXRlciwgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFi
bGVkIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC02Mzg1LDcgKzYzODQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMb3N0QwogICAgICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCk7CiAg
ICAgICAgIGlmIChjYW52YXMpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1l
ID0gY2FudmFzLT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRleHQobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2NvbnRleHQtPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY4OTgsMTgg
KzY4OTcsMTggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgQmxvY2tQYXJhbWV0
ZXJzIHsgMTIsIDEwLCBrQVNUQ0Jsb2NrU2l6ZSB9LAogICAgICAgICBCbG9ja1BhcmFtZXRlcnMg
eyAxMiwgMTIsIGtBU1RDQmxvY2tTaXplIH0KICAgICB9OwotICAgIGNvbnN0IEdDR0xlbnVtIEFT
VENFbnVtU3RhcnRSR0JBID0gRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRf
S0hSOwotICAgIGNvbnN0IEdDR0xlbnVtIEFTVENFbnVtU3RhcnRTUkdCOCA9IEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOworICAgIGNvbnN0IEdDR0xl
bnVtIEFTVENFbnVtU3RhcnRSR0JBID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzR4NF9LSFI7CisgICAgY29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFNSR0I4ID0g
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjsK
IAogICAgIGNvbnN0IGludCBrRUFDQW5kRVRDMkJsb2NrU2l6ZSA9IDQ7CiAKICAgICBzd2l0Y2gg
KGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9F
WFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTOiB7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVM6IHsKICAgICAgICAgY29uc3Qg
aW50IGtCbG9ja1NpemUgPSA4OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0Owog
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTY5MTgsMTIgKzY5MTcsMTIg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhG
dW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJs
b2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
M19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RD
X0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENf
UkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQ
SEFfQU1EOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
SU5URVJQT0xBVEVEX0FMUEhBX0FNRDoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50
IGtCbG9ja1NpemUgPSAxNjsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7
CkBAIC02OTMzLDggKzY5MzIsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAg
ICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxv
Y2tTaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgogICAgICAgICB7
CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgICAgICBjb25z
dCBpbnQga0Jsb2NrV2lkdGggPSA4OwpAQCAtNjk0Miw4ICs2OTQxLDggQEAgYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBj
aGFyKiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgs
IGtCbG9ja1dpZHRoKSAqIHN0ZDo6bWF4KGhlaWdodCwga0Jsb2NrSGVpZ2h0KSAqIDQgKyA3KSAv
IGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKICAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDE2OwpAQCAtNjk1MSw0NCArNjk1MCw0NCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1h
eCh3aWR0aCwga0Jsb2NrV2lkdGgpICogc3RkOjptYXgoaGVpZ2h0LCBrQmxvY2tIZWlnaHQpICog
MiArIDcpIC8ga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfMTB4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9B
U1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ180eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CiAgICAg
ICAgIGJ5dGVzUmVxdWlyZWQgPSBjYWxjdWxhdGVCeXRlc0ZvckFTVEMod2lkdGgsIGhlaWdodCwg
QVNUQ1BhcmFtZXRlcnNbZm9ybWF0IC0gQVNUQ0VudW1TdGFydFJHQkFdKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
NHg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzV4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tI
UjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9L
SFI6CiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBjYWxjdWxhdGVCeXRlc0ZvckFTVEMod2lkdGgs
IGhlaWdodCwgQVNUQ1BhcmFtZXRlcnNbZm9ybWF0IC0gQVNUQ0VudW1TdGFydFNSR0I4XSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOiB7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VU
QzI6IHsKICAgICAgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQnl0ZXNSZXF1aXJlZCA9ICh3aWR0
aCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAg
ICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gKGhlaWdodCArIGtFQUNBbmRFVEMyQmxvY2tT
aXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAgICAgICAgY2hlY2tlZEJ5dGVzUmVx
dWlyZWQgKj0gODsKQEAgLTY5OTksMTAgKzY5OTgsMTAgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5j
dGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9F
QUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogeworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogewogICAg
ICAgICBDaGVja2VkVWludDMyIGNoZWNrZWRCeXRlc1JlcXVpcmVkID0gKHdpZHRoICsga0VBQ0Fu
ZEVUQzJCbG9ja1NpemUgLSAxKSAvIGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVj
a2VkQnl0ZXNSZXF1aXJlZCAqPSAoaGVpZ2h0ICsga0VBQ0FuZEVUQzJCbG9ja1NpemUgLSAxKSAv
IGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVja2VkQnl0ZXNSZXF1aXJlZCAqPSAx
NjsKQEAgLTcwMTMsOCArNzAxMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAg
IGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQ6IHsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VY
VDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgIGNvbnN0IGlu
dCBrQmxvY2tXaWR0aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpA
QCAtNzAyMyw4ICs3MDIyLDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0
ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXpl
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOiB7CiAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0
aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpAQCAtNzA0OSwxNCAr
NzA0OCwxNCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZv
cm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQ1X0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKICAg
ICAgICAgY29uc3QgR0NHTHNpemVpIGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgR0NH
THNpemVpIGtCbG9ja0hlaWdodCA9IDQ7CiAgICAgICAgIGNvbnN0IEdDR0xpbnQgbWF4VGV4dHVy
ZVNpemUgPSB0YXJnZXQgPyBtX21heFRleHR1cmVTaXplIDogbV9tYXhDdWJlTWFwVGV4dHVyZVNp
emU7CkBAIC03MDY5LDU1ICs3MDY4LDU1IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1H
OgogICAgICAgICAvLyBIZWlnaHQgYW5kIHdpZHRoIG11c3QgYmUgcG93ZXJzIG9mIDIuCiAgICAg
ICAgIGlmICgod2lkdGggJiAod2lkdGggLSAxKSkgfHwgKGhlaWdodCAmIChoZWlnaHQgLSAxKSkp
IHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IGludmFsaWQgZm9y
IGxldmVsIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4
NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
Xzh4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFf
RUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182
eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
Xzh4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNng1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMngxMl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUM6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRD
Ml9FQUM6CiAgICAgICAgIC8vIE5vIGhlaWdodCBhbmQgd2lkdGggcmVzdHJpY3Rpb25zIG9uIEFT
VEMsIEVUQzEgb3IgRVRDMi4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAg
LTcxMzMsMTQgKzcxMzIsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICB9CiAKICAg
ICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19E
WFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1Mz
VENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQ1X0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
NV9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29u
c3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CiAgICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dp
ZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpIHsKQEAgLTcxNTQsMTAgKzcxNTMsMTAg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhT
dWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFs
aWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWws
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6
IHsKICAgICAgICAgaWYgKHhvZmZzZXQgfHwgeW9mZnNldCkgewogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlv
bk5hbWUsICJ4b2Zmc2V0IGFuZCB5b2Zmc2V0IG11c3QgYmUgemVybyIpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzE2OSwxOSArNzE2OCwxOSBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoY29uc3QgY2hh
ciogZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1l
bnNpb25zKGZ1bmN0aW9uTmFtZSwgdGFyZ2V0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
KTsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkVUQzFfUkdCOF9PRVM6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzoKICAgICAgICAgLy8gTm90IHN1cHBv
cnRlZCBmb3IgRVRDMV9SR0I4X09FUyB0ZXh0dXJlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU0lHTkVEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1Ix
MV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfRVRDMl9FQUM6IHsKICAgICAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV8zRCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJub3Qgc3Vw
cG9ydGVkIG9uIFRFWFRVUkVfM0QgdGV4dHVyZXMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTc2OTgsNyArNzY5Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgaWYgKCFtX3Jlc3RvcmVBbGxvd2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgaW50IGNvbnRleHRM
b3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAKICAg
ICBzd2l0Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Tk9fRVJST1I6CkBAIC03NzA3LDE1ICs3NzA2LDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgICAgIC8vIFdFQkdMX2xvc2Vf
Y29udGV4dCBleHRlbnNpb24gbWlnaHQgaGF2ZSBiZWVuIHVzZWQgdG8gZm9yY2UKICAgICAgICAg
Ly8gYSBsb3N0IGNvbnRleHQuCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIGNvbnRl
eHQgaXMgbm90IHJlc3RvcmVkIGlmIHRoaXMgY29udGV4dCB3YXMKICAgICAgICAgLy8gZ3VpbHR5
IG9mIGNhdXNpbmcgdGhlIGdyYXBoaWNzIHJlc2V0LgogICAgICAgICBwcmludFRvQ29uc29sZShN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXQVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRoZSBwYWdl
IGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNldDsgbm90IHJlc3RvcmluZyB0aGUgY29u
dGV4dCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OklOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OklOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBBbHdheXMgYWxsb3cgdGhlIGNvbnRleHQg
dG8gYmUgcmVzdG9yZWQuCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpV
TktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVO
S05PV05fQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIFdhcm4uIElkZWFsbHksIHByb21w
dCB0aGUgdXNlciB0ZWxsaW5nIHRoZW0gdGhhdCBXZWJHTAogICAgICAgICAvLyBjb250ZW50IG9u
IHRoZSBwYWdlIG1pZ2h0IGhhdmUgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvCiAgICAgICAg
IC8vIHJlc2V0IGFuZCBhc2sgdGhlbSB3aGV0aGVyIHRoZXkgd2FudCB0byBjb250aW51ZSBydW5u
aW5nCkBAIC03ODgyLDkgKzc4ODEsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBt
X21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0RSQVdfQlVGRkVSU19FWFQpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAg
ICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRB
Q0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQp
OwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVO
VFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVm
ZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTc4OTQsNyArNzg5Myw3IEBAIEdD
R0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygp
CiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX21heENvbG9yQXR0YWNobWVu
dHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNI
TUVOVFNfRVhUKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsK
ICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCkBAIC04MDM5LDExICs4MDM4
LDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliRGl2aXNv
cihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2CiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uTmFt
ZUxpdGVyYWwpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIFN0cmluZyBleHRlbnNpb25OYW1l
IHsgZXh0ZW5zaW9uTmFtZUxpdGVyYWwgfTsKLSAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMo
ZXh0ZW5zaW9uTmFtZSkpCisgICAgaWYgKCFtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKGV4
dGVuc2lvbk5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKGV4dGVuc2lvbk5hbWUpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChleHRlbnNpb25OYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcAppbmRleCA3MmI5Njg4ZTZmOTVlZmMyYzAwOTllZWJkNWRlY2Q0MzNlZDY5YWNmLi5lMTIx
MTZkODBlNjAzOWM3Y2Q4MjNiMzljOTE4NWVjMjcwM2NhOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcApA
QCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDdhN2ExYjVmMjRjNThjMDg5YzIwOWYyZWYzMDM1
MzMxMzQ0NjE3NzguLjc5NDM1YTNhYzI0NzU2ZjdmOWQ5NGE1OTI2YzIwMTZlOTExNjcyMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNDEsNyArMzQx
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dX
ZWJHTChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdz
OyB9CiAgICAgLy8gSW5mb3JtcyB0aGUgZW1iZWRkZXIgdGhhdCBhIFdlYkdMIGNhbnZhcyBpbnNp
ZGUgdGhpcyBmcmFtZSByZWNlaXZlZCBhIGxvc3QgY29udGV4dAotICAgIC8vIG5vdGlmaWNhdGlv
biB3aXRoIHRoZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9pbm5vY2VuY2UgY29kZSAo
c2VlIEV4dGVuc2lvbnNHTC5oKS4KKyAgICAvLyBub3RpZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4g
R0xfQVJCX3JvYnVzdG5lc3MgZ3VpbHQvaW5ub2NlbmNlIGNvZGUgKHNlZSBHcmFwaGljc0NvbnRl
eHRHTC5oKS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZVdlYkdMQ29udGV4dChpbnQpIHsgfQog
ICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYp
IGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAg
ICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9u
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjA3NjMwOGM1OGEwYmQ0NTkzOWIwYTdi
YzVlNjI0ZDU2NGViNTEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBpcyBhIGJhc2UgY2xhc3MgY29u
dGFpbmluZyBvbmx5IHB1cmUgdmlydHVhbCBmdW5jdGlvbnMuCi0vLyBJbXBsZW1lbnRhdGlvbnMg
bXVzdCBwcm92aWRlIGEgc3ViY2xhc3MuCi0vLwotLy8gVGhlIHN1cHBvcnRlZCBleHRlbnNpb25z
IGFyZSBkZWZpbmVkIGJlbG93IGFuZCBpbiBzdWJjbGFzc2VzLAotLy8gcG9zc2libHkgcGxhdGZv
cm0tc3BlY2lmaWMgb25lcy4KLS8vCi0vLyBDYWxsaW5nIGFueSBleHRlbnNpb24gZnVuY3Rpb24g
bm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBjb250ZXh0Ci0vLyBtdXN0IGJlIGEgbm8tb3A7
IGluIHBhcnRpY3VsYXIsIGl0IG1heSBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuIEluCi0vLyB0aGlz
IHNpdHVhdGlvbiwgaWYgdGhlIGZ1bmN0aW9uIGhhcyBhIHJldHVybiB2YWx1ZSwgMCBpcyByZXR1
cm5lZC4KLWNsYXNzIEV4dGVuc2lvbnNHTCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RXh0ZW5z
aW9uc0dMKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gU3VwcG9ydGVkIGV4dGVuc2lvbnM6Ci0gICAg
Ly8gICBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICAvLyAgIEdMX0VYVF9yZWFk
X2Zvcm1hdF9iZ3JhCi0gICAgLy8gICBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vICAgR0xfQVJC
X3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byAvIEdMX09FU190ZXh0dXJlX25wb3QKLSAgICAvLyAg
IEdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCAvIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bAotICAgIC8vICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAvIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlCi0gICAgLy8gICBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190
ZXh0dXJlCi0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdAotICAgIC8vICAgR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyCi0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0g
ICAgLy8gICBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhcgotICAgIC8vICAgR0xfT0VT
X3N0YW5kYXJkX2Rlcml2YXRpdmVzCi0gICAgLy8gICBHTF9PRVNfcmdiOF9yZ2JhOAotICAgIC8v
ICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKLSAgICAvLyAgIEdMX09FU19lbGVtZW50X2lu
ZGV4X3VpbnQKLSAgICAvLyAgIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAg
IC8vICAgR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIChvbmx5IHRoZSBzdWJzZXQgcmVxdWlyZWQg
dG8KLSAgICAvLyAgICAgaW1wbGVtZW50IElPU3VyZmFjZSBiaW5kaW5nOyBpdCdzIHJlY29tbWVu
ZGVkIHRvIHN1cHBvcnQKLSAgICAvLyAgICAgdGhpcyBvbmx5IG9uIE1hYyBPUyBYIHRvIGxpbWl0
IHRoZSBhbW91bnQgb2YgY29kZSBkZXBlbmRlbnQKLSAgICAvLyAgICAgb24gdGhpcyBleHRlbnNp
b24pCi0gICAgLy8gICBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gICBH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCi0gICAgLy8gICBHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjX3NyZ2IKLSAgICAvLyAgIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdC
OF90ZXh0dXJlCi0gICAgLy8gICBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAg
IC8vICAgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKLSAgICAvLyAgIEdMX0tI
Ul90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyCi0gICAgLy8gICBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMKLSAgICAvLyAgIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICAvLyAgIEdM
X0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCi0gICAgLy8gICBHTF9BTkdM
RV9pbnN0YW5jZWRfYXJyYXlzCi0gICAgLy8gICBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9y
eQotCi0gICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCi0g
ICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpID0gMDsKLQotICAgIC8vIENlcnRhaW4gT3BlbkdMIGFu
ZCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgbWF5IHN1cHBvcnQgZW5hYmxpbmcKLSAgICAvLyBleHRl
bnNpb25zIGxhemlseS4gVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVkIHdpdGgKLSAgICAv
LyBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVybnMgdHJ1ZS4KLSAgICB2
aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAvLyBU
YWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBmb3IgZXhhbXBsZSwgIkdMX0VYVF90ZXh0dXJl
X2Zvcm1hdF9CR1JBODg4OCIuCi0gICAgLy8gQ2hlY2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBnaXZl
biBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxlZCAoc2VlIGVuc3VyZUVuYWJsZWQpLgotICAg
IC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCi0gICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAvLyBFWFRfc1JHQiBmb3JtYXRzCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0VYVCA9IDB4OEM0MDsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIFNSR0JfQUxQSEFfRVhUID0gMHg4QzQyOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gU1JHQjhfQUxQSEE4X0VYVCA9IDB4OEM0MzsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhU
ID0gMHg4MjEwOwotCi0gICAgLy8gRVhUX2JsZW5kX21pbm1heCBlbnVtcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gTUlOX0VYVCA9IDB4ODAwNzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIE1BWF9FWFQgPSAweDgwMDg7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEJHUkFfRVhU
ID0gMHg4MEUxOwotCi0gICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MgZW51bXMKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1MzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIElOTk9DRU5UX0NPTlRFWFRfUkVTRVRfQVJCID0g
MHg4MjU0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVU5LTk9XTl9DT05URVhUX1JF
U0VUX0FSQiA9IDB4ODI1NTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTlRFWFRf
Uk9CVVNUX0FDQ0VTUyA9IDB4OTBGMzsKLQotICAgIC8vIEdMX0VYVC9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwgZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERFUFRIMjRfU1RF
TkNJTDggPSAweDg4RjA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IG5hbWVz
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRUFEX0ZSQU1FQlVGRkVSID0gMHg4Q0E4
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19GUkFNRUJVRkZFUiA9IDB4OENB
OTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfRlJBTUVCVUZGRVJfQklORElO
RyA9IDB4OENBNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFQURfRlJBTUVCVUZG
RVJfQklORElORyA9IDB4OENBQTsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlIG5hbWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJf
U0FNUExFUyA9IDB4OENBQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEUgPSAweDhENTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBNQVhfU0FNUExFUyA9IDB4OEQ1NzsKLQotICAgIC8vIEdMX0lNR19tdWx0aXNh
bXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJF
TkRFUkJVRkZFUl9TQU1QTEVTX0lNRyA9IDB4OTEzMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HID0gMHg5MTM0Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVNfSU1HID0gMHg5MTM1Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9TQU1QTEVTX0lNRyA9IDB4OTEz
NjsKLQotICAgIC8vIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBuYW1lcwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMg
PSAweDhCOEI7Ci0KLSAgICAvLyBHTF9PRVNfcmdiOF9yZ2JhOCBuYW1lcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gUkdCOF9PRVMgPSAweDgwNTE7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBSR0JBOF9PRVMgPSAweDgwNTg7Ci0KLSAgICAvLyBHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVkVSVEVYX0FS
UkFZX0JJTkRJTkdfT0VTID0gMHg4NUI1OwotCi0gICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBUUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0EwOwotCi0gICAgLy8gR0xfQVJCX3RleHR1
cmVfcmVjdGFuZ2xlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX1JFQ1RB
TkdMRV9BUkIgPSAgMHg4NEY1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9CSU5ESU5HX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjY7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVCA9IDB4ODNGMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUID0gMHg4M0YxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAweDgzRjI7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNGMzsK
LQotICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhD
NEM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUID0gMHg4QzRFOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQgPSAw
eDhDNEY7Ci0KLSAgICAvLyBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRVRDMV9SR0I4X09FUyA9IDB4OEQ2NDsKLQotICAg
IC8vIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUjExX0VBQyA9IDB4OTI3MDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMgPSAweDkyNzE7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHMTFfRUFDID0gMHg5MjcyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMgPSAweDky
NzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQjhfRVRDMiA9
IDB4OTI3NDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhf
RVRDMiA9IDB4OTI3NTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIgPSAweDkyNzY7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiA9
IDB4OTI3NzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMgPSAweDkyNzg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQyA9IDB4OTI3OTsKLQotICAgIC8vIEdMX0lNR190ZXh0
dXJlX2NvbXByZXNzaW9uX3B2cnRjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFf
SU1HID0gMHg4QzAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDM7Ci0KLSAgICAvLyBHTF9BTURfY29tcHJlc3Nl
ZF9BVENfdGV4dHVyZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9B
VENfUkdCX0FNRCA9IDB4OEM5MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EID0gMHg4QzkzOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EID0gMHg4N0VFOwotCi0gICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19o
ZHIKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4
NF9LSFIgPSAweDkzQjA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ181eDRfS0hSID0gMHg5M0IxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiA9IDB4OTNCMjsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIgPSAweDkzQjM7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hS
ID0gMHg5M0I0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg1X0tIUiA9IDB4OTNCNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIgPSAweDkzQjY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSID0gMHg5M0I3OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgPSAw
eDkzQjg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMHg2X0tIUiA9IDB4OTNCOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDhfS0hSID0gMHg5M0JBOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSID0gMHg5M0JCOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSID0g
MHg5M0JDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTJ4MTJfS0hSID0gMHg5M0JEOwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIgPSAweDkzRDA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIg
PSAweDkzRDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NV9LSFIgPSAweDkzRDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgPSAweDkzRDM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4
Nl9LSFIgPSAweDkzRDQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIgPSAweDkzRDU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIgPSAweDkzRDY7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4OF9LSFIgPSAweDkzRDc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSID0gMHg5M0Q4OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiA9
IDB4OTNEOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4OF9LSFIgPSAweDkzREE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiA9IDB4OTNEQjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTJ4MTBfS0hSID0gMHg5M0RDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQ7Ci0KLSAgICAvLyBHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkI7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUID0gMHg4REJDOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
ID0gMHg4REJEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdO
RURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRTsKLQotICAgIC8vIEdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7Ci0KLSAgICAvLyBH
TF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gTUFYX0RSQVdfQlVGRkVSU19FWFQgPSAweDg4MjQ7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjBfRVhUID0gMHg4ODI1OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxX0VYVCA9IDB4ODgyNjsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMl9FWFQgPSAweDg4Mjc7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjNfRVhUID0gMHg4ODI4OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI0X0VYVCA9IDB4ODgyOTsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNV9FWFQgPSAweDg4MkE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjZfRVhUID0gMHg4ODJCOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI3X0VYVCA9IDB4ODgyQzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSOF9FWFQgPSAweDg4MkQ7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjlfRVhUID0gMHg4ODJFOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMF9FWFQgPSAweDg4MkY7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjExX0VYVCA9IDB4ODgz
MDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTJfRVhUID0gMHg4
ODMxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxM19FWFQgPSAw
eDg4MzI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE0X0VYVCA9
IDB4ODgzMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTVfRVhU
ID0gMHg4ODM0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0NPTE9SX0FUVEFD
SE1FTlRTX0VYVCA9IDB4OENERjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQwX0VYVCA9IDB4OENFMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTE9SX0FUVEFDSE1FTlQxX0VYVCA9IDB4OENFMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTE9SX0FUVEFDSE1FTlQyX0VYVCA9IDB4OENFMjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQzX0VYVCA9IDB4OENFMzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCA9IDB4OENFNDsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ1X0VYVCA9IDB4OENFNTsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ2X0VYVCA9IDB4
OENFNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ3X0VY
VCA9IDB4OENFNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQ4X0VYVCA9IDB4OENFODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQ5X0VYVCA9IDB4OENFOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TE9SX0FUVEFDSE1FTlQxMF9FWFQgPSAweDhDRUE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUID0gMHg4Q0VCOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEyX0VYVCA9IDB4OENFQzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxM19FWFQgPSAweDhDRUQ7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VF
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9
IDB4OENFRjsKLQotICAgIC8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOwot
Ci0gICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNpb24KLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7Ci0KLSAgICAv
LyBXZWJHTCBmdW5jdGlvbnMuCi0KLSAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vIE5v
dGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0
bmVzcwotICAgIC8vIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6Ci0gICAgLy8g
VGhlIGltcGxlbWVudGF0aW9uIG11c3Qgbm90IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcg
dGhpcyBjYWxsLgotICAgIC8vIElmIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBh
biBlcnJvciwgaXQgc2hvdWxkIGNvbnRpbnVlCi0gICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVy
cm9yLiBSZXN0b3JpbmcgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKLSAg
ICAvLyBleHRlcm5hbGx5LgotICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgPSAwOwotCi0gICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNl
Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QpID0gMDsKLQotICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRf
ZHJhd19idWZmZXJzCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7Ci0KLSAgICAvLyBPdGhlciBmdW5jdGlvbnMuCi0jaWYg
IVVTRShBTkdMRSkKLSAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQgotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMdm9pZCogZGF0YSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LQotI2VuZGlmCi0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRl
eCBkNjBjMzdhOWZmZTVjMmNiZTAzNjZlMjc2ZDg0ODg2NjViZDZlMjBiLi5hMTQwOTBhN2Y5OGQ0
YWZjYWUzNTgwZGRjOGU3OWU2MTkzNDNkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKQEAgLTM3NiwxMyArMzc1LDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0w6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjoKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JfSU5URUdFUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CiAg
ICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSAzOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJH
QkFfSU5URUdFUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6QkdSQV9FWFQ6IC8vIEdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhB
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBX0VYVDogLy8gR0xfRVhUX3Rl
eHR1cmVfZm9ybWF0X0JHUkE4ODg4CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9B
TFBIQV9FWFQ6CiAgICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSA0OwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYjVmNWVjZDM4MWNhOTBhMjdkOGQyYWI1MmQz
ZWZiMjUyYmVkMWI2Yy4uMWNjZWViNTM3MzUzOGQ1MzUyM2Y0OWRjZTJhMDY4MmU0N2RmYzhkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCkBAIC02NzQsNiArNjc0LDE0NSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjU7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX0JJTkRJTkdfUkVDVEFOR0xFX0FSQiA9IDB4ODRG
NjsKIAorICAgIC8vIEVYVF9zUkdCIGZvcm1hdHMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFNSR0JfRVhUID0gMHg4QzQwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JH
Ql9BTFBIQV9FWFQgPSAweDhDNDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdC
OF9BTFBIQThfRVhUID0gMHg4QzQzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQgPSAweDgyMTA7CisKKyAgICAv
LyBFWFRfYmxlbmRfbWlubWF4IGVudW1zCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBN
SU5fRVhUID0gMHg4MDA3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0VYVCA9
IDB4ODAwODsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBlbnVtcwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQkdSQV9FWFQgPSAweDgwRTE7CisKKyAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcyBlbnVtcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjUzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gSU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTQ7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjU1Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09OVEVYVF9ST0JVU1RfQUNDRVNTID0gMHg5
MEYzOworCisgICAgLy8gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIG5hbWVzCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09F
UyA9IDB4OEI4QjsKKworICAgIC8vIEdMX09FU19yZ2I4X3JnYmE4IG5hbWVzCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBSR0I4X09FUyA9IDB4ODA1MTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFJHQkE4X09FUyA9IDB4ODA1ODsKKworICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVFJBTlNM
QVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9IDB4OTNBMDsKKworICAgIC8vIEdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUID0gMHg4M0YwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAweDgzRjE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCA9IDB4ODNGMjsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0g
MHg4M0YzOworCisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VY
VCA9IDB4OEM0QzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
Ql9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQgPSAweDhDNEU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1
X0VYVCA9IDB4OEM0RjsKKworICAgIC8vIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0
dXJlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBFVEMxX1JHQjhfT0VTID0gMHg4RDY0
OworCisgICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhD
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9QVlJUQ18y
QlBQVjFfSU1HID0gMHg4QzAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMzsKKwor
ICAgIC8vIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JfQU1EID0gMHg4QzkyOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQg
PSAweDhDOTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19S
R0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQgPSAweDg3RUU7CisKKyAgICAvLyBHTF9LSFJfdGV4
dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkcgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiA9IDB4OTNCMDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIgPSAweDkzQjE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSID0g
MHg5M0IyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfNng1X0tIUiA9IDB4OTNCMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIgPSAweDkzQjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSID0gMHg5M0I1OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiA9IDB4OTNC
NjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4
OF9LSFIgPSAweDkzQjc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMHg1X0tIUiA9IDB4OTNCODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSID0gMHg5M0I5OworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIgPSAweDkzQkE7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgx
MF9LSFIgPSAweDkzQkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMF9LSFIgPSAweDkzQkM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIgPSAweDkzQkQ7CisKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tI
UiA9IDB4OTNEMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNXg0X0tIUiA9IDB4OTNEMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiA9IDB4OTNEMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUiA9IDB4OTNEMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiA9IDB4OTNENDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiA9IDB4OTNE
NTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg2X0tIUiA9IDB4OTNENjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiA9IDB4OTNENzsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIg
PSAweDkzRDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDZfS0hSID0gMHg5M0Q5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiA9IDB4OTNEQTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4MTBfS0hSID0gMHg5M0RCOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIgPSAweDkzREM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiA9
IDB4OTNERDsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCA9IDB4OERC
QjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9S
R1RDMV9FWFQgPSAweDhEQkM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJFOwor
CisgICAgLy8gR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VY
VCA9IDB4ODRGRjsKKworICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19i
dWZmZXJzCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRFJBV19CVUZGRVJTX0VY
VCA9IDB4ODgyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMF9F
WFQgPSAweDg4MjU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjFf
RVhUID0gMHg4ODI2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIy
X0VYVCA9IDB4ODgyNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVS
M19FWFQgPSAweDg4Mjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZF
UjRfRVhUID0gMHg4ODI5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZG
RVI1X0VYVCA9IDB4ODgyQTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVG
RkVSNl9FWFQgPSAweDg4MkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JV
RkZFUjdfRVhUID0gMHg4ODJDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVI4X0VYVCA9IDB4ODgyRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
QlVGRkVSOV9FWFQgPSAweDg4MkU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjEwX0VYVCA9IDB4ODgyRjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSMTFfRVhUID0gMHg4ODMwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVIxMl9FWFQgPSAweDg4MzE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjEzX0VYVCA9IDB4ODgzMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIERSQVdfQlVGRkVSMTRfRVhUID0gMHg4ODMzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIxNV9FWFQgPSAweDg4MzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUID0gMHg4Q0RGOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDBfRVhUID0gMHg4Q0UwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDFfRVhUID0gMHg4Q0UxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDJfRVhUID0gMHg4
Q0UyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDNfRVhU
ID0gMHg4Q0UzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDRfRVhUID0gMHg4Q0U0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRU
QUNITUVOVDVfRVhUID0gMHg4Q0U1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09M
T1JfQVRUQUNITUVOVDZfRVhUID0gMHg4Q0U2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09MT1JfQVRUQUNITUVOVDdfRVhUID0gMHg4Q0U3OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDhfRVhUID0gMHg4Q0U4OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDlfRVhUID0gMHg4Q0U5OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEwX0VYVCA9IDB4OENFQTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMV9FWFQgPSAweDhD
RUI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTJfRVhU
ID0gMHg4Q0VDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDEzX0VYVCA9IDB4OENFRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQxNF9FWFQgPSAweDhDRUU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UMTVfRVhUID0gMHg4Q0VGOworCisgICAgLy8gR0xfS0hSX3BhcmFsbGVs
X3NoYWRlcl9jb21waWxlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9O
X1NUQVRVU19LSFIgPSAweDkxQjE7CisKKyAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lv
bgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19B
TkdMRSA9IDB4OTNBODsKKwogICAgIC8vIEF0dGVtcHQgdG8gZW51bWVyYXRlIGFsbCBwb3NzaWJs
ZSBuYXRpdmUgaW1hZ2UgZm9ybWF0cyB0bwogICAgIC8vIHJlZHVjZSB0aGUgYW1vdW50IG9mIHRl
bXBvcmFyeSBhbGxvY2F0aW9ucyBkdXJpbmcgdGV4dHVyZQogICAgIC8vIHVwbG9hZGluZy4gVGhp
cyBlbnVtIG11c3QgYmUgcHVibGljIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQKQEAgLTEyMzMsNiAr
MTM3MiwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3
Y291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwog
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsK
KworICAgIC8vIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJlIGNhbGxlZCB3aXRoIGV4dGVuc2lvbiBu
YW1lcyBmb3Igd2hpY2ggc3VwcG9ydHMgcmV0dXJucyB0cnVlLgorICAgIHZpcnR1YWwgdm9pZCBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIC8vIFRha2Vz
IGZ1bGwgbmFtZSBvZiBleHRlbnNpb246IGZvciBleGFtcGxlLCAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4Ii4KKyAgICAvLyBDaGVja3MgdG8gc2VlIHdoZXRoZXIgdGhlIGdpdmVuIGV4
dGVuc2lvbiBpcyBhY3R1YWxseSBlbmFibGVkIChzZWUgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCku
CisgICAgLy8gSGFzIG5vIG90aGVyIHNpZGUtZWZmZWN0cy4KKyAgICB2aXJ0dWFsIGJvb2wgaXNF
eHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIC8vIEdMX0FSQl9yb2J1
c3RuZXNzCisgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20g
dGhlIEdMX0FSQl9yb2J1c3RuZXNzCisgICAgLy8gc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9sbG93
aW5nIHdheToKKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gbXVzdCBub3QgcmVzZXQgdGhlIGVy
cm9yIHN0YXRlIGR1cmluZyB0aGlzIGNhbGwuCisgICAgLy8gSWYgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQiByZXR1cm5zIGFuIGVycm9yLCBpdCBzaG91bGQgY29udGludWUKKyAgICAvLyByZXR1
cm5pbmcgdGhlIHNhbWUgZXJyb3IuIFJlc3RvcmluZyB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgaXMgaGFuZGxlZAorICAgIC8vIGV4dGVybmFsbHkuCisgICAgdmlydHVhbCBHQ0dMaW50IGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CisKKyAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOworCisgICAgLy8gR0xfQVJCX2RyYXdf
YnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKKwogICAgIC8vID09PT09
PT09PT0gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBw
bmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0x
MjQzLDExICsxNDA3LDYgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lk
IHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CiAKLSAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNp
b25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90Ci0gICAgLy8gYWxsIG1l
dGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAg
ICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygp
IHRvCi0gICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgdmlydHVhbCBFeHRlbnNpb25zR0wmIGdl
dEV4dGVuc2lvbnMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHko
Ym9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4
IDIzM2IwZGY3NTZlY2RkNGJjOTJkOTBiYWFmMDE1M2NjNmE1OTVmZjcuLjhmNWZmMWFlNzYwMGY1
ZGM5MDA5ZDg0NTVjY2ZmOTE1YmNhMWU2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKQEAgLTQ2LDc4ICs0Niw3IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CiAKLUV4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQotewotICAgIHJldHVybiAqdGhp
czsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
LXsKLSNpZiBFTkFCTEUoV0VCR0wyKQotICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLndl
YkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwotI2Vs
c2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKLXsKLSAgICAvLyBGSVhNRTog
VGhlIGNhbGxlciBzaG91bGQgdHJhY2sgdGhpcyBzdGF0ZS4KLSAgICBpZiAobV9sYXllckNvbXBv
c2l0ZWQpIHsKLSAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgICAgIEdy
YXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQoKTsKLSAgICB9Ci19Ci0KLWJvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYg
bmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwotICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHdhaXRVbnRpbElu
aXRpYWxpemVkKCk7Ci0gICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQobmFtZSk7Ci0gICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMu
YWRkKG5hbWUpOwotICAgIH0KLX0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0
aWFsaXplZCgpOwotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQot
ewotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQotICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkK
LSAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci19Ci0KLSNp
ZiAhVVNFKEFOR0xFKQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cmVh
ZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCopCi17Ci19CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdD
R0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0KikKLXsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwg
R0NHTHNpemVpLCBHQ0dMaW50KikKLXsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgIVBMQVRGT1JNKENPQ09BKQotI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDVlNWMwOWI4NzIwNDNlYTBmYTJhOTY3ZjRm
Mzk5M2JhZDgwYTc5NDEuLjc4YzEwMDczYzkwOGU0MWRiZTA0ZmQ1MDdhZjgxZDQwZThjMGNhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtMjcsNyArMjcsNiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRl
ICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM5LDQyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUg
aW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKIC8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tpbmcgbWFu
YWdlbWVudC4KIC8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4
dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMIHsKIHB1
YmxpYzoKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoKSBvdmVycmlkZTsKIAotICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KLSAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOwot
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwotICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKIAotICAg
IC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KLSAgICB1c2luZyBFeHRlbnNpb25zR0w6
OmlzRW5hYmxlZDsKLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAg
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIGlzRW5h
YmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLQotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCBy
ZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2b2lkKikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCop
IGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NH
THNpemVpLCBHQ0dMaW50KikgZmluYWw7Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKSA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0
aWFsaXplZCgpLgotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7Ci0g
ICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwotCi0gICAgSGFzaFNl
dDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMDQ5YzUxMDkyNjYxNDVkZTkx
MTc3OTcwNDNlOTVlYmI5ODdhNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgotCi0jaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRl
eHRHTEFOR0xFKiBjb250ZXh0KQotICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKLXsKLX0KLQotRXh0ZW5zaW9uc0dM
QU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKLQotYm9vbCBFeHRlbnNpb25z
R0xBTkdMRTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmICghbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
bml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9y
dHNFeHRlbnNpb24obmFtZSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmVuc3VyZUVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIC8vIEVuYWJsZSBzdXBwb3J0IGluIEFO
R0xFIChpZiBub3QgZW5hYmxlZCBhbHJlYWR5KS4KLSAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUobmFtZS5h
c2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOwot
Ci0gICAgICAgIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdi
YSJfcykKLSAgICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSA9IHRydWU7Ci0g
ICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2IiX3MpCi0gICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiA9IHRydWU7Ci0g
ICAgfQotfQotCi1ib29sIEV4dGVuc2lvbnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQotewotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotR0xpbnQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7Ci19Ci0KLVN0cmluZyBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+
Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5H
TEUpOwotCi0gICAgaWYgKCFzb3VyY2VMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNM
QVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9u
LgotICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwotICAgIEdMX0dldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBu
YW1lLmRhdGEoKSk7Ci0gICAgaWYgKCFyZXR1cm5lZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci0gICAgLy8gcmV0dXJuZWRMZW5ndGggZG9lcyBub3QgaW5jbHVkZSB0aGUg
bnVsbCB0ZXJtaW5hdG9yLgotICAgIEFTU0VSVChyZXR1cm5lZExlbmd0aCA9PSBzb3VyY2VMZW5n
dGggLSAxKTsKLSAgICByZXR1cm4gU3RyaW5nKG5hbWUuZGF0YSgpLCByZXR1cm5lZExlbmd0aCk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNp
b25zKCkKLXsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsK
LSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
LSAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIGV4dGVu
c2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0
U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAgZm9yIChhdXRv
JiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgIG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIG1faW5pdGlhbGl6ZWRBdmFp
bGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKLX0KLQotYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xfRHJhd0J1
ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwotfQotCi1TdHJpbmcgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEV4dGVuc2lvbnMoKQotewotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7Ci19Ci0K
LUdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxG
b3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSkKLXsKLSAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV0VCR0xfY29sb3JfYnVmZmVy
X2Zsb2F0IGZvciBXZWJHTCAxLjAgLyBFUyAyLjAgcmVxdWlyZXMgYSBzaXplZAotICAgIC8vIGlu
dGVybmFsIGZvcm1hdC4gQWRqdXN0IGl0IGlmIG5lY2Vzc2FyeSBhdCB0aGlzIGxvd2VzdCBsZXZl
bC4KLSAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgewotICAgICAgICBpZiAobV93ZWJnbENvbG9y
QnVmZmVyRmxvYXRSR0JBICYmIGZvcm1hdCA9PSBHTF9SR0JBICYmIGludGVybmFsZm9ybWF0ID09
IEdMX1JHQkEpCi0gICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRjsKLSAgICAgICAgaWYgKG1f
d2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCICYmIGZvcm1hdCA9PSBHTF9SR0IgJiYgaW50ZXJuYWxm
b3JtYXQgPT0gR0xfUkdCKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRjsKLSAgICB9Ci0g
ICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTc4ZTJmOWY2NGI5ZjYxNWMzYjNhODVj
NDNhM2NhMDU0ZWQ3NWNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKLQotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU7Ci0KLWNsYXNzIEV4dGVuc2lvbnNH
TEFOR0xFIDogcHVibGljIEV4dGVuc2lvbnNHTCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRp
YXRlZCBieSBHcmFwaGljc0NvbnRleHRHTEFOR0xFIGltcGxlbWVudGF0aW9ucy4KLSAgICBleHBs
aWNpdCBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEFOR0xFKik7Ci0gICAgdmly
dHVhbCB+RXh0ZW5zaW9uc0dMQU5HTEUoKTsKLQotICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2Rz
LgotICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbmFibGVk
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwotCi0gICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLQotICAgIC8vIE9ubHkg
Zm9yIG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCi0gICAgR0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4
dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUpOwotCi1wcml2YXRlOgotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJik7Ci0gICAgU3RyaW5nIGdldEV4dGVuc2lvbnMoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwotICAgIGJvb2wgbV9p
bml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fYXZh
aWxhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICAv
LyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTEFOR0xFLgotICAgIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEUqIG1fY29udGV4dDsKLQotICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdM
IDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZl
IGJlZW4gZW5hYmxlZC4KLSAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFs
c2UgfTsKLSAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDQ4ZjczNDJmM2UwOTAxZmU0NjcyY2E1YjVlMDMyMWU4NDE2YTk2NmQuLmM1YzZi
ZmE1NzVlOTQ5NDY2MTAwZTE2NTMxODMyODNhMDhhMGRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBTkdMRUhlYWRl
cnMuaCIKICNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TEFOR0xFLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC03MSw2ICs3
MCwzMCBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgs
IGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeAogfQogI2VuZGlmCiAKKworYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIXBsYXRmb3JtSW5p
dGlhbGl6ZUNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBleHRl
bnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dl
dFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0
ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
YWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9O
U19BTkdMRSkpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcu
c3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7CisgICAgcmV0dXJuIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKIHsKICNpZiAhUExBVEZPUk0o
Q09DT0EpCkBAIC0zNTQsNyArMzc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpn
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGUKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2lzRm9y
V2ViR0wyKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnNH
TEFOR0xFJj4oZ2V0RXh0ZW5zaW9ucygpKS5hZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGludGVybmFsZm9ybWF0
ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3Jt
YXQsIHR5cGUpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBHTF9UZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6
ZSwgcGl4ZWxzLmRhdGEpOwpAQCAtNDI1LDEzICs0NDgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKICAgICBHTF9DbGVhckRlcHRo
ZihzdGF0aWNfY2FzdDxmbG9hdD4oZGVwdGgpKTsKIH0KIAotRXh0ZW5zaW9uc0dMJiBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpnZXRFeHRlbnNpb25zKCkKLXsKLSAgICBpZiAoIW1fZXh0ZW5zaW9u
cykKLSAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xBTkdMRT4o
dGhpcyk7Ci0gICAgcmV0dXJuICptX2V4dGVuc2lvbnM7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIGRhdGEuZGF0YSwgZmFsc2UpOwpAQCAtNDgzLDEyICs0OTksMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWQKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7
Ci0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIC8v
IEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBu
b3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVj
dGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0
aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCiAgICAgLy8gdXNlIHRvIHR1cm4gb24gZmVh
dHVyZSBmbGFncy4KLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICAgICAgbV9pbnRlcm5hbERlcHRoU3Rl
bmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOwogICAgIH0gZWxzZQogICAgICAg
ICBtX2ludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7CkBA
IC01MDUsMTcgKzUyMCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRl
RGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbAogCiAgICAgaWYgKGF0
dHJzLmFudGlhbGlhcykgewogICAgICAgICAvLyBGSVhNRTogbXVzdCBhZGp1c3QgdGhpcyB3aGVu
IHVwZ3JhZGluZyB0byBXZWJHTCAyLjAgLyBPcGVuR0wgRVMgMy4wIHN1cHBvcnQuCi0gICAgICAg
IGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
IHx8ICFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSB7CisgICAgICAg
IGlmICghc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
IikgfHwgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikgfHwg
IXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSB7CiAgICAgICAgICAgICBh
dHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVz
KGF0dHJzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJl
RW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOwot
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIp
OworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4Iik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0
dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewogICAgICAgICAvLyBOZWVkZWQgZm9yIHByZXNl
cnZlRHJhd2luZ0J1ZmZlcjp0cnVlIHN1cHBvcnQgd2l0aG91dCBhbnRpYWxpYXNpbmcuCi0gICAg
ICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
OworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9i
bGl0Iik7CiAgICAgfQogfQogCkBAIC0yODkwLDYgKzI5MDUsNjQgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0wKICAgICBHTF9NdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50cy5kYXRhLCB0eXBlLCBwb2ludGVycy5kYXRhKCksIGluc3RhbmNlQ291bnRzLmRhdGEsIGRy
YXdjb3VudCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgLy8gRW5hYmxlIHN1cHBvcnQgaW4g
QU5HTEUgKGlmIG5vdCBlbmFibGVkIGFscmVhZHkpLgorICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgeworICAgICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUobmFtZS5hc2NpaSgpLmRh
dGEoKSk7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworCisgICAgICAg
IGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcykKKyAg
ICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSA9IHRydWU7CisgICAgICAgIGVs
c2UgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpCisg
ICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiA9IHRydWU7CisgICAgfQorfQor
Citib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCitHTGlu
dCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sK
KyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOworfQorCitTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGludCBzb3VyY2VMZW5ndGggPSBnZXRTaGFk
ZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7CisK
KyAgICBpZiAoIXNvdXJjZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cisg
ICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAg
R0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0xfR2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0
YSgpKTsKKyAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKKyAgICAvLyByZXR1cm5lZExlbmd0aCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBudWxsIHRl
cm1pbmF0b3IuCisgICAgQVNTRVJUKHJldHVybmVkTGVuZ3RoID09IHNvdXJjZUxlbmd0aCAtIDEp
OworICAgIHJldHVybiBTdHJpbmcobmFtZS5kYXRhKCksIHJldHVybmVkTGVuZ3RoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBHTF9EcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMu
ZGF0YSk7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6d2FpdEFuZFVwZGF0ZU9s
ZGVzdEZyYW1lKCkKIHsKICAgICBzaXplX3Qgb2xkZXN0RnJhbWVDb21wbGV0aW9uRmVuY2UgPSBt
X29sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlKysgJSBtYXhQZW5kaW5nRnJhbWVzOwpAQCAtMjk5
Nyw2ICszMDcwLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW52YWxpZGF0ZUtu
b3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpCiB7CiB9CiAKK0dDR0xlbnVtIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKQoreworICAgIC8v
IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQgZm9yIFdlYkdM
IDEuMCAvIEVTIDIuMCByZXF1aXJlcyBhIHNpemVkCisgICAgLy8gaW50ZXJuYWwgZm9ybWF0LiBB
ZGp1c3QgaXQgaWYgbmVjZXNzYXJ5IGF0IHRoaXMgbG93ZXN0IGxldmVsLgorICAgIGlmICh0eXBl
ID09IEdMX0ZMT0FUKSB7CisgICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
JiYgZm9ybWF0ID09IEdMX1JHQkEgJiYgaW50ZXJuYWxmb3JtYXQgPT0gR0xfUkdCQSkKKyAgICAg
ICAgICAgIHJldHVybiBHTF9SR0JBMzJGOworICAgICAgICBpZiAobV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgJiYgZm9ybWF0ID09IEdMX1JHQiAmJiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0Ip
CisgICAgICAgICAgICByZXR1cm4gR0xfUkdCMzJGOworICAgIH0KKyAgICByZXR1cm4gaW50ZXJu
YWxmb3JtYXQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IDEwN2VjMjM4Yjc4MGY0NDkxNjBm
ZjVmMTE5NzViMWIwNDQwYmJjZDguLjQ0ZDFlYzNmMGQ5ZjNlNTEwODA1NjhlNGQ0OGIzNzEyYTM4
NzdiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTUzLDcgKzUzLDYgQEAg
c3RydWN0IGdibV9ibzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXh0ZW5zaW9uc0dM
OwotY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7CiBjbGFzcyBHTENvbnRleHQ7CiBjbGFzcyBIb3N0
V2luZG93OwogY2xhc3MgSW1hZ2VCdWZmZXI7CkBAIC0zMzIsNiArMzMxLDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBj
b3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKKyAg
ICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBHQ0dM
aW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKKwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CiAgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlUHJvZ3JhbSgpIGZpbmFsOwpAQCAtMzQ2LDEyICszNTIsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICB2
b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKICAgICBib29sIG1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwotICAgIEV4dGVuc2lvbnNHTCYg
Z2V0RXh0ZW5zaW9ucygpIGZpbmFsOwogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3Rpbmco
U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFs
OwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikg
ZmluYWw7Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpOwpAQCAtMzY2
LDE1ICszNzAsMjEgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQotICAgIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBjb25zdCBQcm9jZXNzSWRlbnRp
dHkmKTsKLSNlbHNlCiAgICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMpOwotI2VuZGlmCisKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1
YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIC8vIENh
bGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCisgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNl
LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBpbnN0YW5jZSBzaG91bGQgbm90IGJlIHVzZWQuCisgICAg
Ym9vbCBpbml0aWFsaXplKCk7CisgICAgLy8gQ2FsbGVkIGZpcnN0IGJ5IGluaXRpYWxpemUoKS4g
U3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGJpdHMgb2YgRUdMQ29udGV4dC4KKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IHBsYXRm
b3JtcyBkbyBub3Qgc2hhcmUgdGhlIGNvbnRleHQgY3JlYXRpb24uIFRoZXkgc2hvdWxkLgorICAg
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCk7CisgICAgLy8gQ2FsbGVk
IGxhc3QgYnkgaW5pdGlhbGl6ZSgpLiBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0byBpbnN0
YW50aWF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBzdGF0ZSB0aGF0IGRlcGVuZCBvbgorICAgIC8vIHRo
ZSBzaGFyZWQgc3RhdGUuCisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwor
CiAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBj
cmVhdGlvbiBhdHRyaWJ1dGVzLAogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCkBAIC0zOTUs
MTMgKzQwNSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZUltcGwoKTsK
ICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoY29uc3QgSW50UmVjdCYg
PSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZOZWVk
ZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50IGhl
aWdodCk7Ci0KLSAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKTsKLSAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICAgICBzdGF0aWMgYm9vbCBtYWtl
Q3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSwgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTCk7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZm
ZXJCYWNraW5nKCkgPSAwOworCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250ZXh0IHNob3Vs
ZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0ZU9sZGVzdEZy
YW1lKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCkBAIC00MTAsNiArNDE4LDE0IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dM
dWludCk7CiAKKyAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgorICAgIEdD
R0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKKworICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNp
b25zOworICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OworICAg
IGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKICAgICBHQ0dMdWlu
dCBtX3RleHR1cmUgeyAwIH07CiAgICAgR0NHTHVpbnQgbV9mYm8geyAwIH07CiAgICAgR0NHTHVp
bnQgbV9kZXB0aFN0ZW5jaWxCdWZmZXIgeyAwIH07CkBAIC00MzQsNyArNDUwLDYgQEAgcHJvdGVj
dGVkOgogICAgIHNpemVfdCBtX29sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlIHsgMCB9OwogICAg
IFNjb3BlZEdMRmVuY2UgbV9mcmFtZUNvbXBsZXRpb25GZW5jZXNbbWF4UGVuZGluZ0ZyYW1lc107
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xTdGF0ZSBtX3N0YXRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHRlbnNpb25zR0xBTkdMRT4gbV9leHRlbnNpb25zOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYS4KQEAg
LTQ0Nyw3ICs0NjIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gV2hlbiBwcmVzZXJ2ZURyYXdpbmdC
dWZmZXIgPT0gdHJ1ZSwgdGhpcyBpcyBibGl0dGVkIHRvIGR1cmluZyBkaXNwbGF5IHByZXBhcmUu
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyQmFja2luZzsK
ICAgICB2b2lkKiBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIHsgbnVsbHB0ciB9OwotICAgIFByb2Nl
c3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjZW5kaWYKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgR0NHTHVpbnQgbV9jb21wb3NpdG9yVGV4dHVyZSB7IDAgfTsKQEAgLTQ4
Niw3ICs1MDAsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBw
ZXJHQ0dMUGxhdGZvcm1MYXllcj4gbV90ZXhtYXBMYXllcjsKICNlbmRpZgogCi0gICAgZnJpZW5k
IGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogI2lmIFVTRShOSUNPU0lBKQogICAgIGZyaWVuZCBj
bGFzcyBOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcjsKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6
R0NHTExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYTA4ZGEwZjRmMTBlNGMzZTRh
OWE3MWVlOGY1MzI1ZmE2NmUwOTFmZi4uN2IzYjRhMDFmMjY5NmMwZDliMDYxMjgwNjQ2MzhkZjY5
MjJhMWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1w
b3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgiCi0jaW1wb3J0ICJFeHRlbnNpb25zR0wuaCIKICNpbXBvcnQg
IkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0
ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgK
aW5kZXggYzU2ZTY5NTM1ZTcwOTdmZGQyNWQyZmNlMzAyZTEwNjhlNzZjNmUzYi4uYzMxZjVlZmJl
MmVhODIwZGM3MGZkNTBkNTdhMjg3MWNjMzk2ZjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
Q29jb2EuaApAQCAtNzksMTcgKzc5LDIzIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8TWVkaWFTYW1w
bGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYK
ICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IHVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24oKTsKICNlbmRpZgogcHJvdGVj
dGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIpOwotICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0OwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBvdmVy
cmlkZXMuCisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkgZmluYWw7CisgICAg
Ym9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBmaW5hbDsKICAgICB2b2lkIGludmFsaWRhdGVLbm93
blRleHR1cmVDb250ZW50KEdDR0x1aW50KSBmaW5hbDsKKyAgICBib29sIHJlc2hhcGVEaXNwbGF5
QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1
ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKIAorICAgIFByb2Nl
c3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+IG1fY3Y7CiAjZW5kaWYKQEAgLTEw
MCw2ICsxMDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9tZWRpYVNhbXBsZVJvdGF0
aW9uU2Vzc2lvbjsKICNlbmRpZgorCiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1ZDb2NvYTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDBjZDBh
MjRmZGI3MmMzN2JjZDI1YzAwMGM1NDYyYzYxYzIwNWY3NTEuLjM2ZThmMGZiMDI5Mzc3YjRlZmZl
NDA1MzUyMzdlNTgyMjJmYmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpA
QCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQU5HTEVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFO
R0xFVXRpbGl0aWVzQ29jb2EuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJF
eHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMTk3LDI5ICsxOTYsMTUgQEAgc3RhdGljIGJvb2wgbmVl
ZHNFQUdMT25NYWMoKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyKQogewogICAgIGF1dG8gY29udGV4
dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0
ZXMpLCBXVEZNb3ZlKHJlc291cmNlT3duZXIpKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlk
KCkpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpH
cmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGNyZWF0
aW9uQXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcikKLSAgICA6Ci0j
aWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKLSAgICBHcmFw
aGljc0NvbnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSwgcmVzb3VyY2VP
d25lcikKLSNlbHNlCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3ZlKGNyZWF0aW9u
QXR0cmlidXRlcykpCi0jZW5kaWYKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUoV1RGTW92
ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQorICAgICwgbV9yZXNvdXJjZU93bmVyKFdURk1vdmUocmVz
b3VyY2VPd25lcikpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGluaXRpYWxpemVyIGxpc3Qgb25jZSBtX3Jlc291cmNl
T3duZXIgbW92ZXMgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYS4KLSAgICBtX3Jlc291cmNlT3du
ZXIgPSBXVEZNb3ZlKHJlc291cmNlT3duZXIpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGF1
dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVz
LnVzZU1ldGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93ZXJQcmVmZXJlbmNlKCkgPT0gR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKLSAgICAgICAg
bV9zd2l0Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlvbiA9IHRydWU7Ci0jZW5kaWYKIH0K
IAogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6fkdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7CkBAIC0yMzYsMzggKzIyMSwzOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQogCiAvLyBGSVhNRTogQmVsb3cgaXMgZnVuY3Rpb25h
bGl0eSB0aGF0IHNob3VsZCBiZSBtb3ZlZCB0byBHcmFwaGljc0NvbnRleHRHTENvY29hIHRvIHNp
bXBsaWZ5IHRoZSBiYXNlIGNsYXNzLgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFT
S19JREVOVElUWV9UT0tFTikKLUdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBjb25zdCBQcm9jZXNz
SWRlbnRpdHkmIHJlc291cmNlT3duZXIpCi0jZWxzZQogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMp
Ci0jZW5kaWYKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzKQogewotICAgIG1faXNGb3JX
ZWJHTDIgPSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNp
b246OldlYkdMMjsKLSAgICBpZiAoYXR0cnMudXNlTWV0YWwgJiYgIXBsYXRmb3JtU3VwcG9ydHNN
ZXRhbChtX2lzRm9yV2ViR0wyKSkgewotICAgICAgICBhdHRycy51c2VNZXRhbCA9IGZhbHNlOwot
ICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7Cit9CisKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCit7CisgICAgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwor
ICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0Nv
bnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIGlmIChhdHRyaWJ1dGVzLnVzZU1ldGFs
ICYmICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0ZvcldlYkdMMikpIHsKKyAgICAgICAgYXR0
cmlidXRlcy51c2VNZXRhbCA9IGZhbHNlOworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiBFTkFCTEUoV0VCWFIpCi0gICAgaWYgKGF0dHJzLnhy
Q29tcGF0aWJsZSkgeworICAgIGlmIChhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkgewogICAgICAg
ICAvLyBGSVhNRTogSXQncyBhbG1vc3QgY2VydGFpbiB0aGF0IGFueSBjb25uZWN0ZWQgaGVhZHNl
dCB3aWxsIHJlcXVpcmUgdGhlIGhpZ2gtcG93ZXIgR1BVLAogICAgICAgICAvLyB3aGljaCBpcyB0
aGUgc2FtZSBHUFUgd2UgbmVlZCB0aGlzIGNvbnRleHQgdG8gdXNlLiBIb3dldmVyLCB0aGlzIGlz
IG5vdCBndWFyYW50ZWVkLCBhbmQKICAgICAgICAgLy8gdGhlcmUgaXMgYWxzbyB0aGUgY2hhbmNl
IHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIEdQVXMuIEdpdmVuIHRoYXQgeW91IGNhbiByZXF1ZXN0
IHRoZQogICAgICAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRo
ZSBXZWJYUiBzZXNzaW9uLCB3ZSdsbCBuZWVkIHNvbWUgd2F5IHRvCiAgICAgICAgIC8vIG1pZ3Jh
dGUgdGhlIGNvbnRleHQgdG8gdGhlIGFwcHJvcHJpYXRlIEdQVSB3aGVuIHRoZSBjb2RlIGhlcmUg
ZG9lcyBub3Qgd29yay4KICAgICAgICAgTE9HKFdlYkdMLCAiV2ViWFIgY29tcGF0aWJsZSBjb250
ZXh0IHJlcXVlc3RlZC4gVGhpcyB3aWxsIGFsc28gdHJpZ2dlciBhIHJlcXVlc3QgZm9yIHRoZSBo
aWdoLXBvd2VyIEdQVS4iKTsKLSAgICAgICAgYXR0cnMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZv
cm1hbmNlR1BVID0gdHJ1ZTsKLSAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwor
ICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IHRy
dWU7CisgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KICNl
bmRpZgogCi0gICAgbV9kaXNwbGF5T2JqID0gaW5pdGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwor
ICAgIG1fZGlzcGxheU9iaiA9IGluaXRpYWxpemVFR0xEaXNwbGF5KGF0dHJpYnV0ZXMpOwogICAg
IGlmICghbV9kaXNwbGF5T2JqKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWF0dHJzLnVzZU1ldGFsKSB7CisgICAg
aWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKSB7CiAgICAgICAgIC8vIEZvciBPcGVuR0wsIEVHTF9B
TkdMRV9wb3dlcl9wcmVmZXJlbmNlIGlzIHVzZWQuIFRoZSBjb250ZXh0IGlzIGluaXRpYWxpemVk
IHdpdGggdGhlCiAgICAgICAgIC8vIGRlZmF1bHQsIGxvdy1wb3dlciBkZXZpY2UuIEZvciBoaWdo
LXBlcmZvcm1hbmNlIGNvbnRleHRzLCB3ZSByZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlCiAg
ICAgICAgIC8vIEdQVSBpbiBzZXRDb250ZXh0VmlzaWJpbGl0eS4gV2hlbiB0aGUgcmVxdWVzdCBp
cyBmdWxsZmlsbGVkIGJ5IHRoZSBzeXN0ZW0sIHdlIGdldCB0aGUKQEAgLTI3NSwxMSArMjYxLDEx
IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgICAgIGNvbnN0IGNoYXIgKmRpc3BsYXlF
eHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxheU9iaiwgRUdMX0VYVEVOU0lPTlMp
OwogICAgICAgICBib29sIHN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlID0gc3Ryc3RyKGRpc3BsYXlF
eHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKTsKICAgICAgICAgaWYgKCFz
dXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSkgewotICAgICAgICAgICAgYXR0cnMuZm9yY2VSZXF1ZXN0
Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXR0cnMucG93
ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVy
Zm9ybWFuY2UpIHsKLSAgICAgICAgICAgICAgICBhdHRycy5wb3dlclByZWZlcmVuY2UgPSBHcmFw
aGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKKyAgICAgICAgICAgIGF0dHJp
YnV0ZXMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3NDb250ZXh0R0xQ
b3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgeworICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
OkRlZmF1bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRl
cyhhdHRycyk7CisgICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsK
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjk4LDE0ICsyODQsMTQgQEAgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cnMKICAgICBFR0xfQ2hvb3NlQ29uZmlnKG1fZGlzcGxheU9iaiwgY29uZmln
QXR0cmlidXRlcywgJm1fY29uZmlnT2JqLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKTsKICAg
ICBpZiAobnVtYmVyQ29uZmlnc1JldHVybmVkICE9IDEpIHsKICAgICAgICAgTE9HKFdlYkdMLCAi
RUdMQ29uZmlnIEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb25maWci
KTsKIAogICAgIEVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKICAgICBpZiAoRUdMX0dl
dEVycm9yKCkgIT0gRUdMX1NVQ0NFU1MpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiVW5hYmxlIHRv
IGJpbmQgdG8gT1BFTkdMX0VTX0FQSSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBWZWN0b3I8RUdMaW50PiBlZ2xDb250ZXh0QXR0cmlidXRl
czsKQEAgLTMzMywxMyArMzE5LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgZWds
Q29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX0JJTkRfR0VORVJBVEVTX1JFU09V
UkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0ZBTFNF
KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCisj
aWYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQogICAgIGF1dG8gZGlzcGxheUV4dGVuc2lvbnMg
PSBFR0xfUXVlcnlTdHJpbmcobV9kaXNwbGF5T2JqLCBFR0xfRVhURU5TSU9OUyk7CiAgICAgYm9v
bCBzdXBwb3J0c093bmVyc2hpcElkZW50aXR5ID0gc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAi
RUdMX0FOR0xFX21ldGFsX2NyZWF0ZV9jb250ZXh0X293bmVyc2hpcF9pZGVudGl0eSIpOwotICAg
IC8vIEZJWE1FOiBVc2UgbV9yZXNvdXJjZU93bmVyIG9uY2UgaXQgbW92ZXMgdG8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS4KLSAgICBpZiAoYXR0cnMudXNlTWV0YWwgJiYgcmVzb3VyY2VPd25lciAm
JiBzdXBwb3J0c093bmVyc2hpcElkZW50aXR5KSB7CisgICAgaWYgKGF0dHJpYnV0ZXMudXNlTWV0
YWwgJiYgbV9yZXNvdXJjZU93bmVyICYmIHN1cHBvcnRzT3duZXJzaGlwSWRlbnRpdHkpIHsKICAg
ICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX01FVEFMX09XTkVS
U0hJUF9JREVOVElUWV9BTkdMRSk7Ci0gICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVu
ZChyZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCkpOworICAgICAgICBlZ2xDb250ZXh0QXR0cmli
dXRlcy5hcHBlbmQobV9yZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCkpOwogICAgIH0KICNlbmRp
ZgogCkBAIC0zNDgsMTAgKzMzMywxNCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGlj
c0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIG1f
Y29udGV4dE9iaiA9IEVHTF9DcmVhdGVDb250ZXh0KG1fZGlzcGxheU9iaiwgbV9jb25maWdPYmos
IEVHTF9OT19DT05URVhULCBlZ2xDb250ZXh0QXR0cmlidXRlcy5kYXRhKCkpOwogICAgIGlmICht
X2NvbnRleHRPYmogPT0gRUdMX05PX0NPTlRFWFQgfHwgIW1ha2VDdXJyZW50KG1fZGlzcGxheU9i
aiwgbV9jb250ZXh0T2JqKSkgewogICAgICAgICBMT0coV2ViR0wsICJFR0xDb250ZXh0IEluaXRp
YWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb250ZXh0Iik7CisgICAgcmV0dXJu
IHRydWU7Cit9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK3sKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogICAg
IGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBHTF9FbmFibGUoR3JhcGhpY3NDb250ZXh0R0w6
OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIApAQCAtMzYzLDM4ICszNTIsMzcgQEAg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIGlmICghbmVlZHNFQUdMT25NYWMoKSkgewogICAgICAgICAvLyBGb3Ig
SU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KLSAgICAgICAgaWYgKCFhdHRycy51c2VNZXRhbCkK
KyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKQogICAgICAgICAgICAgcmVxdWlyZWRF
eHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3MpOwogICAgICAg
ICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgogICAg
ICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiX3MpOwogICAgIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogI2lmIEVOQUJMRShXRUJYUikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKQotICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnhyQ29tcGF0aWJsZSkKKyAgICBp
ZiAoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5h
cHBlbmQoIkdMX09FU19FR0xfaW1hZ2UiX3MpOwogI2VuZGlmCiAgICAgaWYgKG1faXNGb3JXZWJH
TDIpCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIl9zKTsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRF
eHRlbnNpb25zKCk7CiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lv
bnMpIHsKLSAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAg
ICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbihleHRlbnNpb24pKSB7CiAgICAgICAgICAgICBM
T0coV2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCBleHRlbnNpb24uY2hh
cmFjdGVycygpKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9u
KTsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSAg
ICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS51c2VNZXRhbCkgeworICAgIGlmIChhdHRyaWJ1dGVz
LnVzZU1ldGFsKSB7CiAgICAgICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgdXNlcyBzeW5j
IG9iamVjdHMgdG8gdGhyb3R0bGUgZGlzcGxheSBvbiBNZXRhbCBpbXBsZW1lbnRhdGlvbnMuCiAg
ICAgICAgIC8vIE9wZW5HTCBzeW5jIG9iamVjdHMgYXJlIG5vdCBzaWduYWxpbmcgdXBvbiBjb21w
bGV0aW9uIG9uIENhdGFsaW5hLWVyYSBkcml2ZXJzLCBzbwogICAgICAgICAvLyBPcGVuR0wgY2Fu
bm90IHVzZSB0aGlzIG1ldGhvZCBvZiB0aHJvdHRsaW5nLiBPcGVuR0wgZHJpdmVycyB0eXBpY2Fs
bHkgaW1wbGVtZW50CiAgICAgICAgIC8vIHNvbWUgc29ydCBvZiBpbnRlcm5hbCB0aHJvdHRsaW5n
LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQVJCX3N5bmMiX3MpKSB7Cisg
ICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3N5bmMiX3MpKSB7CiAgICAgICAg
ICAgICBtX3VzZUZlbmNlU3luY0ZvckRpc3BsYXlSYXRlTGltaXQgPSB0cnVlOwotICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BUkJfc3luYyJfcyk7CisgICAgICAgICAg
ICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfc3luYyJfcyk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0gICAgYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCisgICAg
YXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdl
ZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAogICAgIC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdp
bGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0
ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKQEAgLTQxMSwxOCArMzk5LDE4IEBAIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtX2Zibyk7CiAgICAgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPSBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9IG1fZmJvOwogCi0gICAgaWYgKCFhdHRycy5hbnRpYWxpYXMgJiYgKGF0dHJzLnN0ZW5j
aWwgfHwgYXR0cnMuZGVwdGgpKQorICAgIGlmICghYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgKGF0
dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSkKICAgICAgICAgR0xfR2VuUmVu
ZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogCiAgICAgLy8gSWYgbmVjZXNz
YXJ5LCBjcmVhdGUgYW5vdGhlciBmcmFtZWJ1ZmZlciBmb3IgdGhlIG11bHRpc2FtcGxlIHJlc3Vs
dHMuCi0gICAgaWYgKGF0dHJzLmFudGlhbGlhcykgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlh
bGlhcykgewogICAgICAgICBHTF9HZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8p
OwogICAgICAgICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1w
bGVGQk8pOwogICAgICAgICBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9IG1fc3RhdGUuYm91bmRSZWFk
RkJPID0gbV9tdWx0aXNhbXBsZUZCTzsKICAgICAgICAgR0xfR2VuUmVuZGVyYnVmZmVycygxLCAm
bV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKLSAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwgfHwg
YXR0cnMuZGVwdGgpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRl
cy5kZXB0aCkKICAgICAgICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgIH0gZWxzZSBpZiAoYXR0cnMucHJlc2VydmVEcmF3
aW5nQnVmZmVyKSB7CisgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1
ZmZlcikgewogICAgICAgICAvLyBJZiBuZWNlc3NhcnksIGNyZWF0ZSBhbm90aGVyIHRleHR1cmUg
dG8gaGFuZGxlIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjp0cnVlIHdpdGhvdXQKICAgICAgICAgLy8g
YW50aWFsaWFzaW5nLgogICAgICAgICBHTF9HZW5UZXh0dXJlcygxLCAmbV9wcmVzZXJ2ZURyYXdp
bmdCdWZmZXJUZXh0dXJlKTsKQEAgLTQzOCw3ICs0MjYsMTEgQEAgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cnMKIAogICAgIEdMX0NsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAKLSAgICBMT0coV2ViR0ws
ICJDcmVhdGVkIGEgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSAoJXApLiIsIHRoaXMpOworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBpZiAoIWF0dHJpYnV0ZXMudXNlTWV0YWwgJiYgYXR0cmlidXRlcy5l
ZmZlY3RpdmVQb3dlclByZWZlcmVuY2UoKSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6SGlnaFBlcmZvcm1hbmNlKQorICAgICAgICBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVj
b25maWd1cmF0aW9uID0gdHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCkBAIC00ODUsMTEg
KzQ3Nyw2IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xF
KCkKICAgICBMT0coV2ViR0wsICJEZXN0cm95ZWQgYSBHcmFwaGljc0NvbnRleHRHTEFOR0xFICgl
cCkuIiwgdGhpcyk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGV4dHVyZTsKLX0KLQogYm9vbCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9jb250ZXh0T2Jq
KQpAQCAtNTUwLDcgKzUzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6dXBkYXRl
Q29udGV4dE9uRGlzcGxheVJlY29uZmlndXJhdGlvbigpCiB9CiAjZW5kaWYKIAotYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQorYm9vbCBH
cmFwaGljc0NvbnRleHRHTENvY29hOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewog
ICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAg
IC8vIFJlc2V0IHRoZSBjdXJyZW50IGJhY2tidWZmZXIgbm93IGJlZm9yZSBhbGxvY2F0aW5nIGEg
bmV3IG9uZSBpbiBvcmRlciB0byBzbGlnaHRseSByZWR1Y2UgbWVtb3J5IHByZXNzdXJlLgpAQCAt
NTY4LDcgKzU1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nKCkKICAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjphbGxvY2F0ZUFu
ZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcg
PSBJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CkBAIC01OTgsNyArNTg1LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiAg
ICAgcmV0dXJuIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhXVEZNb3ZlKGJhY2tpbmcpLCBwYnVm
ZmVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpiaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZl
cikKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6YmluZERpc3BsYXlCdWZmZXJCYWNraW5n
KHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpCiB7CiAg
ICAgR0NHTGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7
CiAgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdC
dWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0
ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CkBA
IC02ODksNyArNjc2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hJT1N1
cmZhY2VGcm9tU2hhcmVkVGV4dHVyZSh2b2lkKiBoYW5kbGUpCiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAobV9sYXllckNv
bXBvc2l0ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggN2QwY2UzNmI2MGEwZDY5YTU5MjNjMjQwMGQwM2Ji
N2JhZDM4NjQ5OC4uMGJiMTA2NWIzYTYxNjY5Yjk4NTAxODUzMDQ1YTcwYjZmYWExYjUwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTE1
MSw3ICsxNTEsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogICAgIGlmIChHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55Q29udGV4dHMo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYo
bmV3IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQor
ICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwogICAgIHJldHVybiBjb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA3ZDUwMGFiYzBjZjFlZTU1MjY4MzExMmFm
Y2YyMjI0YWU2OTU3MWJmLi43Yjc5ZDBmODg2MjAwOGU0MWFlMWEyZGQ2M2M0MmZkOTQ2NzQ0NTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0cyhjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3Nv
dXJjZSIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzdXBwb3J0c0V4dGVu
c2lvbihuYW1lKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsK
IH0KIAogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CiAg
ICAgICAgIGlmICghQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykgewogICAgICAgICAg
ICAgQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgICAgICBBTkdM
RVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNp
b25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2Vz
Lk1heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJj
ZXMoQU5HTEVSZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgewpAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAg
ICAgICBBTkdMRVdlYktpdEJyaWRnZSYgY29tcGlsZXIgPSBtX2NvbnRleHQtPm1fY29tcGlsZXI7
CiAgICAgICAgIHJldHVybiBjb21waWxlci5nZXRSZXNvdXJjZXMoKS5PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXM7CiAgICAgfQotICAgIHJldHVybiBzdXBwb3J0cyhuYW1lKTsKKyAgICByZXR1cm4g
c3VwcG9ydHNFeHRlbnNpb24obmFtZSk7CiB9CiAKIGludCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5oCmluZGV4IDI5YTBjNGQ4ZjVhOTI2YzcwOTUzNTQxYzBiMjYxM2ZkYTc1MmI0MjYu
LjA0NzhkOGE4YTgwMWNmNTNjYmNkY2NhNjRkMGU5ZGQ3ZjFlNTFmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTI2LDggKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKLQorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNH
TC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCkBAIC0zNSwzNSArMzQsMzMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIAotY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uIDogcHVibGljIEV4dGVuc2lvbnNHTCB7CitjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbigpOwogCi0gICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhv
ZHMuCi0gICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VuYWJs
ZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSBvdmVycmlkZTsKLQorICAgIC8vIE1ldGhvZHMgZm9yd2FyZGVkIGZyb20gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpOworICAg
IHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KTsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKKyAg
ICAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZv
cm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwg
R0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAK
LSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJp
ZGUgPSAwOwotCi0gICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLQogICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgPSAwOwogCiAgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZWFkblBp
eGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAq
ZGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcyk7CisgICAg
dmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpOwogCiAgICAgYm9vbCBpc05WSURJ
QSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOVklESUE7IH0KICAgICBib29sIGlzQU1EKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0FNRDsgfQpAQCAtNzgsNyArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZnJp
ZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwogICAgIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbihHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZyk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRFeHRlbnNpb25zKCkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAxNTQ2MjM2ZjhiNmJkYjUyMjNkMGVkZTM3YWI3NGYw
ZWQ2ZjEwYmNmLi41OGNhMWJjOWE1ZTE3MTRlYjYyYzRkOGY0OTEzYzQyY2FmMjU4OWQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogICAgIC8v
IEZvciBHTF9FWFRfcm9idXN0bmVzcywgY2hlY2sgdGhhdCB0aGUgY29udGV4dCBzdXBwb3J0cyBy
b2J1c3QgYWNjZXNzLgogICAgIGlmIChuYW1lID09ICJHTF9FWFRfcm9idXN0bmVzcyIpCi0gICAg
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpDT05URVhUX1JP
QlVTVF9BQ0NFU1MpID09IEdMX1RSVUU7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldElu
dGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJV
RTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRl
eCA5YTU4MWEwMDBkZDM3MmZmMWVjZGQ5MWZmOTlkZWM5OGFkOGUzODU4Li42Njk4MzgwMWZkZDhk
YjIxNjEyYzczYjM2ZmVjNzNjNmJiMmVkYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
aApAQCAtNzEsNiArNzEsMTIgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKIGNs
YXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTIDogcHVibGljIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
biB7CiBwdWJsaWM6CisgICAgLy8gR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVy
ZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVNfSU1H
ID0gMHg5MTMzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9NVUxUSVNBTVBMRV9JTUcgPSAweDkxMzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBNQVhfU0FNUExFU19JTUcgPSAweDkxMzU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBURVhUVVJFX1NBTVBMRVNfSU1HID0gMHg5MTM2OworCiAgICAgLy8gVGhpcyBjbGFz
cyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCBpbXBsZW1lbnRhdGlvbnMuCiAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpOwogICAgIHZpcnR1YWwgfkV4
dGVuc2lvbnNHTE9wZW5HTEVTKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cAppbmRleCBmMzBiNWUxZTZlYTlkMDE1Nzc0ZjgwNjBiOTE1M2Y0N2UzMDYyZWFiLi5iYmYwZTgx
ZWI5ODU1MjVmMzI0NzcxMjhlNDQzNzMzMDQ5YTljNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5jcHAKQEAgLTMxMiwxOCArMzEyLDIwIEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogI2VuZGlmCiB9CiAKLSNpZiBQ
TEFURk9STShHVEspCi1FeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKKyNpZiBQTEFURk9STShHVEspICYmIFVTRShPUEVOR0xf
RVMpCitFeHRlbnNpb25zR0xPcGVuR0xFUyYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4
dGVuc2lvbnMoKQogewotICAgIGlmICghbV9leHRlbnNpb25zKSB7Ci0jaWYgVVNFKE9QRU5HTF9F
UykKLSAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCisg
ICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCisgICAgaWYgKCFt
X2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9u
c0dMT3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7Ci0jZWxzZQotICAgICAgICAvLyBGcm9tIE9wZW5H
TCAzLjIgb24gd2UgdXNlIHRoZSBDb3JlIHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBn
bEdldFN0cmluZ2kuCisgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7Cit9CisjZWxpZiBQTEFURk9S
TShHVEspCitFeHRlbnNpb25zR0xPcGVuR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRF
eHRlbnNpb25zKCkKK3sKKyAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3Jl
IHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCisgICAgaWYgKCFt
X2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9u
c0dMT3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7
Ci0jZW5kaWYKLSAgICB9CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAg
LTM1MSwxMCArMzUzLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kKIHsKICAgICBhdXRvIGF0
dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
biYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkg
ewotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pKSB7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICAgICAgICAgIC8vIEZvcmNl
IGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1
ZTsKICAgICAgICAgfSBlbHNlCkBAIC0zNjIsMTEgKzM2MywxMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0
aFN0ZW5jaQogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgfQogICAg
IGlmIChhdHRycy5hbnRpYWxpYXMgJiYgIW1faXNGb3JXZWJHTDIpIHsKLSAgICAgICAgaWYgKCFl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKSB7
CisgICAgICAgIGlmICghc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikpIHsKICAgICAgICAgICAgIGF0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwogICAg
ICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FO
R0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CiAgICAgfQogfQogCkBAIC0zMDY5LDYgKzMw
NzAsMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bXVsdGlEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSwgR0NHTFNwYW4KICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCitib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgcmV0dXJuIGdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cyhuYW1lKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJp
bmcmIG5hbWUpCit7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQobmFtZSk7Cit9
CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQo
bmFtZSk7Cit9CisKK0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZmZlcnMpCit7CisgICAgcmV0
dXJuIGdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChidWZmZXJzKTsKK30KKworU3RyaW5n
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7CisgICAgcmV0dXJuIGdldEV4dGVuc2lvbnMoKS5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyKTsKK30KKwogYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQogewogICAgIEFTU0VSVCh1bnBhY2tB
bGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQg
PT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IDkxZmVmZWY1MTJmNjUyOGJjM2E3NzgzMWViZTliNjQ1MWQ5NzQ1NmMuLjU5
Nzk2OGUwZmZlOTI3ODMwODA2MTMyOTNiZmY4MGFjODA4MjBhNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MywxMCArNDMsOSBAQCBjbGFzcyBHQ0dMTGF5ZXI7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRXh0ZW5zaW9uc0dMOwogI2lmIFVT
RShPUEVOR0xfRVMpCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKLSNlbGlmIFVTRShPUEVO
R0wpCisjZWxzZQogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMOwogI2VuZGlmCiBjbGFzcyBIb3N0
V2luZG93OwpAQCAtMzcwLDYgKzM2OSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtdWx0aURyYXdF
bGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dM
c2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3Vu
dHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xT
cGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQp
IG92ZXJyaWRlOwogCisgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBm
aW5hbDsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmlu
YWw7CisgICAgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIGZpbmFsOworICAgIHZvaWQgZHJh
d0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKKyAgICBTdHJp
bmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFs
OworCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7
CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpOwpAQCAtNDA1LDExICs0MTEsMTMgQEAgcHVibGlj
OgogCiAgICAgLy8gU3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9i
amVjdCwgdGhvdWdoIG5vdAogICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNl
c3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCi0gICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVz
dCBjYWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bworICAgIC8vIGN1cnJlbnQgaGFyZHdh
cmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0xPcGVuR0x7RVN9OjpzdXBwb3J0cygpIHRvCiAgICAg
Ly8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgLy8gVXNlIGNvdmFyaWFudCByZXR1cm4gdHlwZSBmb3Ig
T1BFTkdML09QRU5HTF9FUwotICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZ2V0RXh0ZW5z
aW9ucygpIGZpbmFsOwotCisjaWYgVVNFKE9QRU5HTF9FUykKKyAgICBFeHRlbnNpb25zR0xPcGVu
R0xFUyYgZ2V0RXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICBFeHRlbnNpb25zR0xPcGVuR0wmIGdl
dEV4dGVuc2lvbnMoKTsKKyNlbmRpZgogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3Rpbmco
U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcHJlcGFyZUZv
ckRpc3BsYXkoKSBvdmVycmlkZTsKQEAgLTQyMCw3ICs0MjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
R0NHTHVpbnQgbV90ZXh0dXJlIHsgMCB9OwogCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRo
ZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KLSAgICAv
LyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9u
c0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KKyAgICAvLyBDYWxsZWQgb25jZSBieSBh
bGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMT3BlbkdML0V4dGVuc2lv
bkdMT3BlbkdMRVMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIGJvb2wgbWFrZUNv
bnRleHRDdXJyZW50KCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiAgICAgLy8gVGFrZSBpbnRvIGFj
Y291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLApA
QCAtNTEyLDEzICs1MjAsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNo
YWRlck5hbWVIYXNoPiBuYW1lSGFzaE1hcEZvclNoYWRlcnM7CiAKKyAgICBmcmllbmQgY2xhc3Mg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOwogI2lmIFVTRShPUEVOR0xfRVMpCiAgICAgZnJpZW5k
IGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwotICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnNHTE9wZW5HTEVT
PiBtX2V4dGVuc2lvbnM7Ci0jZWxpZiBVU0UoT1BFTkdMKQorI2Vsc2UKICAgICBmcmllbmQgY2xh
c3MgRXh0ZW5zaW9uc0dMT3BlbkdMOwotICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVu
R0xDb21tb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnNHTE9wZW5HTD4gbV9leHRl
bnNpb25zOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKaW5kZXggNjhiNmNkM2Y1MjRiZjZhMDllYWY3ZmQ2ODQ4ZmJhYzFkYTczM2FiMy4uYzM1
YjJmMGYxNWQ5Y2QwOWI5YjI4YmUwYmY0NDc3ODg3NDMwNTczOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTM0NSwxMCArMzQ1LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51CiAgICAgICAgIHR5cGUgPSBHTF9IQUxGX0ZMT0FUX0FSQjsKICAg
ICB9CiAKLSAgICBBU1NFUlQoZm9ybWF0ICE9IEV4dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VY
VCk7Ci0gICAgaWYgKGZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUKQorICAg
IEFTU0VSVChmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0I4X0FMUEhBOF9FWFQpOwor
ICAgIGlmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUKQogICAg
ICAgICBvcGVuR0xGb3JtYXQgPSBHTF9SR0JBOwotICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBFeHRl
bnNpb25zR0w6OlNSR0JfRVhUKQorICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQl9FWFQpCiAgICAgICAgIG9wZW5HTEZvcm1hdCA9IEdMX1JHQjsKICNlbmRpZgog
CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJE
ZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQorRXh0ZW5zaW9uc0dMT3BlbkdMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5z
aW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDM4NjQxOThm
NzRhNTkyYmE0MjljNmQwYThiYzYxZGU4MWEzOGY2MDkuLjgzYjliODZjNTMyNzJmYzU0MTU3Yzkw
ZjQ2NjVhZjgxMTk4ZGE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cg
dGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAg
ICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAg
ICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIGdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhT
dGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAm
JiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAKICAg
ICAvLyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNl
OwpAQCAtMTMxLDEwICsxMzEsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVz
aGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgMCk7CiAjZW5kaWYKIAotICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVTJiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdMRVMmPihnZXRFeHRlbnNpb25zKCkp
OworICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVTJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygp
OwogICAgIGlmIChleHRlbnNpb25zLmlzSW1hZ2luYXRpb24oKSAmJiBhdHRyaWJ1dGVzLmFudGlh
bGlhcykgewogICAgICAgICBHTGludCBtYXhTYW1wbGVDb3VudDsKLSAgICAgICAgOjpnbEdldElu
dGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVNfSU1HLCAmbWF4U2FtcGxlQ291bnQpOyAK
KyAgICAgICAgOjpnbEdldEludGVnZXJ2KEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpNQVhfU0FNUExF
U19JTUcsICZtYXhTYW1wbGVDb3VudCk7IAogICAgICAgICBHTGludCBzYW1wbGVDb3VudCA9IHN0
ZDo6bWluKDgsIG1heFNhbXBsZUNvdW50KTsKIAogICAgICAgICBleHRlbnNpb25zLmZyYW1lYnVm
ZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDAsIHNhbXBsZUNvdW50KTsKQEAgLTI0
NCw3ICsyNDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAot
ICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0
cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1w
bGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMg
PSBmYWxzZTsKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAg
fQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNsZWFy
RGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25z
KCkKK0V4dGVuc2lvbnNHTE9wZW5HTEVTJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0
ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9u
cyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlh
bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IGU1NGFlM2Y3OTlmODUyZTFlZTdhNzA2
MDdjOTA3YmZjMmM0NWFjMTIuLjkxZThlYTgwMTRiN2E5NTg5MDBiNGY3MWM2MDQzNzE5NjZjMTVk
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
ICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggNzUwYTg0YWY2MzgyYzU0MTMwY2YzNmU4NmQ5YmM4Yzc2MDRj
ZmJjYi4uYzVkN2IyZWYzODc4ZjU3OGE3MmY5YjQ1NGFjZWEzMmZjZGEwMmEyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ3LDE1ICs0
Nyw4IEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNlbmRpZgogCi0jaWYgVVNFKEFOR0xF
KQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCi0jZWxzZQorI2lmICFVU0UoQU5HTEUp
CiAjaW5jbHVkZSA8QU5HTEUvU2hhZGVyTGFuZy5oPgotI2lmIFVTRShPUEVOR0xfRVMpCi0jaW5j
bHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCIKLSNlbHNlCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMT3BlbkdMLmgiCi0jZW5kaWYKICNlbmRpZgogCiAjaWYgVVNFKE5JQ09TSUEpCkBAIC0xMDgs
NyArMTAxLDEwIEBAIHByaXZhdGU6CiAKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsK
KyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcihXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFs
aXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb250ZXh0OwogfQog
CiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CkBAIC0xNDgsNyArMTQ0LDggQEAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXgKIAogICAgIC8vIENyZWF0ZSB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2Jq
ZWN0IGZpcnN0IGluIG9yZGVyIHRvIGVzdGFibGlzdCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlz
IHRocmVhZC4KICAgICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwot
CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNpZiBVU0UoTElC
RVBPWFkpICYmIFVTRShPUEVOR0xfRVMpICYmIEVOQUJMRShXRUJHTDIpCiAgICAgLy8gQmFpbCBp
ZiBHTEVTMyB3YXMgcmVxdWVzdGVkIGJ1dCBjYW5ub3QgYmUgcHJvdmlkZWQuCiAgICAgaWYgKGF0
dHJpYnV0ZXMud2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpX
ZWJHTDIgJiYgIWVwb3h5X2lzX2Rlc2t0b3BfZ2woKSAmJiBlcG94eV9nbF92ZXJzaW9uKCkgPCAz
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAppbmRleCAy
ZGIyZThkN2Q5Y2Q3YjljYWJiNGM5Y2E0MTcyNDNmMGU3YTBiNTIyLi45MWZhNTViY2Y4NGQ3MTk3
MGJjNTBmODQzNzdlNTVhNDBkN2YwYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRH
TFRlCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXI+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CiAg
ICAgfkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpOwotCisgICAgCiAgICAgLy8gR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZSBvdmVycmlkZXMuCiAgICAgUmVmUHRyPEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykKQEAgLTU2LDYgKzU2LDggQEAgcHVi
bGljOgogI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxp
dHkoYm9vbCkgZmluYWw7CisgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSBm
aW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjZW5kaWYKIAogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRS5jcHAKaW5kZXggNjZlMzJhYTAzMzNmN2I4YTZiNWY0ODc0MmE2ODU3OWRlZWY3MWNl
NS4uYmZjZjcyMWZmNWMxZTRmYjc1ZTZiZDg4ZWQwZjc1M2Y5ZDgzZWE0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCkBAIC0z
MSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJBTkdM
RVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIu
aCIKIApAQCAtNjcsNiArNjYsOCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0Nv
bnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaQogI2VuZGlmCiAg
ICAgYm9vbCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNF
RChzdWNjZXNzLCBzdWNjZXNzKTsKKyAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZSgpOworICAgIEFT
U0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKICAgICBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2
ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgpAQCAtMjYwLDExICsyNjEsMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
CiB7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZUZvckRpc3BsYXko
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnByZXBhcmVGb3JEaXNwbGF5
KCkKIHsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1
ZmZlckJhY2tpbmcoKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hh
cGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7CiAgICAgY29uc3QgYXV0byBzaXplID0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggZDI2MWE0MDI0Y2Y3ZWY3MTg3YTEwZjQ3
N2ViNTMzZWYyNDZjODhjYS4uYTM3ZjRhNThjNmU4MGQzNjY0NjIzZmM3NmQxMDBhOTM2OTMxNTYw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUg
IkJpdG1hcFRleHR1cmVHTC5oIgogI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVQb29sLmgiCi0jaW5j
bHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGVjYjRiNTc2N2NjOWE4ZTI2ODY0NmRjZTM5ZDI2NjJj
MzQyYzMzYjYuLjg5NzJjMjM5NjM5ZGMzYzUwNWRkOGJhZmY0YTMwNzRjNmY5OTI0NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyCiAgICAgaWYgKG1fY29udGV4dCkgewogICAgICAgICBtX2NvbnRleHQtPmFkZENs
aWVudCgqdGhpcyk7CiAgICAgICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRT
dHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgICAgICBTdHJpbmcgcmVx
dWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpS
RVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRVFV
RVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCByZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpLCBleHRlbnNpb25zLCBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpKTsKICAgICB9IGVsc2UKICAgICAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwgSVBDOjpT
ZW1hcGhvcmUgeyB9LCAiIiwgIiIpKTsKQEAgLTE4OCwxMCArMTg4LDEwIEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmdldEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNp
b25FbmFibGVkKFN0cmluZyYmIGV4dGVuc2lvbikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9z
dHJlYW1UaHJlYWQpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoZXh0ZW5zaW9uKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0
ZW5zaW9uKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1hcmtDb250ZXh0
Q2hhbmdlZCgpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBt
X2NvbnRleHQtPm1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRl
eCBlYjIwZDE2YzM3N2Y1ZjNlMDA3ZjIxYmEyNTYyNGRkMTllMzZiYjE3Li5kOGI5ODIwNzEwYjcy
ZDliNDQwOGI5YmM5MDU3NWJhZTJhNjBkOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAt
MzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlN0cmVhbU1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC05NCw5ICs5Myw5
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRp
b24oKSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQg
cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CiAgICAgdm9pZCBlbnN1cmVF
eHRlbnNpb25FbmFibGVkKFN0cmluZyYmKTsKLSAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hh
bmdlZCgpOworICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgdm9pZCByZXNoYXBl
KGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
VEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpID0gMDsKICNlbGlmIFVTRShHUkFQSElDU19MQVlFUl9X
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBjOGFiMjk3
NzI5MzBiZmQ0MDhhMDNjZWIzN2EwYzI5ODk4ZTMwMmIyLi45NzY4MGE4N2FiM2FhNGEwNzNmMjE5
MzNjNWZlY2I1YjIyNGRmZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluCkBAIC0zNiw3ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkg
LT4gKCkgU3luY2hyb25vdXMKICNlbmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChTdHJpbmcgZXh0ZW5zaW9uKQotICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkK
KyAgICB2b2lkIE1hcmtDb250ZXh0Q2hhbmdlZCgpCiAgICAgdm9pZCBTeW50aGVzaXplR0xFcnJv
cih1aW50MzJfdCBlcnJvcikKICAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQzMl90IHJldHVy
blZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAo
KSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlv
bnNHZW5lcmF0ZWQuaAppbmRleCBkMWMzMjkwNTE3ZDI5NmM1MWUzNTZlOGI0ZTU3MGMwNjdiYjc3
NThkLi45M2JkNjc3MTY4YmI0NGM5ODEzNGRjNzg5OGM5MDNlMGZiZDAzZTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMTMz
NywyMCArMTMzNywyMCBAQAogICAgIHsKICAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsg
fTsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKLSAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCk7CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
ICAgICB9CiAgICAgdm9pZCBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3Qg
YXJnMCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgewogICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CiAgICAgICAgIGFz
c2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7Ci0gICAgICAgIHJldHVyblZhbHVlID0gbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFy
ZzApOworICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKGFyZzApOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
dHVyblZhbHVlKSk7CiAgICAgfQogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50MzJfdD4mJiBidWZzKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50
KG1fc3RyZWFtVGhyZWFkKTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJh
d0J1ZmZlcnNFWFQobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0q
PihidWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1
ZmZlcnNFWFQobWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihi
dWZzLmRhdGEoKSksIGJ1ZnMuc2l6ZSgpKSk7CiAgICAgfQogICAgIHZvaWQgZ2V0SW50ZXJuYWxm
b3JtYXRpdih1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCB1aW50MzJf
dCBwbmFtZSwgdWludDY0X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCA3YWUxZWU3NmRj
NGIwN2M0MDNmNjBiOGFkMTNkYWQ5Yjg3YmRlZDBhLi4zOGM5NGIzYThiNzdmMDIxOWYxNmNkMzIw
OTllY2NkZmM3OTMwZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CiAKIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShh
dHRyaWJ1dGVzKQorICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcykKICAgICAsIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICwgbV9zdHJl
YW1Db25uZWN0aW9uKGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVmYXVsdFN0
cmVhbVNpemUpCiB7CkBAIC01OSwzMSArNTksNzMgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQogICAgIGRpc2Nvbm5lY3RHcHVQ
cm9jZXNzSWZOZWVkZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKIHsKLSAgICBpZiAoaXNDb250
ZXh0TG9zdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsK
LSAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdo
dCkpOwotICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQorYm9v
bCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKSk7Ci0gICAgaWYgKCFzZW5kUmVzdWx0KQotICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyNpZiBFTkFCTEUoV0VCR0wyKQorICAgIHJldHVybiBj
b250ZXh0QXR0cmlidXRlcygpLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdM
VmVyc2lvbjo6V2ViR0wyOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQoKQor
eworICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAg
IGlmIChtX2xheWVyQ29tcG9zaXRlZCkgeworICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6bWFy
a0NvbnRleHRDaGFuZ2VkKCk7CisgICAgICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNYXJrQ29udGV4dENoYW5nZWQoKSk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgIH0KIH0K
IAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKQorYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVu
c2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgaWYgKG1fcmVxdWVzdGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRh
aW5zKG5hbWUpKSB7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworICAg
ICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1lKSk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgIH0KK30KKworYm9vbCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRh
aW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmluaXRp
YWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWls
YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25z
LmFkZChleHRlbnNpb24pOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVF
eHRlbnNpb25zLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
c2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkpOworICAg
IG1fY3VycmVudFdpZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0Owor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpKTsKICAgICBpZiAoIXNlbmRSZXN1bHQpCiAgICAg
ICAgIG1hcmtDb250ZXh0TG9zdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaAppbmRleCAyOWYwMTk4NzE5NTU5OTg3OTJlZTc3OTVkOWFhNjBjMmYzOTczOTcxLi41
NzNmN2NiNGMwYzk1ZjU0NWVmNmUwNjU0NDg0NmYxNzQ4YzMzYTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIlJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICAsIHByaXZhdGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAotICAgICwgcHVibGljIFdl
YkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKKyAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAg
IH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCk7CkBAIC01OCwxMSArNTgsMTQgQEAgcHVi
bGljOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
Ci0gICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAg
IC8vIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICB2b2lkIHJlc2hh
cGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsKLSAgICB1c2luZyBXZWJDb3JlOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOwotICAgIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7Ci0gICAgdm9p
ZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNldENvbnRleHRW
aXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0
IGZpbmFsOworICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0V4dGVuc2lv
bkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7
CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CkBAIC0z
MjEsOSArMzI0LDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKLSAg
ICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCi0gICAgdm9p
ZCB3YWl0VW50aWxJbml0aWFsaXplZCgpIGZpbmFsOwotCiAgICAgYm9vbCBpc0NvbnRleHRMb3N0
KCkgY29uc3QgeyByZXR1cm4gIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247IH0KICAgICB2b2lkIG1h
cmtDb250ZXh0TG9zdCgpOwogCkBAIC0zNTAsMTEgKzM1MCwxOCBAQCBwcml2YXRlOgogICAgIC8v
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwogCisg
ICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29u
c3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RHcHVQcm9jZXNzSWZOZWVkZWQoKTsKICAg
ICB2b2lkIGFiYW5kb25HcHVQcm9jZXNzKCk7CiAKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiog
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNl
IH07CisgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4
dGVuc2lvbnM7CiAgICAgR0NHTGVudW0gbV9lcnJvcldoZW5Db250ZXh0SXNMb3N0ID0gTk9fRVJS
T1I7CiAgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uIG1fc3RyZWFtQ29ubmVjdGlvbjsK
IH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
OGI3ZTQyMjgzNjM1Yjc3NjI5NThhY2YxZGIxOGIwMGQxMzNhNDg1OS4uYTE1MzQxNDYzZjA3OWUz
MDNmNzY5Y2U1ZWQxYzY0ZWNkNWYzYzQ2MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTExICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgRXh0ZW5zaW9uc0dMIGlz
IG5vdCB1c2VmdWwgY2xhc3MsIGl0IHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0OTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgbWFudWFsbHkgaW1wbGVtZW50
ZWQgZnVuY3Rpb25zLgorICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwog
MjAyMi0wMi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHN1cHBvcnQgdG8gcXVlcnkgY2FtZXJhIGFuZCBtaWNyb3Bob25lIHBlcm1pc3Npb25zCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKaW5kZXggMzBmN2ZkODJiMzMxYTA2ZjRjNGUwY2I0ZTNi
ODlmNzVmZmU2YjE4MS4uYzY1ZDg3NmE0YWYyMTFjYmY3M2NiNzI5ODY0MzEwODFiNjBmODhmNiAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtNDEsNyArNDEsNiBAQCBpbXBvcnQgY29s
bGVjdGlvbnMKIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBEaWN0LCBJdGVyYWJsZSwgQ2FsbGFi
bGUsIFR1cGxlLCBTZXQsIE9wdGlvbmFsLCBHZW5lcmF0b3IsIEl0ZXJhdG9yLCBDb3VudGVyCiAK
IHJvb3RfZGlyID0gKHBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50IC8gIi4uIiAvICIuLiIp
LnJlc29sdmUoKQotZXh0ZW5zaW9uc19pbnB1dF9mbiA9IHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAi
V2ViQ29yZSIgLyAicGxhdGZvcm0iIC8gImdyYXBoaWNzIiAvICJFeHRlbnNpb25zR0wuaCIKIAog
ZnVuY3Rpb25zX2lucHV0X2ZucyA9IFsKICAgICByb290X2RpciAvICJTb3VyY2UiIC8gIldlYktp
dCIgLyAiV2ViUHJvY2VzcyIgLyAiR1BVIiAvICJncmFwaGljcyIgLyAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oIgpAQCAtOTgsNyArOTcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUHJlcGFyZUZv
ckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRl
bnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCi0gICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKQorICAgIHZvaWQgTWFya0NvbnRleHRDaGFuZ2VkKCkKICAgICB2b2lkIFN5bnRo
ZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQogICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWlu
dDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCkBAIC00MjAsMTQgKzQxOSwxMiBAQCBjbGFzcyBjcHBf
ZnVuYyhvYmplY3QpOgogICAgIG5hbWU6IHN0cgogICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAogICAg
IHJldHVybl90eXBlOiBjcHBfdHlwZQotICAgIGlzX2V4dGVuc2lvbjogYm9vbAogICAgIG92ZXJs
b2FkX3N1ZmZpeDogc3RyCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTogc3RyLCByZXR1
cm5fdHlwZTogY3BwX3R5cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCwgaXNfZXh0ZW5zaW9uOiBib29s
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZTogc3RyLCByZXR1cm5fdHlwZTogY3BwX3R5
cGUsIGFyZ3M6IGNwcF9hcmdfbGlzdCk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAg
ICAgc2VsZi5yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlCiAgICAgICAgIHNlbGYuYXJncyA9IGFy
Z3MKLSAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBpc19leHRlbnNpb24KICAgICAgICAgc2Vs
Zi5vdmVybG9hZF9zdWZmaXggPSAiIgogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC03MTEs
NyArNzA4LDYgQEAgY2xhc3MgY29udGV4dF9wcm94eV9jcHBfd2Via2l0X2lwY19nZW5lcmF0b3Io
b2JqZWN0KToKIGNsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKICAgICBuYW1lOiBz
dHIKICAgICBhcmdzOiBjcHBfYXJnX2xpc3QKLSAgICBpc19leHRlbnNpb246IGJvb2wKICAgICBw
cmVfY2FsbF9zdG10czogTGlzdFtzdHJdCiAgICAgY2FsbF9zdG10czogTGlzdFtzdHJdCiAgICAg
cG9zdF9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KQEAgLTcyMyw3ICs3MTksNiBAQCBjbGFzcyB3ZWJr
aXRfaXBjX2NwcF9pbXBsKG9iamVjdCk6CiAgICAgICAgIHNlbGYubmFtZSA9IGNwcF9mdW5jLm5h
bWUKICAgICAgICAgc2VsZi5vdmVybG9hZF9zdWZmaXggPSBjcHBfZnVuYy5vdmVybG9hZF9zdWZm
aXgKICAgICAgICAgc2VsZi5hcmdzID0gY3BwX2FyZ19saXN0KFtdKQotICAgICAgICBzZWxmLmlz
X2V4dGVuc2lvbiA9IGNwcF9mdW5jLmlzX2V4dGVuc2lvbgogICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzID0gW10KICAgICAgICAgc2VsZi5jYWxsX3N0bXRzID0gW10KICAgICAgICAgc2VsZi5w
b3N0X2NhbGxfc3RtdHMgPSBbXQpAQCAtNzM4LDEyICs3MzMsMTEgQEAgY2xhc3Mgd2Via2l0X2lw
Y19jcHBfaW1wbChvYmplY3QpOgogCiAgICAgZGVmIHByb2Nlc3NfY2FsbChzZWxmKToKICAgICAg
ICAgc2VsZi5jYWxsX3N0bXRzICs9IFsgImFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7
IiBdCi0gICAgICAgIGV4dCA9ICJnZXRFeHRlbnNpb25zKCkuIiBpZiBzZWxmLmlzX2V4dGVuc2lv
biBlbHNlICIiCiAKICAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oc3RyKGUpIGZvciBlIGlu
IHNlbGYuaW5fZXhwcnMpCiAgICAgICAgIGlzX2FzeW5jID0gbGVuKHNlbGYub3V0X2V4cHJzKSA9
PSAwCiAKLSAgICAgICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntleHR9e3NlbGYubmFtZX0o
e2luX2V4cHJzfSkiCisgICAgICAgIGNhbGxfZXhwciA9IGYibV9jb250ZXh0LT57c2VsZi5uYW1l
fSh7aW5fZXhwcnN9KSIKICAgICAgICAgaWYgbm90IHNlbGYucmV0dXJuX3ZhbHVlX2V4cHI6CiAg
ICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gW2Yie2NhbGxfZXhwcn07Il0KICAgICAgICAg
ZWxzZToKQEAgLTg3OSw4ICs4NzMsOCBAQCBkZWYgY3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3Nw
ZWNzOiBJdGVyYWJsZVtzdHJdKToKICAgICByZXR1cm4gY3BwX2FyZ19saXN0KFtjcmVhdGVfY3Bw
X2FyZyhhcmdfc3BlYz1lLCBhcmdfaW5kZXg9aSkgZm9yIGksIGUgaW4gZW51bWVyYXRlKGFyZ3Nf
c3BlY3MpXSkKIAogCi1kZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6
IHN0ciwgYXJnc19zcGVjczogTGlzdFtzdHJdLCBpc19leHRlbnNpb246IGJvb2wpOgotICAgIHJl
dHVybiBjcHBfZnVuYyhuYW1lPW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1cm5f
c3BlYyksIGFyZ3M9Y3JlYXRlX2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSwgaXNfZXh0ZW5zaW9u
PWlzX2V4dGVuc2lvbikKK2RlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3RyLCByZXR1cm5fc3Bl
Yzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0pOgorICAgIHJldHVybiBjcHBfZnVuYyhuYW1l
PW5hbWUsIHJldHVybl90eXBlPWdldF9jcHBfdHlwZShyZXR1cm5fc3BlYyksIGFyZ3M9Y3JlYXRl
X2NwcF9hcmdfbGlzdChhcmdzX3NwZWNzKSkKIAogCiBkZWYgcmVhZF9saW5lc191bnRpbChsaW5l
cyA6IEl0ZXJhYmxlW3N0cl0sIG1hdGNoIDogc3RyKSAtPiBHZW5lcmF0b3Jbc3RyLCBOb25lLCBO
b25lXToKQEAgLTg5NiwyMCArODkwLDYgQEAgZGVmIG1haW4oKToKIAogICAgICMgQ29uc3RydWN0
IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byByZW1vdGUgZnJvbSB3ZWIgcHJvY2VzcyB0byBHUFUg
cHJvY2Vzcy4KIAotICAgICMgRklYTUU6IFVudGlsIGV4dGVuc2lvbnMgaGVhZGVyIGlzIHJlbW92
ZWQsIHdlIG5lZWQgdG8gY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24KLSAgICAjIHdpdGgg
dGhlIGRpc3RpbmN0aW9uIG9mIHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBvciBpcyBub3QgYW4gZXh0
ZW5zaW9uIGZ1bmN0aW9uLgotICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzIDogU2V0W3N0cl0gPSBz
ZXQoKQotICAgIHdpdGggb3BlbihleHRlbnNpb25zX2lucHV0X2ZuKSBhcyBmOgotICAgICAgICBm
b3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiLip2
aXJ0dWFsIChcUyspXHMrKFx3KylcKCguKilcKSA9IDA7IiwgbGluZSkKLSAgICAgICAgICAgIGlm
IG06Ci0gICAgICAgICAgICAgICAgZnVuYyA9IGNyZWF0ZV9jcHBfZnVuYygKLSAgICAgICAgICAg
ICAgICAgICAgbmFtZT1tWzJdLAotICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3BlYz1tWzFd
LAotICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1b
M10pLAotICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249VHJ1ZSwKLSAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMudXBkYXRlKFtzdHIo
ZnVuYyldKQogICAgIGZ1bmNzID0gW10KICAgICB1bmltcGxlbWVudGVkID0gW10KICAgICBmb3Ig
Zm4gaW4gZnVuY3Rpb25zX2lucHV0X2ZuczoKQEAgLTkyNiw5ICs5MDYsNyBAQCBkZWYgbWFpbigp
OgogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdW5jX25hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm5fc3BlYz1tWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgYXJn
c19zcGVjcz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlzX2V4dGVuc2lvbj1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgICAgICAgICBmdW5jLmlzX2V4dGVuc2lvbiA9IHN0cihmdW5jKSBpbiBleHRlbnNpb25fc2ln
bmF0dXJlcwogICAgICAgICAgICAgICAgICAgICBpZiBmdW5jLmlzX2ltcGxlbWVudGVkKCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoZnVuYykKICAgICAgICAgICAgICAg
ICAgICAgZWxzZToK
</data>
<flag name="commit-queue"
          id="478490"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451678</attachid>
            <date>2022-02-11 05:10:10 -0800</date>
            <delta_ts>2022-02-11 06:28:00 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236490-20220211151007.patch</filename>
            <type>text/plain</type>
            <size>279389</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uNDA1NWY5MWUxZDUyMjliMThkN2Y4MjlhMjFkNDVj
NDEwNTIxOGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJv
dGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFnZSI+
IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTM1
Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZWJjMDFjOWZiNDA4YmQxNjZk
NTQ2OTBkZTU4NjgzZjlhNjUxZjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTEx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDU3YzRhYTliMWExOGNjZmE5YWIyODdlNGUwYjM3MGVlM2FkNTA5Yy4uMWQ2
ODAxNTBlYmY5YzExMTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MDgsNyArMTkwOCw2IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICkKICAg
ICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFm
NWJhZmFjMi4uNDI4OWIxM2FkZTgwM2YyZjJhOTQwOTVjMzg1OGNkZWMzNzM3NTFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xNDM1LDcgKzE0MzUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgKQEAgLTE1NTMsNyArMTU1Miw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMTU4MSw3ICsxNTc5LDYgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
SGVhZGVycy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMjM5YTIyYmQxMDMwMjFkMTI3NTI2YTBmNDhjNzAxZDliNjc0MGUzNS4uYWRkYzEw
MjFmODA5M2UxMDE1OTZmYTc0ZGJhYjY5MGZjYzk4Zjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzIsMTIgKzI3MiwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwog
ICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbGlmIFVTRShP
UEVOR0xfRVMpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5z
aW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGF1dG8mIGV4dGVuc2lv
bnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4
dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwg
PSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsK
ICNlbHNlCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBhdXRvJiBleHRlbnNp
b25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCY+KGdsKS5nZXRF
eHRlbnNpb25zKCk7CiAgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2ls
ID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9D
T01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5U
OwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBG
cmFtZWJ1ZmZlcigpCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBnbC5nZXRJbnRlZ2VydihHTDo6
TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbHNlCi0g
ICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dM
U3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NHTFNwYW4oJm1heFNhbXBsZUNvdW50LCAx
KSk7CiAjZW5kaWYKICAgICAgICAgLy8gQ2FwIHRoZSBtYXhpdW11bSBtdWx0aXNhbXBsZSBjb3Vu
dCBhdCA0LiBBbnkgbW9yZSB0aGFuIHRoaXMgaXMgbGlrZWx5IG92ZXJraWxsIGFuZCB3aWxsIGlt
cGFjdCBwZXJmb3JtYW5jZS4KICAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1h
eFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0
YWIzM2E4YmQ3NWU3YTU4YS4uOGM4MDVmMmYwNzdmZmVjYWI3YzUxNWE2YWM3NzQ1ZmIzZWMxY2Nm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIwNzMsNyArMjA3Myw2IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQx
ZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uN2JkNWEyNGI0YTYxYWJhMjEwYmZiNDVhYThjYjczMzIz
MjJmNWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTUsNiArNjE1LDUgQEAgdGVz
dGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCiAvLyB3aXRo
IGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdMLgogCiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2
MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uYjQ1YmQwZDlmYTJkMWM1NmQ1ZGYyMGIx
MjZiYTJjMzU3YWY2NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NywxMSArMjE4Nyw4IEBACiAJCTZFNDdFNjYxMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJD
RDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQy
OTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBF
eHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Ki87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUy
OTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07
Ci0JCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDQyMjlDOUY4
RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi87IH07CiAJCTZFNzJGNTUxMjI5RENE
MUEwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLzsgfTsKIAkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RThBQ0RFRDIzMzQ1
Q0JDMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4QUNERUIyMzM0NUNBRjAwMjRBQUY1
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCAqLzsgfTsKQEAgLTI0MTIsNyArMjQwOSw2
IEBACiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhB
QzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5NUNGRUQyNzU0
RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwODY5LDggKzEwODY1LDYgQEAKIAkJNkUyNDJCMjkyMzM1OTNENzAw
MkNBREQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjQyQjJBMjMzNTkzRDgwMDJDQURENCAvKiBKU1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xB
TkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25z
R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQ0MjI5QzlG
OEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFyeUFOR0xFU2V0
dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYzMjI5REI5NzAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA5MDIsNyArMTA4OTYsNiBAQAogCQk2RTUzODhFMDI0NThBRTFEMDA3NkFFMDMgLyogV2Vi
R0xDb2xvckJ1ZmZlckZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTM4OEUxMjQ1OEFF
MUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29sb3JC
dWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTc2QkMzMjRF
QjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVu
c2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTdDQTMwQTI1QjREMjhB
MDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMTXVs
dGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFN0NBMzBCMjVCNEQzMjgw
MDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xNdWx0aURyYXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTg0RTlERTE3
NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE1MjYsNyArMTE1MTksNiBAQAogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I5MDQxNkUyNTUwMTEw
OTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTVDRkVDMjc1
NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1NDIsNyArMTE1MzQsNiBAQAogCQk3
QkREQTMxRDI3NEY5REE1MDAzODY1OUUgLyogR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzQ5Mjc1QTAxMzAwMDM4NjU5RSAvKiBQ
cm9jZXNzSWRlbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c0lkZW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzRCMjc1QTAx
MzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RUYy
NzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRkY1OUYxMjc1NzcxRTgwMDc3M0QzOSAv
KiBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdz
LmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0Mzk1LDggKzI0Mzg2LDYgQEAKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIg
LyogQU5HTEVIZWFkZXJzLmggKi8sCiAJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFO
R0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5H
TEVVdGlsaXRpZXMuaCAqLywKLQkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwICovLAotCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRl
bnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKIAkJCQk3Qjk1Q0ZFQzI3NTRGRjdDMDAwMDYwQ0Ug
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5
ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLApAQCAtMjg4NzAsNyArMjg4NTks
NiBAQAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcyQyAvKiBEaXNwbGF5VXBkYXRlLmNwcCAq
LywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMgLyogRGlzcGxheVVwZGF0ZS5oICovLAog
CQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLywK
LQkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8sCiAJCQkJ
MkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5jcHAgKi8sCiAJCQkJMkU4ODhD
QTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5oICovLAogCQkJCUIyNzUzNTNBMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKQEAgLTI5MDY1LDggKzI5MDUzLDYgQEAK
IAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyogUGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAot
CQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgKi8sCi0JCQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEw
OEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBF
QTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMzQ0NDEsOCArMzQ0MjcsNiBAQAogCQkJ
CTJEMjkzODZCMjM1RjZCNjkwMEM3RjNCMiAvKiBFeGNlcHRpb25EZXRhaWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTcyRjU1MDIyOURDRDE3MDBC
M0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0UyNzY1
MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY3NjEsNyArMzY3NDUsNiBA
QAogCQkJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjkwNDE3MDI1NTAxMTQy
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXli
YWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0MjE3
N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
ODY0OCw3ICszODYzMSw2IEBACiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1By
b3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyMjgzMDMyM0E4NDcwNzAwMzY0
QjdFIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTU5MjI4MEU5MjYw
MDJCMjJBQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkU3
MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdhbWVDb250
cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRENjE2MDBG
QTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRleCA4MjIwMzM5MTVk
MDRlM2IwYzI5NjJmYmI1MjM0ZTkzNGY5M2E3MTE3Li44NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZm
YzE4N2Y2Y2Y1YmJlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
QU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0yOCwxMCArMjgsNiBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbmNsdWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0o
R1RLKSB8fCBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKFdQRSkKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArMzgsNyBAQCBBTkdMRUluc3RhbmNlZEFycmF5czo6
QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKICNlbmRpZgogfQogCkBAIC01MywxMCArNDksMTAgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBBTkdMRUluc3RhbmNlZEFycmF5c05hbWU7CiB9CiAKLWJvb2wgQU5HTEVJbnN0YW5jZWRBcnJh
eXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBB
TkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDMyZWI4
OTdiMTZkOTA5ZDM5NGExMGE3ODUxYzFlMzI2NzU0ZWM5MzYuLjY5YzQ0ZGQ0OTEzYWZlM2Q1ZjBl
YjNkZjMwYTgxN2MzNGJmZjA4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKaW5kZXggMDllNTBjNGNiYWQzZjU5
OGEzMjJkOTA1MWM5ODNmZmIwZTdiMjVlNy4uNzk2NTYwYmQ0Y2U2YTUwOTYxNjNiZTE5NDAwYmVl
ZTI0ODJmMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsMTAgKzM3LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRD
b2xvckJ1ZmZlckZsb2F0KTsKIEVYVENvbG9yQnVmZmVyRmxvYXQ6OkVYVENvbG9yQnVmZmVyRmxv
YXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
S2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zs
b2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVYVENvbG9y
QnVmZmVyRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSAr
NTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckZsb2F0
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9
CiAKLWJvb2wgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZm
ZXJGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5oCmluZGV4IGViMjlmYTBlNTQ5M2EyNDgxMWNjMTA2ODczNjNhMWQ4OWNiZGZkNzYuLjk1NDhm
MGY5M2YwZTQ2N2Q2YjkyYWFlZmRjNTk1M2Y0OGQ1MzgwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCmluZGV4IDc5ZTFjYzE5ZDFlYmY3
ZWMwNzQ3ZTM2NWIyMGJmNDFiY2MzMzIwNGYuLjBlZmVkODNhZDZhOTFmMDQ0MWIyM2U0NzE0MmFi
OTg3NzgzMzQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KTsKIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0
OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29s
b3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
Il9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdCgpID0gZGVmYXVsdDsKQEAgLTQ4LDEwICs0NywxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0
ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxm
RmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZs
b2F0LmgKaW5kZXggMTA3NzllZjZjMmM5YzQyNmYzZDY1MTE2MWU4ZjZkMGRkZjIzY2Y3NS4uNmY0
YmM0ODFhMzA0ZjY0ZDQ1ZDkyMmIxYjcyMzExZmM5OGQ5Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKaW5kZXggOGVmNjg3OTMzYWFlY2Y1YjhkMzNjZTAy
MDc4ODJjMmJkZDU3ODk2MS4uYmRkODVkMDcwZDA4NzEzOTYzZGMxN2IxNjRhMmZiYWVlNjA3MDIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhURmxvYXRCbGVu
ZC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhURmxvYXRCbGVuZCk7CiBFWFRGbG9hdEJsZW5kOjpF
WFRGbG9hdEJsZW5kKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBFWFRGbG9hdEJsZW5kOjp+RVhURmxvYXRC
bGVuZCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgRVhURmxvYXRCbGVuZDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVYVEZs
b2F0QmxlbmROYW1lOwogfQogCi1ib29sIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBFWFRGbG9hdEJsZW5kOjpz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZmxvYXRfYmxlbmQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCmluZGV4IDIyYzMwMmEz
MzBhNjIyMjM1Y2Y2ODUyOTNjZDhjMTY4NTZhNDU3YmUuLjQ0NmI5ZmYzNzFkYzI5MmI4ZmU2MTgy
OTMyZDU4ZjU2NjYwNjc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZsb2F0QmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9h
dEJsZW5kLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcAppbmRleCA0NjNhNTg3M2NmMzA5NjMxMmQ5N2Q2MzI3ZjYxYWU4MWU0NzFkZDdk
Li40NmM5NjBmMTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM4LDEyICszNywxMiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9S
R1RDMl9FWFQpOwogfQogCiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCmluZGV4IDUyNzEzOGYzMGY3
NWZhZDA3Mzk4NTk0YjMzM2E3ZGY5YzE0MmQyODAuLmU2NmJiODI0M2E3Mzc5MjFhMGQ1MzUzNzVm
ZWM2Y2RmM2IzOWFmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCIKIAotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk7CiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGU6OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3BhcmFsbGVsX3NoYWRl
cl9jb21waWxlIl9zKTsKIH0KIAogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjp+S0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGVOYW1lOwogfQogCi1ib29s
IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3Bh
cmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKIH0KICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKaW5kZXggMWZjZmMyYjU4ZWQ5ZmI0ZTZkMTE3
NDE4NjE0N2RmM2JkYzAyNTNhOS4uODM4MDRkNmRmOWYyNjMxZDlhNzNkOTUwOGVhNzEwZjlhY2I1
MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1h
cC5jcHAKaW5kZXggNzFhODFkMGQ5MzA5ZDY0NGVlNDg2OGJkYWEyM2VkODc4NGFmNTIxYi4uNjUy
MjBiN2FiYzA3MTMzNTY1NmJkN2ZiMzUzNjJmM2U0YTIyZjZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIk9FU0ZCT1JlbmRlck1pcG1hcC5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTRkJPUmVuZGVyTWlwbWFwKTsKIE9FU0ZCT1JlbmRlck1pcG1h
cDo6T0VTRkJPUmVuZGVyTWlwbWFwKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiBPRVNG
Qk9SZW5kZXJNaXBtYXA6On5PRVNGQk9SZW5kZXJNaXBtYXAoKSA9IGRlZmF1bHQ7CkBAIC00OCw5
ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU0ZCT1JlbmRlck1pcG1h
cDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU0ZCT1JlbmRlck1pcG1hcE5hbWU7CiB9
CiAKLWJvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBt
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCmlu
ZGV4IDMzOTZmOWUxZTExNGU1MWFmY2RmZGQ4M2YzZWQyZWI2ODMzZTZkZjIuLjAyYTcyOGNjZWUx
ZmViZTAwNmQyZDk2YTRkMDg3MGQ4YTRmMjA0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwCmluZGV4IGU5MmIyZmVmYmYwOTQ2OGJlY2RiZDFlZjhkOWRkMjEwZDViOGMy
MGYuLjVkMWU4OTY3N2U2MTJjMjk3ZTQ2MjkxMTg0MzY3MzhmMzU5YjlkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTVGV4dHVyZUZsb2F0KTsKIE9FU1RleHR1cmVGbG9hdDo6T0VT
VGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9z
KTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWly
ZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAK
IE9FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTUzLDkg
KzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUZsb2F0Ojpn
ZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsKIH0KIAotYm9v
bCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0Nv
bnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsK
KyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxv
YXQiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IDhhNzI3NGRkZWNhOGY3ZDNiMjM0NjU2
YWIzZGY1YzdkOGZmZWQwNmMuLjEwZTE5ZWI3MGE3YmFkOTNlYzY5OWIwOWE2YTU3ODkyOWY1N2M4
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKaW5kZXggNDBiOTg5
OTZmNjdhYzFlOGFiNjVjZDY2NmQ2M2QyN2QzOWYzMWNlZS4uNGVhODY2ZGVlMjRjYzVhMGNlMWEz
MDgxZWU5NzM5Y2IwZTBhMzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUg
Ik9FU1RleHR1cmVIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9FU1RleHR1cmVIYWxm
RmxvYXQpOwogT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiX3MpOwogICAgIC8vIFJlbmRlcmFiaWxpdHkgaXMgaW1wbGljaXQgd2hl
biB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQog
CiBPRVNUZXh0dXJlSGFsZkZsb2F0Ojp+T0VTVGV4dHVyZUhhbGZGbG9hdCgpID0gZGVmYXVsdDsK
QEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVy
ZUhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU1RleHR1cmVIYWxmRmxv
YXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlSGFsZkZs
b2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXQuaAppbmRleCBhMzU0ZmNiN2UzOWI1MzBiZjQ5MzM2MTI5Njg5MTM2ZWE5NjIx
NjYzLi5kNTE5NDZhYmE0MzkwNGYzMDZlMWE3ZDA3Y2YwMGI5YWViZGU1MTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCAzMGQ0YjNmZjBj
YmQyNGY1MzgwODYzMGJjYzQzMDY3ZDhjZThmMDZkLi40ZjI4NWM1ZjRjMmUwMzAxZGJmNTQ3NDAz
Y2ZmMTBjYzg2OTRmZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
V0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDVhMzg3OTU3YzI2MDY2MjJkYjQ2ZjRiZjYw
ODhiZTMzMTA2MWFiYmIuLjZkMGE4NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTI0MCwxMCArMjM5LDEwIEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkK
IHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRoZSBXZWJHTCAyLjAgY29yZSBBUEkgYW5k
IHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgIG1fY29udGV4dC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIG1fY29u
dGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVw
dGgiKTsKIH0KIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRh
cmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKQEAgLTI3MTUs
MjAgKzI3MTQsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5l
YXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250
ZXh0IiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
QVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMxLCAiV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJU
QywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
LCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbywgbV93ZWJnbERlYnVnUmVuZGVyZXJJ
bmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIsIHRydWUpOwotICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9k
ZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUQ29sb3JCdWZmZXJGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdCIsIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwot
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29s
b3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xv
ckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1
cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRl
cnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9z
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENv
bG9yQnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBt
X2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVs
dGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIHRydWUpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtMjc0Myw0MiArMjc0Miw0MSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAo
bV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlm
IChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQorICAg
IGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6
c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAg
IH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykp
CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3Rj
Il9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250
ZXh0Il9zKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6
OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRo
aXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQi
X3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxl
bF9zaGFkZXJfY29tcGlsZSJfcyk7Ci0gICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0aV9kcmF3Il9zKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xv
ckJ1ZmZlckZsb2F0LmNwcAppbmRleCBhODFhNDljMmNhNzY5MzgwNTg2MjM0YzFmMjA5ZTQ4ZWEy
YzZkYzBmLi42YzBhOWJlNTYxZDc5ZTcwZDlmMzVkNThhOTcwNmM2NTU2NTBkODgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwx
MiArMzcsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29sb3JCdWZmZXJG
bG9hdCk7CiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OldlYkdMQ29sb3JCdWZmZXJGbG9hdChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CiAgICAgLy8gT3B0aW1p
c3RpY2FsbHkgZW5hYmxlIFJHQiBmbG9hdGluZy1wb2ludCByZW5kZXIgdGFyZ2V0cyBhbHNvLCBp
ZiBwb3NzaWJsZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOwogICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAgLy8gU3BlYyBy
ZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0bHkgaGVyZS4K
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsK
IH0KIAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2ViR0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBk
ZWZhdWx0OwpAQCAtNTMsMTAgKzUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1l
IFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojpz
dXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykKLSAgICAgICAgJiYgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpCisgICAgICAgICYmIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAppbmRleCAwZDJkMDdjMjU1
OTllMDRjY2VjYTA2NmE0NTk2NTA1ZDEwMmUxODY0Li45NGNkZWQ2Y2Q2MzY3YzE4ZDYwMDJhNmVh
ZWIyMTQwMzEzMjM5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXggNmVhY2ExZjJhMDI1MTc2ZGE0NTNiNTAw
MTI4YTM2ZjExMzZiODE1ZC4uNGZmMDIyZTllZDUxMmE5MmVkYTMxMDFjZjFjMjZjMmVlNWFmODM5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzksNDEgKzM4LDQxIEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyk7CiAKIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKLSAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfaGRyIl9zKSkKLSAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIl9zKSkKKyAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19oZHIiX3MpKQorICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lv
bl9hc3RjX2xkciJfcykpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tI
Uik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUik7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
Uik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CiAgICAgCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2
X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUik7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MngxMl9LSFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpAQCAtOTUsMTAgKzk0LDEwIEBAIFZlY3RvcjxT
dHJpbmc+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpnZXRTdXBwb3J0ZWRQcm9maWxlcygp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2hkciJfcykKLSAgICAgICAgfHwgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19oZHIiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKaW5kZXggMzBlZmUzZDgxYzFiOWI5NDYz
Mzk3MzFkMzc4ZDJjYzE3YTMxNTlmMC4uZmEwZTViOTllM2UxZjQ2Y2I4NTU0MDI3MjYyZTA2NWJm
MThmMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBnZXRTdXBwb3J0ZWRQcm9maWxlcygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNv
bnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSERSU3VwcG9y
dGVkIDogMTsKICAgICBib29sIG1faXNMRFJTdXBwb3J0ZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApp
bmRleCBjOWU3YmUzMGM2MzEwNTAzMDNkZmJlNjZhMTMzZmZkNDI0NmVjMjI5Li5iYzNlYmUyZDVl
NzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMjks
NyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTEgKzM4LDExIEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0g
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2Vk
X0FUQ190ZXh0dXJlIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQ
SEFfQU1EKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMoKSA9IGRlZmF1bHQ7CkBAIC01Myw5ICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDTmFtZTsKIH0KIAotYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU1EX2NvbXByZXNz
ZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oCmluZGV4IGUwYmQyNjYxMDk0NDBmY2IzMDdjOTNiMzVjNTQzMGIxZGQ5
NGQxZmEuLjEwNTY4YTlkZDk0YzNiZTI3NzhjMzI0Nzg5YzRmOGY3NTQ0YWE0YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4IDRmZWFhNWRkODc5MTIzNTkzMWY5
ODU5Zjk2NzBjNDY4YTVhM2JmYTMuLjkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5
ZjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zOSwxOCArMzgsMTggQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUjExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMy
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOwogfQogCiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpID0gZGVm
YXVsdDsKQEAgLTYwLDkgKzU5LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9v
bCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7
CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
CmluZGV4IDc0Njc3OGNjMmRlMDIzOWI5ZWUyYzc1M2RiMGY2OTJlMDRkODk3ZDQuLmMzODgyOTEx
YWI1OTZkOWYyMTA2YTgxODFlOWVmMjBjMjhkMDgxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZDlhN2NmYWI2OWU3NmVhZTMxN2VjMGJjZjU2NTQ5OTZj
ZjI0MTVlYS4uYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYxOTBiMTcwOTJmNjA4MDliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTKTsKKyAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhf
T0VTKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6On5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMSgpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMU5hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2NvbXBy
ZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKaW5kZXggMDZmZTI3YWFiMTc4M2RiYzFi
M2IwMWUxZWY0OTgwOWJkM2NkYjIzYy4uMDQ0OWY1NzA0NDY0YzI1NmJiMzgzZDc3NGFmYmM5ZTM2
ZjE3OTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoKTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApp
bmRleCAxYTIwYzA3ZDI3MzNjMTgwZTQ1YWRmYTQzZGFmOGU4NTM2YjQ0NWJhLi41YTg0OTllOWU0
Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQw
LDEyICszOSwxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQ
UFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKIH0KIAogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgPSBkZWZh
dWx0OwpAQCAtNTUsOSArNTQsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25f
cHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuaAppbmRleCBhODY2OWYwZWI4ZDAyZjA4OTgwMGNmMmMyNjViODFjN2E1ZjNj
YTVkLi4zMzcyYzI5YWIyNGU1Yzg5MGZhMzM3ZWIwZjk0OWVlZjllZjVjMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggMDdiYTRmYTViZTEy
NTdjM2M4MTIwMzc5OGMxZjk1ZmE3NzQ2YTlhZi4uZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBh
OTE4NmEzYTUwMjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00MCwxNSArMzksMTUgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKTsKIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKTsKLSAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgIGF1
dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAg
IGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQogCiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkg
PSBkZWZhdWx0OwpAQCAtNTgsMTYgKzU3LDE1IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CiAjaWYgVVNFKEFOR0xFKQotICAg
IHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAm
JiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDMiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKICNlbHNlCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgK
aW5kZXggYTM0NzNkOGVlZmJkMjIyZjFiMjZjYjEyOWQ0ZDQ0NzJjYzQxMTUwOS4uMWRiZjQ1YTRj
MGUyNDNiM2M2MDAwMTRmNTVmNmYwZDhmNTQ4MDM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRleCA1MGQwYmQ5MDdlOGZkZWU4ZmQ0MWQ2
NWQyMWI4ZDAwYTJmYWZmNTc3Li5mNjVmNDJhZTIyYWM3MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2
NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgi
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzks
MTMgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiIik7Ci0KLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0Y19zcmdiIik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6On5XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoKSA9IGRlZmF1bHQ7CkBAIC01NSwxMCArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0JOYW1lOwogfQog
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCmluZGV4IGM3OTNiOTE2ZGIwZTY2
Y2YzZTljNjc3MGY1NjYwN2YzMThmZjc0NmIuLjU5YTY2M2YxNGQxZmI0YmM2Yzg1ODY3NWY1NWY0
OGQ3YTdlZmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQigpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApp
bmRleCA2YjA0OTU0YTRhNTI5Y2U4ODJmMmE2NGJiM2Q4NjdmYTg0YzM4Y2YwLi5hNjlkYTI5MDM4
NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDcgKzQw
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVidWdTaGFkZXJzKTsKIFdl
YkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSIpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTcsNyArNTYsNyBAQCBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRl
cnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2Jq
ZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
Lm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9iamVjdCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IGE2OTE1MzIzYTg0OTQ0ZTU5YmMxNzJkM2Y1Yjk0MzM3
MjY4MTQzNzYuLjkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1NTgwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICszOCw5IEBAIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJHTERlcHRoVGV4dHVyZSk7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xE
ZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOworICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdM
RGVwdGhUZXh0dXJlKCkgPSBkZWZhdWx0OwpAQCAtNTIsOSArNTIsOCBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJv
b2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9k
ZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMGRjMTdlYTli
YzBjZGM3NGQxZTYxYzFmMDI1M2M4ZWNlYjM2ODk1My4uMDY3MGE0NzY0MmJmYmZlY2JkZWY1NjM3
OGEyYmViNWIxOGM5NWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3
QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQog
ewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
IH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBA
IC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRHJhd0J1
ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwog
I2VuZGlmCiB9CkBAIC03NSw3ICs3NCw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1
ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICB9CiAg
ICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJy
ZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hN
RU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyBidWZzWzBdID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCQUNLID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOworICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKHZhbHVlKTsKICAg
ICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0woY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAg
ICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAh
PSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKKyAgICAgICAgICAg
IGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FICYmIGJ1ZnNbaV0gIT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhU
IG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC05
OCw4ICs5Nyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlz
IHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50
ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKLSAgICBHQ0dMaW50IG1h
eENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNv
bnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
KTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAo
bWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywxMCArMTA2LDEwIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
d2ViCiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAw
LCAwLCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBm
b3Igb3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRo
U3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3Rl
bmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRo
U3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggNTBiYWNmNTY0ZmNhZjY2NmY4
NTdiZDQ5MTU2Mjc5NDJjZmM1MjA3My4uNDlmYjFkZGRmNThhOGVkZmMwMWI0OGRhNWRmZjQ5Nzcx
Zjc2ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKQEAgLTI3OSwyMSArMjc4LDIxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJp
dHNCeUF0dGFjaG1lbnRUeXBlKEdDR0xlbnVtIGF0dGFjaG1lbnQpCiB7CiAgICAgc3dpdGNoIChh
dHRhY2htZW50KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVO
VDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNI
TUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDhfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1F
TlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ1
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDdfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQxNV9FWFQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQlVGRkVSX0JJVDsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9BVFRBQ0hN
RU5UOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7
CkBAIC0zNjMsOCArMzYyLDggQEAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9ybWF0
KEdDR0xlbnVtIGZvcm1hdCkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMTZJOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEzMkk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQTMyVUk6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhB
X0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDE2OgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDI0OgpAQCAtNjMzLDcgKzYzMiw3
IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiBy
ZWFzb24pIGNvbnN0CiAgICAgICAgIEdDR0xlbnVtIGF0dGFjaG1lbnRGb3JtYXQgPSBhdHRhY2ht
ZW50LT5nZXRGb3JtYXQoKTsKIAogICAgICAgICAvLyBBdHRhY2hpbmcgYW4gU1JHQl9FWFQgZm9y
bWF0IGF0dGFjaG1lbnQgdG8gYSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkLgotICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUKQorICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQpCiAgICAgICAg
ICAgICBhdHRhY2htZW50Rm9ybWF0ID0gMDsKIAogICAgICAgICBpZiAoIWF0dGFjaG1lbnRGb3Jt
YXQpIHsKQEAgLTgzMywxOCArODMyLDE4IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1
ZmZlcnNJZk5lY2Vzc2FyeShib29sIGZvcmNlKQogICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+
aXNXZWJHTDIoKSkKICAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdM
KCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKG1f
ZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIEdDR0xlbnVtIFdl
YkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoR0NHTGVudW0gZHJhd0J1ZmZlcikKIHsKLSAg
ICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGRyYXdCdWZmZXIgLSBFeHRlbnNpb25zR0w6
OkRSQVdfQlVGRkVSMF9FWFQpOworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJh
d0J1ZmZlciAtIEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUKTsKICAgICBBU1NF
UlQoaW5kZXggPj0gMCk7CiAgICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihtX2RyYXdC
dWZmZXJzLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBtX2RyYXdCdWZmZXJzW2luZGV4XTsKLSAg
ICBpZiAoZHJhd0J1ZmZlciA9PSBFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQpCisgICAg
aWYgKGRyYXdCdWZmZXIgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVGRkVSMF9FWFQpCiAg
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDA7CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCmluZGV4IDY0YjE1ZDVmZjg2MTNjZmQ3ODRjN2Uz
MWQwMjJkNTNiZDYxM2NlZmUuLmYxY2M1NmM5ZGZiMTg4NGI4YjhkZWFhMmVlZmU1ODI3ZjkyZmVl
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xNdWx0
aURyYXcuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQyLDggQEAg
c3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlE
cmF3OjpJbnQzMkxpc3QmIGxpc3QsIEcKIFdlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKTsKLSAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX211bHRpX2RyYXciX3MpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiB9CiAKIFdlYkdMTXVsdGlEcmF3Ojp+V2ViR0xN
dWx0aURyYXcoKSA9IGRlZmF1bHQ7CkBAIC01NCwxMCArNTMsMTAgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBXZWJHTE11bHRpRHJhd05hbWU7CiB9CiAKLWJvb2wgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRl
ZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJl
dHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKLSAgICAgICAgJiYgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6
bXVsdGlEcmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3Qs
IEdDR0x1aW50IGZpcnN0c09mZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNv
dW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5oCmluZGV4IDY1OTI5ZjUxY2FiOGJmODkyN2I3YzkwYmU5NmMx
OGU0ODMxODFkNzYuLjUwZDZkYjgxYTJkOTc0Mzg4MDBiNGU3OWRhMzEyYTIwMjIyNTBkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
Jik7CiAKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c1dFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMy
TGlzdCBmaXJzdHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNM
aXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBmYTU3YmI1NDAyM2UzZmY5OTYzNGIzYTk5OTE4ZTA5M2NhYTJkNGJiLi5jOTYwYzI2
MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAi
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKQEAgLTE1MywxMCArMTUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0RlcHRoLCAiRVhUX2ZyYWdfZGVwdGgiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSkg
ewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVyZUxPRCkgewotICAgICAgICAgICAgaWYg
KCEobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9B
UkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCisgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkp
CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJfcyk7CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0g
YWRvcHRSZWYobmV3IEVYVFNoYWRlclRleHR1cmVMT0QoKnRoaXMpKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0xNjUsMzEgKzE2NCwzMSBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIH0KICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCAiRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJh
bGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVk
KCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21w
aWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwog
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTU3RhbmRhcmREZXJpdmF0aXZlcywgbV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZW5hYmxlU3VwcG9y
dGVkRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNf
dGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAi
T0VTX3RleHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKTsKLSAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBw
b3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxv
YXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNU
ZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChPRVNWZXJ0ZXhBcnJheU9iamVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoT0VTRWxlbWVudEluZGV4VWludCwgbV9vZXNFbGVtZW50SW5kZXhVaW50LCAiT0VTX2VsZW1l
bnRfaW5kZXhfdWludCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTRkJPUmVuZGVyTWlw
bWFwLCBtX29lc0ZCT1JlbmRlck1pcG1hcCwgIk9FU19mYm9fcmVuZGVyX21pcG1hcCIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQs
ICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3Ny
Z2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlcHRoVGV4dHVyZSwgbV93ZWJnbERl
cHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiLCBXZWJHTERlcHRoVGV4dHVyZTo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCR0xfZHJhd19idWZmZXJzIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZl
cnMpIHsKICAgICAgICAgICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IGFkb3B0UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJz
KCp0aGlzKSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQpAQCAtMTk4LDEwICsx
OTcsMTAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSkgewogICAgICAgICBpZiAoIW1f
YW5nbGVJbnN0YW5jZWRBcnJheXMpIHsKLSAgICAgICAgICAgIGlmICghQU5HTEVJbnN0YW5jZWRB
cnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgICAgICAgICBpZiAoIUFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBhZG9wdFJlZihuZXcgQU5HTEVJbnN0YW5j
ZWRBcnJheXMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0y
MDksMTEgKzIwOCwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gbV9hbmdsZUlu
c3RhbmNlZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1
Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIl9zKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwg
IkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTE11
bHRpRHJhdywgbV93ZWJnbE11bHRpRHJhdywgIldFQkdMX211bHRpX2RyYXciLCBXZWJHTE11bHRp
RHJhdzo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJF
WFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC0yMjcsNjkgKzIyNiw2OSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIGlm
IChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9ibGVu
ZF9taW5tYXgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21p
bm1heCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9FWFRfc1JHQiJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X0VYVF9zUkdCIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiX3MpOwotICAg
IGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVw
dGgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZnJh
Z19kZXB0aCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mcmFnX2RlcHRoIl9zKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFk
ZXJfdGV4dHVyZV9sb2QiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9z
KSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKKyAgICBp
ZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7Ci0gICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVt
ZW50X2luZGV4X3VpbnQiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMi
X3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NS
R0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgaWYgKFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlcHRoX3RleHR1cmUiX3MpOwogICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgaWYgKEFOR0xF
SW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChBTkdMRUluc3RhbmNl
ZEFycmF5czo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpCisg
ICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3No
YWRlcnMiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8i
X3MpOwotICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkK
KyAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsK
LSAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhURmxv
YXRCbGVuZDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfZmxvYXRfYmxlbmQiX3MpOwotICAgIGlmIChXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCpt
X2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxv
YXQiX3MpOwotICAgIGlmIChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhp
cykpCisgICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUi
KTsKLSAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQkdMX211bHRpX2RyYXciX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMCw3
ICszMjksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgogICAg
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CkBAIC0zNDMsMTYgKzM0MiwxNiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyPihvYmpl
Y3QpOwotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQ6IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKICAgICAgICAgICAgIGlm
ICghbV9leHRzUkdCKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciByZW5kZXJidWZmZXIgYXR0YWNobWVu
dCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiByZW5kZXJCdWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2JqZWN0LmdldCgpKTsKICAgICAgICAgICAg
IEdDR0xlbnVtIHJlbmRlckJ1ZmZlckZvcm1hdCA9IHJlbmRlckJ1ZmZlci0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEV4
dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpOworICAgICAgICAgICAg
QVNTRVJUKHJlbmRlckJ1ZmZlckZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQg
JiYgcmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VCk7CisgICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCOF9BTFBIQThfRVhUKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKTsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTM2Nyw5ICszNjYsOSBAQCBHQ0dMaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFX
X0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6
Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtMzc5
LDcgKzM3OCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29s
b3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKQEAgLTQ1
NCw5ICs0NTMsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEVx
dWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZVTkNfQUREOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZVTkNfU1VC
VFJBQ1Q6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19SRVZFUlNFX1NVQlRSQUNU
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNSU5fRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfRVhUOgotICAgICAgICBpZiAoKG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNSU5fRVhUIHx8
IG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNQVhfRVhUKSAmJiAhbV9leHRCbGVuZE1pbk1heCkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0VYVDoKKyAgICAgICAgaWYgKChtb2RlID09IEdyYXBoaWNzQ29udGV4dEdM
OjpNSU5fRVhUIHx8IG1vZGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9FWFQpICYmICFtX2V4
dEJsZW5kTWluTWF4KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIG1vZGUiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBi
OGI1ZmI2NWFjZjQxMmU5MzIyNTI0NWE0MWE1ZDgxODE1NTVkNjgxLi5hNWVlOGUzNzVhMzUzZThj
ODkyNGM4NjA3MDY4YWI2NGNmNjg4MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUg
IkVYVHNSR0IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01NTUsMTIgKzU1NCwxMiBAQCBzdGF0aWMg
dWludDhfdCBnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JBKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
NTY1OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KENoYW5uZWxCaXRzOjpSR0IpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCNV9BMToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCQSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfQ09NUE9ORU5UOgpAQCAtNjQzLDggKzY0Miw4IEBAIHN0YXRpYyBib29sIHBv
c3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMCiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NURU5DSUw4LCBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0lOVF8yNF84KTsKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEgzMkZfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVO
Q0lMLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfRVhU
LCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdC
X0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhULCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhULCBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9BTFBIQV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA5MSwx
NyArMTA5MCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3Mo
KQogICAgIC8vIHR1cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJD
b21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dM
RVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAg
ICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAg
ICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRo
X3RleHR1cmUiKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dM
RVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxzZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0
ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVf
bm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdv
Iik7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRl
eHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikgfHwg
bV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsK
ICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAgbV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3JvYnVzdG5lc3MiKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0zMzAzLDkgKzMzMDIs
OSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiAiV2ViR0wgMS4wIl9zdHI7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRf
T0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgaWYgKG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcykKLSAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRl
cihFeHRlbnNpb25zR0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRH
TDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOwogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFdlYkdMRGVidWdS
ZW5kZXJlckluZm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgpAQCAtMzMzNiwyNSArMzMzNSwy
NSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxlZCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8v
IEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAobV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJh
bWV0ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAg
ICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOwogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVmZmVycyBCRUdJTgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQ6IC8v
IEVYVF9kcmF3X2J1ZmZlcnMgQkVHSU4KICAgICAgICAgaWYgKG1fd2ViZ2xEcmF3QnVmZmVycyB8
fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdldE1heENvbG9yQXR0YWNobWVudHMo
KTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kcmF3
X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgogICAgICAgICBpZiAobV93ZWJnbERyYXdC
dWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0TWF4RHJhd0J1ZmZl
cnMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9k
cmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkK
LSAgICAgICAgICAgICYmIHBuYW1lID49IEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVAot
ICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dM
OjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkpIHsKKyAgICAgICAgICAg
ICYmIHBuYW1lID49IEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUCisgICAgICAg
ICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xlbnVtPihHcmFwaGljc0NvbnRleHRHTDo6
RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7CiAgICAgICAgICAgICBH
Q0dMaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiAgICAgICAgICAgICBpZiAo
bV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX2ZyYW1lYnVm
ZmVyQmluZGluZy0+Z2V0RHJhd0J1ZmZlcihwbmFtZSk7CkBAIC0zMzcyLDcgKzMzNzEsNyBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIC8vIENPTVBMRVRJT05fU1RBVFVTX0tIUiBzaG91
bGQgYWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IGlzIGxvc3QsIHNvIGFwcGxpY2F0
aW9ucwogICAgIC8vIGRvbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBwb2xsaW5nIGxvb3Au
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkgewotICAgICAgICBpZiAocG5hbWUg
PT0gRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFIpCisgICAgICAgIGlmIChwbmFt
ZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTMzOTks
NyArMzM5OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2toclBhcmFsbGVsU2hhZGVy
Q29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQcm9ncmFtUGFy
YW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5hYmxlZCIpOwpAQCAt
MzUwMyw3ICszNTAyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKICAgICAvLyBDT01QTEVU
SU9OX1NUQVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBp
cyBsb3N0LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5m
aW5pdGUgcG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpIHsK
LSAgICAgICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hS
KQorICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RB
VFVTX0tIUikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0zNTE3LDcgKzM1MTYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQt
PmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQYXJhbGxlbFNoYWRlckNv
bXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRl
ciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVuYWJsZWQiKTsKQEAgLTM1ODYs
NyArMzU4NSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYg
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQogICAgICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMgbm90IGVuYWJsZWQiKTsKQEAgLTM5NTksNyArMzk1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CiAgICAgICAgIGlz
VmFsaWQgPSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJB
R01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcywgb3IgY29yZSBpbiBXZWJHTCAyLjAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpG
UkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzLCBvciBjb3JlIGluIFdlYkdMIDIuMAogICAgICAgICBpZiAobV9vZXNTdGFuZGFyZERl
cml2YXRpdmVzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CkBAIC00NjEwLDggKzQ2MDksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VJbXBsKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
egogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjVfQTE6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6UkdCNTY1OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxf
SU5ERVg4OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUOgotICAgICAg
ICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUICYm
ICFtX2V4dHNSR0IpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThf
RVhUOgorICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNS
R0I4X0FMUEhBOF9FWFQgJiYgIW1fZXh0c1JHQikgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBpbnRlcm5hbGZvcm1hdCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC00NjIyLDcgKzQ2MjEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VJbXBsKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpegogICAgICAgICBicmVh
azsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMOgogICAgICAgICBp
ZiAoaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSkKLSAgICAgICAgICAgIG1fY29udGV4dC0+cmVu
ZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIEV4dGVuc2lvbnNHTDo6REVQVEgyNF9TVEVOQ0lMOCwg
d2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UodGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhl
aWdodCk7CiAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+c2V0U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJc1ZhbGlkKGlzRGVwdGhT
dGVuY2lsU3VwcG9ydGVkKCkpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmctPnNldElu
dGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0KTsKQEAgLTU2MTYsOCArNTYxNSw4IEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShj
b25zdCBjaGFyKiBmdW5jdGlvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VDoKICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgInNSR0Ig
dGV4dHVyZSBmb3JtYXRzIG5vdCBlbmFibGVkIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC01Nzc1LDcgKzU3NzQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgIElOVEVS
TkFMX0ZPUk1BVF9DQVNFKERFUFRIX1NURU5DSUwgICAgICwgREVQVEhfU1RFTkNJTCAgLCBHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzggICAgICAgICAgICAgLCAwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAw
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIElOVEVSTkFMX0ZPUk1BVF9DQVNFKERFUFRI
MjRfU1RFTkNJTDggICwgREVQVEhfU1RFTkNJTCAgLCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdO
RURfSU5UXzI0XzggICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAg
ICApOwogICAgIElOVEVSTkFMX0ZPUk1BVF9DQVNFKERFUFRIMzJGX1NURU5DSUw4ICwgREVQVEhf
U1RFTkNJTCAgLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0Xzhf
UkVWLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVDoK
ICAgICAgICAgaWYgKGZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkgewogICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IG11c3QgbWF0Y2giKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU3ODUsNyArNTc4NCw3IEBAIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFy
KiBmdW5jdGlvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICBpZiAoZm9ybWF0ICE9
IGludGVybmFsRm9ybWF0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImZvcm1hdCBhbmQg
aW50ZXJuYWxmb3JtYXQgbXVzdCBtYXRjaCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTk2OCw3ICs1OTY3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhQ
YXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0MKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYgKCFt
X2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInRleFBhcmFtZXRlciIsICJp
bnZhbGlkIHBhcmFtZXRlciwgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFi
bGVkIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC02Mzg1LDcgKzYzODQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMb3N0QwogICAgICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCk7CiAg
ICAgICAgIGlmIChjYW52YXMpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1l
ID0gY2FudmFzLT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRleHQobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2NvbnRleHQtPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY4OTgsMTgg
KzY4OTcsMTggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgQmxvY2tQYXJhbWV0
ZXJzIHsgMTIsIDEwLCBrQVNUQ0Jsb2NrU2l6ZSB9LAogICAgICAgICBCbG9ja1BhcmFtZXRlcnMg
eyAxMiwgMTIsIGtBU1RDQmxvY2tTaXplIH0KICAgICB9OwotICAgIGNvbnN0IEdDR0xlbnVtIEFT
VENFbnVtU3RhcnRSR0JBID0gRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRf
S0hSOwotICAgIGNvbnN0IEdDR0xlbnVtIEFTVENFbnVtU3RhcnRTUkdCOCA9IEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOworICAgIGNvbnN0IEdDR0xl
bnVtIEFTVENFbnVtU3RhcnRSR0JBID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzR4NF9LSFI7CisgICAgY29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFNSR0I4ID0g
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjsK
IAogICAgIGNvbnN0IGludCBrRUFDQW5kRVRDMkJsb2NrU2l6ZSA9IDQ7CiAKICAgICBzd2l0Y2gg
KGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9F
WFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTOiB7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVM6IHsKICAgICAgICAgY29uc3Qg
aW50IGtCbG9ja1NpemUgPSA4OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0Owog
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTY5MTgsMTIgKzY5MTcsMTIg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhG
dW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJs
b2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
M19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RD
X0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENf
UkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQ
SEFfQU1EOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
SU5URVJQT0xBVEVEX0FMUEhBX0FNRDoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50
IGtCbG9ja1NpemUgPSAxNjsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7
CkBAIC02OTMzLDggKzY5MzIsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAg
ICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxv
Y2tTaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgogICAgICAgICB7
CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgICAgICBjb25z
dCBpbnQga0Jsb2NrV2lkdGggPSA4OwpAQCAtNjk0Miw4ICs2OTQxLDggQEAgYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBj
aGFyKiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgs
IGtCbG9ja1dpZHRoKSAqIHN0ZDo6bWF4KGhlaWdodCwga0Jsb2NrSGVpZ2h0KSAqIDQgKyA3KSAv
IGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKICAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDE2OwpAQCAtNjk1MSw0NCArNjk1MCw0NCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1h
eCh3aWR0aCwga0Jsb2NrV2lkdGgpICogc3RkOjptYXgoaGVpZ2h0LCBrQmxvY2tIZWlnaHQpICog
MiArIDcpIC8ga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfMTB4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9B
U1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ180eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CiAgICAg
ICAgIGJ5dGVzUmVxdWlyZWQgPSBjYWxjdWxhdGVCeXRlc0ZvckFTVEMod2lkdGgsIGhlaWdodCwg
QVNUQ1BhcmFtZXRlcnNbZm9ybWF0IC0gQVNUQ0VudW1TdGFydFJHQkFdKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
NHg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzV4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tI
UjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9L
SFI6CiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBjYWxjdWxhdGVCeXRlc0ZvckFTVEMod2lkdGgs
IGhlaWdodCwgQVNUQ1BhcmFtZXRlcnNbZm9ybWF0IC0gQVNUQ0VudW1TdGFydFNSR0I4XSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOiB7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VU
QzI6IHsKICAgICAgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQnl0ZXNSZXF1aXJlZCA9ICh3aWR0
aCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAg
ICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gKGhlaWdodCArIGtFQUNBbmRFVEMyQmxvY2tT
aXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAgICAgICAgY2hlY2tlZEJ5dGVzUmVx
dWlyZWQgKj0gODsKQEAgLTY5OTksMTAgKzY5OTgsMTAgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5j
dGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9F
QUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogeworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogewogICAg
ICAgICBDaGVja2VkVWludDMyIGNoZWNrZWRCeXRlc1JlcXVpcmVkID0gKHdpZHRoICsga0VBQ0Fu
ZEVUQzJCbG9ja1NpemUgLSAxKSAvIGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVj
a2VkQnl0ZXNSZXF1aXJlZCAqPSAoaGVpZ2h0ICsga0VBQ0FuZEVUQzJCbG9ja1NpemUgLSAxKSAv
IGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVja2VkQnl0ZXNSZXF1aXJlZCAqPSAx
NjsKQEAgLTcwMTMsOCArNzAxMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAg
IGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQ6IHsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VY
VDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgIGNvbnN0IGlu
dCBrQmxvY2tXaWR0aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpA
QCAtNzAyMyw4ICs3MDIyLDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0
ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXpl
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOiB7CiAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0
aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpAQCAtNzA0OSwxNCAr
NzA0OCwxNCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZv
cm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQ1X0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKICAg
ICAgICAgY29uc3QgR0NHTHNpemVpIGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgR0NH
THNpemVpIGtCbG9ja0hlaWdodCA9IDQ7CiAgICAgICAgIGNvbnN0IEdDR0xpbnQgbWF4VGV4dHVy
ZVNpemUgPSB0YXJnZXQgPyBtX21heFRleHR1cmVTaXplIDogbV9tYXhDdWJlTWFwVGV4dHVyZVNp
emU7CkBAIC03MDY5LDU1ICs3MDY4LDU1IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1H
OgogICAgICAgICAvLyBIZWlnaHQgYW5kIHdpZHRoIG11c3QgYmUgcG93ZXJzIG9mIDIuCiAgICAg
ICAgIGlmICgod2lkdGggJiAod2lkdGggLSAxKSkgfHwgKGhlaWdodCAmIChoZWlnaHQgLSAxKSkp
IHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IGludmFsaWQgZm9y
IGxldmVsIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4
NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
Xzh4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFf
RUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182
eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
Xzh4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNng1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMngxMl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUM6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRD
Ml9FQUM6CiAgICAgICAgIC8vIE5vIGhlaWdodCBhbmQgd2lkdGggcmVzdHJpY3Rpb25zIG9uIEFT
VEMsIEVUQzEgb3IgRVRDMi4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAg
LTcxMzMsMTQgKzcxMzIsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICB9CiAKICAg
ICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19E
WFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1Mz
VENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQ1X0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
NV9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29u
c3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CiAgICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dp
ZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpIHsKQEAgLTcxNTQsMTAgKzcxNTMsMTAg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhT
dWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFs
aWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWws
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6
IHsKICAgICAgICAgaWYgKHhvZmZzZXQgfHwgeW9mZnNldCkgewogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlv
bk5hbWUsICJ4b2Zmc2V0IGFuZCB5b2Zmc2V0IG11c3QgYmUgemVybyIpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzE2OSwxOSArNzE2OCwxOSBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoY29uc3QgY2hh
ciogZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1l
bnNpb25zKGZ1bmN0aW9uTmFtZSwgdGFyZ2V0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
KTsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkVUQzFfUkdCOF9PRVM6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzoKICAgICAgICAgLy8gTm90IHN1cHBv
cnRlZCBmb3IgRVRDMV9SR0I4X09FUyB0ZXh0dXJlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU0lHTkVEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1Ix
MV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfRVRDMl9FQUM6IHsKICAgICAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV8zRCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJub3Qgc3Vw
cG9ydGVkIG9uIFRFWFRVUkVfM0QgdGV4dHVyZXMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTc2OTgsNyArNzY5Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgaWYgKCFtX3Jlc3RvcmVBbGxvd2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgaW50IGNvbnRleHRM
b3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAKICAg
ICBzd2l0Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Tk9fRVJST1I6CkBAIC03NzA3LDE1ICs3NzA2LDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgICAgIC8vIFdFQkdMX2xvc2Vf
Y29udGV4dCBleHRlbnNpb24gbWlnaHQgaGF2ZSBiZWVuIHVzZWQgdG8gZm9yY2UKICAgICAgICAg
Ly8gYSBsb3N0IGNvbnRleHQuCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIGNvbnRl
eHQgaXMgbm90IHJlc3RvcmVkIGlmIHRoaXMgY29udGV4dCB3YXMKICAgICAgICAgLy8gZ3VpbHR5
IG9mIGNhdXNpbmcgdGhlIGdyYXBoaWNzIHJlc2V0LgogICAgICAgICBwcmludFRvQ29uc29sZShN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXQVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRoZSBwYWdl
IGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNldDsgbm90IHJlc3RvcmluZyB0aGUgY29u
dGV4dCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OklOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OklOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBBbHdheXMgYWxsb3cgdGhlIGNvbnRleHQg
dG8gYmUgcmVzdG9yZWQuCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpV
TktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVO
S05PV05fQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIFdhcm4uIElkZWFsbHksIHByb21w
dCB0aGUgdXNlciB0ZWxsaW5nIHRoZW0gdGhhdCBXZWJHTAogICAgICAgICAvLyBjb250ZW50IG9u
IHRoZSBwYWdlIG1pZ2h0IGhhdmUgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvCiAgICAgICAg
IC8vIHJlc2V0IGFuZCBhc2sgdGhlbSB3aGV0aGVyIHRoZXkgd2FudCB0byBjb250aW51ZSBydW5u
aW5nCkBAIC03ODgyLDkgKzc4ODEsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBt
X21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0RSQVdfQlVGRkVSU19FWFQpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAg
ICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRB
Q0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQp
OwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVO
VFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVm
ZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTc4OTQsNyArNzg5Myw3IEBAIEdD
R0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygp
CiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX21heENvbG9yQXR0YWNobWVu
dHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNI
TUVOVFNfRVhUKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsK
ICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCkBAIC04MDM5LDExICs4MDM4
LDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliRGl2aXNv
cihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2CiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uTmFt
ZUxpdGVyYWwpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIFN0cmluZyBleHRlbnNpb25OYW1l
IHsgZXh0ZW5zaW9uTmFtZUxpdGVyYWwgfTsKLSAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMo
ZXh0ZW5zaW9uTmFtZSkpCisgICAgaWYgKCFtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKGV4
dGVuc2lvbk5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKGV4dGVuc2lvbk5hbWUpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChleHRlbnNpb25OYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcAppbmRleCA3MmI5Njg4ZTZmOTVlZmMyYzAwOTllZWJkNWRlY2Q0MzNlZDY5YWNmLi5lMTIx
MTZkODBlNjAzOWM3Y2Q4MjNiMzljOTE4NWVjMjcwM2NhOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcApA
QCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDdhN2ExYjVmMjRjNThjMDg5YzIwOWYyZWYzMDM1
MzMxMzQ0NjE3NzguLjc5NDM1YTNhYzI0NzU2ZjdmOWQ5NGE1OTI2YzIwMTZlOTExNjcyMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNDEsNyArMzQx
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dX
ZWJHTChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdz
OyB9CiAgICAgLy8gSW5mb3JtcyB0aGUgZW1iZWRkZXIgdGhhdCBhIFdlYkdMIGNhbnZhcyBpbnNp
ZGUgdGhpcyBmcmFtZSByZWNlaXZlZCBhIGxvc3QgY29udGV4dAotICAgIC8vIG5vdGlmaWNhdGlv
biB3aXRoIHRoZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9pbm5vY2VuY2UgY29kZSAo
c2VlIEV4dGVuc2lvbnNHTC5oKS4KKyAgICAvLyBub3RpZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4g
R0xfQVJCX3JvYnVzdG5lc3MgZ3VpbHQvaW5ub2NlbmNlIGNvZGUgKHNlZSBHcmFwaGljc0NvbnRl
eHRHTC5oKS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZVdlYkdMQ29udGV4dChpbnQpIHsgfQog
ICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYp
IGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAg
ICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9u
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjA3NjMwOGM1OGEwYmQ0NTkzOWIwYTdi
YzVlNjI0ZDU2NGViNTEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBpcyBhIGJhc2UgY2xhc3MgY29u
dGFpbmluZyBvbmx5IHB1cmUgdmlydHVhbCBmdW5jdGlvbnMuCi0vLyBJbXBsZW1lbnRhdGlvbnMg
bXVzdCBwcm92aWRlIGEgc3ViY2xhc3MuCi0vLwotLy8gVGhlIHN1cHBvcnRlZCBleHRlbnNpb25z
IGFyZSBkZWZpbmVkIGJlbG93IGFuZCBpbiBzdWJjbGFzc2VzLAotLy8gcG9zc2libHkgcGxhdGZv
cm0tc3BlY2lmaWMgb25lcy4KLS8vCi0vLyBDYWxsaW5nIGFueSBleHRlbnNpb24gZnVuY3Rpb24g
bm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBjb250ZXh0Ci0vLyBtdXN0IGJlIGEgbm8tb3A7
IGluIHBhcnRpY3VsYXIsIGl0IG1heSBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuIEluCi0vLyB0aGlz
IHNpdHVhdGlvbiwgaWYgdGhlIGZ1bmN0aW9uIGhhcyBhIHJldHVybiB2YWx1ZSwgMCBpcyByZXR1
cm5lZC4KLWNsYXNzIEV4dGVuc2lvbnNHTCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RXh0ZW5z
aW9uc0dMKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gU3VwcG9ydGVkIGV4dGVuc2lvbnM6Ci0gICAg
Ly8gICBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICAvLyAgIEdMX0VYVF9yZWFk
X2Zvcm1hdF9iZ3JhCi0gICAgLy8gICBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vICAgR0xfQVJC
X3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byAvIEdMX09FU190ZXh0dXJlX25wb3QKLSAgICAvLyAg
IEdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCAvIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bAotICAgIC8vICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAvIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlCi0gICAgLy8gICBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190
ZXh0dXJlCi0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdAotICAgIC8vICAgR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyCi0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0g
ICAgLy8gICBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhcgotICAgIC8vICAgR0xfT0VT
X3N0YW5kYXJkX2Rlcml2YXRpdmVzCi0gICAgLy8gICBHTF9PRVNfcmdiOF9yZ2JhOAotICAgIC8v
ICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKLSAgICAvLyAgIEdMX09FU19lbGVtZW50X2lu
ZGV4X3VpbnQKLSAgICAvLyAgIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAg
IC8vICAgR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIChvbmx5IHRoZSBzdWJzZXQgcmVxdWlyZWQg
dG8KLSAgICAvLyAgICAgaW1wbGVtZW50IElPU3VyZmFjZSBiaW5kaW5nOyBpdCdzIHJlY29tbWVu
ZGVkIHRvIHN1cHBvcnQKLSAgICAvLyAgICAgdGhpcyBvbmx5IG9uIE1hYyBPUyBYIHRvIGxpbWl0
IHRoZSBhbW91bnQgb2YgY29kZSBkZXBlbmRlbnQKLSAgICAvLyAgICAgb24gdGhpcyBleHRlbnNp
b24pCi0gICAgLy8gICBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gICBH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCi0gICAgLy8gICBHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjX3NyZ2IKLSAgICAvLyAgIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdC
OF90ZXh0dXJlCi0gICAgLy8gICBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAg
IC8vICAgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKLSAgICAvLyAgIEdMX0tI
Ul90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyCi0gICAgLy8gICBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMKLSAgICAvLyAgIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICAvLyAgIEdM
X0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCi0gICAgLy8gICBHTF9BTkdM
RV9pbnN0YW5jZWRfYXJyYXlzCi0gICAgLy8gICBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9y
eQotCi0gICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCi0g
ICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpID0gMDsKLQotICAgIC8vIENlcnRhaW4gT3BlbkdMIGFu
ZCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgbWF5IHN1cHBvcnQgZW5hYmxpbmcKLSAgICAvLyBleHRl
bnNpb25zIGxhemlseS4gVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVkIHdpdGgKLSAgICAv
LyBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVybnMgdHJ1ZS4KLSAgICB2
aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAvLyBU
YWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBmb3IgZXhhbXBsZSwgIkdMX0VYVF90ZXh0dXJl
X2Zvcm1hdF9CR1JBODg4OCIuCi0gICAgLy8gQ2hlY2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBnaXZl
biBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxlZCAoc2VlIGVuc3VyZUVuYWJsZWQpLgotICAg
IC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCi0gICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAvLyBFWFRfc1JHQiBmb3JtYXRzCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0VYVCA9IDB4OEM0MDsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIFNSR0JfQUxQSEFfRVhUID0gMHg4QzQyOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gU1JHQjhfQUxQSEE4X0VYVCA9IDB4OEM0MzsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhU
ID0gMHg4MjEwOwotCi0gICAgLy8gRVhUX2JsZW5kX21pbm1heCBlbnVtcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gTUlOX0VYVCA9IDB4ODAwNzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIE1BWF9FWFQgPSAweDgwMDg7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEJHUkFfRVhU
ID0gMHg4MEUxOwotCi0gICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MgZW51bXMKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1MzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIElOTk9DRU5UX0NPTlRFWFRfUkVTRVRfQVJCID0g
MHg4MjU0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVU5LTk9XTl9DT05URVhUX1JF
U0VUX0FSQiA9IDB4ODI1NTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTlRFWFRf
Uk9CVVNUX0FDQ0VTUyA9IDB4OTBGMzsKLQotICAgIC8vIEdMX0VYVC9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwgZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERFUFRIMjRfU1RF
TkNJTDggPSAweDg4RjA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IG5hbWVz
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRUFEX0ZSQU1FQlVGRkVSID0gMHg4Q0E4
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19GUkFNRUJVRkZFUiA9IDB4OENB
OTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfRlJBTUVCVUZGRVJfQklORElO
RyA9IDB4OENBNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFQURfRlJBTUVCVUZG
RVJfQklORElORyA9IDB4OENBQTsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlIG5hbWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJf
U0FNUExFUyA9IDB4OENBQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEUgPSAweDhENTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBNQVhfU0FNUExFUyA9IDB4OEQ1NzsKLQotICAgIC8vIEdMX0lNR19tdWx0aXNh
bXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJF
TkRFUkJVRkZFUl9TQU1QTEVTX0lNRyA9IDB4OTEzMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HID0gMHg5MTM0Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVNfSU1HID0gMHg5MTM1Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9TQU1QTEVTX0lNRyA9IDB4OTEz
NjsKLQotICAgIC8vIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBuYW1lcwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMg
PSAweDhCOEI7Ci0KLSAgICAvLyBHTF9PRVNfcmdiOF9yZ2JhOCBuYW1lcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gUkdCOF9PRVMgPSAweDgwNTE7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBSR0JBOF9PRVMgPSAweDgwNTg7Ci0KLSAgICAvLyBHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVkVSVEVYX0FS
UkFZX0JJTkRJTkdfT0VTID0gMHg4NUI1OwotCi0gICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBUUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0EwOwotCi0gICAgLy8gR0xfQVJCX3RleHR1
cmVfcmVjdGFuZ2xlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX1JFQ1RB
TkdMRV9BUkIgPSAgMHg4NEY1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9CSU5ESU5HX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjY7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVCA9IDB4ODNGMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUID0gMHg4M0YxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAweDgzRjI7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNGMzsK
LQotICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhD
NEM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUID0gMHg4QzRFOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQgPSAw
eDhDNEY7Ci0KLSAgICAvLyBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRVRDMV9SR0I4X09FUyA9IDB4OEQ2NDsKLQotICAg
IC8vIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUjExX0VBQyA9IDB4OTI3MDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMgPSAweDkyNzE7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHMTFfRUFDID0gMHg5MjcyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMgPSAweDky
NzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQjhfRVRDMiA9
IDB4OTI3NDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhf
RVRDMiA9IDB4OTI3NTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIgPSAweDkyNzY7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiA9
IDB4OTI3NzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMgPSAweDkyNzg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQyA9IDB4OTI3OTsKLQotICAgIC8vIEdMX0lNR190ZXh0
dXJlX2NvbXByZXNzaW9uX3B2cnRjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFf
SU1HID0gMHg4QzAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDM7Ci0KLSAgICAvLyBHTF9BTURfY29tcHJlc3Nl
ZF9BVENfdGV4dHVyZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9B
VENfUkdCX0FNRCA9IDB4OEM5MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EID0gMHg4QzkzOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EID0gMHg4N0VFOwotCi0gICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19o
ZHIKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4
NF9LSFIgPSAweDkzQjA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ181eDRfS0hSID0gMHg5M0IxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiA9IDB4OTNCMjsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIgPSAweDkzQjM7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hS
ID0gMHg5M0I0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg1X0tIUiA9IDB4OTNCNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIgPSAweDkzQjY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSID0gMHg5M0I3OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgPSAw
eDkzQjg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMHg2X0tIUiA9IDB4OTNCOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDhfS0hSID0gMHg5M0JBOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSID0gMHg5M0JCOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSID0g
MHg5M0JDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTJ4MTJfS0hSID0gMHg5M0JEOwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIgPSAweDkzRDA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIg
PSAweDkzRDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NV9LSFIgPSAweDkzRDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgPSAweDkzRDM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4
Nl9LSFIgPSAweDkzRDQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIgPSAweDkzRDU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIgPSAweDkzRDY7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4OF9LSFIgPSAweDkzRDc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSID0gMHg5M0Q4OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiA9
IDB4OTNEOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4OF9LSFIgPSAweDkzREE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiA9IDB4OTNEQjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTJ4MTBfS0hSID0gMHg5M0RDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQ7Ci0KLSAgICAvLyBHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkI7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUID0gMHg4REJDOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
ID0gMHg4REJEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdO
RURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRTsKLQotICAgIC8vIEdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7Ci0KLSAgICAvLyBH
TF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gTUFYX0RSQVdfQlVGRkVSU19FWFQgPSAweDg4MjQ7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjBfRVhUID0gMHg4ODI1OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxX0VYVCA9IDB4ODgyNjsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMl9FWFQgPSAweDg4Mjc7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjNfRVhUID0gMHg4ODI4OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI0X0VYVCA9IDB4ODgyOTsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNV9FWFQgPSAweDg4MkE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjZfRVhUID0gMHg4ODJCOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI3X0VYVCA9IDB4ODgyQzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSOF9FWFQgPSAweDg4MkQ7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjlfRVhUID0gMHg4ODJFOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMF9FWFQgPSAweDg4MkY7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjExX0VYVCA9IDB4ODgz
MDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTJfRVhUID0gMHg4
ODMxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxM19FWFQgPSAw
eDg4MzI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE0X0VYVCA9
IDB4ODgzMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTVfRVhU
ID0gMHg4ODM0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0NPTE9SX0FUVEFD
SE1FTlRTX0VYVCA9IDB4OENERjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQwX0VYVCA9IDB4OENFMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTE9SX0FUVEFDSE1FTlQxX0VYVCA9IDB4OENFMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTE9SX0FUVEFDSE1FTlQyX0VYVCA9IDB4OENFMjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQzX0VYVCA9IDB4OENFMzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCA9IDB4OENFNDsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ1X0VYVCA9IDB4OENFNTsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ2X0VYVCA9IDB4
OENFNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ3X0VY
VCA9IDB4OENFNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQ4X0VYVCA9IDB4OENFODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQ5X0VYVCA9IDB4OENFOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TE9SX0FUVEFDSE1FTlQxMF9FWFQgPSAweDhDRUE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUID0gMHg4Q0VCOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEyX0VYVCA9IDB4OENFQzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxM19FWFQgPSAweDhDRUQ7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VF
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9
IDB4OENFRjsKLQotICAgIC8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOwot
Ci0gICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNpb24KLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7Ci0KLSAgICAv
LyBXZWJHTCBmdW5jdGlvbnMuCi0KLSAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vIE5v
dGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0
bmVzcwotICAgIC8vIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6Ci0gICAgLy8g
VGhlIGltcGxlbWVudGF0aW9uIG11c3Qgbm90IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcg
dGhpcyBjYWxsLgotICAgIC8vIElmIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBh
biBlcnJvciwgaXQgc2hvdWxkIGNvbnRpbnVlCi0gICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVy
cm9yLiBSZXN0b3JpbmcgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKLSAg
ICAvLyBleHRlcm5hbGx5LgotICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgPSAwOwotCi0gICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNl
Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QpID0gMDsKLQotICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRf
ZHJhd19idWZmZXJzCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7Ci0KLSAgICAvLyBPdGhlciBmdW5jdGlvbnMuCi0jaWYg
IVVTRShBTkdMRSkKLSAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQgotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMdm9pZCogZGF0YSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LQotI2VuZGlmCi0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRl
eCBkNjBjMzdhOWZmZTVjMmNiZTAzNjZlMjc2ZDg0ODg2NjViZDZlMjBiLi5hMTQwOTBhN2Y5OGQ0
YWZjYWUzNTgwZGRjOGU3OWU2MTkzNDNkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKQEAgLTM3NiwxMyArMzc1LDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0w6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjoKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JfSU5URUdFUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CiAg
ICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSAzOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJH
QkFfSU5URUdFUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6QkdSQV9FWFQ6IC8vIEdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhB
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBX0VYVDogLy8gR0xfRVhUX3Rl
eHR1cmVfZm9ybWF0X0JHUkE4ODg4CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9B
TFBIQV9FWFQ6CiAgICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSA0OwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYjVmNWVjZDM4MWNhOTBhMjdkOGQyYWI1MmQz
ZWZiMjUyYmVkMWI2Yy4uMWNjZWViNTM3MzUzOGQ1MzUyM2Y0OWRjZTJhMDY4MmU0N2RmYzhkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCkBAIC02NzQsNiArNjc0LDE0NSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjU7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX0JJTkRJTkdfUkVDVEFOR0xFX0FSQiA9IDB4ODRG
NjsKIAorICAgIC8vIEVYVF9zUkdCIGZvcm1hdHMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFNSR0JfRVhUID0gMHg4QzQwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JH
Ql9BTFBIQV9FWFQgPSAweDhDNDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdC
OF9BTFBIQThfRVhUID0gMHg4QzQzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQgPSAweDgyMTA7CisKKyAgICAv
LyBFWFRfYmxlbmRfbWlubWF4IGVudW1zCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBN
SU5fRVhUID0gMHg4MDA3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0VYVCA9
IDB4ODAwODsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBlbnVtcwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQkdSQV9FWFQgPSAweDgwRTE7CisKKyAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcyBlbnVtcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjUzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gSU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTQ7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjU1Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09OVEVYVF9ST0JVU1RfQUNDRVNTID0gMHg5
MEYzOworCisgICAgLy8gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIG5hbWVzCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09F
UyA9IDB4OEI4QjsKKworICAgIC8vIEdMX09FU19yZ2I4X3JnYmE4IG5hbWVzCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBSR0I4X09FUyA9IDB4ODA1MTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFJHQkE4X09FUyA9IDB4ODA1ODsKKworICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVFJBTlNM
QVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9IDB4OTNBMDsKKworICAgIC8vIEdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUID0gMHg4M0YwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAweDgzRjE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCA9IDB4ODNGMjsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0g
MHg4M0YzOworCisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VY
VCA9IDB4OEM0QzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
Ql9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQgPSAweDhDNEU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1
X0VYVCA9IDB4OEM0RjsKKworICAgIC8vIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0
dXJlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBFVEMxX1JHQjhfT0VTID0gMHg4RDY0
OworCisgICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhD
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9QVlJUQ18y
QlBQVjFfSU1HID0gMHg4QzAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMzsKKwor
ICAgIC8vIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JfQU1EID0gMHg4QzkyOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQg
PSAweDhDOTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19S
R0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQgPSAweDg3RUU7CisKKyAgICAvLyBHTF9LSFJfdGV4
dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkcgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiA9IDB4OTNCMDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIgPSAweDkzQjE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSID0g
MHg5M0IyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfNng1X0tIUiA9IDB4OTNCMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIgPSAweDkzQjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSID0gMHg5M0I1OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiA9IDB4OTNC
NjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4
OF9LSFIgPSAweDkzQjc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMHg1X0tIUiA9IDB4OTNCODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSID0gMHg5M0I5OworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIgPSAweDkzQkE7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgx
MF9LSFIgPSAweDkzQkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMF9LSFIgPSAweDkzQkM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIgPSAweDkzQkQ7CisKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tI
UiA9IDB4OTNEMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNXg0X0tIUiA9IDB4OTNEMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiA9IDB4OTNEMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUiA9IDB4OTNEMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiA9IDB4OTNENDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiA9IDB4OTNE
NTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg2X0tIUiA9IDB4OTNENjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiA9IDB4OTNENzsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIg
PSAweDkzRDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDZfS0hSID0gMHg5M0Q5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiA9IDB4OTNEQTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4MTBfS0hSID0gMHg5M0RCOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIgPSAweDkzREM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiA9
IDB4OTNERDsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCA9IDB4OERC
QjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9S
R1RDMV9FWFQgPSAweDhEQkM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJFOwor
CisgICAgLy8gR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VY
VCA9IDB4ODRGRjsKKworICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19i
dWZmZXJzCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRFJBV19CVUZGRVJTX0VY
VCA9IDB4ODgyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMF9F
WFQgPSAweDg4MjU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjFf
RVhUID0gMHg4ODI2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIy
X0VYVCA9IDB4ODgyNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVS
M19FWFQgPSAweDg4Mjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZF
UjRfRVhUID0gMHg4ODI5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZG
RVI1X0VYVCA9IDB4ODgyQTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVG
RkVSNl9FWFQgPSAweDg4MkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JV
RkZFUjdfRVhUID0gMHg4ODJDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVI4X0VYVCA9IDB4ODgyRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
QlVGRkVSOV9FWFQgPSAweDg4MkU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjEwX0VYVCA9IDB4ODgyRjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSMTFfRVhUID0gMHg4ODMwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVIxMl9FWFQgPSAweDg4MzE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjEzX0VYVCA9IDB4ODgzMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIERSQVdfQlVGRkVSMTRfRVhUID0gMHg4ODMzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIxNV9FWFQgPSAweDg4MzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUID0gMHg4Q0RGOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDBfRVhUID0gMHg4Q0UwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDFfRVhUID0gMHg4Q0UxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDJfRVhUID0gMHg4
Q0UyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDNfRVhU
ID0gMHg4Q0UzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDRfRVhUID0gMHg4Q0U0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRU
QUNITUVOVDVfRVhUID0gMHg4Q0U1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09M
T1JfQVRUQUNITUVOVDZfRVhUID0gMHg4Q0U2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09MT1JfQVRUQUNITUVOVDdfRVhUID0gMHg4Q0U3OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDhfRVhUID0gMHg4Q0U4OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDlfRVhUID0gMHg4Q0U5OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEwX0VYVCA9IDB4OENFQTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMV9FWFQgPSAweDhD
RUI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTJfRVhU
ID0gMHg4Q0VDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDEzX0VYVCA9IDB4OENFRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQxNF9FWFQgPSAweDhDRUU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UMTVfRVhUID0gMHg4Q0VGOworCisgICAgLy8gR0xfS0hSX3BhcmFsbGVs
X3NoYWRlcl9jb21waWxlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9O
X1NUQVRVU19LSFIgPSAweDkxQjE7CisKKyAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lv
bgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19B
TkdMRSA9IDB4OTNBODsKKwogICAgIC8vIEF0dGVtcHQgdG8gZW51bWVyYXRlIGFsbCBwb3NzaWJs
ZSBuYXRpdmUgaW1hZ2UgZm9ybWF0cyB0bwogICAgIC8vIHJlZHVjZSB0aGUgYW1vdW50IG9mIHRl
bXBvcmFyeSBhbGxvY2F0aW9ucyBkdXJpbmcgdGV4dHVyZQogICAgIC8vIHVwbG9hZGluZy4gVGhp
cyBlbnVtIG11c3QgYmUgcHVibGljIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQKQEAgLTEyMzMsNiAr
MTM3MiwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3
Y291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwog
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsK
KworICAgIC8vIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJlIGNhbGxlZCB3aXRoIGV4dGVuc2lvbiBu
YW1lcyBmb3Igd2hpY2ggc3VwcG9ydHMgcmV0dXJucyB0cnVlLgorICAgIHZpcnR1YWwgdm9pZCBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIC8vIFRha2Vz
IGZ1bGwgbmFtZSBvZiBleHRlbnNpb246IGZvciBleGFtcGxlLCAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4Ii4KKyAgICAvLyBDaGVja3MgdG8gc2VlIHdoZXRoZXIgdGhlIGdpdmVuIGV4
dGVuc2lvbiBpcyBhY3R1YWxseSBlbmFibGVkIChzZWUgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCku
CisgICAgLy8gSGFzIG5vIG90aGVyIHNpZGUtZWZmZWN0cy4KKyAgICB2aXJ0dWFsIGJvb2wgaXNF
eHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIC8vIEdMX0FSQl9yb2J1
c3RuZXNzCisgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20g
dGhlIEdMX0FSQl9yb2J1c3RuZXNzCisgICAgLy8gc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9sbG93
aW5nIHdheToKKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gbXVzdCBub3QgcmVzZXQgdGhlIGVy
cm9yIHN0YXRlIGR1cmluZyB0aGlzIGNhbGwuCisgICAgLy8gSWYgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQiByZXR1cm5zIGFuIGVycm9yLCBpdCBzaG91bGQgY29udGludWUKKyAgICAvLyByZXR1
cm5pbmcgdGhlIHNhbWUgZXJyb3IuIFJlc3RvcmluZyB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgaXMgaGFuZGxlZAorICAgIC8vIGV4dGVybmFsbHkuCisgICAgdmlydHVhbCBHQ0dMaW50IGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CisKKyAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOworCisgICAgLy8gR0xfQVJCX2RyYXdf
YnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKKwogICAgIC8vID09PT09
PT09PT0gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBw
bmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0x
MjQzLDExICsxNDA3LDYgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lk
IHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CiAKLSAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNp
b25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90Ci0gICAgLy8gYWxsIG1l
dGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAg
ICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygp
IHRvCi0gICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgdmlydHVhbCBFeHRlbnNpb25zR0wmIGdl
dEV4dGVuc2lvbnMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHko
Ym9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4
IDIzM2IwZGY3NTZlY2RkNGJjOTJkOTBiYWFmMDE1M2NjNmE1OTVmZjcuLjhmNWZmMWFlNzYwMGY1
ZGM5MDA5ZDg0NTVjY2ZmOTE1YmNhMWU2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKQEAgLTQ2LDc4ICs0Niw3IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CiAKLUV4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQotewotICAgIHJldHVybiAqdGhp
czsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
LXsKLSNpZiBFTkFCTEUoV0VCR0wyKQotICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLndl
YkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwotI2Vs
c2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKLXsKLSAgICAvLyBGSVhNRTog
VGhlIGNhbGxlciBzaG91bGQgdHJhY2sgdGhpcyBzdGF0ZS4KLSAgICBpZiAobV9sYXllckNvbXBv
c2l0ZWQpIHsKLSAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgICAgIEdy
YXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQoKTsKLSAgICB9Ci19Ci0KLWJvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYg
bmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwotICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHdhaXRVbnRpbElu
aXRpYWxpemVkKCk7Ci0gICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQobmFtZSk7Ci0gICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMu
YWRkKG5hbWUpOwotICAgIH0KLX0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0
aWFsaXplZCgpOwotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQot
ewotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQotICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkK
LSAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci19Ci0KLSNp
ZiAhVVNFKEFOR0xFKQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cmVh
ZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCopCi17Ci19CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdD
R0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0KikKLXsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwg
R0NHTHNpemVpLCBHQ0dMaW50KikKLXsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgIVBMQVRGT1JNKENPQ09BKQotI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDVlNWMwOWI4NzIwNDNlYTBmYTJhOTY3ZjRm
Mzk5M2JhZDgwYTc5NDEuLjc4YzEwMDczYzkwOGU0MWRiZTA0ZmQ1MDdhZjgxZDQwZThjMGNhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtMjcsNyArMjcsNiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRl
ICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM5LDQyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUg
aW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKIC8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tpbmcgbWFu
YWdlbWVudC4KIC8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4
dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMIHsKIHB1
YmxpYzoKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoKSBvdmVycmlkZTsKIAotICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KLSAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOwot
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwotICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKIAotICAg
IC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KLSAgICB1c2luZyBFeHRlbnNpb25zR0w6
OmlzRW5hYmxlZDsKLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAg
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIGlzRW5h
YmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLQotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCBy
ZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2b2lkKikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCop
IGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NH
THNpemVpLCBHQ0dMaW50KikgZmluYWw7Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKSA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0
aWFsaXplZCgpLgotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7Ci0g
ICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwotCi0gICAgSGFzaFNl
dDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMDQ5YzUxMDkyNjYxNDVkZTkx
MTc3OTcwNDNlOTVlYmI5ODdhNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgotCi0jaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRl
eHRHTEFOR0xFKiBjb250ZXh0KQotICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKLXsKLX0KLQotRXh0ZW5zaW9uc0dM
QU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKLQotYm9vbCBFeHRlbnNpb25z
R0xBTkdMRTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmICghbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
bml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9y
dHNFeHRlbnNpb24obmFtZSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmVuc3VyZUVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIC8vIEVuYWJsZSBzdXBwb3J0IGluIEFO
R0xFIChpZiBub3QgZW5hYmxlZCBhbHJlYWR5KS4KLSAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUobmFtZS5h
c2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOwot
Ci0gICAgICAgIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdi
YSJfcykKLSAgICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSA9IHRydWU7Ci0g
ICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2IiX3MpCi0gICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiA9IHRydWU7Ci0g
ICAgfQotfQotCi1ib29sIEV4dGVuc2lvbnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQotewotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotR0xpbnQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7Ci19Ci0KLVN0cmluZyBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+
Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5H
TEUpOwotCi0gICAgaWYgKCFzb3VyY2VMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNM
QVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9u
LgotICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwotICAgIEdMX0dldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBu
YW1lLmRhdGEoKSk7Ci0gICAgaWYgKCFyZXR1cm5lZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci0gICAgLy8gcmV0dXJuZWRMZW5ndGggZG9lcyBub3QgaW5jbHVkZSB0aGUg
bnVsbCB0ZXJtaW5hdG9yLgotICAgIEFTU0VSVChyZXR1cm5lZExlbmd0aCA9PSBzb3VyY2VMZW5n
dGggLSAxKTsKLSAgICByZXR1cm4gU3RyaW5nKG5hbWUuZGF0YSgpLCByZXR1cm5lZExlbmd0aCk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNp
b25zKCkKLXsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsK
LSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
LSAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIGV4dGVu
c2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0
U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAgZm9yIChhdXRv
JiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgIG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIG1faW5pdGlhbGl6ZWRBdmFp
bGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKLX0KLQotYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xfRHJhd0J1
ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwotfQotCi1TdHJpbmcgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEV4dGVuc2lvbnMoKQotewotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7Ci19Ci0K
LUdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxG
b3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSkKLXsKLSAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV0VCR0xfY29sb3JfYnVmZmVy
X2Zsb2F0IGZvciBXZWJHTCAxLjAgLyBFUyAyLjAgcmVxdWlyZXMgYSBzaXplZAotICAgIC8vIGlu
dGVybmFsIGZvcm1hdC4gQWRqdXN0IGl0IGlmIG5lY2Vzc2FyeSBhdCB0aGlzIGxvd2VzdCBsZXZl
bC4KLSAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgewotICAgICAgICBpZiAobV93ZWJnbENvbG9y
QnVmZmVyRmxvYXRSR0JBICYmIGZvcm1hdCA9PSBHTF9SR0JBICYmIGludGVybmFsZm9ybWF0ID09
IEdMX1JHQkEpCi0gICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRjsKLSAgICAgICAgaWYgKG1f
d2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCICYmIGZvcm1hdCA9PSBHTF9SR0IgJiYgaW50ZXJuYWxm
b3JtYXQgPT0gR0xfUkdCKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRjsKLSAgICB9Ci0g
ICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTc4ZTJmOWY2NGI5ZjYxNWMzYjNhODVj
NDNhM2NhMDU0ZWQ3NWNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKLQotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU7Ci0KLWNsYXNzIEV4dGVuc2lvbnNH
TEFOR0xFIDogcHVibGljIEV4dGVuc2lvbnNHTCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRp
YXRlZCBieSBHcmFwaGljc0NvbnRleHRHTEFOR0xFIGltcGxlbWVudGF0aW9ucy4KLSAgICBleHBs
aWNpdCBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEFOR0xFKik7Ci0gICAgdmly
dHVhbCB+RXh0ZW5zaW9uc0dMQU5HTEUoKTsKLQotICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2Rz
LgotICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbmFibGVk
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwotCi0gICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLQotICAgIC8vIE9ubHkg
Zm9yIG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCi0gICAgR0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4
dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUpOwotCi1wcml2YXRlOgotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJik7Ci0gICAgU3RyaW5nIGdldEV4dGVuc2lvbnMoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwotICAgIGJvb2wgbV9p
bml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fYXZh
aWxhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICAv
LyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTEFOR0xFLgotICAgIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEUqIG1fY29udGV4dDsKLQotICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdM
IDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZl
IGJlZW4gZW5hYmxlZC4KLSAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFs
c2UgfTsKLSAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDQ4ZjczNDJmM2UwOTAxZmU0NjcyY2E1YjVlMDMyMWU4NDE2YTk2NmQuLmM1YzZi
ZmE1NzVlOTQ5NDY2MTAwZTE2NTMxODMyODNhMDhhMGRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBTkdMRUhlYWRl
cnMuaCIKICNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TEFOR0xFLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC03MSw2ICs3
MCwzMCBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgs
IGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeAogfQogI2VuZGlmCiAKKworYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIXBsYXRmb3JtSW5p
dGlhbGl6ZUNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBleHRl
bnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dl
dFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0
ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
YWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9O
U19BTkdMRSkpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcu
c3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7CisgICAgcmV0dXJuIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKIHsKICNpZiAhUExBVEZPUk0o
Q09DT0EpCkBAIC0zNTQsNyArMzc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpn
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGUKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2lzRm9y
V2ViR0wyKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnNH
TEFOR0xFJj4oZ2V0RXh0ZW5zaW9ucygpKS5hZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGludGVybmFsZm9ybWF0
ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3Jt
YXQsIHR5cGUpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBHTF9UZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6
ZSwgcGl4ZWxzLmRhdGEpOwpAQCAtNDI1LDEzICs0NDgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKICAgICBHTF9DbGVhckRlcHRo
ZihzdGF0aWNfY2FzdDxmbG9hdD4oZGVwdGgpKTsKIH0KIAotRXh0ZW5zaW9uc0dMJiBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpnZXRFeHRlbnNpb25zKCkKLXsKLSAgICBpZiAoIW1fZXh0ZW5zaW9u
cykKLSAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xBTkdMRT4o
dGhpcyk7Ci0gICAgcmV0dXJuICptX2V4dGVuc2lvbnM7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIGRhdGEuZGF0YSwgZmFsc2UpOwpAQCAtNDgzLDEyICs0OTksMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWQKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7
Ci0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIC8v
IEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBu
b3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVj
dGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0
aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCiAgICAgLy8gdXNlIHRvIHR1cm4gb24gZmVh
dHVyZSBmbGFncy4KLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICAgICAgbV9pbnRlcm5hbERlcHRoU3Rl
bmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOwogICAgIH0gZWxzZQogICAgICAg
ICBtX2ludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7CkBA
IC01MDUsMTcgKzUyMCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRl
RGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbAogCiAgICAgaWYgKGF0
dHJzLmFudGlhbGlhcykgewogICAgICAgICAvLyBGSVhNRTogbXVzdCBhZGp1c3QgdGhpcyB3aGVu
IHVwZ3JhZGluZyB0byBXZWJHTCAyLjAgLyBPcGVuR0wgRVMgMy4wIHN1cHBvcnQuCi0gICAgICAg
IGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
IHx8ICFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSB7CisgICAgICAg
IGlmICghc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
IikgfHwgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikgfHwg
IXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSB7CiAgICAgICAgICAgICBh
dHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVz
KGF0dHJzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJl
RW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOwot
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIp
OworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4Iik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0
dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewogICAgICAgICAvLyBOZWVkZWQgZm9yIHByZXNl
cnZlRHJhd2luZ0J1ZmZlcjp0cnVlIHN1cHBvcnQgd2l0aG91dCBhbnRpYWxpYXNpbmcuCi0gICAg
ICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
OworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9i
bGl0Iik7CiAgICAgfQogfQogCkBAIC0yODkwLDYgKzI5MDUsNjQgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0wKICAgICBHTF9NdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50cy5kYXRhLCB0eXBlLCBwb2ludGVycy5kYXRhKCksIGluc3RhbmNlQ291bnRzLmRhdGEsIGRy
YXdjb3VudCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgLy8gRW5hYmxlIHN1cHBvcnQgaW4g
QU5HTEUgKGlmIG5vdCBlbmFibGVkIGFscmVhZHkpLgorICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgeworICAgICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUobmFtZS5hc2NpaSgpLmRh
dGEoKSk7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworCisgICAgICAg
IGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcykKKyAg
ICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSA9IHRydWU7CisgICAgICAgIGVs
c2UgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpCisg
ICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiA9IHRydWU7CisgICAgfQorfQor
Citib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCitHTGlu
dCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sK
KyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOworfQorCitTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGludCBzb3VyY2VMZW5ndGggPSBnZXRTaGFk
ZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7CisK
KyAgICBpZiAoIXNvdXJjZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cisg
ICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAg
R0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0xfR2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0
YSgpKTsKKyAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKKyAgICAvLyByZXR1cm5lZExlbmd0aCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBudWxsIHRl
cm1pbmF0b3IuCisgICAgQVNTRVJUKHJldHVybmVkTGVuZ3RoID09IHNvdXJjZUxlbmd0aCAtIDEp
OworICAgIHJldHVybiBTdHJpbmcobmFtZS5kYXRhKCksIHJldHVybmVkTGVuZ3RoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBHTF9EcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMu
ZGF0YSk7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6d2FpdEFuZFVwZGF0ZU9s
ZGVzdEZyYW1lKCkKIHsKICAgICBzaXplX3Qgb2xkZXN0RnJhbWVDb21wbGV0aW9uRmVuY2UgPSBt
X29sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlKysgJSBtYXhQZW5kaW5nRnJhbWVzOwpAQCAtMjk5
Nyw2ICszMDcwLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW52YWxpZGF0ZUtu
b3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpCiB7CiB9CiAKK0dDR0xlbnVtIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKQoreworICAgIC8v
IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQgZm9yIFdlYkdM
IDEuMCAvIEVTIDIuMCByZXF1aXJlcyBhIHNpemVkCisgICAgLy8gaW50ZXJuYWwgZm9ybWF0LiBB
ZGp1c3QgaXQgaWYgbmVjZXNzYXJ5IGF0IHRoaXMgbG93ZXN0IGxldmVsLgorICAgIGlmICh0eXBl
ID09IEdMX0ZMT0FUKSB7CisgICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
JiYgZm9ybWF0ID09IEdMX1JHQkEgJiYgaW50ZXJuYWxmb3JtYXQgPT0gR0xfUkdCQSkKKyAgICAg
ICAgICAgIHJldHVybiBHTF9SR0JBMzJGOworICAgICAgICBpZiAobV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgJiYgZm9ybWF0ID09IEdMX1JHQiAmJiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0Ip
CisgICAgICAgICAgICByZXR1cm4gR0xfUkdCMzJGOworICAgIH0KKyAgICByZXR1cm4gaW50ZXJu
YWxmb3JtYXQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IDEwN2VjMjM4Yjc4MGY0NDkxNjBm
ZjVmMTE5NzViMWIwNDQwYmJjZDguLjQ0ZDFlYzNmMGQ5ZjNlNTEwODA1NjhlNGQ0OGIzNzEyYTM4
NzdiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTUzLDcgKzUzLDYgQEAg
c3RydWN0IGdibV9ibzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXh0ZW5zaW9uc0dM
OwotY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7CiBjbGFzcyBHTENvbnRleHQ7CiBjbGFzcyBIb3N0
V2luZG93OwogY2xhc3MgSW1hZ2VCdWZmZXI7CkBAIC0zMzIsNiArMzMxLDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBj
b3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKKyAg
ICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBHQ0dM
aW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKKwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CiAgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlUHJvZ3JhbSgpIGZpbmFsOwpAQCAtMzQ2LDEyICszNTIsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICB2
b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKICAgICBib29sIG1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwotICAgIEV4dGVuc2lvbnNHTCYg
Z2V0RXh0ZW5zaW9ucygpIGZpbmFsOwogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3Rpbmco
U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFs
OwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikg
ZmluYWw7Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpOwpAQCAtMzY2
LDE1ICszNzAsMjEgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQotICAgIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBjb25zdCBQcm9jZXNzSWRlbnRp
dHkmKTsKLSNlbHNlCiAgICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMpOwotI2VuZGlmCisKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1
YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIC8vIENh
bGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCisgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNl
LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBpbnN0YW5jZSBzaG91bGQgbm90IGJlIHVzZWQuCisgICAg
Ym9vbCBpbml0aWFsaXplKCk7CisgICAgLy8gQ2FsbGVkIGZpcnN0IGJ5IGluaXRpYWxpemUoKS4g
U3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGJpdHMgb2YgRUdMQ29udGV4dC4KKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IHBsYXRm
b3JtcyBkbyBub3Qgc2hhcmUgdGhlIGNvbnRleHQgY3JlYXRpb24uIFRoZXkgc2hvdWxkLgorICAg
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCk7CisgICAgLy8gQ2FsbGVk
IGxhc3QgYnkgaW5pdGlhbGl6ZSgpLiBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0byBpbnN0
YW50aWF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBzdGF0ZSB0aGF0IGRlcGVuZCBvbgorICAgIC8vIHRo
ZSBzaGFyZWQgc3RhdGUuCisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwor
CiAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBj
cmVhdGlvbiBhdHRyaWJ1dGVzLAogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCkBAIC0zOTUs
MTMgKzQwNSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZUltcGwoKTsK
ICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoY29uc3QgSW50UmVjdCYg
PSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZOZWVk
ZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50IGhl
aWdodCk7Ci0KLSAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKTsKLSAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICAgICBzdGF0aWMgYm9vbCBtYWtl
Q3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSwgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTCk7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZm
ZXJCYWNraW5nKCkgPSAwOworCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250ZXh0IHNob3Vs
ZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0ZU9sZGVzdEZy
YW1lKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCkBAIC00MTAsNiArNDE4LDE0IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dM
dWludCk7CiAKKyAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgorICAgIEdD
R0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKKworICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNp
b25zOworICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OworICAg
IGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKICAgICBHQ0dMdWlu
dCBtX3RleHR1cmUgeyAwIH07CiAgICAgR0NHTHVpbnQgbV9mYm8geyAwIH07CiAgICAgR0NHTHVp
bnQgbV9kZXB0aFN0ZW5jaWxCdWZmZXIgeyAwIH07CkBAIC00MzQsNyArNDUwLDYgQEAgcHJvdGVj
dGVkOgogICAgIHNpemVfdCBtX29sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlIHsgMCB9OwogICAg
IFNjb3BlZEdMRmVuY2UgbV9mcmFtZUNvbXBsZXRpb25GZW5jZXNbbWF4UGVuZGluZ0ZyYW1lc107
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xTdGF0ZSBtX3N0YXRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHRlbnNpb25zR0xBTkdMRT4gbV9leHRlbnNpb25zOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYS4KQEAg
LTQ0Nyw3ICs0NjIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gV2hlbiBwcmVzZXJ2ZURyYXdpbmdC
dWZmZXIgPT0gdHJ1ZSwgdGhpcyBpcyBibGl0dGVkIHRvIGR1cmluZyBkaXNwbGF5IHByZXBhcmUu
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyQmFja2luZzsK
ICAgICB2b2lkKiBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIHsgbnVsbHB0ciB9OwotICAgIFByb2Nl
c3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjZW5kaWYKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgR0NHTHVpbnQgbV9jb21wb3NpdG9yVGV4dHVyZSB7IDAgfTsKQEAgLTQ4
Niw3ICs1MDAsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBw
ZXJHQ0dMUGxhdGZvcm1MYXllcj4gbV90ZXhtYXBMYXllcjsKICNlbmRpZgogCi0gICAgZnJpZW5k
IGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogI2lmIFVTRShOSUNPU0lBKQogICAgIGZyaWVuZCBj
bGFzcyBOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcjsKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6
R0NHTExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYTA4ZGEwZjRmMTBlNGMzZTRh
OWE3MWVlOGY1MzI1ZmE2NmUwOTFmZi4uN2IzYjRhMDFmMjY5NmMwZDliMDYxMjgwNjQ2MzhkZjY5
MjJhMWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1w
b3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgiCi0jaW1wb3J0ICJFeHRlbnNpb25zR0wuaCIKICNpbXBvcnQg
IkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0
ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgK
aW5kZXggYzU2ZTY5NTM1ZTcwOTdmZGQyNWQyZmNlMzAyZTEwNjhlNzZjNmUzYi4uYzMxZjVlZmJl
MmVhODIwZGM3MGZkNTBkNTdhMjg3MWNjMzk2ZjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
Q29jb2EuaApAQCAtNzksMTcgKzc5LDIzIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8TWVkaWFTYW1w
bGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYK
ICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IHVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24oKTsKICNlbmRpZgogcHJvdGVj
dGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIpOwotICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0OwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBvdmVy
cmlkZXMuCisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkgZmluYWw7CisgICAg
Ym9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBmaW5hbDsKICAgICB2b2lkIGludmFsaWRhdGVLbm93
blRleHR1cmVDb250ZW50KEdDR0x1aW50KSBmaW5hbDsKKyAgICBib29sIHJlc2hhcGVEaXNwbGF5
QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1
ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKIAorICAgIFByb2Nl
c3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+IG1fY3Y7CiAjZW5kaWYKQEAgLTEw
MCw2ICsxMDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9tZWRpYVNhbXBsZVJvdGF0
aW9uU2Vzc2lvbjsKICNlbmRpZgorCiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1ZDb2NvYTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDBjZDBh
MjRmZGI3MmMzN2JjZDI1YzAwMGM1NDYyYzYxYzIwNWY3NTEuLjM2ZThmMGZiMDI5Mzc3YjRlZmZl
NDA1MzUyMzdlNTgyMjJmYmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpA
QCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQU5HTEVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFO
R0xFVXRpbGl0aWVzQ29jb2EuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJF
eHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMTk3LDI5ICsxOTYsMTUgQEAgc3RhdGljIGJvb2wgbmVl
ZHNFQUdMT25NYWMoKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyKQogewogICAgIGF1dG8gY29udGV4
dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0
ZXMpLCBXVEZNb3ZlKHJlc291cmNlT3duZXIpKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlk
KCkpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpH
cmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGNyZWF0
aW9uQXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcikKLSAgICA6Ci0j
aWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKLSAgICBHcmFw
aGljc0NvbnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSwgcmVzb3VyY2VP
d25lcikKLSNlbHNlCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3ZlKGNyZWF0aW9u
QXR0cmlidXRlcykpCi0jZW5kaWYKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUoV1RGTW92
ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQorICAgICwgbV9yZXNvdXJjZU93bmVyKFdURk1vdmUocmVz
b3VyY2VPd25lcikpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGluaXRpYWxpemVyIGxpc3Qgb25jZSBtX3Jlc291cmNl
T3duZXIgbW92ZXMgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYS4KLSAgICBtX3Jlc291cmNlT3du
ZXIgPSBXVEZNb3ZlKHJlc291cmNlT3duZXIpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGF1
dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVz
LnVzZU1ldGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93ZXJQcmVmZXJlbmNlKCkgPT0gR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKLSAgICAgICAg
bV9zd2l0Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlvbiA9IHRydWU7Ci0jZW5kaWYKIH0K
IAogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6fkdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7CkBAIC0yMzYsMzggKzIyMSwzOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQogCiAvLyBGSVhNRTogQmVsb3cgaXMgZnVuY3Rpb25h
bGl0eSB0aGF0IHNob3VsZCBiZSBtb3ZlZCB0byBHcmFwaGljc0NvbnRleHRHTENvY29hIHRvIHNp
bXBsaWZ5IHRoZSBiYXNlIGNsYXNzLgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFT
S19JREVOVElUWV9UT0tFTikKLUdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBjb25zdCBQcm9jZXNz
SWRlbnRpdHkmIHJlc291cmNlT3duZXIpCi0jZWxzZQogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMp
Ci0jZW5kaWYKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzKQogewotICAgIG1faXNGb3JX
ZWJHTDIgPSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNp
b246OldlYkdMMjsKLSAgICBpZiAoYXR0cnMudXNlTWV0YWwgJiYgIXBsYXRmb3JtU3VwcG9ydHNN
ZXRhbChtX2lzRm9yV2ViR0wyKSkgewotICAgICAgICBhdHRycy51c2VNZXRhbCA9IGZhbHNlOwot
ICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7Cit9CisKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCit7CisgICAgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwor
ICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0Nv
bnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIGlmIChhdHRyaWJ1dGVzLnVzZU1ldGFs
ICYmICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0ZvcldlYkdMMikpIHsKKyAgICAgICAgYXR0
cmlidXRlcy51c2VNZXRhbCA9IGZhbHNlOworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiBFTkFCTEUoV0VCWFIpCi0gICAgaWYgKGF0dHJzLnhy
Q29tcGF0aWJsZSkgeworICAgIGlmIChhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkgewogICAgICAg
ICAvLyBGSVhNRTogSXQncyBhbG1vc3QgY2VydGFpbiB0aGF0IGFueSBjb25uZWN0ZWQgaGVhZHNl
dCB3aWxsIHJlcXVpcmUgdGhlIGhpZ2gtcG93ZXIgR1BVLAogICAgICAgICAvLyB3aGljaCBpcyB0
aGUgc2FtZSBHUFUgd2UgbmVlZCB0aGlzIGNvbnRleHQgdG8gdXNlLiBIb3dldmVyLCB0aGlzIGlz
IG5vdCBndWFyYW50ZWVkLCBhbmQKICAgICAgICAgLy8gdGhlcmUgaXMgYWxzbyB0aGUgY2hhbmNl
IHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIEdQVXMuIEdpdmVuIHRoYXQgeW91IGNhbiByZXF1ZXN0
IHRoZQogICAgICAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRo
ZSBXZWJYUiBzZXNzaW9uLCB3ZSdsbCBuZWVkIHNvbWUgd2F5IHRvCiAgICAgICAgIC8vIG1pZ3Jh
dGUgdGhlIGNvbnRleHQgdG8gdGhlIGFwcHJvcHJpYXRlIEdQVSB3aGVuIHRoZSBjb2RlIGhlcmUg
ZG9lcyBub3Qgd29yay4KICAgICAgICAgTE9HKFdlYkdMLCAiV2ViWFIgY29tcGF0aWJsZSBjb250
ZXh0IHJlcXVlc3RlZC4gVGhpcyB3aWxsIGFsc28gdHJpZ2dlciBhIHJlcXVlc3QgZm9yIHRoZSBo
aWdoLXBvd2VyIEdQVS4iKTsKLSAgICAgICAgYXR0cnMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZv
cm1hbmNlR1BVID0gdHJ1ZTsKLSAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwor
ICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IHRy
dWU7CisgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KICNl
bmRpZgogCi0gICAgbV9kaXNwbGF5T2JqID0gaW5pdGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwor
ICAgIG1fZGlzcGxheU9iaiA9IGluaXRpYWxpemVFR0xEaXNwbGF5KGF0dHJpYnV0ZXMpOwogICAg
IGlmICghbV9kaXNwbGF5T2JqKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWF0dHJzLnVzZU1ldGFsKSB7CisgICAg
aWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKSB7CiAgICAgICAgIC8vIEZvciBPcGVuR0wsIEVHTF9B
TkdMRV9wb3dlcl9wcmVmZXJlbmNlIGlzIHVzZWQuIFRoZSBjb250ZXh0IGlzIGluaXRpYWxpemVk
IHdpdGggdGhlCiAgICAgICAgIC8vIGRlZmF1bHQsIGxvdy1wb3dlciBkZXZpY2UuIEZvciBoaWdo
LXBlcmZvcm1hbmNlIGNvbnRleHRzLCB3ZSByZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlCiAg
ICAgICAgIC8vIEdQVSBpbiBzZXRDb250ZXh0VmlzaWJpbGl0eS4gV2hlbiB0aGUgcmVxdWVzdCBp
cyBmdWxsZmlsbGVkIGJ5IHRoZSBzeXN0ZW0sIHdlIGdldCB0aGUKQEAgLTI3NSwxMSArMjYxLDEx
IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgICAgIGNvbnN0IGNoYXIgKmRpc3BsYXlF
eHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxheU9iaiwgRUdMX0VYVEVOU0lPTlMp
OwogICAgICAgICBib29sIHN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlID0gc3Ryc3RyKGRpc3BsYXlF
eHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKTsKICAgICAgICAgaWYgKCFz
dXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSkgewotICAgICAgICAgICAgYXR0cnMuZm9yY2VSZXF1ZXN0
Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXR0cnMucG93
ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVy
Zm9ybWFuY2UpIHsKLSAgICAgICAgICAgICAgICBhdHRycy5wb3dlclByZWZlcmVuY2UgPSBHcmFw
aGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKKyAgICAgICAgICAgIGF0dHJp
YnV0ZXMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3NDb250ZXh0R0xQ
b3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgeworICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
OkRlZmF1bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRl
cyhhdHRycyk7CisgICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsK
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjk4LDE0ICsyODQsMTQgQEAgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cnMKICAgICBFR0xfQ2hvb3NlQ29uZmlnKG1fZGlzcGxheU9iaiwgY29uZmln
QXR0cmlidXRlcywgJm1fY29uZmlnT2JqLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKTsKICAg
ICBpZiAobnVtYmVyQ29uZmlnc1JldHVybmVkICE9IDEpIHsKICAgICAgICAgTE9HKFdlYkdMLCAi
RUdMQ29uZmlnIEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb25maWci
KTsKIAogICAgIEVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKICAgICBpZiAoRUdMX0dl
dEVycm9yKCkgIT0gRUdMX1NVQ0NFU1MpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiVW5hYmxlIHRv
IGJpbmQgdG8gT1BFTkdMX0VTX0FQSSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBWZWN0b3I8RUdMaW50PiBlZ2xDb250ZXh0QXR0cmlidXRl
czsKQEAgLTMzMywxMyArMzE5LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgZWds
Q29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX0JJTkRfR0VORVJBVEVTX1JFU09V
UkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0ZBTFNF
KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCisj
aWYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQogICAgIGF1dG8gZGlzcGxheUV4dGVuc2lvbnMg
PSBFR0xfUXVlcnlTdHJpbmcobV9kaXNwbGF5T2JqLCBFR0xfRVhURU5TSU9OUyk7CiAgICAgYm9v
bCBzdXBwb3J0c093bmVyc2hpcElkZW50aXR5ID0gc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAi
RUdMX0FOR0xFX21ldGFsX2NyZWF0ZV9jb250ZXh0X293bmVyc2hpcF9pZGVudGl0eSIpOwotICAg
IC8vIEZJWE1FOiBVc2UgbV9yZXNvdXJjZU93bmVyIG9uY2UgaXQgbW92ZXMgdG8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS4KLSAgICBpZiAoYXR0cnMudXNlTWV0YWwgJiYgcmVzb3VyY2VPd25lciAm
JiBzdXBwb3J0c093bmVyc2hpcElkZW50aXR5KSB7CisgICAgaWYgKGF0dHJpYnV0ZXMudXNlTWV0
YWwgJiYgbV9yZXNvdXJjZU93bmVyICYmIHN1cHBvcnRzT3duZXJzaGlwSWRlbnRpdHkpIHsKICAg
ICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX01FVEFMX09XTkVS
U0hJUF9JREVOVElUWV9BTkdMRSk7Ci0gICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVu
ZChyZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCkpOworICAgICAgICBlZ2xDb250ZXh0QXR0cmli
dXRlcy5hcHBlbmQobV9yZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCkpOwogICAgIH0KICNlbmRp
ZgogCkBAIC0zNDgsMTAgKzMzMywxNCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGlj
c0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIG1f
Y29udGV4dE9iaiA9IEVHTF9DcmVhdGVDb250ZXh0KG1fZGlzcGxheU9iaiwgbV9jb25maWdPYmos
IEVHTF9OT19DT05URVhULCBlZ2xDb250ZXh0QXR0cmlidXRlcy5kYXRhKCkpOwogICAgIGlmICht
X2NvbnRleHRPYmogPT0gRUdMX05PX0NPTlRFWFQgfHwgIW1ha2VDdXJyZW50KG1fZGlzcGxheU9i
aiwgbV9jb250ZXh0T2JqKSkgewogICAgICAgICBMT0coV2ViR0wsICJFR0xDb250ZXh0IEluaXRp
YWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb250ZXh0Iik7CisgICAgcmV0dXJu
IHRydWU7Cit9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK3sKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogICAg
IGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBHTF9FbmFibGUoR3JhcGhpY3NDb250ZXh0R0w6
OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIApAQCAtMzYzLDM4ICszNTIsMzcgQEAg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIGlmICghbmVlZHNFQUdMT25NYWMoKSkgewogICAgICAgICAvLyBGb3Ig
SU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KLSAgICAgICAgaWYgKCFhdHRycy51c2VNZXRhbCkK
KyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKQogICAgICAgICAgICAgcmVxdWlyZWRF
eHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3MpOwogICAgICAg
ICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgogICAg
ICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiX3MpOwogICAgIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogI2lmIEVOQUJMRShXRUJYUikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKQotICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnhyQ29tcGF0aWJsZSkKKyAgICBp
ZiAoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5h
cHBlbmQoIkdMX09FU19FR0xfaW1hZ2UiX3MpOwogI2VuZGlmCiAgICAgaWYgKG1faXNGb3JXZWJH
TDIpCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIl9zKTsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRF
eHRlbnNpb25zKCk7CiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lv
bnMpIHsKLSAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAg
ICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbihleHRlbnNpb24pKSB7CiAgICAgICAgICAgICBM
T0coV2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCBleHRlbnNpb24uY2hh
cmFjdGVycygpKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9u
KTsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSAg
ICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS51c2VNZXRhbCkgeworICAgIGlmIChhdHRyaWJ1dGVz
LnVzZU1ldGFsKSB7CiAgICAgICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgdXNlcyBzeW5j
IG9iamVjdHMgdG8gdGhyb3R0bGUgZGlzcGxheSBvbiBNZXRhbCBpbXBsZW1lbnRhdGlvbnMuCiAg
ICAgICAgIC8vIE9wZW5HTCBzeW5jIG9iamVjdHMgYXJlIG5vdCBzaWduYWxpbmcgdXBvbiBjb21w
bGV0aW9uIG9uIENhdGFsaW5hLWVyYSBkcml2ZXJzLCBzbwogICAgICAgICAvLyBPcGVuR0wgY2Fu
bm90IHVzZSB0aGlzIG1ldGhvZCBvZiB0aHJvdHRsaW5nLiBPcGVuR0wgZHJpdmVycyB0eXBpY2Fs
bHkgaW1wbGVtZW50CiAgICAgICAgIC8vIHNvbWUgc29ydCBvZiBpbnRlcm5hbCB0aHJvdHRsaW5n
LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQVJCX3N5bmMiX3MpKSB7Cisg
ICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3N5bmMiX3MpKSB7CiAgICAgICAg
ICAgICBtX3VzZUZlbmNlU3luY0ZvckRpc3BsYXlSYXRlTGltaXQgPSB0cnVlOwotICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BUkJfc3luYyJfcyk7CisgICAgICAgICAg
ICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfc3luYyJfcyk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0gICAgYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCisgICAg
YXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdl
ZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAogICAgIC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdp
bGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0
ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKQEAgLTQxMSwxOCArMzk5LDE4IEBAIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtX2Zibyk7CiAgICAgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPSBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9IG1fZmJvOwogCi0gICAgaWYgKCFhdHRycy5hbnRpYWxpYXMgJiYgKGF0dHJzLnN0ZW5j
aWwgfHwgYXR0cnMuZGVwdGgpKQorICAgIGlmICghYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgKGF0
dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSkKICAgICAgICAgR0xfR2VuUmVu
ZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogCiAgICAgLy8gSWYgbmVjZXNz
YXJ5LCBjcmVhdGUgYW5vdGhlciBmcmFtZWJ1ZmZlciBmb3IgdGhlIG11bHRpc2FtcGxlIHJlc3Vs
dHMuCi0gICAgaWYgKGF0dHJzLmFudGlhbGlhcykgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlh
bGlhcykgewogICAgICAgICBHTF9HZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8p
OwogICAgICAgICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1w
bGVGQk8pOwogICAgICAgICBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9IG1fc3RhdGUuYm91bmRSZWFk
RkJPID0gbV9tdWx0aXNhbXBsZUZCTzsKICAgICAgICAgR0xfR2VuUmVuZGVyYnVmZmVycygxLCAm
bV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKLSAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwgfHwg
YXR0cnMuZGVwdGgpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRl
cy5kZXB0aCkKICAgICAgICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgIH0gZWxzZSBpZiAoYXR0cnMucHJlc2VydmVEcmF3
aW5nQnVmZmVyKSB7CisgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1
ZmZlcikgewogICAgICAgICAvLyBJZiBuZWNlc3NhcnksIGNyZWF0ZSBhbm90aGVyIHRleHR1cmUg
dG8gaGFuZGxlIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjp0cnVlIHdpdGhvdXQKICAgICAgICAgLy8g
YW50aWFsaWFzaW5nLgogICAgICAgICBHTF9HZW5UZXh0dXJlcygxLCAmbV9wcmVzZXJ2ZURyYXdp
bmdCdWZmZXJUZXh0dXJlKTsKQEAgLTQzOCw3ICs0MjYsMTEgQEAgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cnMKIAogICAgIEdMX0NsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAKLSAgICBMT0coV2ViR0ws
ICJDcmVhdGVkIGEgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSAoJXApLiIsIHRoaXMpOworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBpZiAoIWF0dHJpYnV0ZXMudXNlTWV0YWwgJiYgYXR0cmlidXRlcy5l
ZmZlY3RpdmVQb3dlclByZWZlcmVuY2UoKSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6SGlnaFBlcmZvcm1hbmNlKQorICAgICAgICBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVj
b25maWd1cmF0aW9uID0gdHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCkBAIC00ODUsMTEg
KzQ3Nyw2IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xF
KCkKICAgICBMT0coV2ViR0wsICJEZXN0cm95ZWQgYSBHcmFwaGljc0NvbnRleHRHTEFOR0xFICgl
cCkuIiwgdGhpcyk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGV4dHVyZTsKLX0KLQogYm9vbCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9jb250ZXh0T2Jq
KQpAQCAtNTUwLDcgKzUzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6dXBkYXRl
Q29udGV4dE9uRGlzcGxheVJlY29uZmlndXJhdGlvbigpCiB9CiAjZW5kaWYKIAotYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQorYm9vbCBH
cmFwaGljc0NvbnRleHRHTENvY29hOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewog
ICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAg
IC8vIFJlc2V0IHRoZSBjdXJyZW50IGJhY2tidWZmZXIgbm93IGJlZm9yZSBhbGxvY2F0aW5nIGEg
bmV3IG9uZSBpbiBvcmRlciB0byBzbGlnaHRseSByZWR1Y2UgbWVtb3J5IHByZXNzdXJlLgpAQCAt
NTY4LDcgKzU1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nKCkKICAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjphbGxvY2F0ZUFu
ZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcg
PSBJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CkBAIC01OTgsNyArNTg1LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiAg
ICAgcmV0dXJuIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhXVEZNb3ZlKGJhY2tpbmcpLCBwYnVm
ZmVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpiaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZl
cikKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6YmluZERpc3BsYXlCdWZmZXJCYWNraW5n
KHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpCiB7CiAg
ICAgR0NHTGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7
CiAgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdC
dWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0
ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CkBA
IC02ODksNyArNjc2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hJT1N1
cmZhY2VGcm9tU2hhcmVkVGV4dHVyZSh2b2lkKiBoYW5kbGUpCiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAobV9sYXllckNv
bXBvc2l0ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggN2QwY2UzNmI2MGEwZDY5YTU5MjNjMjQwMGQwM2Ji
N2JhZDM4NjQ5OC4uMGJiMTA2NWIzYTYxNjY5Yjk4NTAxODUzMDQ1YTcwYjZmYWExYjUwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTE1
MSw3ICsxNTEsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogICAgIGlmIChHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55Q29udGV4dHMo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYo
bmV3IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQor
ICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwogICAgIHJldHVybiBjb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5oCmluZGV4IGQ5ZjE1ZjQ1YmRmYjRlMWJiZThkMzkzNjM1YjYwYWFkMWQyZDkwYTcu
LmU3MzJjMWNmOTFhM2Q4NGY2NDMyYzBmMjJjODY4ZjNkODA0NGM0YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBnZXRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDdk
NTAwYWJjMGNmMWVlNTUyNjgzMTEyYWZjZjIyMjRhZTY5NTcxYmYuLjIxZTgyOWZiZDEwMWRmNmQ0
NjkzMTZmOWQyOWNlZDg2YjRhYzk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBpZiAobmFtZSA9PSAiR0xfQU5H
TEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcmV0dXJuIHN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOworICAgIHJldHVybiBwbGF0Zm9ybVN1
cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOwogfQogCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bjo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xMjgsNyArMTI4LDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXMgPSBjb21w
aWxlci5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKCFBTkdMRVJlc291cmNlcy5FWFRfZHJh
d19idWZmZXJzKSB7CiAgICAgICAgICAgICBBTkdMRVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJz
ID0gMTsKLSAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gbV9jb250
ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOworICAg
ICAgICAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldElu
dGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICAgICAg
ICAgIGNvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggMjlhMGM0ZDhmNWE5MjZjNzA5NTM1
NDFjMGIyNjEzZmRhNzUyYjQyNi4uMDQ3OGQ4YThhODAxY2Y1M2NiY2RjY2E2NGQwZTlkZDdmMWU1
MWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtMjYsOCArMjYs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgotCisjaW5j
bHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTM1LDM1ICszNCwzMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogCi1jbGFzcyBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK2NsYXNzIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKCk7CiAKLSAgICAv
LyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOwotCisgICAgLy8gTWV0aG9kcyBm
b3J3YXJkZWQgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHMoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQo
Y29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgdmly
dHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3QpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4gYnVmcykgPSAwOworICAgIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0
KSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
R0xPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRm
b3JtR0xPYmplY3QpID0gMDsKIAotICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+KSBvdmVycmlkZSA9IDA7Ci0KLSAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBFWFQgUm9i
dXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFk
blBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9p
ZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1m
dkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBm
bG9hdCAqcGFyYW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7
CiAKICAgICBib29sIGlzTlZJRElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQogICAg
IGJvb2wgaXNBTUQoKSBjb25zdCB7IHJldHVybiBtX2lzQU1EOyB9CkBAIC03OCw3ICs3NSw3IEBA
IHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7CiAgICAg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1
c2VJbmRleGVkR2V0U3RyaW5nKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lv
bihjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtU3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEV4dGVu
c2lvbnMoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVu
c2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDE1NDYyMzZmOGI2
YmRiNTIyM2QwZWRlMzdhYjc0ZjBlZDZmMTBiY2YuLjg2ZGNiZjMxZTY5ZDBmYzM3YjcyNjhkYTM3
NzVjMjUwYzViNjg0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtNzUs
NyArNzUsNyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3Ry
aW5nJiBuYW1lKQogCiAgICAgLy8gRm9yIEdMX0VYVF9yb2J1c3RuZXNzLCBjaGVjayB0aGF0IHRo
ZSBjb250ZXh0IHN1cHBvcnRzIHJvYnVzdCBhY2Nlc3MuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF9yb2J1c3RuZXNzIikKLSAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRl
bnNpb25zR0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJVRTsKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6Q09OVEVYVF9ST0JV
U1RfQUNDRVNTKSA9PSBHTF9UUlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNzAsNyAr
MjcwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXYKICAgICBtX2dsVmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKIH0KIAotYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBFeHRlbnNpb25z
R0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7CiAgICAg
ICAgIGF1dG8gbWFqb3JWZXJzaW9uID0gW10oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5o
CmluZGV4IDlhNTgxYTAwMGRkMzcyZmYxZWNkZDkxZmY5OWRlYzk4YWQ4ZTM4NTguLjliYjUyZjli
YWFhY2I1NzE2YzRkMDJiOWI1YmY3OTFhNzhmNzUwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCkBAIC03MSw2ICs3MSwxMiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsK
IAogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVMgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uIHsKIHB1YmxpYzoKKyAgICAvLyBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190
ZXh0dXJlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJfU0FNUExF
U19JTUcgPSAweDkxMzM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0lNRyA9IDB4OTEzNDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIE1BWF9TQU1QTEVTX0lNRyA9IDB4OTEzNTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRFWFRVUkVfU0FNUExFU19JTUcgPSAweDkxMzY7CisKICAgICAvLyBUaGlz
IGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMIGltcGxlbWVudGF0aW9ucy4KICAgICBFeHRlbnNpb25zR0xPcGVuR0xFUyhHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZyk7CiAgICAgdmlydHVh
bCB+RXh0ZW5zaW9uc0dMT3BlbkdMRVMoKTsKQEAgLTEwMSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgot
ICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIFN0cmluZyBnZXRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiAKICAgICBHQ0dMZW51bSBtX2Nv
bnRleHRSZXNldFN0YXR1czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmlu
ZGV4IGYzMGI1ZTFlNmVhOWQwMTU3NzRmODA2MGI5MTUzZjQ3ZTMwNjJlYWIuLmJiZjBlODFlYjk4
NTUyNWYzMjQ3NzEyOGU0NDM3MzMwNDlhOWM1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcApAQCAtMzEyLDE4ICszMTIsMjAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRG
T1JNKEdUSykKLUV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQorI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKE9QRU5HTF9FUykK
K0V4dGVuc2lvbnNHTE9wZW5HTEVTJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5z
aW9ucygpCiB7Ci0gICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKLSNpZiBVU0UoT1BFTkdMX0VTKQot
ICAgICAgICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KKyAgICAv
LyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KKyAgICBpZiAoIW1fZXh0
ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xP
cGVuR0xFUz4odGhpcywgIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIC8vIEZyb20gT3BlbkdMIDMu
MiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0
U3RyaW5naS4KKyAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKK30KKyNlbGlmIFBMQVRGT1JNKEdU
SykKK0V4dGVuc2lvbnNHTE9wZW5HTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVu
c2lvbnMoKQoreworICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJv
ZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAgICBpZiAoIW1fZXh0
ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xP
cGVuR0w+KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKLSNl
bmRpZgotICAgIH0KICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpAQCAtMzUx
LDEwICszNTMsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogewogICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBl
eHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7Ci0g
ICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bikpIHsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVw
dGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwog
ICAgICAgICB9IGVsc2UKQEAgLTM2MiwxMSArMzYzLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3Rl
bmNpCiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKICAgICB9CiAgICAgaWYg
KGF0dHJzLmFudGlhbGlhcyAmJiAhbV9pc0ZvcldlYkdMMikgewotICAgICAgICBpZiAoIWV4dGVu
c2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpIHsKKyAg
ICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUiKSkgewogICAgICAgICAgICAgYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAg
ICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKICAgICB9CiB9CiAKQEAgLTMwNjksNiArMzA3MCwz
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKEdDR0xlbnVtLCBHQ0dMU3BhbgogICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKG5hbWUpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICBnZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChuYW1lKTsKK30KKwor
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZChuYW1l
KTsKK30KKworR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKQoreworICAgIHJldHVybiBnZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmZmVycykKK3sKKyAgICByZXR1cm4g
Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKGJ1ZmZlcnMpOworfQorCitTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIpOworfQorCiBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludCB1bnBhY2tBbGlnbm1lbnQpCiB7CiAgICAgQVNTRVJUKHVucGFja0FsaWdu
bWVudCA9PSAxIHx8IHVucGFja0FsaWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9PSA0
IHx8IHVucGFja0FsaWdubWVudCA9PSA4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKaW5kZXggOTFmZWZlZjUxMmY2NTI4YmMzYTc3ODMxZWJlOWI2NDUxZDk3NDU2Yy4uNTk3OTY4
ZTBmZmU5Mjc4MzA4MDYxMzI5M2JmZjgwYWM4MDgyMGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKQEAgLTQzLDEwICs0Myw5IEBAIGNsYXNzIEdDR0xMYXllcjsKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBFeHRlbnNpb25zR0w7CiAjaWYgVVNFKE9Q
RU5HTF9FUykKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwotI2VsaWYgVVNFKE9QRU5HTCkK
KyNlbHNlCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7CiAjZW5kaWYKIGNsYXNzIEhvc3RXaW5k
b3c7CkBAIC0zNzAsNiArMzY5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG11bHRpRHJhd0VsZW1l
bnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywg
R0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48
Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3Zl
cnJpZGU7CiAKKyAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBH
TGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOworICAgIFN0cmluZyBn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisK
ICAgICAvLyBIZWxwZXIgbWV0aG9kcy4KICAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKTsKICAg
ICB2b2lkIHJlY3ljbGVDb250ZXh0KCk7CkBAIC00MDUsMTEgKzQxMSwxMyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0
LCB0aG91Z2ggbm90CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2Fy
aWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNh
bGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCisgICAgLy8gY3VycmVudCBoYXJkd2FyZS4g
TXVzdCBjYWxsIEV4dGVuc2lvbnNHTE9wZW5HTHtFU306OnN1cHBvcnRzKCkgdG8KICAgICAvLyBk
ZXRlcm1pbmUgdGhpcy4KLSAgICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVO
R0wvT1BFTkdMX0VTCi0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25z
KCkgZmluYWw7Ci0KKyNpZiBVU0UoT1BFTkdMX0VTKQorICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVT
JiBnZXRFeHRlbnNpb25zKCk7CisjZWxzZQorICAgIEV4dGVuc2lvbnNHTE9wZW5HTCYgZ2V0RXh0
ZW5zaW9ucygpOworI2VuZGlmCiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11
bGF0ZWRFdmVudEZvclRlc3RpbmcpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlz
cGxheSgpIG92ZXJyaWRlOwpAQCAtNDIwLDcgKzQyOCw3IEBAIHByb3RlY3RlZDoKICAgICBHQ0dM
dWludCBtX3RleHR1cmUgeyAwIH07CiAKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1
YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgotICAgIC8vIENh
bGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgorICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0
aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0xPcGVuR0wvRXh0ZW5zaW9uR0xP
cGVuR0xFUyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgYm9vbCBtYWtlQ29udGV4
dEN1cnJlbnQoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKICAgICAvLyBUYWtlIGludG8gYWNjb3Vu
dCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsCkBAIC01
MTIsMTMgKzUyMCwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZGVy
TmFtZUhhc2g+IG5hbWVIYXNoTWFwRm9yU2hhZGVyczsKIAorICAgIGZyaWVuZCBjbGFzcyBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb247CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICBmcmllbmQgY2xh
c3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7Ci0gICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+IG1f
ZXh0ZW5zaW9uczsKLSNlbGlmIFVTRShPUEVOR0wpCisjZWxzZQogICAgIGZyaWVuZCBjbGFzcyBF
eHRlbnNpb25zR0xPcGVuR0w7Ci0gICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lv
bnM7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCA2OGI2Y2QzZjUyNGJmNmEwOWVhZjdmZDY4NDhmYmFjMWRhNzMzYWIzLi5jMzViMmYw
ZjE1ZDljZDA5YjliMjhiZTBiZjQ0Nzc4ODc0MzA1NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMzQ1LDEwICszNDUsMTAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnUKICAgICAgICAgdHlwZSA9IEdMX0hBTEZfRkxPQVRfQVJCOwogICAgIH0K
IAotICAgIEFTU0VSVChmb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUKTsK
LSAgICBpZiAoZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQpCisgICAgQVNT
RVJUKGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQjhfQUxQSEE4X0VYVCk7CisgICAg
aWYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQpCiAgICAgICAg
IG9wZW5HTEZvcm1hdCA9IEdMX1JHQkE7Ci0gICAgZWxzZSBpZiAoZm9ybWF0ID09IEV4dGVuc2lv
bnNHTDo6U1JHQl9FWFQpCisgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdM
OjpTUkdCX0VYVCkKICAgICAgICAgb3BlbkdMRm9ybWF0ID0gR0xfUkdCOwogI2VuZGlmCiAKQEAg
LTM5OCw3ICszOTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRo
KEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitF
eHRlbnNpb25zR0xPcGVuR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25z
KCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFr
ZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMzg2NDE5OGY3NGE1
OTJiYTQyOWM2ZDBhOGJjNjFkZTgxYTM4ZjYwOS4uODNiOWI4NmM1MzI3MmZjNTQxNTdjOTBmNDY2
NWFmODExOThkYTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hh
cGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUg
bG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgIC8v
IFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgotICAgIGJv
b2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwg
fHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNf
cGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5j
aWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKIAogICAgIC8v
IFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7CkBA
IC0xMzEsMTAgKzEzMSwxMCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBl
RkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCAwKTsKICNlbmRpZgogCi0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGV4dGVuc2lvbnMg
PSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xFUyY+KGdldEV4dGVuc2lvbnMoKSk7Cisg
ICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAg
ICAgaWYgKGV4dGVuc2lvbnMuaXNJbWFnaW5hdGlvbigpICYmIGF0dHJpYnV0ZXMuYW50aWFsaWFz
KSB7CiAgICAgICAgIEdMaW50IG1heFNhbXBsZUNvdW50OwotICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMOjpNQVhfU0FNUExFU19JTUcsICZtYXhTYW1wbGVDb3VudCk7IAorICAg
ICAgICA6OmdsR2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Ok1BWF9TQU1QTEVTX0lN
RywgJm1heFNhbXBsZUNvdW50KTsgCiAgICAgICAgIEdMaW50IHNhbXBsZUNvdW50ID0gc3RkOjpt
aW4oOCwgbWF4U2FtcGxlQ291bnQpOwogCiAgICAgICAgIGV4dGVuc2lvbnMuZnJhbWVidWZmZXJU
ZXh0dXJlMkRNdWx0aXNhbXBsZUlNRyhHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCwgc2FtcGxlQ291bnQpOwpAQCAtMjQ0LDcg
KzI0NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRl
cygpCiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAg
aWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFnZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdM
X0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAgIGlmIChhdHRyaWJ1
dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRf
cmVuZGVyX3RvX3RleHR1cmUiKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZh
bHNlOwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CkBA
IC0yNjcsNyArMjY3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0
aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQor
RXh0ZW5zaW9uc0dMT3BlbkdMRVMmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNp
b25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0g
bWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggZTU0YWUzZjc5OWY4NTJlMWVlN2E3MDYwN2M5
MDdiZmMyYzQ1YWMxMi4uOTFlOGVhODAxNGI3YTk1ODkwMGI0ZjcxYzYwNDM3MTk2NmMxNWRiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkZp
bHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJOYXRpdmVJbWFnZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmNwcAppbmRleCA3NTBhODRhZjYzODJjNTQxMzBjZjM2ZTg2ZDliYzhjNzYwNGNmYmNi
Li43NTI4YzBlOTdmN2U1NmI4NTc5YWFiNWFlY2Q2N2I5MmIwNWViNzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDcsMTUgKzQ3LDgg
QEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlmCiAKLSNpZiBVU0UoQU5HTEUpCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLSNlbHNlCisjaWYgIVVTRShBTkdMRSkKICNp
bmNsdWRlIDxBTkdMRS9TaGFkZXJMYW5nLmg+Ci0jaWYgVVNFKE9QRU5HTF9FUykKLSNpbmNsdWRl
ICJFeHRlbnNpb25zR0xPcGVuR0xFUy5oIgotI2Vsc2UKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xP
cGVuR0wuaCIKLSNlbmRpZgogI2VuZGlmCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTEwOCw3ICsx
MDEsMTIgQEAgcHJpdmF0ZToKIAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cj4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyNpZiBVU0UoQU5HTEUpCisgICAgaWYgKCFjb250
ZXh0LT5pbml0aWFsaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCisgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKQEAgLTE0OCw3ICsxNDYs
OCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogCiAgICAgLy8gQ3JlYXRlIHRoZSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCBvYmplY3QgZmlyc3QgaW4gb3JkZXIgdG8gZXN0YWJsaXN0IGEgY3Vy
cmVudCBjb250ZXh0IG9uIHRoaXMgdGhyZWFkLgogICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyB7IGF0dHJpYnV0ZXMgfSk7Ci0KKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogI2lmIFVTRShMSUJFUE9YWSkgJiYgVVNFKE9QRU5HTF9FUykgJiYgRU5BQkxFKFdF
QkdMMikKICAgICAvLyBCYWlsIGlmIEdMRVMzIHdhcyByZXF1ZXN0ZWQgYnV0IGNhbm5vdCBiZSBw
cm92aWRlZC4KICAgICBpZiAoYXR0cmlidXRlcy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250
ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMiAmJiAhZXBveHlfaXNfZGVza3RvcF9nbCgpICYmIGVw
b3h5X2dsX3ZlcnNpb24oKSA8IDMwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5oCmluZGV4IDJkYjJlOGQ3ZDljZDdiOWNhYmI0YzljYTQxNzI0M2YwZTdhMGI1
MjIuLjkxZmE1NWJjZjg0ZDcxOTcwYmM1MGY4NDM3N2U1NWE0MGQ3ZjBhMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIDogcHVi
bGljIEdyYXBoaWNzQ29udGV4dEdMVGUKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gY3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmKTsKICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7
Ci0KKyAgICAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIG92ZXJy
aWRlcy4KICAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBs
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKQpA
QCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCiAgICAgdm9p
ZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKKyAgICBib29sIHJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBm
aW5hbDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcAppbmRleCA2NmUzMmFhMDMzM2Y3YjhhNmI1
ZjQ4NzQyYTY4NTc5ZGVlZjcxY2U1Li5iZmNmNzIxZmY1YzFlNGZiNzVlNmJkODhlZDBmNzUzZjlk
ODNlYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXJBTkdMRS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVy
cy5oIgogI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
QU5HTEUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNp
bmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogCkBAIC02Nyw2ICs2Niw4IEBAIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIGF0dHJpCiAjZW5kaWYKICAgICBib29sIHN1Y2Nlc3MgPSBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgIHN1Y2Nlc3MgPSBp
bml0aWFsaXplKCk7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAg
IHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRl
cygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCkBAIC0yNjAs
MTEgKzI2MSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6c2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkKIHsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwcmVwYXJlRm9yRGlzcGxheSgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cjo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBhdXRv
IGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBhdXRvIHNpemUgPSBnZXRJ
bnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBkMjYx
YTQwMjRjZjdlZjcxODdhMTBmNDc3ZWI1MzNlZjI0NmM4OGNhLi5hMzdmNGE1OGM2ZTgwZDM2NjQ2
MjNmYzc2ZDEwMGE5MzY5MzE1NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCiAjaW5jbHVkZSAiQml0bWFw
VGV4dHVyZVBvb2wuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGaWx0
ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRmxvYXRS
b3VuZGVkUmVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWNiNGI1NzY3Y2M5
YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uODk3MmMyMzk2MzlkYzNjNTA1ZGQ4YmFmZjRh
MzA3NGM2Zjk5MjQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0xMjAsNyArMTIw
LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHIKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAg
ICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICAgICAgU3RyaW5nIGV4dGVuc2lv
bnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7
Ci0gICAgICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0
cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgICAg
ICBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3Jh
cGhpY3NDb250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwogICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHRy
dWUsIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkud2FrZVVwU2VtYXBo
b3JlKCksIGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykpOwogICAgIH0gZWxzZQog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXND
cmVhdGVkKGZhbHNlLCBJUEM6OlNlbWFwaG9yZSB7IH0sICIiLCAiIikpOwpAQCAtMTg4LDEwICsx
ODgsMTAgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXJyb3IoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGwKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYgZXh0ZW5zaW9uKQogewogICAg
IGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOworICAgIG1fY29udGV4dC0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9z
dHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUz
NmJiMTcuLmQ4Yjk4MjA3MTBiNzJkOWI0NDA4YjliYzkwNTc1YmFlMmE2MGQ4YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiU2NvcGVkV2ViR0xS
ZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRXh0ZW5zaW9uc0dMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTk0LDkgKzkzLDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hDb250
ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUg
cmVjZWl2ZWQuCi0gICAgdm9pZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KTsKICAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOwotICAgIHZvaWQg
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQo
KTsKKyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgPSAwOwogI2VsaWYg
VVNFKEdSQVBISUNTX0xBWUVSX1dDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4OThlMzAyYjIuLjk3
NjgwYTg3YWIzYWE0YTA3M2YyMTkzM2M1ZmVjYjViMjI0ZGZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTM2LDcgKzM2LDcgQEAgbWVzc2FnZXMgLT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBF
bnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCi0gICAgdm9pZCBOb3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKQorICAgIHZvaWQgTWFya0NvbnRleHRDaGFuZ2VkKCkKICAgICB2
b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQogICAgIHZvaWQgR2V0RXJyb3Io
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCmluZGV4IGQxYzMyOTA1MTdkMjk2YzUx
ZTM1NmU4YjRlNTcwYzA2N2JiNzc1OGQuLjkzYmQ2NzcxNjhiYjQ0Yzk4MTM0ZGM3ODk4YzkwM2Uw
ZmJkMDNlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oCkBAIC0xMzM3LDIwICsxMzM3LDIwIEBACiAgICAgewogICAgICAgICBHQ0dM
aW50IHJldHVyblZhbHVlID0geyB9OwogICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1U
aHJlYWQpOwotICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2Nv
bnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmV0dXJuVmFsdWUpOwogICAgIH0KICAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKLSAgICAg
ICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0
LT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKICAgICB9CiAgICAgdm9pZCBkcmF3QnVm
ZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCiAgICAgewogICAg
ICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKICAgICB9CiAg
ICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50
ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwCmluZGV4IDdhZTFlZTc2ZGM0YjA3YzQwM2Y2MGI4YWQxM2RhZDliODdiZGVkMGEuLjM4Yzk0
YjNhOGI3N2YwMjE5ZjE2Y2QzMjA5OWVjY2RmYzc5MzBmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0g
MSA8PCAyMTsKIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGF0dHJpYnV0ZXMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChh
dHRyaWJ1dGVzKQogICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24pCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29u
bmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsKQEAgLTU5LDMxICs1OSw3MyBAQCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgp
CiAgICAgZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgpOwogfQogCi12b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29s
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2N1
cnJlbnRXaWR0aCA9IHdpZHRoOwotICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKLSAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICBt
YXJrQ29udGV4dExvc3QoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24pCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzR0xF
UzJDb21wbGlhbnQoKSBjb25zdAogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pKTsKLSAgICBp
ZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworI2lmIEVOQUJMRShX
RUJHTDIpCisgICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCkud2ViR0xWZXJzaW9uID09IEdy
YXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1h
cmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRy
YWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKSB7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICAgICAgaWYgKGlzQ29u
dGV4dExvc3QoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1hcmtDb250ZXh0Q2hh
bmdlZCgpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0NvbnRl
eHRMb3N0KCk7CisgICAgfQogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0
VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5h
YmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5z
aW9ucy5hZGQobmFtZSk7CisgICAgICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpKTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAg
fQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5h
YmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lv
bnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQoreworICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZm9yIChhdXRvJiBleHRl
bnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29u
dGV4dENoYW5nZWQoKSk7CisgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJl
bnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpOwogICAgIGlm
ICghc2VuZFJlc3VsdCkKICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDI5ZjAxOTg3MTk1NTk5ODc5MmVlNzc5
NWQ5YWE2MGMyZjM5NzM5NzEuLjU3M2Y3Y2I0YzBjOTVmNTQ1ZWY2ZTA2NTQ0ODQ2ZjE3NDhjMzNh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0zNiw4ICsz
Niw4IEBACiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eQogICAgIDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHJpdmF0ZSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xp
ZW50Ci0gICAgLCBwdWJsaWMgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UgeworICAgICwgcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKTsKQEAg
LTU4LDExICs1OCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3Zl
cnJpZGVzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CiAKLSAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZSBvdmVycmlkZXMuCisgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJp
ZGVzLgogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAg
IHVzaW5nIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJs
ZWQ7Ci0gICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwor
ICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgYm9vbCBpc0dM
RVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQo
KSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVt
IGVycm9yKSBmaW5hbDsKQEAgLTMyMSw5ICszMjQsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKTsKIAotICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
IG92ZXJyaWRlcy4KLSAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7Ci0KICAg
ICBib29sIGlzQ29udGV4dExvc3QoKSBjb25zdCB7IHJldHVybiAhbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbjsgfQogICAgIHZvaWQgbWFya0NvbnRleHRMb3N0KCk7CiAKQEAgLTM1MCwxMSArMzUwLDE4
IEBAIHByaXZhdGU6CiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCBvdmVycmlk
ZXMuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25u
ZWN0aW9uJikgZmluYWw7CiAKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFp
bGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7Cisg
ICAgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpOwogICAgIHZvaWQgZGlzY29ubmVjdEdwdVBy
b2Nlc3NJZk5lZWRlZCgpOwogICAgIHZvaWQgYWJhbmRvbkdwdVByb2Nlc3MoKTsKIAogICAgIEdQ
VVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIGJvb2wgbV9k
aWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRp
YWxpemVkKCkuCisgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAg
ICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0
PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKICAgICBHQ0dMZW51bSBtX2Vycm9yV2hlbkNv
bnRleHRJc0xvc3QgPSBOT19FUlJPUjsKICAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24g
bV9zdHJlYW1Db25uZWN0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4YjdlNDIyODM2MzViNzc2Mjk1OGFjZjFkYjE4YjAwZDEzM2E0
ODU5Li5hMTUzNDE0NjNmMDc5ZTMwM2Y3NjljZTVlZDFjNjRlY2Q1ZjNjNDYxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBFeHRlbnNpb25zR0wgaXMgbm90IHVzZWZ1bCBjbGFzcywgaXQgc2hvdWxkIGJlIHJlbW92
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQ5
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBtYW51YWxseSBpbXBsZW1lbnRlZCBmdW5jdGlvbnMuCisgICAgICAgICogU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3Jv
cGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4
MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi5jNjVkODc2YTRhZjIxMWNiZjczY2I3
Mjk4NjQzMTA4MWI2MGY4OGY2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdw
dXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC00MSw3
ICs0MSw2IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIERp
Y3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVyYXRvciwg
SXRlcmF0b3IsIENvdW50ZXIKIAogcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5w
YXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCi1leHRlbnNpb25zX2lucHV0X2ZuID0gcm9v
dF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhpY3MiIC8g
IkV4dGVuc2lvbnNHTC5oIgogCiBmdW5jdGlvbnNfaW5wdXRfZm5zID0gWwogICAgIHJvb3RfZGly
IC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNz
IiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCkBAIC05OCw3ICs5Nyw3IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7
CiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYK
ICAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKLSAgICB2
b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisgICAgdm9pZCBNYXJrQ29udGV4dENoYW5n
ZWQoKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCiAgICAgdm9p
ZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2
b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKQEAgLTQyMCwxNCAr
NDE5LDEyIEBAIGNsYXNzIGNwcF9mdW5jKG9iamVjdCk6CiAgICAgbmFtZTogc3RyCiAgICAgYXJn
czogY3BwX2FyZ19saXN0CiAgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCi0gICAgaXNfZXh0ZW5z
aW9uOiBib29sCiAgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0
LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIs
IHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0KToKICAgICAgICAgc2Vs
Zi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKICAg
ICAgICAgc2VsZi5hcmdzID0gYXJncwotICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4
dGVuc2lvbgogICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9ICIiCiAKICAgICBkZWYgX19z
dHJfXyhzZWxmKToKQEAgLTcxMSw3ICs3MDgsNiBAQCBjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93
ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgogY2xhc3Mgd2Via2l0X2lwY19jcHBfaW1wbChv
YmplY3QpOgogICAgIG5hbWU6IHN0cgogICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAotICAgIGlzX2V4
dGVuc2lvbjogYm9vbAogICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KICAgICBjYWxsX3N0
bXRzOiBMaXN0W3N0cl0KICAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQpAQCAtNzIzLDcg
KzcxOSw2IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5uYW1lID0gY3BwX2Z1bmMubmFtZQogICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNw
cF9mdW5jLm92ZXJsb2FkX3N1ZmZpeAogICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3Qo
W10pCi0gICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCiAg
ICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxmLmNhbGxfc3RtdHMg
PSBbXQogICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCkBAIC03MzgsMTIgKzczMywx
MSBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBsKG9iamVjdCk6CiAKICAgICBkZWYgcHJvY2Vz
c19jYWxsKHNlbGYpOgogICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWyAiYXNzZXJ0SXNDdXJy
ZW50KG1fc3RyZWFtVGhyZWFkKTsiIF0KLSAgICAgICAgZXh0ID0gImdldEV4dGVuc2lvbnMoKS4i
IGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKIAogICAgICAgICBpbl9leHBycyA9ICIsICIu
am9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBycykKICAgICAgICAgaXNfYXN5bmMgPSBs
ZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKIAotICAgICAgICBjYWxsX2V4cHIgPSBmIm1fY29udGV4
dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIKKyAgICAgICAgY2FsbF9leHByID0gZiJt
X2NvbnRleHQtPntzZWxmLm5hbWV9KHtpbl9leHByc30pIgogICAgICAgICBpZiBub3Qgc2VsZi5y
ZXR1cm5fdmFsdWVfZXhwcjoKICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2Fs
bF9leHByfTsiXQogICAgICAgICBlbHNlOgpAQCAtODc5LDggKzg3Myw4IEBAIGRlZiBjcmVhdGVf
Y3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgogICAgIHJldHVybiBjcHBf
YXJnX2xpc3QoW2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwg
ZSBpbiBlbnVtZXJhdGUoYXJnc19zcGVjcyldKQogCiAKLWRlZiBjcmVhdGVfY3BwX2Z1bmMobmFt
ZTogc3RyLCByZXR1cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVu
c2lvbjogYm9vbCk6Ci0gICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9
Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nf
c3BlY3MpLCBpc19leHRlbnNpb249aXNfZXh0ZW5zaW9uKQorZGVmIGNyZWF0ZV9jcHBfZnVuYyhu
YW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSk6CisgICAg
cmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVy
bl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpKQogCiAKIGRlZiBy
ZWFkX2xpbmVzX3VudGlsKGxpbmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdl
bmVyYXRvcltzdHIsIE5vbmUsIE5vbmVdOgpAQCAtODk2LDIwICs4OTAsNiBAQCBkZWYgbWFpbigp
OgogCiAgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9t
IHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgogCi0gICAgIyBGSVhNRTogVW50aWwgZXh0ZW5z
aW9ucyBoZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1l
bnRhdGlvbgotICAgICMgd2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9u
IGlzIG9yIGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rpb24uCi0gICAgZXh0ZW5zaW9uX3NpZ25h
dHVyZXMgOiBTZXRbc3RyXSA9IHNldCgpCi0gICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRf
Zm4pIGFzIGY6Ci0gICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAg
ICBtID0gcmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBs
aW5lKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2Nw
cF9mdW5jKAotICAgICAgICAgICAgICAgICAgICBuYW1lPW1bMl0sCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybl9zcGVjPW1bMV0sCi0gICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3Bw
X3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCi0gICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lv
bj1UcnVlLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBleHRlbnNpb25fc2ln
bmF0dXJlcy51cGRhdGUoW3N0cihmdW5jKV0pCiAgICAgZnVuY3MgPSBbXQogICAgIHVuaW1wbGVt
ZW50ZWQgPSBbXQogICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgpAQCAtOTI2LDkg
KzkwNiw3IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNf
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAogICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1
bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCiAgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMu
aXNfaW1wbGVtZW50ZWQoKToKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChm
dW5jKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgo=
</data>
<flag name="commit-queue"
          id="478492"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451679</attachid>
            <date>2022-02-11 05:15:31 -0800</date>
            <delta_ts>2022-02-11 06:03:50 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236490-20220211151529.patch</filename>
            <type>text/plain</type>
            <size>280207</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uNDA1NWY5MWUxZDUyMjliMThkN2Y4MjlhMjFkNDVj
NDEwNTIxOGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJv
dGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFnZSI+
IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTM1
Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZWJjMDFjOWZiNDA4YmQxNjZk
NTQ2OTBkZTU4NjgzZjlhNjUxZjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTEx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDU3YzRhYTliMWExOGNjZmE5YWIyODdlNGUwYjM3MGVlM2FkNTA5Yy4uMWQ2
ODAxNTBlYmY5YzExMTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MDgsNyArMTkwOCw2IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICkKICAg
ICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFm
NWJhZmFjMi4uNDI4OWIxM2FkZTgwM2YyZjJhOTQwOTVjMzg1OGNkZWMzNzM3NTFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xNDM1LDcgKzE0MzUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgKQEAgLTE1NTMsNyArMTU1Miw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMTU4MSw3ICsxNTc5LDYgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
SGVhZGVycy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMjM5YTIyYmQxMDMwMjFkMTI3NTI2YTBmNDhjNzAxZDliNjc0MGUzNS4uYWRkYzEw
MjFmODA5M2UxMDE1OTZmYTc0ZGJhYjY5MGZjYzk4Zjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzIsMTIgKzI3MiwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwog
ICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbGlmIFVTRShP
UEVOR0xfRVMpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5z
aW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGF1dG8mIGV4dGVuc2lv
bnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4
dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwg
PSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsK
ICNlbHNlCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBhdXRvJiBleHRlbnNp
b25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCY+KGdsKS5nZXRF
eHRlbnNpb25zKCk7CiAgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2ls
ID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9D
T01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5U
OwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBG
cmFtZWJ1ZmZlcigpCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBnbC5nZXRJbnRlZ2VydihHTDo6
TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbHNlCi0g
ICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dM
U3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NHTFNwYW4oJm1heFNhbXBsZUNvdW50LCAx
KSk7CiAjZW5kaWYKICAgICAgICAgLy8gQ2FwIHRoZSBtYXhpdW11bSBtdWx0aXNhbXBsZSBjb3Vu
dCBhdCA0LiBBbnkgbW9yZSB0aGFuIHRoaXMgaXMgbGlrZWx5IG92ZXJraWxsIGFuZCB3aWxsIGlt
cGFjdCBwZXJmb3JtYW5jZS4KICAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1h
eFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0
YWIzM2E4YmQ3NWU3YTU4YS4uOGM4MDVmMmYwNzdmZmVjYWI3YzUxNWE2YWM3NzQ1ZmIzZWMxY2Nm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIwNzMsNyArMjA3Myw2IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQx
ZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uN2JkNWEyNGI0YTYxYWJhMjEwYmZiNDVhYThjYjczMzIz
MjJmNWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTUsNiArNjE1LDUgQEAgdGVz
dGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCiAvLyB3aXRo
IGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdMLgogCiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2
MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uYjQ1YmQwZDlmYTJkMWM1NmQ1ZGYyMGIx
MjZiYTJjMzU3YWY2NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NywxMSArMjE4Nyw4IEBACiAJCTZFNDdFNjYxMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJD
RDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQy
OTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBF
eHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Ki87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUy
OTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07
Ci0JCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDQyMjlDOUY4
RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi87IH07CiAJCTZFNzJGNTUxMjI5RENE
MUEwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLzsgfTsKIAkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RThBQ0RFRDIzMzQ1
Q0JDMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4QUNERUIyMzM0NUNBRjAwMjRBQUY1
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCAqLzsgfTsKQEAgLTI0MTIsNyArMjQwOSw2
IEBACiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhB
QzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5NUNGRUQyNzU0
RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwODY5LDggKzEwODY1LDYgQEAKIAkJNkUyNDJCMjkyMzM1OTNENzAw
MkNBREQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjQyQjJBMjMzNTkzRDgwMDJDQURENCAvKiBKU1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xB
TkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25z
R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQ0MjI5QzlG
OEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFyeUFOR0xFU2V0
dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYzMjI5REI5NzAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA5MDIsNyArMTA4OTYsNiBAQAogCQk2RTUzODhFMDI0NThBRTFEMDA3NkFFMDMgLyogV2Vi
R0xDb2xvckJ1ZmZlckZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTM4OEUxMjQ1OEFF
MUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29sb3JC
dWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTc2QkMzMjRF
QjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVu
c2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTdDQTMwQTI1QjREMjhB
MDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMTXVs
dGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFN0NBMzBCMjVCNEQzMjgw
MDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xNdWx0aURyYXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTg0RTlERTE3
NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE1MjYsNyArMTE1MTksNiBAQAogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I5MDQxNkUyNTUwMTEw
OTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTVDRkVDMjc1
NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1NDIsNyArMTE1MzQsNiBAQAogCQk3
QkREQTMxRDI3NEY5REE1MDAzODY1OUUgLyogR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzQ5Mjc1QTAxMzAwMDM4NjU5RSAvKiBQ
cm9jZXNzSWRlbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c0lkZW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzRCMjc1QTAx
MzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RUYy
NzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRkY1OUYxMjc1NzcxRTgwMDc3M0QzOSAv
KiBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdz
LmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0Mzk1LDggKzI0Mzg2LDYgQEAKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIg
LyogQU5HTEVIZWFkZXJzLmggKi8sCiAJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFO
R0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5H
TEVVdGlsaXRpZXMuaCAqLywKLQkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwICovLAotCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRl
bnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKIAkJCQk3Qjk1Q0ZFQzI3NTRGRjdDMDAwMDYwQ0Ug
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5
ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLApAQCAtMjg4NzAsNyArMjg4NTks
NiBAQAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcyQyAvKiBEaXNwbGF5VXBkYXRlLmNwcCAq
LywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMgLyogRGlzcGxheVVwZGF0ZS5oICovLAog
CQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLywK
LQkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8sCiAJCQkJ
MkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5jcHAgKi8sCiAJCQkJMkU4ODhD
QTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5oICovLAogCQkJCUIyNzUzNTNBMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKQEAgLTI5MDY1LDggKzI5MDUzLDYgQEAK
IAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyogUGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAot
CQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgKi8sCi0JCQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEw
OEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBF
QTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMzQ0NDEsOCArMzQ0MjcsNiBAQAogCQkJ
CTJEMjkzODZCMjM1RjZCNjkwMEM3RjNCMiAvKiBFeGNlcHRpb25EZXRhaWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTcyRjU1MDIyOURDRDE3MDBC
M0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0UyNzY1
MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY3NjEsNyArMzY3NDUsNiBA
QAogCQkJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjkwNDE3MDI1NTAxMTQy
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXli
YWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0MjE3
N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
ODY0OCw3ICszODYzMSw2IEBACiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1By
b3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyMjgzMDMyM0E4NDcwNzAwMzY0
QjdFIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTU5MjI4MEU5MjYw
MDJCMjJBQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkU3
MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdhbWVDb250
cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRENjE2MDBG
QTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRleCA4MjIwMzM5MTVk
MDRlM2IwYzI5NjJmYmI1MjM0ZTkzNGY5M2E3MTE3Li44NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZm
YzE4N2Y2Y2Y1YmJlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
QU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0yOCwxMCArMjgsNiBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbmNsdWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0o
R1RLKSB8fCBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKFdQRSkKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArMzgsNyBAQCBBTkdMRUluc3RhbmNlZEFycmF5czo6
QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKICNlbmRpZgogfQogCkBAIC01MywxMCArNDksMTAgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBBTkdMRUluc3RhbmNlZEFycmF5c05hbWU7CiB9CiAKLWJvb2wgQU5HTEVJbnN0YW5jZWRBcnJh
eXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBB
TkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDMyZWI4
OTdiMTZkOTA5ZDM5NGExMGE3ODUxYzFlMzI2NzU0ZWM5MzYuLjY5YzQ0ZGQ0OTEzYWZlM2Q1ZjBl
YjNkZjMwYTgxN2MzNGJmZjA4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKaW5kZXggMDllNTBjNGNiYWQzZjU5
OGEzMjJkOTA1MWM5ODNmZmIwZTdiMjVlNy4uNzk2NTYwYmQ0Y2U2YTUwOTYxNjNiZTE5NDAwYmVl
ZTI0ODJmMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsMTAgKzM3LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRD
b2xvckJ1ZmZlckZsb2F0KTsKIEVYVENvbG9yQnVmZmVyRmxvYXQ6OkVYVENvbG9yQnVmZmVyRmxv
YXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
S2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zs
b2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVYVENvbG9y
QnVmZmVyRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSAr
NTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckZsb2F0
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9
CiAKLWJvb2wgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZm
ZXJGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5oCmluZGV4IGViMjlmYTBlNTQ5M2EyNDgxMWNjMTA2ODczNjNhMWQ4OWNiZGZkNzYuLjk1NDhm
MGY5M2YwZTQ2N2Q2YjkyYWFlZmRjNTk1M2Y0OGQ1MzgwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCmluZGV4IDc5ZTFjYzE5ZDFlYmY3
ZWMwNzQ3ZTM2NWIyMGJmNDFiY2MzMzIwNGYuLjBlZmVkODNhZDZhOTFmMDQ0MWIyM2U0NzE0MmFi
OTg3NzgzMzQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KTsKIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0
OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29s
b3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
Il9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdCgpID0gZGVmYXVsdDsKQEAgLTQ4LDEwICs0NywxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0
ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxm
RmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZs
b2F0LmgKaW5kZXggMTA3NzllZjZjMmM5YzQyNmYzZDY1MTE2MWU4ZjZkMGRkZjIzY2Y3NS4uNmY0
YmM0ODFhMzA0ZjY0ZDQ1ZDkyMmIxYjcyMzExZmM5OGQ5Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKaW5kZXggOGVmNjg3OTMzYWFlY2Y1YjhkMzNjZTAy
MDc4ODJjMmJkZDU3ODk2MS4uYmRkODVkMDcwZDA4NzEzOTYzZGMxN2IxNjRhMmZiYWVlNjA3MDIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhURmxvYXRCbGVu
ZC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhURmxvYXRCbGVuZCk7CiBFWFRGbG9hdEJsZW5kOjpF
WFRGbG9hdEJsZW5kKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBFWFRGbG9hdEJsZW5kOjp+RVhURmxvYXRC
bGVuZCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgRVhURmxvYXRCbGVuZDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVYVEZs
b2F0QmxlbmROYW1lOwogfQogCi1ib29sIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBFWFRGbG9hdEJsZW5kOjpz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZmxvYXRfYmxlbmQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCmluZGV4IDIyYzMwMmEz
MzBhNjIyMjM1Y2Y2ODUyOTNjZDhjMTY4NTZhNDU3YmUuLjQ0NmI5ZmYzNzFkYzI5MmI4ZmU2MTgy
OTMyZDU4ZjU2NjYwNjc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZsb2F0QmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9h
dEJsZW5kLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcAppbmRleCA0NjNhNTg3M2NmMzA5NjMxMmQ5N2Q2MzI3ZjYxYWU4MWU0NzFkZDdk
Li40NmM5NjBmMTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM4LDEyICszNywxMiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9S
R1RDMl9FWFQpOwogfQogCiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCmluZGV4IDUyNzEzOGYzMGY3
NWZhZDA3Mzk4NTk0YjMzM2E3ZGY5YzE0MmQyODAuLmU2NmJiODI0M2E3Mzc5MjFhMGQ1MzUzNzVm
ZWM2Y2RmM2IzOWFmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCIKIAotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk7CiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGU6OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3BhcmFsbGVsX3NoYWRl
cl9jb21waWxlIl9zKTsKIH0KIAogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjp+S0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGVOYW1lOwogfQogCi1ib29s
IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3Bh
cmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKIH0KICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKaW5kZXggMWZjZmMyYjU4ZWQ5ZmI0ZTZkMTE3
NDE4NjE0N2RmM2JkYzAyNTNhOS4uODM4MDRkNmRmOWYyNjMxZDlhNzNkOTUwOGVhNzEwZjlhY2I1
MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1h
cC5jcHAKaW5kZXggNzFhODFkMGQ5MzA5ZDY0NGVlNDg2OGJkYWEyM2VkODc4NGFmNTIxYi4uNjUy
MjBiN2FiYzA3MTMzNTY1NmJkN2ZiMzUzNjJmM2U0YTIyZjZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIk9FU0ZCT1JlbmRlck1pcG1hcC5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTRkJPUmVuZGVyTWlwbWFwKTsKIE9FU0ZCT1JlbmRlck1pcG1h
cDo6T0VTRkJPUmVuZGVyTWlwbWFwKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiBPRVNG
Qk9SZW5kZXJNaXBtYXA6On5PRVNGQk9SZW5kZXJNaXBtYXAoKSA9IGRlZmF1bHQ7CkBAIC00OCw5
ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU0ZCT1JlbmRlck1pcG1h
cDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU0ZCT1JlbmRlck1pcG1hcE5hbWU7CiB9
CiAKLWJvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBt
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCmlu
ZGV4IDMzOTZmOWUxZTExNGU1MWFmY2RmZGQ4M2YzZWQyZWI2ODMzZTZkZjIuLjAyYTcyOGNjZWUx
ZmViZTAwNmQyZDk2YTRkMDg3MGQ4YTRmMjA0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwCmluZGV4IGU5MmIyZmVmYmYwOTQ2OGJlY2RiZDFlZjhkOWRkMjEwZDViOGMy
MGYuLjVkMWU4OTY3N2U2MTJjMjk3ZTQ2MjkxMTg0MzY3MzhmMzU5YjlkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTVGV4dHVyZUZsb2F0KTsKIE9FU1RleHR1cmVGbG9hdDo6T0VT
VGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9z
KTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWly
ZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAK
IE9FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTUzLDkg
KzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUZsb2F0Ojpn
ZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsKIH0KIAotYm9v
bCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0Nv
bnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsK
KyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxv
YXQiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IDhhNzI3NGRkZWNhOGY3ZDNiMjM0NjU2
YWIzZGY1YzdkOGZmZWQwNmMuLjEwZTE5ZWI3MGE3YmFkOTNlYzY5OWIwOWE2YTU3ODkyOWY1N2M4
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKaW5kZXggNDBiOTg5
OTZmNjdhYzFlOGFiNjVjZDY2NmQ2M2QyN2QzOWYzMWNlZS4uNGVhODY2ZGVlMjRjYzVhMGNlMWEz
MDgxZWU5NzM5Y2IwZTBhMzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUg
Ik9FU1RleHR1cmVIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9FU1RleHR1cmVIYWxm
RmxvYXQpOwogT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiX3MpOwogICAgIC8vIFJlbmRlcmFiaWxpdHkgaXMgaW1wbGljaXQgd2hl
biB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQog
CiBPRVNUZXh0dXJlSGFsZkZsb2F0Ojp+T0VTVGV4dHVyZUhhbGZGbG9hdCgpID0gZGVmYXVsdDsK
QEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVy
ZUhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU1RleHR1cmVIYWxmRmxv
YXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlSGFsZkZs
b2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXQuaAppbmRleCBhMzU0ZmNiN2UzOWI1MzBiZjQ5MzM2MTI5Njg5MTM2ZWE5NjIx
NjYzLi5kNTE5NDZhYmE0MzkwNGYzMDZlMWE3ZDA3Y2YwMGI5YWViZGU1MTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCAzMGQ0YjNmZjBj
YmQyNGY1MzgwODYzMGJjYzQzMDY3ZDhjZThmMDZkLi40ZjI4NWM1ZjRjMmUwMzAxZGJmNTQ3NDAz
Y2ZmMTBjYzg2OTRmZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
V0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDVhMzg3OTU3YzI2MDY2MjJkYjQ2ZjRiZjYw
ODhiZTMzMTA2MWFiYmIuLjZkMGE4NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTI0MCwxMCArMjM5LDEwIEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkK
IHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRoZSBXZWJHTCAyLjAgY29yZSBBUEkgYW5k
IHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgIG1fY29udGV4dC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIG1fY29u
dGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVw
dGgiKTsKIH0KIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRh
cmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKQEAgLTI3MTUs
MjAgKzI3MTQsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5l
YXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250
ZXh0IiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
QVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMxLCAiV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJU
QywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
LCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbywgbV93ZWJnbERlYnVnUmVuZGVyZXJJ
bmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIsIHRydWUpOwotICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9k
ZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUQ29sb3JCdWZmZXJGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdCIsIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwot
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29s
b3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xv
ckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1
cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRl
cnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9z
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENv
bG9yQnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBt
X2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVs
dGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIHRydWUpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtMjc0Myw0MiArMjc0Miw0MSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAo
bV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlm
IChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQorICAg
IGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6
c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAg
IH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykp
CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3Rj
Il9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250
ZXh0Il9zKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6
OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRo
aXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQi
X3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxl
bF9zaGFkZXJfY29tcGlsZSJfcyk7Ci0gICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0aV9kcmF3Il9zKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xv
ckJ1ZmZlckZsb2F0LmNwcAppbmRleCBhODFhNDljMmNhNzY5MzgwNTg2MjM0YzFmMjA5ZTQ4ZWEy
YzZkYzBmLi42YzBhOWJlNTYxZDc5ZTcwZDlmMzVkNThhOTcwNmM2NTU2NTBkODgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwx
MiArMzcsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29sb3JCdWZmZXJG
bG9hdCk7CiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OldlYkdMQ29sb3JCdWZmZXJGbG9hdChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CiAgICAgLy8gT3B0aW1p
c3RpY2FsbHkgZW5hYmxlIFJHQiBmbG9hdGluZy1wb2ludCByZW5kZXIgdGFyZ2V0cyBhbHNvLCBp
ZiBwb3NzaWJsZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOwogICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAgLy8gU3BlYyBy
ZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0bHkgaGVyZS4K
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsK
IH0KIAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2ViR0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBk
ZWZhdWx0OwpAQCAtNTMsMTAgKzUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1l
IFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojpz
dXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykKLSAgICAgICAgJiYgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpCisgICAgICAgICYmIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAppbmRleCAwZDJkMDdjMjU1
OTllMDRjY2VjYTA2NmE0NTk2NTA1ZDEwMmUxODY0Li45NGNkZWQ2Y2Q2MzY3YzE4ZDYwMDJhNmVh
ZWIyMTQwMzEzMjM5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXggNmVhY2ExZjJhMDI1MTc2ZGE0NTNiNTAw
MTI4YTM2ZjExMzZiODE1ZC4uNGZmMDIyZTllZDUxMmE5MmVkYTMxMDFjZjFjMjZjMmVlNWFmODM5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzksNDEgKzM4LDQxIEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyk7CiAKIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKLSAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfaGRyIl9zKSkKLSAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIl9zKSkKKyAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19oZHIiX3MpKQorICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lv
bl9hc3RjX2xkciJfcykpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tI
Uik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUik7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
Uik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CiAgICAgCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2
X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUik7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MngxMl9LSFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpAQCAtOTUsMTAgKzk0LDEwIEBAIFZlY3RvcjxT
dHJpbmc+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpnZXRTdXBwb3J0ZWRQcm9maWxlcygp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2hkciJfcykKLSAgICAgICAgfHwgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19oZHIiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKaW5kZXggMzBlZmUzZDgxYzFiOWI5NDYz
Mzk3MzFkMzc4ZDJjYzE3YTMxNTlmMC4uZmEwZTViOTllM2UxZjQ2Y2I4NTU0MDI3MjYyZTA2NWJm
MThmMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBnZXRTdXBwb3J0ZWRQcm9maWxlcygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNv
bnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSERSU3VwcG9y
dGVkIDogMTsKICAgICBib29sIG1faXNMRFJTdXBwb3J0ZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApp
bmRleCBjOWU3YmUzMGM2MzEwNTAzMDNkZmJlNjZhMTMzZmZkNDI0NmVjMjI5Li5iYzNlYmUyZDVl
NzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMjks
NyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTEgKzM4LDExIEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0g
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2Vk
X0FUQ190ZXh0dXJlIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQ
SEFfQU1EKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMoKSA9IGRlZmF1bHQ7CkBAIC01Myw5ICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDTmFtZTsKIH0KIAotYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU1EX2NvbXByZXNz
ZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oCmluZGV4IGUwYmQyNjYxMDk0NDBmY2IzMDdjOTNiMzVjNTQzMGIxZGQ5
NGQxZmEuLjEwNTY4YTlkZDk0YzNiZTI3NzhjMzI0Nzg5YzRmOGY3NTQ0YWE0YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4IDRmZWFhNWRkODc5MTIzNTkzMWY5
ODU5Zjk2NzBjNDY4YTVhM2JmYTMuLjkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5
ZjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zOSwxOCArMzgsMTggQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUjExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMy
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOwogfQogCiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpID0gZGVm
YXVsdDsKQEAgLTYwLDkgKzU5LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9v
bCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7
CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
CmluZGV4IDc0Njc3OGNjMmRlMDIzOWI5ZWUyYzc1M2RiMGY2OTJlMDRkODk3ZDQuLmMzODgyOTEx
YWI1OTZkOWYyMTA2YTgxODFlOWVmMjBjMjhkMDgxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZDlhN2NmYWI2OWU3NmVhZTMxN2VjMGJjZjU2NTQ5OTZj
ZjI0MTVlYS4uYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYxOTBiMTcwOTJmNjA4MDliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTKTsKKyAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhf
T0VTKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6On5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMSgpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMU5hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2NvbXBy
ZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKaW5kZXggMDZmZTI3YWFiMTc4M2RiYzFi
M2IwMWUxZWY0OTgwOWJkM2NkYjIzYy4uMDQ0OWY1NzA0NDY0YzI1NmJiMzgzZDc3NGFmYmM5ZTM2
ZjE3OTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoKTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApp
bmRleCAxYTIwYzA3ZDI3MzNjMTgwZTQ1YWRmYTQzZGFmOGU4NTM2YjQ0NWJhLi41YTg0OTllOWU0
Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQw
LDEyICszOSwxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQ
UFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKIH0KIAogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgPSBkZWZh
dWx0OwpAQCAtNTUsOSArNTQsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25f
cHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuaAppbmRleCBhODY2OWYwZWI4ZDAyZjA4OTgwMGNmMmMyNjViODFjN2E1ZjNj
YTVkLi4zMzcyYzI5YWIyNGU1Yzg5MGZhMzM3ZWIwZjk0OWVlZjllZjVjMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggMDdiYTRmYTViZTEy
NTdjM2M4MTIwMzc5OGMxZjk1ZmE3NzQ2YTlhZi4uZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBh
OTE4NmEzYTUwMjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00MCwxNSArMzksMTUgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKTsKIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKTsKLSAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgIGF1
dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAg
IGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQogCiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkg
PSBkZWZhdWx0OwpAQCAtNTgsMTYgKzU3LDE1IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CiAjaWYgVVNFKEFOR0xFKQotICAg
IHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAm
JiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDMiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKICNlbHNlCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgK
aW5kZXggYTM0NzNkOGVlZmJkMjIyZjFiMjZjYjEyOWQ0ZDQ0NzJjYzQxMTUwOS4uMWRiZjQ1YTRj
MGUyNDNiM2M2MDAwMTRmNTVmNmYwZDhmNTQ4MDM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRleCA1MGQwYmQ5MDdlOGZkZWU4ZmQ0MWQ2
NWQyMWI4ZDAwYTJmYWZmNTc3Li5mNjVmNDJhZTIyYWM3MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2
NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgi
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzks
MTMgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiIik7Ci0KLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0Y19zcmdiIik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6On5XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoKSA9IGRlZmF1bHQ7CkBAIC01NSwxMCArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0JOYW1lOwogfQog
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCmluZGV4IGM3OTNiOTE2ZGIwZTY2
Y2YzZTljNjc3MGY1NjYwN2YzMThmZjc0NmIuLjU5YTY2M2YxNGQxZmI0YmM2Yzg1ODY3NWY1NWY0
OGQ3YTdlZmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQigpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApp
bmRleCA2YjA0OTU0YTRhNTI5Y2U4ODJmMmE2NGJiM2Q4NjdmYTg0YzM4Y2YwLi5hNjlkYTI5MDM4
NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDcgKzQw
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVidWdTaGFkZXJzKTsKIFdl
YkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSIpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTcsNyArNTYsNyBAQCBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRl
cnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2Jq
ZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
Lm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9iamVjdCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IGE2OTE1MzIzYTg0OTQ0ZTU5YmMxNzJkM2Y1Yjk0MzM3
MjY4MTQzNzYuLjkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1NTgwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICszOCw5IEBAIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJHTERlcHRoVGV4dHVyZSk7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xE
ZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOworICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdM
RGVwdGhUZXh0dXJlKCkgPSBkZWZhdWx0OwpAQCAtNTIsOSArNTIsOCBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJv
b2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9k
ZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMGRjMTdlYTli
YzBjZGM3NGQxZTYxYzFmMDI1M2M4ZWNlYjM2ODk1My4uMDY3MGE0NzY0MmJmYmZlY2JkZWY1NjM3
OGEyYmViNWIxOGM5NWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3
QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQog
ewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
IH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBA
IC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRHJhd0J1
ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwog
I2VuZGlmCiB9CkBAIC03NSw3ICs3NCw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1
ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICB9CiAg
ICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJy
ZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hN
RU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyBidWZzWzBdID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCQUNLID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOworICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKHZhbHVlKTsKICAg
ICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0woY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAg
ICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAh
PSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKKyAgICAgICAgICAg
IGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FICYmIGJ1ZnNbaV0gIT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhU
IG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC05
OCw4ICs5Nyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlz
IHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50
ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKLSAgICBHQ0dMaW50IG1h
eENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNv
bnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
KTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAo
bWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywxMCArMTA2LDEwIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
d2ViCiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAw
LCAwLCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBm
b3Igb3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRo
U3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3Rl
bmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRo
U3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggNTBiYWNmNTY0ZmNhZjY2NmY4
NTdiZDQ5MTU2Mjc5NDJjZmM1MjA3My4uNDlmYjFkZGRmNThhOGVkZmMwMWI0OGRhNWRmZjQ5Nzcx
Zjc2ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKQEAgLTI3OSwyMSArMjc4LDIxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJp
dHNCeUF0dGFjaG1lbnRUeXBlKEdDR0xlbnVtIGF0dGFjaG1lbnQpCiB7CiAgICAgc3dpdGNoIChh
dHRhY2htZW50KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVO
VDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNI
TUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDhfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1F
TlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ1
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDdfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQxNV9FWFQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQlVGRkVSX0JJVDsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9BVFRBQ0hN
RU5UOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7
CkBAIC0zNjMsOCArMzYyLDggQEAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9ybWF0
KEdDR0xlbnVtIGZvcm1hdCkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMTZJOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEzMkk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQTMyVUk6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhB
X0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDE2OgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDI0OgpAQCAtNjMzLDcgKzYzMiw3
IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiBy
ZWFzb24pIGNvbnN0CiAgICAgICAgIEdDR0xlbnVtIGF0dGFjaG1lbnRGb3JtYXQgPSBhdHRhY2ht
ZW50LT5nZXRGb3JtYXQoKTsKIAogICAgICAgICAvLyBBdHRhY2hpbmcgYW4gU1JHQl9FWFQgZm9y
bWF0IGF0dGFjaG1lbnQgdG8gYSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkLgotICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUKQorICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQpCiAgICAgICAg
ICAgICBhdHRhY2htZW50Rm9ybWF0ID0gMDsKIAogICAgICAgICBpZiAoIWF0dGFjaG1lbnRGb3Jt
YXQpIHsKQEAgLTgzMywxOCArODMyLDE4IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1
ZmZlcnNJZk5lY2Vzc2FyeShib29sIGZvcmNlKQogICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+
aXNXZWJHTDIoKSkKICAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdM
KCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKG1f
ZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIEdDR0xlbnVtIFdl
YkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoR0NHTGVudW0gZHJhd0J1ZmZlcikKIHsKLSAg
ICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGRyYXdCdWZmZXIgLSBFeHRlbnNpb25zR0w6
OkRSQVdfQlVGRkVSMF9FWFQpOworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJh
d0J1ZmZlciAtIEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUKTsKICAgICBBU1NF
UlQoaW5kZXggPj0gMCk7CiAgICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihtX2RyYXdC
dWZmZXJzLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBtX2RyYXdCdWZmZXJzW2luZGV4XTsKLSAg
ICBpZiAoZHJhd0J1ZmZlciA9PSBFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQpCisgICAg
aWYgKGRyYXdCdWZmZXIgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVGRkVSMF9FWFQpCiAg
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDA7CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCmluZGV4IDY0YjE1ZDVmZjg2MTNjZmQ3ODRjN2Uz
MWQwMjJkNTNiZDYxM2NlZmUuLmYxY2M1NmM5ZGZiMTg4NGI4YjhkZWFhMmVlZmU1ODI3ZjkyZmVl
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xNdWx0
aURyYXcuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQyLDggQEAg
c3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlE
cmF3OjpJbnQzMkxpc3QmIGxpc3QsIEcKIFdlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKTsKLSAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX211bHRpX2RyYXciX3MpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiB9CiAKIFdlYkdMTXVsdGlEcmF3Ojp+V2ViR0xN
dWx0aURyYXcoKSA9IGRlZmF1bHQ7CkBAIC01NCwxMCArNTMsMTAgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBXZWJHTE11bHRpRHJhd05hbWU7CiB9CiAKLWJvb2wgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRl
ZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJl
dHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKLSAgICAgICAgJiYgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6
bXVsdGlEcmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3Qs
IEdDR0x1aW50IGZpcnN0c09mZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNv
dW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5oCmluZGV4IDY1OTI5ZjUxY2FiOGJmODkyN2I3YzkwYmU5NmMx
OGU0ODMxODFkNzYuLjUwZDZkYjgxYTJkOTc0Mzg4MDBiNGU3OWRhMzEyYTIwMjIyNTBkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
Jik7CiAKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c1dFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMy
TGlzdCBmaXJzdHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNM
aXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBmYTU3YmI1NDAyM2UzZmY5OTYzNGIzYTk5OTE4ZTA5M2NhYTJkNGJiLi5jOTYwYzI2
MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAi
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKQEAgLTE1MywxMCArMTUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0RlcHRoLCAiRVhUX2ZyYWdfZGVwdGgiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSkg
ewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVyZUxPRCkgewotICAgICAgICAgICAgaWYg
KCEobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9B
UkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCisgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkp
CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJfcyk7CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0g
YWRvcHRSZWYobmV3IEVYVFNoYWRlclRleHR1cmVMT0QoKnRoaXMpKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0xNjUsMzEgKzE2NCwzMSBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIH0KICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCAiRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJh
bGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVk
KCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21w
aWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwog
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTU3RhbmRhcmREZXJpdmF0aXZlcywgbV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZW5hYmxlU3VwcG9y
dGVkRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNf
dGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAi
T0VTX3RleHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKTsKLSAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBw
b3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxv
YXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNU
ZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChPRVNWZXJ0ZXhBcnJheU9iamVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoT0VTRWxlbWVudEluZGV4VWludCwgbV9vZXNFbGVtZW50SW5kZXhVaW50LCAiT0VTX2VsZW1l
bnRfaW5kZXhfdWludCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTRkJPUmVuZGVyTWlw
bWFwLCBtX29lc0ZCT1JlbmRlck1pcG1hcCwgIk9FU19mYm9fcmVuZGVyX21pcG1hcCIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQs
ICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3Ny
Z2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlcHRoVGV4dHVyZSwgbV93ZWJnbERl
cHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiLCBXZWJHTERlcHRoVGV4dHVyZTo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCR0xfZHJhd19idWZmZXJzIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZl
cnMpIHsKICAgICAgICAgICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IGFkb3B0UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJz
KCp0aGlzKSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQpAQCAtMTk4LDEwICsx
OTcsMTAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSkgewogICAgICAgICBpZiAoIW1f
YW5nbGVJbnN0YW5jZWRBcnJheXMpIHsKLSAgICAgICAgICAgIGlmICghQU5HTEVJbnN0YW5jZWRB
cnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgICAgICAgICBpZiAoIUFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBhZG9wdFJlZihuZXcgQU5HTEVJbnN0YW5j
ZWRBcnJheXMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0y
MDksMTEgKzIwOCwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gbV9hbmdsZUlu
c3RhbmNlZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1
Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIl9zKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwg
IkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTE11
bHRpRHJhdywgbV93ZWJnbE11bHRpRHJhdywgIldFQkdMX211bHRpX2RyYXciLCBXZWJHTE11bHRp
RHJhdzo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJF
WFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC0yMjcsNjkgKzIyNiw2OSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIGlm
IChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9ibGVu
ZF9taW5tYXgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21p
bm1heCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9FWFRfc1JHQiJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X0VYVF9zUkdCIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiX3MpOwotICAg
IGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVw
dGgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZnJh
Z19kZXB0aCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mcmFnX2RlcHRoIl9zKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFk
ZXJfdGV4dHVyZV9sb2QiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9z
KSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKKyAgICBp
ZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7Ci0gICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVt
ZW50X2luZGV4X3VpbnQiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMi
X3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NS
R0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgaWYgKFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlcHRoX3RleHR1cmUiX3MpOwogICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgaWYgKEFOR0xF
SW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChBTkdMRUluc3RhbmNl
ZEFycmF5czo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpCisg
ICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3No
YWRlcnMiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8i
X3MpOwotICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkK
KyAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsK
LSAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhURmxv
YXRCbGVuZDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfZmxvYXRfYmxlbmQiX3MpOwotICAgIGlmIChXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCpt
X2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxv
YXQiX3MpOwotICAgIGlmIChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhp
cykpCisgICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUi
KTsKLSAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQkdMX211bHRpX2RyYXciX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMCw3
ICszMjksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgogICAg
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CkBAIC0zNDMsMTYgKzM0MiwxNiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyPihvYmpl
Y3QpOwotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQ6IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKICAgICAgICAgICAgIGlm
ICghbV9leHRzUkdCKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciByZW5kZXJidWZmZXIgYXR0YWNobWVu
dCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiByZW5kZXJCdWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2JqZWN0LmdldCgpKTsKICAgICAgICAgICAg
IEdDR0xlbnVtIHJlbmRlckJ1ZmZlckZvcm1hdCA9IHJlbmRlckJ1ZmZlci0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEV4
dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpOworICAgICAgICAgICAg
QVNTRVJUKHJlbmRlckJ1ZmZlckZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQg
JiYgcmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VCk7CisgICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCOF9BTFBIQThfRVhUKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKTsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTM2Nyw5ICszNjYsOSBAQCBHQ0dMaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFX
X0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6
Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtMzc5
LDcgKzM3OCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29s
b3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKQEAgLTQ1
NCw5ICs0NTMsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEVx
dWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZVTkNfQUREOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZVTkNfU1VC
VFJBQ1Q6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19SRVZFUlNFX1NVQlRSQUNU
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNSU5fRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfRVhUOgotICAgICAgICBpZiAoKG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNSU5fRVhUIHx8
IG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNQVhfRVhUKSAmJiAhbV9leHRCbGVuZE1pbk1heCkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0VYVDoKKyAgICAgICAgaWYgKChtb2RlID09IEdyYXBoaWNzQ29udGV4dEdM
OjpNSU5fRVhUIHx8IG1vZGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9FWFQpICYmICFtX2V4
dEJsZW5kTWluTWF4KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIG1vZGUiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBi
OGI1ZmI2NWFjZjQxMmU5MzIyNTI0NWE0MWE1ZDgxODE1NTVkNjgxLi5hNWVlOGUzNzVhMzUzZThj
ODkyNGM4NjA3MDY4YWI2NGNmNjg4MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUg
IkVYVHNSR0IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01NTUsMTIgKzU1NCwxMiBAQCBzdGF0aWMg
dWludDhfdCBnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JBKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
NTY1OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KENoYW5uZWxCaXRzOjpSR0IpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCNV9BMToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCQSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfQ09NUE9ORU5UOgpAQCAtNjQzLDggKzY0Miw4IEBAIHN0YXRpYyBib29sIHBv
c3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMCiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NURU5DSUw4LCBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0lOVF8yNF84KTsKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEgzMkZfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVO
Q0lMLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfRVhU
LCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdC
X0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhULCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhULCBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9BTFBIQV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA5MSwx
NyArMTA5MCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3Mo
KQogICAgIC8vIHR1cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJD
b21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dM
RVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAg
ICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAg
ICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRo
X3RleHR1cmUiKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dM
RVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxzZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0
ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVf
bm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdv
Iik7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRl
eHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikgfHwg
bV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsK
ICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAgbV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3JvYnVzdG5lc3MiKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0zMzAzLDkgKzMzMDIs
OSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiAiV2ViR0wgMS4wIl9zdHI7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRf
T0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgaWYgKG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcykKLSAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRl
cihFeHRlbnNpb25zR0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRH
TDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOwogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFdlYkdMRGVidWdS
ZW5kZXJlckluZm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgpAQCAtMzMzNiwyNSArMzMzNSwy
NSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxlZCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8v
IEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAobV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJh
bWV0ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAg
ICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOwogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVmZmVycyBCRUdJTgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQ6IC8v
IEVYVF9kcmF3X2J1ZmZlcnMgQkVHSU4KICAgICAgICAgaWYgKG1fd2ViZ2xEcmF3QnVmZmVycyB8
fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdldE1heENvbG9yQXR0YWNobWVudHMo
KTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kcmF3
X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgogICAgICAgICBpZiAobV93ZWJnbERyYXdC
dWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0TWF4RHJhd0J1ZmZl
cnMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9k
cmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkK
LSAgICAgICAgICAgICYmIHBuYW1lID49IEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVAot
ICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dM
OjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkpIHsKKyAgICAgICAgICAg
ICYmIHBuYW1lID49IEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUCisgICAgICAg
ICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xlbnVtPihHcmFwaGljc0NvbnRleHRHTDo6
RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7CiAgICAgICAgICAgICBH
Q0dMaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiAgICAgICAgICAgICBpZiAo
bV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX2ZyYW1lYnVm
ZmVyQmluZGluZy0+Z2V0RHJhd0J1ZmZlcihwbmFtZSk7CkBAIC0zMzcyLDcgKzMzNzEsNyBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIC8vIENPTVBMRVRJT05fU1RBVFVTX0tIUiBzaG91
bGQgYWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IGlzIGxvc3QsIHNvIGFwcGxpY2F0
aW9ucwogICAgIC8vIGRvbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBwb2xsaW5nIGxvb3Au
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkgewotICAgICAgICBpZiAocG5hbWUg
PT0gRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFIpCisgICAgICAgIGlmIChwbmFt
ZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTMzOTks
NyArMzM5OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2toclBhcmFsbGVsU2hhZGVy
Q29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQcm9ncmFtUGFy
YW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5hYmxlZCIpOwpAQCAt
MzUwMyw3ICszNTAyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKICAgICAvLyBDT01QTEVU
SU9OX1NUQVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBp
cyBsb3N0LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5m
aW5pdGUgcG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpIHsK
LSAgICAgICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hS
KQorICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RB
VFVTX0tIUikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0zNTE3LDcgKzM1MTYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQt
PmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQYXJhbGxlbFNoYWRlckNv
bXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRl
ciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVuYWJsZWQiKTsKQEAgLTM1ODYs
NyArMzU4NSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYg
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQogICAgICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMgbm90IGVuYWJsZWQiKTsKQEAgLTM5NTksNyArMzk1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CiAgICAgICAgIGlz
VmFsaWQgPSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJB
R01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcywgb3IgY29yZSBpbiBXZWJHTCAyLjAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpG
UkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzLCBvciBjb3JlIGluIFdlYkdMIDIuMAogICAgICAgICBpZiAobV9vZXNTdGFuZGFyZERl
cml2YXRpdmVzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CkBAIC00NjEwLDggKzQ2MDksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VJbXBsKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNp
egogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjVfQTE6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6UkdCNTY1OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxf
SU5ERVg4OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUOgotICAgICAg
ICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUICYm
ICFtX2V4dHNSR0IpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThf
RVhUOgorICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNS
R0I4X0FMUEhBOF9FWFQgJiYgIW1fZXh0c1JHQikgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBpbnRlcm5hbGZvcm1hdCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC00NjIyLDcgKzQ2MjEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VJbXBsKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpegogICAgICAgICBicmVh
azsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMOgogICAgICAgICBp
ZiAoaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSkKLSAgICAgICAgICAgIG1fY29udGV4dC0+cmVu
ZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIEV4dGVuc2lvbnNHTDo6REVQVEgyNF9TVEVOQ0lMOCwg
d2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UodGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhl
aWdodCk7CiAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+c2V0U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJc1ZhbGlkKGlzRGVwdGhT
dGVuY2lsU3VwcG9ydGVkKCkpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmctPnNldElu
dGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0KTsKQEAgLTU2MTYsOCArNTYxNSw4IEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShj
b25zdCBjaGFyKiBmdW5jdGlvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VDoKICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgInNSR0Ig
dGV4dHVyZSBmb3JtYXRzIG5vdCBlbmFibGVkIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC01Nzc1LDcgKzU3NzQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgIElOVEVS
TkFMX0ZPUk1BVF9DQVNFKERFUFRIX1NURU5DSUwgICAgICwgREVQVEhfU1RFTkNJTCAgLCBHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzggICAgICAgICAgICAgLCAwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAw
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIElOVEVSTkFMX0ZPUk1BVF9DQVNFKERFUFRI
MjRfU1RFTkNJTDggICwgREVQVEhfU1RFTkNJTCAgLCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdO
RURfSU5UXzI0XzggICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAg
ICApOwogICAgIElOVEVSTkFMX0ZPUk1BVF9DQVNFKERFUFRIMzJGX1NURU5DSUw4ICwgREVQVEhf
U1RFTkNJTCAgLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0Xzhf
UkVWLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVDoK
ICAgICAgICAgaWYgKGZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkgewogICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IG11c3QgbWF0Y2giKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU3ODUsNyArNTc4NCw3IEBAIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFy
KiBmdW5jdGlvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICBpZiAoZm9ybWF0ICE9
IGludGVybmFsRm9ybWF0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImZvcm1hdCBhbmQg
aW50ZXJuYWxmb3JtYXQgbXVzdCBtYXRjaCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTk2OCw3ICs1OTY3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhQ
YXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0MKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYgKCFt
X2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInRleFBhcmFtZXRlciIsICJp
bnZhbGlkIHBhcmFtZXRlciwgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBlbmFi
bGVkIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC02Mzg1LDcgKzYzODQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMb3N0QwogICAgICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCk7CiAg
ICAgICAgIGlmIChjYW52YXMpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1l
ID0gY2FudmFzLT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRleHQobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2NvbnRleHQtPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY4OTgsMTgg
KzY4OTcsMTggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgQmxvY2tQYXJhbWV0
ZXJzIHsgMTIsIDEwLCBrQVNUQ0Jsb2NrU2l6ZSB9LAogICAgICAgICBCbG9ja1BhcmFtZXRlcnMg
eyAxMiwgMTIsIGtBU1RDQmxvY2tTaXplIH0KICAgICB9OwotICAgIGNvbnN0IEdDR0xlbnVtIEFT
VENFbnVtU3RhcnRSR0JBID0gRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRf
S0hSOwotICAgIGNvbnN0IEdDR0xlbnVtIEFTVENFbnVtU3RhcnRTUkdCOCA9IEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOworICAgIGNvbnN0IEdDR0xl
bnVtIEFTVENFbnVtU3RhcnRSR0JBID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzR4NF9LSFI7CisgICAgY29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFNSR0I4ID0g
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjsK
IAogICAgIGNvbnN0IGludCBrRUFDQW5kRVRDMkJsb2NrU2l6ZSA9IDQ7CiAKICAgICBzd2l0Y2gg
KGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9F
WFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTOiB7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVM6IHsKICAgICAgICAgY29uc3Qg
aW50IGtCbG9ja1NpemUgPSA4OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0Owog
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTY5MTgsMTIgKzY5MTcsMTIg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhG
dW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJs
b2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
M19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RD
X0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENf
UkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQ
SEFfQU1EOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
SU5URVJQT0xBVEVEX0FMUEhBX0FNRDoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50
IGtCbG9ja1NpemUgPSAxNjsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7
CkBAIC02OTMzLDggKzY5MzIsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAg
ICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxv
Y2tTaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgogICAgICAgICB7
CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgICAgICBjb25z
dCBpbnQga0Jsb2NrV2lkdGggPSA4OwpAQCAtNjk0Miw4ICs2OTQxLDggQEAgYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBj
aGFyKiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgs
IGtCbG9ja1dpZHRoKSAqIHN0ZDo6bWF4KGhlaWdodCwga0Jsb2NrSGVpZ2h0KSAqIDQgKyA3KSAv
IGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKICAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDE2OwpAQCAtNjk1MSw0NCArNjk1MCw0NCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1h
eCh3aWR0aCwga0Jsb2NrV2lkdGgpICogc3RkOjptYXgoaGVpZ2h0LCBrQmxvY2tIZWlnaHQpICog
MiArIDcpIC8ga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfMTB4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9B
U1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ180eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CiAgICAg
ICAgIGJ5dGVzUmVxdWlyZWQgPSBjYWxjdWxhdGVCeXRlc0ZvckFTVEMod2lkdGgsIGhlaWdodCwg
QVNUQ1BhcmFtZXRlcnNbZm9ybWF0IC0gQVNUQ0VudW1TdGFydFJHQkFdKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
NHg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzV4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tI
UjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9L
SFI6CiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBjYWxjdWxhdGVCeXRlc0ZvckFTVEMod2lkdGgs
IGhlaWdodCwgQVNUQ1BhcmFtZXRlcnNbZm9ybWF0IC0gQVNUQ0VudW1TdGFydFNSR0I4XSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOiB7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VU
QzI6IHsKICAgICAgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQnl0ZXNSZXF1aXJlZCA9ICh3aWR0
aCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAg
ICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gKGhlaWdodCArIGtFQUNBbmRFVEMyQmxvY2tT
aXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAgICAgICAgY2hlY2tlZEJ5dGVzUmVx
dWlyZWQgKj0gODsKQEAgLTY5OTksMTAgKzY5OTgsMTAgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5j
dGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9F
QUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogeworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogewogICAg
ICAgICBDaGVja2VkVWludDMyIGNoZWNrZWRCeXRlc1JlcXVpcmVkID0gKHdpZHRoICsga0VBQ0Fu
ZEVUQzJCbG9ja1NpemUgLSAxKSAvIGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVj
a2VkQnl0ZXNSZXF1aXJlZCAqPSAoaGVpZ2h0ICsga0VBQ0FuZEVUQzJCbG9ja1NpemUgLSAxKSAv
IGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVja2VkQnl0ZXNSZXF1aXJlZCAqPSAx
NjsKQEAgLTcwMTMsOCArNzAxMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAg
IGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQ6IHsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VY
VDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgIGNvbnN0IGlu
dCBrQmxvY2tXaWR0aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpA
QCAtNzAyMyw4ICs3MDIyLDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0
ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXpl
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOiB7CiAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0
aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwpAQCAtNzA0OSwxNCAr
NzA0OCwxNCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZv
cm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQ1X0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKICAg
ICAgICAgY29uc3QgR0NHTHNpemVpIGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgR0NH
THNpemVpIGtCbG9ja0hlaWdodCA9IDQ7CiAgICAgICAgIGNvbnN0IEdDR0xpbnQgbWF4VGV4dHVy
ZVNpemUgPSB0YXJnZXQgPyBtX21heFRleHR1cmVTaXplIDogbV9tYXhDdWJlTWFwVGV4dHVyZVNp
emU7CkBAIC03MDY5LDU1ICs3MDY4LDU1IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1H
OgogICAgICAgICAvLyBIZWlnaHQgYW5kIHdpZHRoIG11c3QgYmUgcG93ZXJzIG9mIDIuCiAgICAg
ICAgIGlmICgod2lkdGggJiAod2lkdGggLSAxKSkgfHwgKGhlaWdodCAmIChoZWlnaHQgLSAxKSkp
IHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IGludmFsaWQgZm9y
IGxldmVsIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4
NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
Xzh4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFf
RUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9L
SFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182
eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
Xzh4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNng1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMngxMl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUM6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRD
Ml9FQUM6CiAgICAgICAgIC8vIE5vIGhlaWdodCBhbmQgd2lkdGggcmVzdHJpY3Rpb25zIG9uIEFT
VEMsIEVUQzEgb3IgRVRDMi4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAg
LTcxMzMsMTQgKzcxMzIsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICB9CiAKICAg
ICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19E
WFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1Mz
VENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQ1X0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
NV9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29u
c3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CiAgICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dp
ZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpIHsKQEAgLTcxNTQsMTAgKzcxNTMsMTAg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhT
dWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFs
aWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWws
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6
IHsKICAgICAgICAgaWYgKHhvZmZzZXQgfHwgeW9mZnNldCkgewogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlv
bk5hbWUsICJ4b2Zmc2V0IGFuZCB5b2Zmc2V0IG11c3QgYmUgemVybyIpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzE2OSwxOSArNzE2OCwxOSBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoY29uc3QgY2hh
ciogZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1l
bnNpb25zKGZ1bmN0aW9uTmFtZSwgdGFyZ2V0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
KTsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkVUQzFfUkdCOF9PRVM6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9SR0I4X09FUzoKICAgICAgICAgLy8gTm90IHN1cHBv
cnRlZCBmb3IgRVRDMV9SR0I4X09FUyB0ZXh0dXJlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU0lHTkVEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1Ix
MV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfRVRDMl9FQUM6IHsKICAgICAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV8zRCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJub3Qgc3Vw
cG9ydGVkIG9uIFRFWFRVUkVfM0QgdGV4dHVyZXMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTc2OTgsNyArNzY5Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgaWYgKCFtX3Jlc3RvcmVBbGxvd2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgaW50IGNvbnRleHRM
b3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAKICAg
ICBzd2l0Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Tk9fRVJST1I6CkBAIC03NzA3LDE1ICs3NzA2LDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgICAgIC8vIFdFQkdMX2xvc2Vf
Y29udGV4dCBleHRlbnNpb24gbWlnaHQgaGF2ZSBiZWVuIHVzZWQgdG8gZm9yY2UKICAgICAgICAg
Ly8gYSBsb3N0IGNvbnRleHQuCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIGNvbnRl
eHQgaXMgbm90IHJlc3RvcmVkIGlmIHRoaXMgY29udGV4dCB3YXMKICAgICAgICAgLy8gZ3VpbHR5
IG9mIGNhdXNpbmcgdGhlIGdyYXBoaWNzIHJlc2V0LgogICAgICAgICBwcmludFRvQ29uc29sZShN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXQVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRoZSBwYWdl
IGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNldDsgbm90IHJlc3RvcmluZyB0aGUgY29u
dGV4dCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OklOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OklOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBBbHdheXMgYWxsb3cgdGhlIGNvbnRleHQg
dG8gYmUgcmVzdG9yZWQuCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpV
TktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVO
S05PV05fQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIFdhcm4uIElkZWFsbHksIHByb21w
dCB0aGUgdXNlciB0ZWxsaW5nIHRoZW0gdGhhdCBXZWJHTAogICAgICAgICAvLyBjb250ZW50IG9u
IHRoZSBwYWdlIG1pZ2h0IGhhdmUgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvCiAgICAgICAg
IC8vIHJlc2V0IGFuZCBhc2sgdGhlbSB3aGV0aGVyIHRoZXkgd2FudCB0byBjb250aW51ZSBydW5u
aW5nCkBAIC03ODgyLDkgKzc4ODEsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldE1heERyYXdCdWZmZXJzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQotICAgICAgICBt
X21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0RSQVdfQlVGRkVSU19FWFQpOworICAgICAgICBtX21heERyYXdCdWZmZXJzID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAg
ICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRB
Q0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQt
PmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQp
OwogICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVO
VFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVm
ZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKIH0KQEAgLTc4OTQsNyArNzg5Myw3IEBAIEdD
R0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cygp
CiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICBtX21heENvbG9yQXR0YWNobWVu
dHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNI
TUVOVFNfRVhUKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsK
ICAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOwogfQogCkBAIC04MDM5LDExICs4MDM4
LDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliRGl2aXNv
cihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2CiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uTmFt
ZUxpdGVyYWwpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIFN0cmluZyBleHRlbnNpb25OYW1l
IHsgZXh0ZW5zaW9uTmFtZUxpdGVyYWwgfTsKLSAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMo
ZXh0ZW5zaW9uTmFtZSkpCisgICAgaWYgKCFtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKGV4
dGVuc2lvbk5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKGV4dGVuc2lvbk5hbWUpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChleHRlbnNpb25OYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcAppbmRleCA3MmI5Njg4ZTZmOTVlZmMyYzAwOTllZWJkNWRlY2Q0MzNlZDY5YWNmLi5lMTIx
MTZkODBlNjAzOWM3Y2Q4MjNiMzljOTE4NWVjMjcwM2NhOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcApA
QCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDdhN2ExYjVmMjRjNThjMDg5YzIwOWYyZWYzMDM1
MzMxMzQ0NjE3NzguLjc5NDM1YTNhYzI0NzU2ZjdmOWQ5NGE1OTI2YzIwMTZlOTExNjcyMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNDEsNyArMzQx
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dX
ZWJHTChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdz
OyB9CiAgICAgLy8gSW5mb3JtcyB0aGUgZW1iZWRkZXIgdGhhdCBhIFdlYkdMIGNhbnZhcyBpbnNp
ZGUgdGhpcyBmcmFtZSByZWNlaXZlZCBhIGxvc3QgY29udGV4dAotICAgIC8vIG5vdGlmaWNhdGlv
biB3aXRoIHRoZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9pbm5vY2VuY2UgY29kZSAo
c2VlIEV4dGVuc2lvbnNHTC5oKS4KKyAgICAvLyBub3RpZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4g
R0xfQVJCX3JvYnVzdG5lc3MgZ3VpbHQvaW5ub2NlbmNlIGNvZGUgKHNlZSBHcmFwaGljc0NvbnRl
eHRHTC5oKS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZVdlYkdMQ29udGV4dChpbnQpIHsgfQog
ICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYp
IGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAg
ICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9u
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjA3NjMwOGM1OGEwYmQ0NTkzOWIwYTdi
YzVlNjI0ZDU2NGViNTEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBpcyBhIGJhc2UgY2xhc3MgY29u
dGFpbmluZyBvbmx5IHB1cmUgdmlydHVhbCBmdW5jdGlvbnMuCi0vLyBJbXBsZW1lbnRhdGlvbnMg
bXVzdCBwcm92aWRlIGEgc3ViY2xhc3MuCi0vLwotLy8gVGhlIHN1cHBvcnRlZCBleHRlbnNpb25z
IGFyZSBkZWZpbmVkIGJlbG93IGFuZCBpbiBzdWJjbGFzc2VzLAotLy8gcG9zc2libHkgcGxhdGZv
cm0tc3BlY2lmaWMgb25lcy4KLS8vCi0vLyBDYWxsaW5nIGFueSBleHRlbnNpb24gZnVuY3Rpb24g
bm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBjb250ZXh0Ci0vLyBtdXN0IGJlIGEgbm8tb3A7
IGluIHBhcnRpY3VsYXIsIGl0IG1heSBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuIEluCi0vLyB0aGlz
IHNpdHVhdGlvbiwgaWYgdGhlIGZ1bmN0aW9uIGhhcyBhIHJldHVybiB2YWx1ZSwgMCBpcyByZXR1
cm5lZC4KLWNsYXNzIEV4dGVuc2lvbnNHTCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RXh0ZW5z
aW9uc0dMKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gU3VwcG9ydGVkIGV4dGVuc2lvbnM6Ci0gICAg
Ly8gICBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICAvLyAgIEdMX0VYVF9yZWFk
X2Zvcm1hdF9iZ3JhCi0gICAgLy8gICBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vICAgR0xfQVJC
X3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byAvIEdMX09FU190ZXh0dXJlX25wb3QKLSAgICAvLyAg
IEdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCAvIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bAotICAgIC8vICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAvIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlCi0gICAgLy8gICBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190
ZXh0dXJlCi0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdAotICAgIC8vICAgR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyCi0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0g
ICAgLy8gICBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhcgotICAgIC8vICAgR0xfT0VT
X3N0YW5kYXJkX2Rlcml2YXRpdmVzCi0gICAgLy8gICBHTF9PRVNfcmdiOF9yZ2JhOAotICAgIC8v
ICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKLSAgICAvLyAgIEdMX09FU19lbGVtZW50X2lu
ZGV4X3VpbnQKLSAgICAvLyAgIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAg
IC8vICAgR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIChvbmx5IHRoZSBzdWJzZXQgcmVxdWlyZWQg
dG8KLSAgICAvLyAgICAgaW1wbGVtZW50IElPU3VyZmFjZSBiaW5kaW5nOyBpdCdzIHJlY29tbWVu
ZGVkIHRvIHN1cHBvcnQKLSAgICAvLyAgICAgdGhpcyBvbmx5IG9uIE1hYyBPUyBYIHRvIGxpbWl0
IHRoZSBhbW91bnQgb2YgY29kZSBkZXBlbmRlbnQKLSAgICAvLyAgICAgb24gdGhpcyBleHRlbnNp
b24pCi0gICAgLy8gICBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gICBH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCi0gICAgLy8gICBHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjX3NyZ2IKLSAgICAvLyAgIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdC
OF90ZXh0dXJlCi0gICAgLy8gICBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAg
IC8vICAgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKLSAgICAvLyAgIEdMX0tI
Ul90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyCi0gICAgLy8gICBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMKLSAgICAvLyAgIEdMX0VYVF9kZWJ1Z19tYXJrZXIKLSAgICAvLyAgIEdM
X0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCi0gICAgLy8gICBHTF9BTkdM
RV9pbnN0YW5jZWRfYXJyYXlzCi0gICAgLy8gICBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9y
eQotCi0gICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCi0g
ICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpID0gMDsKLQotICAgIC8vIENlcnRhaW4gT3BlbkdMIGFu
ZCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgbWF5IHN1cHBvcnQgZW5hYmxpbmcKLSAgICAvLyBleHRl
bnNpb25zIGxhemlseS4gVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVkIHdpdGgKLSAgICAv
LyBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVybnMgdHJ1ZS4KLSAgICB2
aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAvLyBU
YWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBmb3IgZXhhbXBsZSwgIkdMX0VYVF90ZXh0dXJl
X2Zvcm1hdF9CR1JBODg4OCIuCi0gICAgLy8gQ2hlY2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBnaXZl
biBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxlZCAoc2VlIGVuc3VyZUVuYWJsZWQpLgotICAg
IC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCi0gICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAvLyBFWFRfc1JHQiBmb3JtYXRzCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0VYVCA9IDB4OEM0MDsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIFNSR0JfQUxQSEFfRVhUID0gMHg4QzQyOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gU1JHQjhfQUxQSEE4X0VYVCA9IDB4OEM0MzsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhU
ID0gMHg4MjEwOwotCi0gICAgLy8gRVhUX2JsZW5kX21pbm1heCBlbnVtcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gTUlOX0VYVCA9IDB4ODAwNzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIE1BWF9FWFQgPSAweDgwMDg7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEJHUkFfRVhU
ID0gMHg4MEUxOwotCi0gICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MgZW51bXMKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1MzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIElOTk9DRU5UX0NPTlRFWFRfUkVTRVRfQVJCID0g
MHg4MjU0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVU5LTk9XTl9DT05URVhUX1JF
U0VUX0FSQiA9IDB4ODI1NTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTlRFWFRf
Uk9CVVNUX0FDQ0VTUyA9IDB4OTBGMzsKLQotICAgIC8vIEdMX0VYVC9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwgZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERFUFRIMjRfU1RF
TkNJTDggPSAweDg4RjA7Ci0KLSAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IG5hbWVz
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRUFEX0ZSQU1FQlVGRkVSID0gMHg4Q0E4
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19GUkFNRUJVRkZFUiA9IDB4OENB
OTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfRlJBTUVCVUZGRVJfQklORElO
RyA9IDB4OENBNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFQURfRlJBTUVCVUZG
RVJfQklORElORyA9IDB4OENBQTsKLQotICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlIG5hbWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJf
U0FNUExFUyA9IDB4OENBQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEUgPSAweDhENTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBNQVhfU0FNUExFUyA9IDB4OEQ1NzsKLQotICAgIC8vIEdMX0lNR19tdWx0aXNh
bXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJF
TkRFUkJVRkZFUl9TQU1QTEVTX0lNRyA9IDB4OTEzMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HID0gMHg5MTM0Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVNfSU1HID0gMHg5MTM1Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9TQU1QTEVTX0lNRyA9IDB4OTEz
NjsKLQotICAgIC8vIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBuYW1lcwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMg
PSAweDhCOEI7Ci0KLSAgICAvLyBHTF9PRVNfcmdiOF9yZ2JhOCBuYW1lcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gUkdCOF9PRVMgPSAweDgwNTE7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBSR0JBOF9PRVMgPSAweDgwNTg7Ci0KLSAgICAvLyBHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVkVSVEVYX0FS
UkFZX0JJTkRJTkdfT0VTID0gMHg4NUI1OwotCi0gICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBUUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0EwOwotCi0gICAgLy8gR0xfQVJCX3RleHR1
cmVfcmVjdGFuZ2xlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX1JFQ1RB
TkdMRV9BUkIgPSAgMHg4NEY1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9CSU5ESU5HX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjY7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVCA9IDB4ODNGMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUID0gMHg4M0YxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAweDgzRjI7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNGMzsK
LQotICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhD
NEM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUID0gMHg4QzRFOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQgPSAw
eDhDNEY7Ci0KLSAgICAvLyBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRVRDMV9SR0I4X09FUyA9IDB4OEQ2NDsKLQotICAg
IC8vIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUjExX0VBQyA9IDB4OTI3MDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMgPSAweDkyNzE7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHMTFfRUFDID0gMHg5MjcyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMgPSAweDky
NzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQjhfRVRDMiA9
IDB4OTI3NDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhf
RVRDMiA9IDB4OTI3NTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIgPSAweDkyNzY7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiA9
IDB4OTI3NzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMgPSAweDkyNzg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQyA9IDB4OTI3OTsKLQotICAgIC8vIEdMX0lNR190ZXh0
dXJlX2NvbXByZXNzaW9uX3B2cnRjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFf
SU1HID0gMHg4QzAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDM7Ci0KLSAgICAvLyBHTF9BTURfY29tcHJlc3Nl
ZF9BVENfdGV4dHVyZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9B
VENfUkdCX0FNRCA9IDB4OEM5MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EID0gMHg4QzkzOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EID0gMHg4N0VFOwotCi0gICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19o
ZHIKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4
NF9LSFIgPSAweDkzQjA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ181eDRfS0hSID0gMHg5M0IxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiA9IDB4OTNCMjsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIgPSAweDkzQjM7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hS
ID0gMHg5M0I0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg1X0tIUiA9IDB4OTNCNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIgPSAweDkzQjY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSID0gMHg5M0I3OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgPSAw
eDkzQjg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMHg2X0tIUiA9IDB4OTNCOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDhfS0hSID0gMHg5M0JBOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSID0gMHg5M0JCOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSID0g
MHg5M0JDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTJ4MTJfS0hSID0gMHg5M0JEOwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIgPSAweDkzRDA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIg
PSAweDkzRDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NV9LSFIgPSAweDkzRDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgPSAweDkzRDM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4
Nl9LSFIgPSAweDkzRDQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIgPSAweDkzRDU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIgPSAweDkzRDY7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4OF9LSFIgPSAweDkzRDc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSID0gMHg5M0Q4OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiA9
IDB4OTNEOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4OF9LSFIgPSAweDkzREE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiA9IDB4OTNEQjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTJ4MTBfS0hSID0gMHg5M0RDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQ7Ci0KLSAgICAvLyBHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkI7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUID0gMHg4REJDOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
ID0gMHg4REJEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdO
RURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRTsKLQotICAgIC8vIEdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7Ci0KLSAgICAvLyBH
TF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gTUFYX0RSQVdfQlVGRkVSU19FWFQgPSAweDg4MjQ7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjBfRVhUID0gMHg4ODI1OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxX0VYVCA9IDB4ODgyNjsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMl9FWFQgPSAweDg4Mjc7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjNfRVhUID0gMHg4ODI4OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI0X0VYVCA9IDB4ODgyOTsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNV9FWFQgPSAweDg4MkE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjZfRVhUID0gMHg4ODJCOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI3X0VYVCA9IDB4ODgyQzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSOF9FWFQgPSAweDg4MkQ7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjlfRVhUID0gMHg4ODJFOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMF9FWFQgPSAweDg4MkY7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjExX0VYVCA9IDB4ODgz
MDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTJfRVhUID0gMHg4
ODMxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxM19FWFQgPSAw
eDg4MzI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE0X0VYVCA9
IDB4ODgzMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTVfRVhU
ID0gMHg4ODM0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0NPTE9SX0FUVEFD
SE1FTlRTX0VYVCA9IDB4OENERjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQwX0VYVCA9IDB4OENFMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTE9SX0FUVEFDSE1FTlQxX0VYVCA9IDB4OENFMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTE9SX0FUVEFDSE1FTlQyX0VYVCA9IDB4OENFMjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQzX0VYVCA9IDB4OENFMzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCA9IDB4OENFNDsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ1X0VYVCA9IDB4OENFNTsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ2X0VYVCA9IDB4
OENFNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ3X0VY
VCA9IDB4OENFNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQ4X0VYVCA9IDB4OENFODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQ5X0VYVCA9IDB4OENFOTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TE9SX0FUVEFDSE1FTlQxMF9FWFQgPSAweDhDRUE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUID0gMHg4Q0VCOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEyX0VYVCA9IDB4OENFQzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxM19FWFQgPSAweDhDRUQ7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VF
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9
IDB4OENFRjsKLQotICAgIC8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOwot
Ci0gICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNpb24KLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7Ci0KLSAgICAv
LyBXZWJHTCBmdW5jdGlvbnMuCi0KLSAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vIE5v
dGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0
bmVzcwotICAgIC8vIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6Ci0gICAgLy8g
VGhlIGltcGxlbWVudGF0aW9uIG11c3Qgbm90IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcg
dGhpcyBjYWxsLgotICAgIC8vIElmIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBh
biBlcnJvciwgaXQgc2hvdWxkIGNvbnRpbnVlCi0gICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVy
cm9yLiBSZXN0b3JpbmcgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKLSAg
ICAvLyBleHRlcm5hbGx5LgotICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgPSAwOwotCi0gICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNl
Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QpID0gMDsKLQotICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRf
ZHJhd19idWZmZXJzCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7Ci0KLSAgICAvLyBPdGhlciBmdW5jdGlvbnMuCi0jaWYg
IVVTRShBTkdMRSkKLSAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQgotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMdm9pZCogZGF0YSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
LQotI2VuZGlmCi0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRl
eCBkNjBjMzdhOWZmZTVjMmNiZTAzNjZlMjc2ZDg0ODg2NjViZDZlMjBiLi5hMTQwOTBhN2Y5OGQ0
YWZjYWUzNTgwZGRjOGU3OWU2MTkzNDNkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKQEAgLTM3NiwxMyArMzc1LDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0w6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjoKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JfSU5URUdFUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CiAg
ICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSAzOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJH
QkFfSU5URUdFUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6QkdSQV9FWFQ6IC8vIEdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhB
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBX0VYVDogLy8gR0xfRVhUX3Rl
eHR1cmVfZm9ybWF0X0JHUkE4ODg4CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9B
TFBIQV9FWFQ6CiAgICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSA0OwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYjVmNWVjZDM4MWNhOTBhMjdkOGQyYWI1MmQz
ZWZiMjUyYmVkMWI2Yy4uMWNjZWViNTM3MzUzOGQ1MzUyM2Y0OWRjZTJhMDY4MmU0N2RmYzhkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCkBAIC02NzQsNiArNjc0LDE0NSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjU7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX0JJTkRJTkdfUkVDVEFOR0xFX0FSQiA9IDB4ODRG
NjsKIAorICAgIC8vIEVYVF9zUkdCIGZvcm1hdHMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFNSR0JfRVhUID0gMHg4QzQwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JH
Ql9BTFBIQV9FWFQgPSAweDhDNDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdC
OF9BTFBIQThfRVhUID0gMHg4QzQzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQgPSAweDgyMTA7CisKKyAgICAv
LyBFWFRfYmxlbmRfbWlubWF4IGVudW1zCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBN
SU5fRVhUID0gMHg4MDA3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0VYVCA9
IDB4ODAwODsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBlbnVtcwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQkdSQV9FWFQgPSAweDgwRTE7CisKKyAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcyBlbnVtcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjUzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gSU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTQ7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjU1Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09OVEVYVF9ST0JVU1RfQUNDRVNTID0gMHg5
MEYzOworCisgICAgLy8gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIG5hbWVzCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09F
UyA9IDB4OEI4QjsKKworICAgIC8vIEdMX09FU19yZ2I4X3JnYmE4IG5hbWVzCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBSR0I4X09FUyA9IDB4ODA1MTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFJHQkE4X09FUyA9IDB4ODA1ODsKKworICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVFJBTlNM
QVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9IDB4OTNBMDsKKworICAgIC8vIEdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUID0gMHg4M0YwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAweDgzRjE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCA9IDB4ODNGMjsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0g
MHg4M0YzOworCisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VY
VCA9IDB4OEM0QzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
Ql9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQgPSAweDhDNEU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1
X0VYVCA9IDB4OEM0RjsKKworICAgIC8vIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0
dXJlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBFVEMxX1JHQjhfT0VTID0gMHg4RDY0
OworCisgICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhD
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9QVlJUQ18y
QlBQVjFfSU1HID0gMHg4QzAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMzsKKwor
ICAgIC8vIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JfQU1EID0gMHg4QzkyOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQg
PSAweDhDOTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19S
R0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQgPSAweDg3RUU7CisKKyAgICAvLyBHTF9LSFJfdGV4
dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkcgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiA9IDB4OTNCMDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIgPSAweDkzQjE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSID0g
MHg5M0IyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfNng1X0tIUiA9IDB4OTNCMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIgPSAweDkzQjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSID0gMHg5M0I1OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiA9IDB4OTNC
NjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4
OF9LSFIgPSAweDkzQjc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMHg1X0tIUiA9IDB4OTNCODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSID0gMHg5M0I5OworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIgPSAweDkzQkE7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgx
MF9LSFIgPSAweDkzQkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMF9LSFIgPSAweDkzQkM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIgPSAweDkzQkQ7CisKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tI
UiA9IDB4OTNEMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNXg0X0tIUiA9IDB4OTNEMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiA9IDB4OTNEMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUiA9IDB4OTNEMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiA9IDB4OTNENDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiA9IDB4OTNE
NTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg2X0tIUiA9IDB4OTNENjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiA9IDB4OTNENzsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIg
PSAweDkzRDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDZfS0hSID0gMHg5M0Q5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiA9IDB4OTNEQTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4MTBfS0hSID0gMHg5M0RCOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIgPSAweDkzREM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiA9
IDB4OTNERDsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCA9IDB4OERC
QjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9S
R1RDMV9FWFQgPSAweDhEQkM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJFOwor
CisgICAgLy8gR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VY
VCA9IDB4ODRGRjsKKworICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19i
dWZmZXJzCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRFJBV19CVUZGRVJTX0VY
VCA9IDB4ODgyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMF9F
WFQgPSAweDg4MjU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjFf
RVhUID0gMHg4ODI2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIy
X0VYVCA9IDB4ODgyNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVS
M19FWFQgPSAweDg4Mjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZF
UjRfRVhUID0gMHg4ODI5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZG
RVI1X0VYVCA9IDB4ODgyQTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVG
RkVSNl9FWFQgPSAweDg4MkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JV
RkZFUjdfRVhUID0gMHg4ODJDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVI4X0VYVCA9IDB4ODgyRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
QlVGRkVSOV9FWFQgPSAweDg4MkU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjEwX0VYVCA9IDB4ODgyRjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSMTFfRVhUID0gMHg4ODMwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVIxMl9FWFQgPSAweDg4MzE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjEzX0VYVCA9IDB4ODgzMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIERSQVdfQlVGRkVSMTRfRVhUID0gMHg4ODMzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIxNV9FWFQgPSAweDg4MzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUID0gMHg4Q0RGOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDBfRVhUID0gMHg4Q0UwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDFfRVhUID0gMHg4Q0UxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDJfRVhUID0gMHg4
Q0UyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDNfRVhU
ID0gMHg4Q0UzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDRfRVhUID0gMHg4Q0U0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRU
QUNITUVOVDVfRVhUID0gMHg4Q0U1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09M
T1JfQVRUQUNITUVOVDZfRVhUID0gMHg4Q0U2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09MT1JfQVRUQUNITUVOVDdfRVhUID0gMHg4Q0U3OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDhfRVhUID0gMHg4Q0U4OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDlfRVhUID0gMHg4Q0U5OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEwX0VYVCA9IDB4OENFQTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMV9FWFQgPSAweDhD
RUI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTJfRVhU
ID0gMHg4Q0VDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVO
VDEzX0VYVCA9IDB4OENFRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQxNF9FWFQgPSAweDhDRUU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UMTVfRVhUID0gMHg4Q0VGOworCisgICAgLy8gR0xfS0hSX3BhcmFsbGVs
X3NoYWRlcl9jb21waWxlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QTEVUSU9O
X1NUQVRVU19LSFIgPSAweDkxQjE7CisKKyAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lv
bgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVRVUVTVEFCTEVfRVhURU5TSU9OU19B
TkdMRSA9IDB4OTNBODsKKwogICAgIC8vIEF0dGVtcHQgdG8gZW51bWVyYXRlIGFsbCBwb3NzaWJs
ZSBuYXRpdmUgaW1hZ2UgZm9ybWF0cyB0bwogICAgIC8vIHJlZHVjZSB0aGUgYW1vdW50IG9mIHRl
bXBvcmFyeSBhbGxvY2F0aW9ucyBkdXJpbmcgdGV4dHVyZQogICAgIC8vIHVwbG9hZGluZy4gVGhp
cyBlbnVtIG11c3QgYmUgcHVibGljIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQKQEAgLTEyMzMsNiAr
MTM3MiwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3
Y291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NH
TGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwog
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsK
KworICAgIC8vIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJlIGNhbGxlZCB3aXRoIGV4dGVuc2lvbiBu
YW1lcyBmb3Igd2hpY2ggc3VwcG9ydHMgcmV0dXJucyB0cnVlLgorICAgIHZpcnR1YWwgdm9pZCBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIC8vIFRha2Vz
IGZ1bGwgbmFtZSBvZiBleHRlbnNpb246IGZvciBleGFtcGxlLCAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4Ii4KKyAgICAvLyBDaGVja3MgdG8gc2VlIHdoZXRoZXIgdGhlIGdpdmVuIGV4
dGVuc2lvbiBpcyBhY3R1YWxseSBlbmFibGVkIChzZWUgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCku
CisgICAgLy8gSGFzIG5vIG90aGVyIHNpZGUtZWZmZWN0cy4KKyAgICB2aXJ0dWFsIGJvb2wgaXNF
eHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIC8vIEdMX0FSQl9yb2J1
c3RuZXNzCisgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20g
dGhlIEdMX0FSQl9yb2J1c3RuZXNzCisgICAgLy8gc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9sbG93
aW5nIHdheToKKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gbXVzdCBub3QgcmVzZXQgdGhlIGVy
cm9yIHN0YXRlIGR1cmluZyB0aGlzIGNhbGwuCisgICAgLy8gSWYgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQiByZXR1cm5zIGFuIGVycm9yLCBpdCBzaG91bGQgY29udGludWUKKyAgICAvLyByZXR1
cm5pbmcgdGhlIHNhbWUgZXJyb3IuIFJlc3RvcmluZyB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgaXMgaGFuZGxlZAorICAgIC8vIGV4dGVybmFsbHkuCisgICAgdmlydHVhbCBHQ0dMaW50IGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CisKKyAgICAvLyBHTF9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOworCisgICAgLy8gR0xfQVJCX2RyYXdf
YnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsKKwogICAgIC8vID09PT09
PT09PT0gT3RoZXIgZnVuY3Rpb25zLgogICAgIEdDR0xmbG9hdCBnZXRGbG9hdChHQ0dMZW51bSBw
bmFtZSk7CiAgICAgR0NHTGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7CkBAIC0x
MjQzLDExICsxNDA3LDYgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lk
IHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CiAKLSAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNp
b25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90Ci0gICAgLy8gYWxsIG1l
dGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAg
ICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygp
IHRvCi0gICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgdmlydHVhbCBFeHRlbnNpb25zR0wmIGdl
dEV4dGVuc2lvbnMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHko
Ym9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4
IDIzM2IwZGY3NTZlY2RkNGJjOTJkOTBiYWFmMDE1M2NjNmE1OTVmZjcuLjhmNWZmMWFlNzYwMGY1
ZGM5MDA5ZDg0NTVjY2ZmOTE1YmNhMWU2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKQEAgLTQ2LDc4ICs0Niw3IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UoKSA9IGRlZmF1bHQ7CiAKLUV4dGVuc2lvbnNHTCYgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OmdldEV4dGVuc2lvbnMoKQotewotICAgIHJldHVybiAqdGhp
czsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
LXsKLSNpZiBFTkFCTEUoV0VCR0wyKQotICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlcygpLndl
YkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwotI2Vs
c2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKLXsKLSAgICAvLyBGSVhNRTog
VGhlIGNhbGxlciBzaG91bGQgdHJhY2sgdGhpcyBzdGF0ZS4KLSAgICBpZiAobV9sYXllckNvbXBv
c2l0ZWQpIHsKLSAgICAgICAgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgICAgIEdy
YXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQoKTsKLSAgICB9Ci19Ci0KLWJvb2wg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYg
bmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwotICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHdhaXRVbnRpbElu
aXRpYWxpemVkKCk7Ci0gICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQobmFtZSk7Ci0gICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMu
YWRkKG5hbWUpOwotICAgIH0KLX0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0
aWFsaXplZCgpOwotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQot
ewotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQotICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkK
LSAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci19Ci0KLSNp
ZiAhVVNFKEFOR0xFKQotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cmVh
ZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCopCi17Ci19CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdD
R0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0KikKLXsKLX0KLQotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwg
R0NHTHNpemVpLCBHQ0dMaW50KikKLXsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgIVBMQVRGT1JNKENPQ09BKQotI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDVlNWMwOWI4NzIwNDNlYTBmYTJhOTY3ZjRm
Mzk5M2JhZDgwYTc5NDEuLjc4YzEwMDczYzkwOGU0MWRiZTA0ZmQ1MDdhZjgxZDQwZThjMGNhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtMjcsNyArMjcsNiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRl
ICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM5LDQyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGlzIGltcGxlbWVudHMgdGhlIHBhcnRzIHRoYXQgYXJlIHVzaW5nIFdlYkNvcmUg
aW50ZXJuYWwgZnVuY3Rpb25hbGl0eToKIC8vIC0gRHJhd2luZyBidWZmZXIgdHJhY2tpbmcgbWFu
YWdlbWVudC4KIC8vIC0gQ29tcG9zaXRpbmcgc3VwcG9ydC4KLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4
dEdMLCBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMIHsKIHB1
YmxpYzoKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoKSBvdmVycmlkZTsKIAotICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KLSAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOwot
ICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwotICAgIHZvaWQgc2V0Q29u
dGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKIAotICAg
IC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4KLSAgICB1c2luZyBFeHRlbnNpb25zR0w6
OmlzRW5hYmxlZDsKLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAg
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIGlzRW5h
YmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLQotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCBy
ZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0x2b2lkKikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCop
IGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NH
THNpemVpLCBHQ0dMaW50KikgZmluYWw7Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKSA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0
aWFsaXplZCgpLgotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7Ci0g
ICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwotCi0gICAgSGFzaFNl
dDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMDQ5YzUxMDkyNjYxNDVkZTkx
MTc3OTcwNDNlOTVlYmI5ODdhNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgotCi0jaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRl
eHRHTEFOR0xFKiBjb250ZXh0KQotICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKLXsKLX0KLQotRXh0ZW5zaW9uc0dM
QU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKLQotYm9vbCBFeHRlbnNpb25z
R0xBTkdMRTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmICghbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
bml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9y
dHNFeHRlbnNpb24obmFtZSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmVuc3VyZUVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIC8vIEVuYWJsZSBzdXBwb3J0IGluIEFO
R0xFIChpZiBub3QgZW5hYmxlZCBhbHJlYWR5KS4KLSAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUobmFtZS5h
c2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOwot
Ci0gICAgICAgIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdi
YSJfcykKLSAgICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSA9IHRydWU7Ci0g
ICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2IiX3MpCi0gICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiA9IHRydWU7Ci0g
ICAgfQotfQotCi1ib29sIEV4dGVuc2lvbnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQotewotICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotR0xpbnQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7Ci19Ci0KLVN0cmluZyBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgaW50IHNvdXJjZUxlbmd0aCA9IG1fY29udGV4dC0+
Z2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5H
TEUpOwotCi0gICAgaWYgKCFzb3VyY2VMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNM
QVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9u
LgotICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwotICAgIEdMX0dldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVybmVkTGVuZ3RoLCBu
YW1lLmRhdGEoKSk7Ci0gICAgaWYgKCFyZXR1cm5lZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci0gICAgLy8gcmV0dXJuZWRMZW5ndGggZG9lcyBub3QgaW5jbHVkZSB0aGUg
bnVsbCB0ZXJtaW5hdG9yLgotICAgIEFTU0VSVChyZXR1cm5lZExlbmd0aCA9PSBzb3VyY2VMZW5n
dGggLSAxKTsKLSAgICByZXR1cm4gU3RyaW5nKG5hbWUuZGF0YSgpLCByZXR1cm5lZExlbmd0aCk7
Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNp
b25zKCkKLXsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IGdldEV4dGVuc2lvbnMoKTsK
LSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
LSAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIGV4dGVu
c2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0
U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7Ci0gICAgZm9yIChhdXRv
JiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgIG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIG1faW5pdGlhbGl6ZWRBdmFp
bGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKLX0KLQotYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6c3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdCdWZmZXJz
RVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQotewotICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xfRHJhd0J1
ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOwotfQotCi1TdHJpbmcgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEV4dGVuc2lvbnMoKQotewotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7Ci19Ci0K
LUdDR0xlbnVtIEV4dGVuc2lvbnNHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxG
b3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSkKLXsKLSAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV0VCR0xfY29sb3JfYnVmZmVy
X2Zsb2F0IGZvciBXZWJHTCAxLjAgLyBFUyAyLjAgcmVxdWlyZXMgYSBzaXplZAotICAgIC8vIGlu
dGVybmFsIGZvcm1hdC4gQWRqdXN0IGl0IGlmIG5lY2Vzc2FyeSBhdCB0aGlzIGxvd2VzdCBsZXZl
bC4KLSAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgewotICAgICAgICBpZiAobV93ZWJnbENvbG9y
QnVmZmVyRmxvYXRSR0JBICYmIGZvcm1hdCA9PSBHTF9SR0JBICYmIGludGVybmFsZm9ybWF0ID09
IEdMX1JHQkEpCi0gICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRjsKLSAgICAgICAgaWYgKG1f
d2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCICYmIGZvcm1hdCA9PSBHTF9SR0IgJiYgaW50ZXJuYWxm
b3JtYXQgPT0gR0xfUkdCKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRjsKLSAgICB9Ci0g
ICAgcmV0dXJuIGludGVybmFsZm9ybWF0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTc4ZTJmOWY2NGI5ZjYxNWMzYjNhODVj
NDNhM2NhMDU0ZWQ3NWNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNH
TEFOR0xFLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKLQotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU7Ci0KLWNsYXNzIEV4dGVuc2lvbnNH
TEFOR0xFIDogcHVibGljIEV4dGVuc2lvbnNHTCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRp
YXRlZCBieSBHcmFwaGljc0NvbnRleHRHTEFOR0xFIGltcGxlbWVudGF0aW9ucy4KLSAgICBleHBs
aWNpdCBFeHRlbnNpb25zR0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEFOR0xFKik7Ci0gICAgdmly
dHVhbCB+RXh0ZW5zaW9uc0dMQU5HTEUoKTsKLQotICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2Rz
LgotICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbmFibGVk
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwotCi0gICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLQotICAgIC8vIE9ubHkg
Zm9yIG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCi0gICAgR0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4
dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUpOwotCi1wcml2YXRlOgotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJik7Ci0gICAgU3RyaW5nIGdldEV4dGVuc2lvbnMoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwotICAgIGJvb2wgbV9p
bml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fYXZh
aWxhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICAv
LyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRHTEFOR0xFLgotICAgIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEUqIG1fY29udGV4dDsKLQotICAgIC8vIFdoZXRoZXIgdGhlIFdlYkdM
IDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkgZXh0ZW5zaW9ucyBoYXZl
IGJlZW4gZW5hYmxlZC4KLSAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCIHsgZmFs
c2UgfTsKLSAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZhbHNlIH07Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDQ4ZjczNDJmM2UwOTAxZmU0NjcyY2E1YjVlMDMyMWU4NDE2YTk2NmQuLmM1YzZi
ZmE1NzVlOTQ5NDY2MTAwZTE2NTMxODMyODNhMDhhMGRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBTkdMRUhlYWRl
cnMuaCIKICNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TEFOR0xFLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC03MSw2ICs3
MCwzMCBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgs
IGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeAogfQogI2VuZGlmCiAKKworYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIXBsYXRmb3JtSW5p
dGlhbGl6ZUNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBleHRl
bnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dl
dFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0
ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
YWRkKGV4dGVuc2lvbik7CisgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9O
U19BTkdMRSkpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcu
c3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7CisgICAgcmV0dXJuIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCitib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKIHsKICNpZiAhUExBVEZPUk0o
Q09DT0EpCkBAIC0zNTQsNyArMzc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpn
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGUKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7CiAgICAgaWYgKCFtX2lzRm9y
V2ViR0wyKQotICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnNH
TEFOR0xFJj4oZ2V0RXh0ZW5zaW9ucygpKS5hZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGludGVybmFsZm9ybWF0
ID0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3Jt
YXQsIHR5cGUpOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBHTF9UZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6
ZSwgcGl4ZWxzLmRhdGEpOwpAQCAtNDI1LDEzICs0NDgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKICAgICBHTF9DbGVhckRlcHRo
ZihzdGF0aWNfY2FzdDxmbG9hdD4oZGVwdGgpKTsKIH0KIAotRXh0ZW5zaW9uc0dMJiBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpnZXRFeHRlbnNpb25zKCkKLXsKLSAgICBpZiAoIW1fZXh0ZW5zaW9u
cykKLSAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xBTkdMRT4o
dGhpcyk7Ci0gICAgcmV0dXJuICptX2V4dGVuc2lvbnM7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIGRhdGEuZGF0YSwgZmFsc2UpOwpAQCAtNDgzLDEyICs0OTksMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWQKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7
Ci0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIC8v
IEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBu
b3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVj
dGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0
aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCiAgICAgLy8gdXNlIHRvIHR1cm4gb24gZmVh
dHVyZSBmbGFncy4KLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICAgICAgbV9pbnRlcm5hbERlcHRoU3Rl
bmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOwogICAgIH0gZWxzZQogICAgICAg
ICBtX2ludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7CkBA
IC01MDUsMTcgKzUyMCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRl
RGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbAogCiAgICAgaWYgKGF0
dHJzLmFudGlhbGlhcykgewogICAgICAgICAvLyBGSVhNRTogbXVzdCBhZGp1c3QgdGhpcyB3aGVu
IHVwZ3JhZGluZyB0byBXZWJHTCAyLjAgLyBPcGVuR0wgRVMgMy4wIHN1cHBvcnQuCi0gICAgICAg
IGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
IHx8ICFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSB7CisgICAgICAg
IGlmICghc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
IikgfHwgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikgfHwg
IXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSB7CiAgICAgICAgICAgICBh
dHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVz
KGF0dHJzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJl
RW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOwot
ICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIp
OworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4Iik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0
dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewogICAgICAgICAvLyBOZWVkZWQgZm9yIHByZXNl
cnZlRHJhd2luZ0J1ZmZlcjp0cnVlIHN1cHBvcnQgd2l0aG91dCBhbnRpYWxpYXNpbmcuCi0gICAg
ICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
OworICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9i
bGl0Iik7CiAgICAgfQogfQogCkBAIC0yODkwLDYgKzI5MDUsNjQgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0wKICAgICBHTF9NdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNv
dW50cy5kYXRhLCB0eXBlLCBwb2ludGVycy5kYXRhKCksIGluc3RhbmNlQ291bnRzLmRhdGEsIGRy
YXdjb3VudCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
bmFtZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgLy8gRW5hYmxlIHN1cHBvcnQgaW4g
QU5HTEUgKGlmIG5vdCBlbmFibGVkIGFscmVhZHkpLgorICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgeworICAgICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUobmFtZS5hc2NpaSgpLmRh
dGEoKSk7CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworCisgICAgICAg
IGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcykKKyAg
ICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSA9IHRydWU7CisgICAgICAgIGVs
c2UgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpCisg
ICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiA9IHRydWU7CisgICAgfQorfQor
Citib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCitHTGlu
dCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sK
KyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOworfQorCitTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGludCBzb3VyY2VMZW5ndGggPSBnZXRTaGFk
ZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7CisK
KyAgICBpZiAoIXNvdXJjZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cisg
ICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAg
R0NHTGludCByZXR1cm5lZExlbmd0aCA9IDA7CisgICAgR0xfR2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKHNoYWRlciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0
YSgpKTsKKyAgICBpZiAoIXJldHVybmVkTGVuZ3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKKyAgICAvLyByZXR1cm5lZExlbmd0aCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBudWxsIHRl
cm1pbmF0b3IuCisgICAgQVNTRVJUKHJldHVybmVkTGVuZ3RoID09IHNvdXJjZUxlbmd0aCAtIDEp
OworICAgIHJldHVybiBTdHJpbmcobmFtZS5kYXRhKCksIHJldHVybmVkTGVuZ3RoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gYnVmcykKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBHTF9EcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMu
ZGF0YSk7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6d2FpdEFuZFVwZGF0ZU9s
ZGVzdEZyYW1lKCkKIHsKICAgICBzaXplX3Qgb2xkZXN0RnJhbWVDb21wbGV0aW9uRmVuY2UgPSBt
X29sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlKysgJSBtYXhQZW5kaW5nRnJhbWVzOwpAQCAtMjk5
Nyw2ICszMDcwLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW52YWxpZGF0ZUtu
b3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpCiB7CiB9CiAKK0dDR0xlbnVtIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKQoreworICAgIC8v
IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQgZm9yIFdlYkdM
IDEuMCAvIEVTIDIuMCByZXF1aXJlcyBhIHNpemVkCisgICAgLy8gaW50ZXJuYWwgZm9ybWF0LiBB
ZGp1c3QgaXQgaWYgbmVjZXNzYXJ5IGF0IHRoaXMgbG93ZXN0IGxldmVsLgorICAgIGlmICh0eXBl
ID09IEdMX0ZMT0FUKSB7CisgICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
JiYgZm9ybWF0ID09IEdMX1JHQkEgJiYgaW50ZXJuYWxmb3JtYXQgPT0gR0xfUkdCQSkKKyAgICAg
ICAgICAgIHJldHVybiBHTF9SR0JBMzJGOworICAgICAgICBpZiAobV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgJiYgZm9ybWF0ID09IEdMX1JHQiAmJiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0Ip
CisgICAgICAgICAgICByZXR1cm4gR0xfUkdCMzJGOworICAgIH0KKyAgICByZXR1cm4gaW50ZXJu
YWxmb3JtYXQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IDEwN2VjMjM4Yjc4MGY0NDkxNjBm
ZjVmMTE5NzViMWIwNDQwYmJjZDguLjQ0ZDFlYzNmMGQ5ZjNlNTEwODA1NjhlNGQ0OGIzNzEyYTM4
NzdiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTUzLDcgKzUzLDYgQEAg
c3RydWN0IGdibV9ibzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXh0ZW5zaW9uc0dM
OwotY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7CiBjbGFzcyBHTENvbnRleHQ7CiBjbGFzcyBIb3N0
V2luZG93OwogY2xhc3MgSW1hZ2VCdWZmZXI7CkBAIC0zMzIsNiArMzMxLDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBj
b3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKKyAg
ICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBHQ0dM
aW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKKwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlQnVmZmVyKCkgZmluYWw7CiAgICAgUGxh
dGZvcm1HTE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlUHJvZ3JhbSgpIGZpbmFsOwpAQCAtMzQ2LDEyICszNTIsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKICAgICB2
b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKICAgICBib29sIG1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwotICAgIEV4dGVuc2lvbnNHTCYg
Z2V0RXh0ZW5zaW9ucygpIGZpbmFsOwogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3Rpbmco
U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFs
OwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikg
ZmluYWw7Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpOwpAQCAtMzY2
LDE1ICszNzAsMjEgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQotICAgIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBjb25zdCBQcm9jZXNzSWRlbnRp
dHkmKTsKLSNlbHNlCiAgICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMpOwotI2VuZGlmCisKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1
YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIC8vIENh
bGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCisgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNl
LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBpbnN0YW5jZSBzaG91bGQgbm90IGJlIHVzZWQuCisgICAg
Ym9vbCBpbml0aWFsaXplKCk7CisgICAgLy8gQ2FsbGVkIGZpcnN0IGJ5IGluaXRpYWxpemUoKS4g
U3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGJpdHMgb2YgRUdMQ29udGV4dC4KKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IHBsYXRm
b3JtcyBkbyBub3Qgc2hhcmUgdGhlIGNvbnRleHQgY3JlYXRpb24uIFRoZXkgc2hvdWxkLgorICAg
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCk7CisgICAgLy8gQ2FsbGVk
IGxhc3QgYnkgaW5pdGlhbGl6ZSgpLiBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0byBpbnN0
YW50aWF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBzdGF0ZSB0aGF0IGRlcGVuZCBvbgorICAgIC8vIHRo
ZSBzaGFyZWQgc3RhdGUuCisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwor
CiAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBj
cmVhdGlvbiBhdHRyaWJ1dGVzLAogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCkBAIC0zOTUs
MTMgKzQwNSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZUltcGwoKTsK
ICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoY29uc3QgSW50UmVjdCYg
PSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZOZWVk
ZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50IGhl
aWdodCk7Ci0KLSAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKTsKLSAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICAgICBzdGF0aWMgYm9vbCBtYWtl
Q3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSwgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTCk7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZm
ZXJCYWNraW5nKCkgPSAwOworCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250ZXh0IHNob3Vs
ZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0ZU9sZGVzdEZy
YW1lKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCkBAIC00MTAsNiArNDE4LDE0IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dM
dWludCk7CiAKKyAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgorICAgIEdD
R0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKKworICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNp
b25zOworICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OworICAg
IGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKICAgICBHQ0dMdWlu
dCBtX3RleHR1cmUgeyAwIH07CiAgICAgR0NHTHVpbnQgbV9mYm8geyAwIH07CiAgICAgR0NHTHVp
bnQgbV9kZXB0aFN0ZW5jaWxCdWZmZXIgeyAwIH07CkBAIC00MzQsNyArNDUwLDYgQEAgcHJvdGVj
dGVkOgogICAgIHNpemVfdCBtX29sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlIHsgMCB9OwogICAg
IFNjb3BlZEdMRmVuY2UgbV9mcmFtZUNvbXBsZXRpb25GZW5jZXNbbWF4UGVuZGluZ0ZyYW1lc107
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xTdGF0ZSBtX3N0YXRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHRlbnNpb25zR0xBTkdMRT4gbV9leHRlbnNpb25zOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYS4KQEAg
LTQ0Nyw3ICs0NjIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gV2hlbiBwcmVzZXJ2ZURyYXdpbmdC
dWZmZXIgPT0gdHJ1ZSwgdGhpcyBpcyBibGl0dGVkIHRvIGR1cmluZyBkaXNwbGF5IHByZXBhcmUu
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyQmFja2luZzsK
ICAgICB2b2lkKiBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIHsgbnVsbHB0ciB9OwotICAgIFByb2Nl
c3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjZW5kaWYKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgR0NHTHVpbnQgbV9jb21wb3NpdG9yVGV4dHVyZSB7IDAgfTsKQEAgLTQ4
Niw3ICs1MDAsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBw
ZXJHQ0dMUGxhdGZvcm1MYXllcj4gbV90ZXhtYXBMYXllcjsKICNlbmRpZgogCi0gICAgZnJpZW5k
IGNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogI2lmIFVTRShOSUNPU0lBKQogICAgIGZyaWVuZCBj
bGFzcyBOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcjsKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6
R0NHTExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYTA4ZGEwZjRmMTBlNGMzZTRh
OWE3MWVlOGY1MzI1ZmE2NmUwOTFmZi4uN2IzYjRhMDFmMjY5NmMwZDliMDYxMjgwNjQ2MzhkZjY5
MjJhMWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1w
b3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgiCi0jaW1wb3J0ICJFeHRlbnNpb25zR0wuaCIKICNpbXBvcnQg
IkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0
ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgK
aW5kZXggYzU2ZTY5NTM1ZTcwOTdmZGQyNWQyZmNlMzAyZTEwNjhlNzZjNmUzYi4uYzMxZjVlZmJl
MmVhODIwZGM3MGZkNTBkNTdhMjg3MWNjMzk2ZjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
Q29jb2EuaApAQCAtNzksMTcgKzc5LDIzIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8TWVkaWFTYW1w
bGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYK
ICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOworICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IHVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24oKTsKICNlbmRpZgogcHJvdGVj
dGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIpOwotICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0OwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBvdmVy
cmlkZXMuCisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkgZmluYWw7CisgICAg
Ym9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBmaW5hbDsKICAgICB2b2lkIGludmFsaWRhdGVLbm93
blRleHR1cmVDb250ZW50KEdDR0x1aW50KSBmaW5hbDsKKyAgICBib29sIHJlc2hhcGVEaXNwbGF5
QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1
ZmZlckJhY2tpbmcoKTsKKyAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKIAorICAgIFByb2Nl
c3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+IG1fY3Y7CiAjZW5kaWYKQEAgLTEw
MCw2ICsxMDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9tZWRpYVNhbXBsZVJvdGF0
aW9uU2Vzc2lvbjsKICNlbmRpZgorCiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
Q1ZDb2NvYTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDBjZDBh
MjRmZGI3MmMzN2JjZDI1YzAwMGM1NDYyYzYxYzIwNWY3NTEuLjM2ZThmMGZiMDI5Mzc3YjRlZmZl
NDA1MzUyMzdlNTgyMjJmYmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpA
QCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQU5HTEVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFO
R0xFVXRpbGl0aWVzQ29jb2EuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJF
eHRlbnNpb25zR0xBTkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMTk3LDI5ICsxOTYsMTUgQEAgc3RhdGljIGJvb2wgbmVl
ZHNFQUdMT25NYWMoKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyKQogewogICAgIGF1dG8gY29udGV4
dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0
ZXMpLCBXVEZNb3ZlKHJlc291cmNlT3duZXIpKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlk
KCkpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpH
cmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGNyZWF0
aW9uQXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcikKLSAgICA6Ci0j
aWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKLSAgICBHcmFw
aGljc0NvbnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSwgcmVzb3VyY2VP
d25lcikKLSNlbHNlCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3ZlKGNyZWF0aW9u
QXR0cmlidXRlcykpCi0jZW5kaWYKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUoV1RGTW92
ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQorICAgICwgbV9yZXNvdXJjZU93bmVyKFdURk1vdmUocmVz
b3VyY2VPd25lcikpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGluaXRpYWxpemVyIGxpc3Qgb25jZSBtX3Jlc291cmNl
T3duZXIgbW92ZXMgdG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYS4KLSAgICBtX3Jlc291cmNlT3du
ZXIgPSBXVEZNb3ZlKHJlc291cmNlT3duZXIpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGF1
dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVz
LnVzZU1ldGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93ZXJQcmVmZXJlbmNlKCkgPT0gR3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKLSAgICAgICAg
bV9zd2l0Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlvbiA9IHRydWU7Ci0jZW5kaWYKIH0K
IAogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6fkdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7CkBAIC0yMzYsMzggKzIyMSwzOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQogCiAvLyBGSVhNRTogQmVsb3cgaXMgZnVuY3Rpb25h
bGl0eSB0aGF0IHNob3VsZCBiZSBtb3ZlZCB0byBHcmFwaGljc0NvbnRleHRHTENvY29hIHRvIHNp
bXBsaWZ5IHRoZSBiYXNlIGNsYXNzLgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFT
S19JREVOVElUWV9UT0tFTikKLUdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBjb25zdCBQcm9jZXNz
SWRlbnRpdHkmIHJlc291cmNlT3duZXIpCi0jZWxzZQogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMp
Ci0jZW5kaWYKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzKQogewotICAgIG1faXNGb3JX
ZWJHTDIgPSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNp
b246OldlYkdMMjsKLSAgICBpZiAoYXR0cnMudXNlTWV0YWwgJiYgIXBsYXRmb3JtU3VwcG9ydHNN
ZXRhbChtX2lzRm9yV2ViR0wyKSkgewotICAgICAgICBhdHRycy51c2VNZXRhbCA9IGZhbHNlOwot
ICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7Cit9CisKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCit7CisgICAgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwor
ICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0Nv
bnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIGlmIChhdHRyaWJ1dGVzLnVzZU1ldGFs
ICYmICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0ZvcldlYkdMMikpIHsKKyAgICAgICAgYXR0
cmlidXRlcy51c2VNZXRhbCA9IGZhbHNlOworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiBFTkFCTEUoV0VCWFIpCi0gICAgaWYgKGF0dHJzLnhy
Q29tcGF0aWJsZSkgeworICAgIGlmIChhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkgewogICAgICAg
ICAvLyBGSVhNRTogSXQncyBhbG1vc3QgY2VydGFpbiB0aGF0IGFueSBjb25uZWN0ZWQgaGVhZHNl
dCB3aWxsIHJlcXVpcmUgdGhlIGhpZ2gtcG93ZXIgR1BVLAogICAgICAgICAvLyB3aGljaCBpcyB0
aGUgc2FtZSBHUFUgd2UgbmVlZCB0aGlzIGNvbnRleHQgdG8gdXNlLiBIb3dldmVyLCB0aGlzIGlz
IG5vdCBndWFyYW50ZWVkLCBhbmQKICAgICAgICAgLy8gdGhlcmUgaXMgYWxzbyB0aGUgY2hhbmNl
IHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIEdQVXMuIEdpdmVuIHRoYXQgeW91IGNhbiByZXF1ZXN0
IHRoZQogICAgICAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRo
ZSBXZWJYUiBzZXNzaW9uLCB3ZSdsbCBuZWVkIHNvbWUgd2F5IHRvCiAgICAgICAgIC8vIG1pZ3Jh
dGUgdGhlIGNvbnRleHQgdG8gdGhlIGFwcHJvcHJpYXRlIEdQVSB3aGVuIHRoZSBjb2RlIGhlcmUg
ZG9lcyBub3Qgd29yay4KICAgICAgICAgTE9HKFdlYkdMLCAiV2ViWFIgY29tcGF0aWJsZSBjb250
ZXh0IHJlcXVlc3RlZC4gVGhpcyB3aWxsIGFsc28gdHJpZ2dlciBhIHJlcXVlc3QgZm9yIHRoZSBo
aWdoLXBvd2VyIEdQVS4iKTsKLSAgICAgICAgYXR0cnMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZv
cm1hbmNlR1BVID0gdHJ1ZTsKLSAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwor
ICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IHRy
dWU7CisgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KICNl
bmRpZgogCi0gICAgbV9kaXNwbGF5T2JqID0gaW5pdGlhbGl6ZUVHTERpc3BsYXkoYXR0cnMpOwor
ICAgIG1fZGlzcGxheU9iaiA9IGluaXRpYWxpemVFR0xEaXNwbGF5KGF0dHJpYnV0ZXMpOwogICAg
IGlmICghbV9kaXNwbGF5T2JqKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWF0dHJzLnVzZU1ldGFsKSB7CisgICAg
aWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKSB7CiAgICAgICAgIC8vIEZvciBPcGVuR0wsIEVHTF9B
TkdMRV9wb3dlcl9wcmVmZXJlbmNlIGlzIHVzZWQuIFRoZSBjb250ZXh0IGlzIGluaXRpYWxpemVk
IHdpdGggdGhlCiAgICAgICAgIC8vIGRlZmF1bHQsIGxvdy1wb3dlciBkZXZpY2UuIEZvciBoaWdo
LXBlcmZvcm1hbmNlIGNvbnRleHRzLCB3ZSByZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlCiAg
ICAgICAgIC8vIEdQVSBpbiBzZXRDb250ZXh0VmlzaWJpbGl0eS4gV2hlbiB0aGUgcmVxdWVzdCBp
cyBmdWxsZmlsbGVkIGJ5IHRoZSBzeXN0ZW0sIHdlIGdldCB0aGUKQEAgLTI3NSwxMSArMjYxLDEx
IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgICAgIGNvbnN0IGNoYXIgKmRpc3BsYXlF
eHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxheU9iaiwgRUdMX0VYVEVOU0lPTlMp
OwogICAgICAgICBib29sIHN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlID0gc3Ryc3RyKGRpc3BsYXlF
eHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKTsKICAgICAgICAgaWYgKCFz
dXBwb3J0c1Bvd2VyUHJlZmVyZW5jZSkgewotICAgICAgICAgICAgYXR0cnMuZm9yY2VSZXF1ZXN0
Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXR0cnMucG93
ZXJQcmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVy
Zm9ybWFuY2UpIHsKLSAgICAgICAgICAgICAgICBhdHRycy5wb3dlclByZWZlcmVuY2UgPSBHcmFw
aGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKKyAgICAgICAgICAgIGF0dHJp
YnV0ZXMuZm9yY2VSZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3NDb250ZXh0R0xQ
b3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgeworICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
OkRlZmF1bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRl
cyhhdHRycyk7CisgICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsK
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjk4LDE0ICsyODQsMTQgQEAgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cnMKICAgICBFR0xfQ2hvb3NlQ29uZmlnKG1fZGlzcGxheU9iaiwgY29uZmln
QXR0cmlidXRlcywgJm1fY29uZmlnT2JqLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKTsKICAg
ICBpZiAobnVtYmVyQ29uZmlnc1JldHVybmVkICE9IDEpIHsKICAgICAgICAgTE9HKFdlYkdMLCAi
RUdMQ29uZmlnIEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb25maWci
KTsKIAogICAgIEVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKICAgICBpZiAoRUdMX0dl
dEVycm9yKCkgIT0gRUdMX1NVQ0NFU1MpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiVW5hYmxlIHRv
IGJpbmQgdG8gT1BFTkdMX0VTX0FQSSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBWZWN0b3I8RUdMaW50PiBlZ2xDb250ZXh0QXR0cmlidXRl
czsKQEAgLTMzMywxMyArMzE5LDEyIEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgZWds
Q29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX0JJTkRfR0VORVJBVEVTX1JFU09V
UkNFX0NIUk9NSVVNKTsKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0ZBTFNF
KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCisj
aWYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQogICAgIGF1dG8gZGlzcGxheUV4dGVuc2lvbnMg
PSBFR0xfUXVlcnlTdHJpbmcobV9kaXNwbGF5T2JqLCBFR0xfRVhURU5TSU9OUyk7CiAgICAgYm9v
bCBzdXBwb3J0c093bmVyc2hpcElkZW50aXR5ID0gc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAi
RUdMX0FOR0xFX21ldGFsX2NyZWF0ZV9jb250ZXh0X293bmVyc2hpcF9pZGVudGl0eSIpOwotICAg
IC8vIEZJWE1FOiBVc2UgbV9yZXNvdXJjZU93bmVyIG9uY2UgaXQgbW92ZXMgdG8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS4KLSAgICBpZiAoYXR0cnMudXNlTWV0YWwgJiYgcmVzb3VyY2VPd25lciAm
JiBzdXBwb3J0c093bmVyc2hpcElkZW50aXR5KSB7CisgICAgaWYgKGF0dHJpYnV0ZXMudXNlTWV0
YWwgJiYgbV9yZXNvdXJjZU93bmVyICYmIHN1cHBvcnRzT3duZXJzaGlwSWRlbnRpdHkpIHsKICAg
ICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX01FVEFMX09XTkVS
U0hJUF9JREVOVElUWV9BTkdMRSk7Ci0gICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVu
ZChyZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCkpOworICAgICAgICBlZ2xDb250ZXh0QXR0cmli
dXRlcy5hcHBlbmQobV9yZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCkpOwogICAgIH0KICNlbmRp
ZgogCkBAIC0zNDgsMTAgKzMzMywxNCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGlj
c0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIG1f
Y29udGV4dE9iaiA9IEVHTF9DcmVhdGVDb250ZXh0KG1fZGlzcGxheU9iaiwgbV9jb25maWdPYmos
IEVHTF9OT19DT05URVhULCBlZ2xDb250ZXh0QXR0cmlidXRlcy5kYXRhKCkpOwogICAgIGlmICht
X2NvbnRleHRPYmogPT0gRUdMX05PX0NPTlRFWFQgfHwgIW1ha2VDdXJyZW50KG1fZGlzcGxheU9i
aiwgbV9jb250ZXh0T2JqKSkgewogICAgICAgICBMT0coV2ViR0wsICJFR0xDb250ZXh0IEluaXRp
YWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb250ZXh0Iik7CisgICAgcmV0dXJu
IHRydWU7Cit9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK3sKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogICAg
IGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBHTF9FbmFibGUoR3JhcGhpY3NDb250ZXh0R0w6
OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIApAQCAtMzYzLDM4ICszNTIsMzcgQEAg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIGlmICghbmVlZHNFQUdMT25NYWMoKSkgewogICAgICAgICAvLyBGb3Ig
SU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KLSAgICAgICAgaWYgKCFhdHRycy51c2VNZXRhbCkK
KyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1ldGFsKQogICAgICAgICAgICAgcmVxdWlyZWRF
eHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3MpOwogICAgICAg
ICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgogICAg
ICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiX3MpOwogICAgIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogI2lmIEVOQUJMRShXRUJYUikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKQotICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnhyQ29tcGF0aWJsZSkKKyAgICBp
ZiAoYXR0cmlidXRlcy54ckNvbXBhdGlibGUpCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5h
cHBlbmQoIkdMX09FU19FR0xfaW1hZ2UiX3MpOwogI2VuZGlmCiAgICAgaWYgKG1faXNGb3JXZWJH
TDIpCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIl9zKTsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRF
eHRlbnNpb25zKCk7CiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1aXJlZEV4dGVuc2lv
bnMpIHsKLSAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbikpIHsKKyAg
ICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbihleHRlbnNpb24pKSB7CiAgICAgICAgICAgICBM
T0coV2ViR0wsICJNaXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCBleHRlbnNpb24uY2hh
cmFjdGVycygpKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9u
KTsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pOwogICAgIH0KLSAg
ICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS51c2VNZXRhbCkgeworICAgIGlmIChhdHRyaWJ1dGVz
LnVzZU1ldGFsKSB7CiAgICAgICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgdXNlcyBzeW5j
IG9iamVjdHMgdG8gdGhyb3R0bGUgZGlzcGxheSBvbiBNZXRhbCBpbXBsZW1lbnRhdGlvbnMuCiAg
ICAgICAgIC8vIE9wZW5HTCBzeW5jIG9iamVjdHMgYXJlIG5vdCBzaWduYWxpbmcgdXBvbiBjb21w
bGV0aW9uIG9uIENhdGFsaW5hLWVyYSBkcml2ZXJzLCBzbwogICAgICAgICAvLyBPcGVuR0wgY2Fu
bm90IHVzZSB0aGlzIG1ldGhvZCBvZiB0aHJvdHRsaW5nLiBPcGVuR0wgZHJpdmVycyB0eXBpY2Fs
bHkgaW1wbGVtZW50CiAgICAgICAgIC8vIHNvbWUgc29ydCBvZiBpbnRlcm5hbCB0aHJvdHRsaW5n
LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQVJCX3N5bmMiX3MpKSB7Cisg
ICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3N5bmMiX3MpKSB7CiAgICAgICAg
ICAgICBtX3VzZUZlbmNlU3luY0ZvckRpc3BsYXlSYXRlTGltaXQgPSB0cnVlOwotICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BUkJfc3luYyJfcyk7CisgICAgICAgICAg
ICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfc3luYyJfcyk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0gICAgYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCisgICAg
YXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdl
ZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAogICAgIC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0IHdp
bGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0
ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKQEAgLTQxMSwxOCArMzk5LDE4IEBAIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtX2Zibyk7CiAgICAgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPSBtX3N0YXRlLmJvdW5kUmVh
ZEZCTyA9IG1fZmJvOwogCi0gICAgaWYgKCFhdHRycy5hbnRpYWxpYXMgJiYgKGF0dHJzLnN0ZW5j
aWwgfHwgYXR0cnMuZGVwdGgpKQorICAgIGlmICghYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgKGF0
dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSkKICAgICAgICAgR0xfR2VuUmVu
ZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogCiAgICAgLy8gSWYgbmVjZXNz
YXJ5LCBjcmVhdGUgYW5vdGhlciBmcmFtZWJ1ZmZlciBmb3IgdGhlIG11bHRpc2FtcGxlIHJlc3Vs
dHMuCi0gICAgaWYgKGF0dHJzLmFudGlhbGlhcykgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlh
bGlhcykgewogICAgICAgICBHTF9HZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8p
OwogICAgICAgICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1w
bGVGQk8pOwogICAgICAgICBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9IG1fc3RhdGUuYm91bmRSZWFk
RkJPID0gbV9tdWx0aXNhbXBsZUZCTzsKICAgICAgICAgR0xfR2VuUmVuZGVyYnVmZmVycygxLCAm
bV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKLSAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwgfHwg
YXR0cnMuZGVwdGgpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRl
cy5kZXB0aCkKICAgICAgICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgIH0gZWxzZSBpZiAoYXR0cnMucHJlc2VydmVEcmF3
aW5nQnVmZmVyKSB7CisgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1
ZmZlcikgewogICAgICAgICAvLyBJZiBuZWNlc3NhcnksIGNyZWF0ZSBhbm90aGVyIHRleHR1cmUg
dG8gaGFuZGxlIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjp0cnVlIHdpdGhvdXQKICAgICAgICAgLy8g
YW50aWFsaWFzaW5nLgogICAgICAgICBHTF9HZW5UZXh0dXJlcygxLCAmbV9wcmVzZXJ2ZURyYXdp
bmdCdWZmZXJUZXh0dXJlKTsKQEAgLTQzOCw3ICs0MjYsMTEgQEAgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cnMKIAogICAgIEdMX0NsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAKLSAgICBMT0coV2ViR0ws
ICJDcmVhdGVkIGEgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSAoJXApLiIsIHRoaXMpOworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBpZiAoIWF0dHJpYnV0ZXMudXNlTWV0YWwgJiYgYXR0cmlidXRlcy5l
ZmZlY3RpdmVQb3dlclByZWZlcmVuY2UoKSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6SGlnaFBlcmZvcm1hbmNlKQorICAgICAgICBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVj
b25maWd1cmF0aW9uID0gdHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCkBAIC00ODUsMTEg
KzQ3Nyw2IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xF
KCkKICAgICBMT0coV2ViR0wsICJEZXN0cm95ZWQgYSBHcmFwaGljc0NvbnRleHRHTEFOR0xFICgl
cCkuIiwgdGhpcyk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGV4dHVyZTsKLX0KLQogYm9vbCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9jb250ZXh0T2Jq
KQpAQCAtNTUwLDcgKzUzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6dXBkYXRl
Q29udGV4dE9uRGlzcGxheVJlY29uZmlndXJhdGlvbigpCiB9CiAjZW5kaWYKIAotYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQorYm9vbCBH
cmFwaGljc0NvbnRleHRHTENvY29hOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewog
ICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAg
IC8vIFJlc2V0IHRoZSBjdXJyZW50IGJhY2tidWZmZXIgbm93IGJlZm9yZSBhbGxvY2F0aW5nIGEg
bmV3IG9uZSBpbiBvcmRlciB0byBzbGlnaHRseSByZWR1Y2UgbWVtb3J5IHByZXNzdXJlLgpAQCAt
NTY4LDcgKzU1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nKCkKICAgICByZXR1cm4gYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjphbGxvY2F0ZUFu
ZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKICAgICBhdXRvIGJhY2tpbmcg
PSBJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CkBAIC01OTgsNyArNTg1LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiAg
ICAgcmV0dXJuIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhXVEZNb3ZlKGJhY2tpbmcpLCBwYnVm
ZmVyKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpiaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZl
cikKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6YmluZERpc3BsYXlCdWZmZXJCYWNraW5n
KHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpCiB7CiAg
ICAgR0NHTGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7
CiAgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdC
dWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0
ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CkBA
IC02ODksNyArNjc2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hJT1N1
cmZhY2VGcm9tU2hhcmVkVGV4dHVyZSh2b2lkKiBoYW5kbGUpCiB9CiAjZW5kaWYKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAobV9sYXllckNv
bXBvc2l0ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggN2QwY2UzNmI2MGEwZDY5YTU5MjNjMjQwMGQwM2Ji
N2JhZDM4NjQ5OC4uMGJiMTA2NWIzYTYxNjY5Yjk4NTAxODUzMDQ1YTcwYjZmYWExYjUwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTE1
MSw3ICsxNTEsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogICAgIGlmIChHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55Q29udGV4dHMo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYo
bmV3IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQor
ICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwogICAgIHJldHVybiBjb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAppbmRleCA1MWNiZTZiN2UxM2I4MGFmNzEyZTNlZmU3NmI2MjUxNTgzNDlm
ZjRhLi43M2UyNDg0NWNiMzNlNTBkNTQ1N2E2MjA2MTg0NDQyNjk1MTdkNjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICNlbmRp
ZgogfQogCi1ib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKQorYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIu
IFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4g
cGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVy
X211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5oCmluZGV4IGQ5ZjE1ZjQ1YmRmYjRlMWJiZThkMzkzNjM1YjYwYWFkMWQyZDkw
YTcuLmU3MzJjMWNmOTFhM2Q4NGY2NDMyYzBmMjJjODY4ZjNkODA0NGM0YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVy
cmlkZTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBnZXRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4
IDdkNTAwYWJjMGNmMWVlNTUyNjgzMTEyYWZjZjIyMjRhZTY5NTcxYmYuLjIxZTgyOWZiZDEwMWRm
NmQ0NjkzMTZmOWQyOWNlZDg2YjRhYzk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb246OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBpZiAobmFtZSA9PSAiR0xf
QU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIHN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOworICAgIHJldHVybiBwbGF0Zm9y
bVN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOwogfQogCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xMjgsNyArMTI4LDcg
QEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXMgPSBj
b21waWxlci5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKCFBTkdMRVJlc291cmNlcy5FWFRf
ZHJhd19idWZmZXJzKSB7CiAgICAgICAgICAgICBBTkdMRVJlc291cmNlcy5FWFRfZHJhd19idWZm
ZXJzID0gMTsKLSAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gbV9j
b250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwor
ICAgICAgICAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdl
dEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICAg
ICAgICAgIGNvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKaW5kZXggMjlhMGM0ZDhmNWE5MjZjNzA5
NTM1NDFjMGIyNjEzZmRhNzUyYjQyNi4uMmMzN2ZhYzk2NWMwMjE2ZGEwNWFjNWZiOGVhYWViNjgz
ZDQ0YTdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtMjYsOCAr
MjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgotCisj
aW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTM1LDE2ICszNCwxOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogCi1jbGFz
cyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9uc0dMIHsKK2NsYXNz
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uKCk7CiAKLSAg
ICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBp
bnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOworICAgIC8vIE1ldGhvZHMg
Zm9yd2FyZGVkIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFbmFibGVk
KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgIHZp
cnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2Jq
ZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGJ1ZnMpID0gMDsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOwpA
QCAtNTIsMTggKzUzLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xib29sZWFuIGlzVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5k
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0gICAgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlID0gMDsKLQotICAgIFN0
cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGU7Ci0KICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1j
b3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRy
IG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0g
MDsKIAogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkKLSAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlm
b3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFy
YW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZpcnR1
YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIGludCAqcGFyYW1zKTsKIAogICAgIGJvb2wgaXNOVklESUEoKSBjb25zdCB7IHJldHVy
biBtX2lzTlZJRElBOyB9CiAgICAgYm9vbCBpc0FNRCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBTUQ7
IH0KQEAgLTc4LDcgKzc1LDcgQEAgcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNp
b25zR0xPcGVuR0xFUzsKICAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24oR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpOwogCi0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgZ2V0RXh0ZW5zaW9ucygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAKaW5kZXggMTU0NjIzNmY4YjZiZGI1MjIzZDBlZGUzN2FiNzRmMGVkNmYxMGJjZi4uODZkY2Jm
MzFlNjlkMGZjMzdiNzI2OGRhMzc3NWMyNTBjNWI2ODRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAKICAgICAvLyBGb3IgR0xfRVhUX3JvYnVz
dG5lc3MsIGNoZWNrIHRoYXQgdGhlIGNvbnRleHQgc3VwcG9ydHMgcm9idXN0IGFjY2Vzcy4KICAg
ICBpZiAobmFtZSA9PSAiR0xfRVhUX3JvYnVzdG5lc3MiKQotICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBH
TF9UUlVFOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29u
dGV4dEdMOjpDT05URVhUX1JPQlVTVF9BQ0NFU1MpID09IEdMX1RSVUU7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdgogICAg
IG1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOwogfQogCi1ib29s
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCitib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfaW5zdGFu
Y2VkX2FycmF5cyIpIHsKICAgICAgICAgYXV0byBtYWpvclZlcnNpb24gPSBbXSgpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggOWE1ODFhMDAwZGQzNzJmZjFlY2RkOTFmZjk5ZGVj
OThhZDhlMzg1OC4uOWJiNTJmOWJhYWFjYjU3MTZjNGQwMmI5YjViZjc5MWE3OGY3NTBlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTcxLDYgKzcxLDEyIEBAIGNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOwogCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUyA6IHB1Ymxp
YyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24gewogcHVibGljOgorICAgIC8vIEdMX0lNR19tdWx0
aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IFJFTkRFUkJVRkZFUl9TQU1QTEVTX0lNRyA9IDB4OTEzMzsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HID0gMHg5MTM0
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVNfSU1HID0gMHg5MTM1
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9TQU1QTEVTX0lNRyA9IDB4
OTEzNjsKKwogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQg
YnkgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaW1wbGVtZW50YXRpb25zLgogICAgIEV4dGVuc2lv
bnNHTE9wZW5HTEVTKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0
U3RyaW5nKTsKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xPcGVuR0xFUygpOwpAQCAtMTAxLDcg
KzEwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJy
aWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSBvdmVycmlkZTsK
IAogICAgIEdDR0xlbnVtIG1fY29udGV4dFJlc2V0U3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5jcHAKaW5kZXggZjMwYjVlMWU2ZWE5ZDAxNTc3NGY4MDYwYjkxNTNmNDdl
MzA2MmVhYi4uYmJmMGU4MWViOTg1NTI1ZjMyNDc3MTI4ZTQ0MzczMzA0OWE5YzU1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMTIsMTggKzMxMiwyMCBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKICNl
bmRpZgogfQogCi0jaWYgUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCisjaWYgUExBVEZPUk0oR1RL
KSAmJiBVU0UoT1BFTkdMX0VTKQorRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKLSAgICBpZiAoIW1fZXh0ZW5zaW9ucykgewot
I2lmIFVTRShPUEVOR0xfRVMpCi0gICAgICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3QgYXZhaWxh
YmxlIG9uIEdMRVMyLgorICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3QgYXZhaWxhYmxlIG9uIEdM
RVMyLgorICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtl
VW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTEVTPih0aGlzLCAgZmFsc2UpOwotI2Vsc2UKLSAgICAg
ICAgLy8gRnJvbSBPcGVuR0wgMy4yIG9uIHdlIHVzZSB0aGUgQ29yZSBwcm9maWxlLCBhbmQgdGhl
cmUgd2UgbXVzdCB1c2UgZ2xHZXRTdHJpbmdpLgorICAgIHJldHVybiAqbV9leHRlbnNpb25zOwor
fQorI2VsaWYgUExBVEZPUk0oR1RLKQorRXh0ZW5zaW9uc0dMT3BlbkdMJiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgLy8gRnJvbSBPcGVuR0wgMy4yIG9u
IHdlIHVzZSB0aGUgQ29yZSBwcm9maWxlLCBhbmQgdGhlcmUgd2UgbXVzdCB1c2UgZ2xHZXRTdHJp
bmdpLgorICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtl
VW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZl
cnNpb24oKSA+PSAzMjApOwotI2VuZGlmCi0gICAgfQogICAgIHJldHVybiAqbV9leHRlbnNpb25z
OwogfQogI2VuZGlmCkBAIC0zNTEsMTAgKzM1Myw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNp
CiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAgICBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYg
KGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMocGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVF
bmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIGlmIChzdXBwb3J0
c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAgICAgICAgICBl
bnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAg
ICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRydWUuCiAgICAgICAgICAgICBh
dHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtMzYyLDExICszNjMsMTEgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3Qg
Y2hhciogcGFja2VkRGVwdGhTdGVuY2kKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0
cnMpOwogICAgIH0KICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmICFtX2lzRm9yV2ViR0wyKSB7
Ci0gICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUiKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKSB7CiAgICAgICAgICAgICBhdHRycy5hbnRpYWxp
YXMgPSBmYWxzZTsKICAgICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FO
R0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNp
b25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwogICAgIH0KIH0K
IApAQCAtMzA2OSw2ICszMDcwLDM2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11
bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0sIEdDR0xTcGFuCiAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0K
IAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBnZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMobmFt
ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKG5hbWUpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc0V4dGVu
c2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBnZXRFeHRlbnNp
b25zKCkuaXNFbmFibGVkKG5hbWUpOworfQorCitHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCit7CisgICAgcmV0dXJuIGdldEV4dGVuc2lv
bnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZm
ZXJzKQoreworICAgIHJldHVybiBnZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQoYnVmZmVy
cyk7Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQoreworICAgIHJldHVybiBn
ZXRFeHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlcik7Cit9
CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IHVucGFja0FsaWdubWVudCkKIHsKICAg
ICBBU1NFUlQodW5wYWNrQWxpZ25tZW50ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwg
dW5wYWNrQWxpZ25tZW50ID09IDQgfHwgdW5wYWNrQWxpZ25tZW50ID09IDgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA5MWZlZmVmNTEyZjY1MjhiYzNhNzc4MzFlYmU5
YjY0NTFkOTc0NTZjLi41OTc5NjhlMGZmZTkyNzgzMDgwNjEzMjkzYmZmODBhYzgwODIwYTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDMsMTAgKzQzLDkgQEAgY2xh
c3MgR0NHTExheWVyOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEV4dGVu
c2lvbnNHTDsKICNpZiBVU0UoT1BFTkdMX0VTKQogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7
Ci0jZWxpZiBVU0UoT1BFTkdMKQorI2Vsc2UKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTDsKICNl
bmRpZgogY2xhc3MgSG9zdFdpbmRvdzsKQEAgLTM3MCw2ICszNjksMTMgQEAgcHVibGljOgogICAg
IHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dM
c2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKIAorICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOworICAgIEdMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBmaW5h
bDsKKyAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3Zl
cnJpZGU7CisgICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bUdMT2JqZWN0KSBmaW5hbDsKKwogICAgIC8vIEhlbHBlciBtZXRob2RzLgogICAgIHZvaWQgZm9y
Y2VDb250ZXh0TG9zdCgpOwogICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKTsKQEAgLTQwNSwxMSAr
NDExLDEzIEBAIHB1YmxpYzoKIAogICAgIC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJldHVy
bnMgYSBub24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QKICAgICAvLyBhbGwgbWV0aG9kcyBpdCBj
b250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQotICAgIC8vIGN1cnJl
bnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkgdG8KKyAgICAv
LyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMT3BlbkdMe0VTfTo6c3Vw
cG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgotICAgIC8vIFVzZSBjb3ZhcmlhbnQg
cmV0dXJuIHR5cGUgZm9yIE9QRU5HTC9PUEVOR0xfRVMKLSAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKLQorI2lmIFVTRShPUEVOR0xfRVMpCisgICAg
RXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGdldEV4dGVuc2lvbnMoKTsKKyNlbHNlCisgICAgRXh0ZW5z
aW9uc0dMT3BlbkdMJiBnZXRFeHRlbnNpb25zKCk7CisjZW5kaWYKICAgICB2b2lkIHNpbXVsYXRl
RXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZykgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgb3ZlcnJpZGU7CkBAIC00MjAsNyArNDI4LDcgQEAg
cHJvdGVjdGVkOgogICAgIEdDR0x1aW50IG1fdGV4dHVyZSB7IDAgfTsKIAogICAgIC8vIENhbGxl
ZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IGV2ZW50dWFsbHkgY2Fs
bCBPcGVuR0wuCi0gICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9p
bnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCisgICAgLy8g
Q2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNH
TE9wZW5HTC9FeHRlbnNpb25HTE9wZW5HTEVTIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4K
ICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAogICAg
IC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRleHQgY3JlYXRp
b24gYXR0cmlidXRlcywKQEAgLTUxMiwxMyArNTIwLDEyIEBAIHByb3RlY3RlZDoKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTaGFkZXJOYW1lSGFzaD4gbmFtZUhhc2hNYXBGb3JTaGFkZXJzOwogCisg
ICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICNpZiBVU0UoT1BFTkdM
X0VTKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKLSAgICBmcmllbmQg
Y2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRl
bnNpb25zR0xPcGVuR0xFUz4gbV9leHRlbnNpb25zOwotI2VsaWYgVVNFKE9QRU5HTCkKKyNlbHNl
CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTDsKLSAgICBmcmllbmQgY2xhc3Mg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25z
R0xPcGVuR0w+IG1fZXh0ZW5zaW9uczsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDY4YjZjZDNmNTI0YmY2YTA5ZWFmN2ZkNjg0OGZi
YWMxZGE3MzNhYjMuLmMzNWIyZjBmMTVkOWNkMDliOWIyOGJlMGJmNDQ3Nzg4NzQzMDU3MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0zNDUsMTAg
KzM0NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudQogICAgICAgICB0eXBlID0gR0xfSEFM
Rl9GTE9BVF9BUkI7CiAgICAgfQogCi0gICAgQVNTRVJUKGZvcm1hdCAhPSBFeHRlbnNpb25zR0w6
OlNSR0I4X0FMUEhBOF9FWFQpOwotICAgIGlmIChmb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdC
X0FMUEhBX0VYVCkKKyAgICBBU1NFUlQoZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdC
OF9BTFBIQThfRVhUKTsKKyAgICBpZiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdC
X0FMUEhBX0VYVCkKICAgICAgICAgb3BlbkdMRm9ybWF0ID0gR0xfUkdCQTsKLSAgICBlbHNlIGlm
IChmb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCkKKyAgICBlbHNlIGlmIChmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKQogICAgICAgICBvcGVuR0xGb3JtYXQgPSBH
TF9SR0I7CiAjZW5kaWYKIApAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQTEFURk9S
TShHVEspCi1FeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTCYgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAg
ICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTD4odGhpcywgaXNH
TEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cAppbmRleCAzODY0MTk4Zjc0YTU5MmJhNDI5YzZkMGE4YmM2MWRlODFhMzhmNjA5Li44M2I5Yjg2
YzUzMjcyZmM1NDE1N2M5MGY0NjY1YWY4MTE5OGRhNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIC8v
IFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBk
ZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0g
KGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBnZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3Vw
cG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0
cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhf
c3RlbmNpbCIpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAgIGJvb2wgbXVzdFJl
c3RvcmVGQk8gPSBmYWxzZTsKQEAgLTEzMSwxMCArMTMxLDEwIEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgOjpnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwogI2VuZGlmCiAKLSAgICBFeHRlbnNpb25zR0xP
cGVuR0xFUyYgZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnNHTE9wZW5HTEVTJj4o
Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBFeHRlbnNpb25zR0xPcGVuR0xFUyYgZXh0ZW5zaW9ucyA9
IGdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoZXh0ZW5zaW9ucy5pc0ltYWdpbmF0aW9uKCkgJiYg
YXR0cmlidXRlcy5hbnRpYWxpYXMpIHsKICAgICAgICAgR0xpbnQgbWF4U2FtcGxlQ291bnQ7Ci0g
ICAgICAgIDo6Z2xHZXRJbnRlZ2VydihFeHRlbnNpb25zR0w6Ok1BWF9TQU1QTEVTX0lNRywgJm1h
eFNhbXBsZUNvdW50KTsgCisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihFeHRlbnNpb25zR0xPcGVu
R0xFUzo6TUFYX1NBTVBMRVNfSU1HLCAmbWF4U2FtcGxlQ291bnQpOyAKICAgICAgICAgR0xpbnQg
c2FtcGxlQ291bnQgPSBzdGQ6Om1pbig4LCBtYXhTYW1wbGVDb3VudCk7CiAKICAgICAgICAgZXh0
ZW5zaW9ucy5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwLCBzYW1w
bGVDb3VudCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRB
dHRyaWJ1dGVzKCk7CiAKLSAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIWdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIp
KSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigi
R0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpKSB7CiAgICAgICAgIGF0dHJp
YnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0
dHJpYnV0ZXMpOwogICAgIH0KQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZP
Uk0oR1RLKQotRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0xFUyYgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQogICAg
ICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTEVTPih0aGlz
LCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCBlNTRhZTNm
Nzk5Zjg1MmUxZWU3YTcwNjA3YzkwN2JmYzJjNDVhYzEyLi45MWU4ZWE4MDE0YjdhOTU4OTAwYjRm
NzFjNjA0MzcxOTY2YzE1ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMjQsNyArMjQs
NiBAQAogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDc1MGE4NGFmNjM4MmM1NDEzMGNm
MzZlODZkOWJjOGM3NjA0Y2ZiY2IuLjc1MjhjMGU5N2Y3ZTU2Yjg1NzlhYWI1YWVjZDY3YjkyYjA1
ZWI3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIu
Y3BwCkBAIC00NywxNSArNDcsOCBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShBTkdMRSkKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgotI2Vsc2UK
KyNpZiAhVVNFKEFOR0xFKQogI2luY2x1ZGUgPEFOR0xFL1NoYWRlckxhbmcuaD4KLSNpZiBVU0Uo
T1BFTkdMX0VTKQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTEVTLmgiCi0jZWxzZQotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgotI2VuZGlmCiAjZW5kaWYKIAogI2lmIFVTRShO
SUNPU0lBKQpAQCAtMTA4LDcgKzEwMSwxMiBAQCBwcml2YXRlOgogCiBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNy
ZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXVEZNb3Zl
KGF0dHJpYnV0ZXMpKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworI2lmIFVTRShB
TkdMRSkKKyAgICBpZiAoIWNvbnRleHQtPmluaXRpYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisjZW5kaWYKKyAgICByZXR1cm4gY29udGV4dDsKIH0KIAogR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyOjp+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCkgPSBkZWZh
dWx0OwpAQCAtMTQ4LDcgKzE0Niw4IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRl
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4CiAKICAgICAv
LyBDcmVhdGUgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG9iamVjdCBmaXJzdCBpbiBvcmRl
ciB0byBlc3RhYmxpc3QgYSBjdXJyZW50IGNvbnRleHQgb24gdGhpcyB0aHJlYWQuCiAgICAgYXV0
byBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKLQorICAgIGlmICghY29udGV4
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjaWYgVVNFKExJQkVQT1hZKSAmJiBVU0UoT1BF
TkdMX0VTKSAmJiBFTkFCTEUoV0VCR0wyKQogICAgIC8vIEJhaWwgaWYgR0xFUzMgd2FzIHJlcXVl
c3RlZCBidXQgY2Fubm90IGJlIHByb3ZpZGVkLgogICAgIGlmIChhdHRyaWJ1dGVzLndlYkdMVmVy
c2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyICYmICFlcG94eV9p
c19kZXNrdG9wX2dsKCkgJiYgZXBveHlfZ2xfdmVyc2lvbigpIDwgMzApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKaW5kZXggMmRiMmU4ZDdkOWNkN2I5Y2Fi
YjRjOWNhNDE3MjQzZjBlN2EwYjUyMi4uOTFmYTU1YmNmODRkNzE5NzBiYzUwZjg0Mzc3ZTU1YTQw
ZDdmMGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIu
aApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xUZQogcHVibGljOgogICAg
IHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBjcmVhdGUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOwogICAgIH5HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIoKTsKLQorICAgIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgogICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsK
ICNpZiBFTkFCTEUoVklERU8pCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogI2lm
IFVTRShBTkdMRSkKICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwor
ICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkgZmluYWw7CisgICAgdm9pZCBw
cmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCmluZGV4
IDY2ZTMyYWEwMzMzZjdiOGE2YjVmNDg3NDJhNjg1NzlkZWVmNzFjZTUuLmJmY2Y3MjFmZjVjMWU0
ZmI3NWU2YmQ4OGVkMGY3NTNmOWQ4M2VhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAj
aW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAKQEAgLTY3LDYgKzY2
LDggQEAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmkKICNlbmRpZgogICAgIGJvb2wgc3VjY2VzcyA9
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vz
cyk7CisgICAgc3VjY2VzcyA9IGluaXRpYWxpemUoKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nl
c3MsIHN1Y2Nlc3MpOwogCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAgYXR0cmlidXRl
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcg
dmFsaWRhdGlvbi4KQEAgLTI2MCwxMSArMjYxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OnByZXBhcmVGb3JEaXNwbGF5KCkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiB9CiAKLWJvb2wg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogICAgIGNv
bnN0IGF1dG8gc2l6ZSA9IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCmluZGV4IGQyNjFhNDAyNGNmN2VmNzE4N2ExMGY0NzdlYjUzM2VmMjQ2Yzg4Y2Eu
LmEzN2Y0YTU4YzZlODBkMzY2NDYyM2ZjNzZkMTAwYTkzNjkzMTU2MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wu
aCIKICNpbmNsdWRlICJCaXRtYXBUZXh0dXJlUG9vbC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQu
aCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cAppbmRleCBlY2I0YjU3NjdjYzlhOGUyNjg2NDZkY2UzOWQyNjYyYzM0MmMzM2I2Li44OTcyYzIz
OTYzOWRjM2M1MDVkZDhiYWZmNGEzMDc0YzZmOTkyNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3
b3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cgogICAgIGlm
IChtX2NvbnRleHQpIHsKICAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwogICAg
ICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29u
dGV4dEdMOjpFWFRFTlNJT05TKTsKLSAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9u
cyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5T
SU9OU19BTkdMRSk7CisgICAgICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2Nv
bnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9O
U19BTkdMRSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3Jr
UXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNp
b25zKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwgIiIs
ICIiKSk7CkBAIC0xODgsMTAgKzE4OCwxMCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpnZXRFcnJvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcm
JiBleHRlbnNpb24pCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7Cisg
ICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbik7CiB9CiAKLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQoKQogewogICAg
IGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9jb250ZXh0LT5tYXJrQ29u
dGV4dENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWIyMGQxNmMzNzdmNWYz
ZTAwN2YyMWJhMjU2MjRkZDE5ZTM2YmIxNy4uZDhiOTgyMDcxMGI3MmQ5YjQ0MDhiOWJjOTA1NzVi
YWUyYTYwZDhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNp
bmNsdWRlICJTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCIKICNpbmNsdWRl
ICJTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtOTQsOSArOTMsOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkgZmluYWw7CiAKICAg
ICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpOwogICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChT
dHJpbmcmJik7Ci0gICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpOworICAgIHZvaWQgcmVzaGFwZShpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYpPiYmKSA9IDA7CiAjZWxpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggYzhhYjI5NzcyOTMwYmZkNDA4YTAzY2Vi
MzdhMGMyOTg5OGUzMDJiMi4uOTc2ODBhODdhYjNhYTRhMDczZjIxOTMzYzVmZWNiNWIyMjRkZmVi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMzYsNyAr
MzYsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVk
IFN0cmVhbSB7CiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3Vz
CiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lv
bikKLSAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisgICAgdm9pZCBNYXJrQ29u
dGV4dENoYW5nZWQoKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3Ip
CiAgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5k
ZXggZDFjMzI5MDUxN2QyOTZjNTFlMzU2ZThiNGU1NzBjMDY3YmI3NzU4ZC4uOTNiZDY3NzE2OGJi
NDRjOTgxMzRkYzc4OThjOTAzZTBmYmQwM2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTEzMzcsMjAgKzEzMzcsMjAgQEAK
ICAgICB7CiAgICAgICAgIEdDR0xpbnQgcmV0dXJuVmFsdWUgPSB7IH07CiAgICAgICAgIGFzc2Vy
dElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7Ci0gICAgICAgIHJldHVyblZhbHVlID0gbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7CiAgICAgfQogICAgIHZvaWQg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAg
ICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OwogICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9z
dHJlYW1UaHJlYWQpOwotICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcw
KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwogICAg
IH0KICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
JiYgYnVmcykKICAgICB7CiAgICAgICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7
Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBi
dWZzLnNpemUoKSkpOworICAgICAgICBtX2NvbnRleHQtPmRyYXdCdWZmZXJzRVhUKG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xlbnVtKj4oYnVmcy5kYXRhKCkpLCBidWZz
LnNpemUoKSkpOwogICAgIH0KICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYodWludDMyX3Qg
dGFyZ2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgdWludDMyX3QgcG5hbWUsIHVpbnQ2NF90
IHBhcmFtc1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggN2FlMWVlNzZkYzRiMDdjNDAzZjYwYjhhZDEz
ZGFkOWI4N2JkZWQwYS4uMzhjOTRiM2E4Yjc3ZjAyMTlmMTZjZDMyMDk5ZWNjZGZjNzkzMGYxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
ZGVmYXVsdFN0cmVhbVNpemUgPSAxIDw8IDIxOwogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBn
cHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQot
ICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cmlidXRlcykKKyAgICA6
IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0
aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihncHVQ
cm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXplKQogewpAQCAt
NTksMzEgKzU5LDczIEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KCkKICAgICBkaXNjb25uZWN0R3B1UHJvY2Vzc0lmTmVlZGVkKCk7
CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNldENv
bnRleHRWaXNpYmlsaXR5KGJvb2wpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3QoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7Ci0gICAgbV9jdXJyZW50SGVp
Z2h0ID0gaGVpZ2h0OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpKTsKLSAgICBpZiAoIXNl
bmRSZXN1bHQpCi0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK2Jvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQ29u
dGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVk
KGV4dGVuc2lvbikpOwotICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgbWFya0NvbnRleHRM
b3N0KCk7CisjaWYgRU5BQkxFKFdFQkdMMikKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMo
KS53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMjsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKK3sKKyAgICAvLyBGSVhNRTog
VGhlIGNhbGxlciBzaG91bGQgdHJhY2sgdGhpcyBzdGF0ZS4KKyAgICBpZiAobV9sYXllckNvbXBv
c2l0ZWQpIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgp
OworICAgICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6TWFya0NvbnRleHRDaGFuZ2VkKCkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICB9CiB9CiAKLXZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKK2Jvb2wgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0
VW50aWxJbml0aWFsaXplZCgpOworICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250
YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgeworICAg
ICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKKyAgICAgICAgaWYgKGlzQ29udGV4
dExvc3QoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQobmFtZSkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJr
Q29udGV4dExvc3QoKTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0
VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKGNvbnN0IFN0cmlu
ZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNw
bGl0KCcgJykpCisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgn
ICcpKQorICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKK30K
Kwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3aWR0aCwg
aW50IGhlaWdodCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47
Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpKTsKKyAgICBtX2N1cnJlbnRXaWR0aCA9
IHdpZHRoOworICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0
aCwgaGVpZ2h0KSk7CiAgICAgaWYgKCFzZW5kUmVzdWx0KQogICAgICAgICBtYXJrQ29udGV4dExv
c3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggMjlm
MDE5ODcxOTU1OTk4NzkyZWU3Nzk1ZDlhYTYwYzJmMzk3Mzk3MS4uNTczZjdjYjRjMGM5NWY1NDVl
ZjZlMDY1NDQ4NDZmMTc0OGMzM2EyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmgKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dEdMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTUwLDcgKzUwLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
CiAgICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwcml2YXRlIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpDbGllbnQKLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZSB7CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0wgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB+UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSgpOwpAQCAtNTgsMTEgKzU4LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAgIC8vIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KKyAgICAvLyBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTCBvdmVycmlkZXMuCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50
IGhlaWdodCkgZmluYWw7Ci0gICAgdXNpbmcgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKLSAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
Y29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5TWFya0NvbnRl
eHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBm
aW5hbDsKKyAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgc3ludGhl
c2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwpAQCAtMzIxLDkgKzMyNCw2IEBAIHB1
YmxpYzoKIHByb3RlY3RlZDoKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCi0gICAgLy8gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgotICAgIHZvaWQgd2FpdFVudGlsSW5pdGlh
bGl6ZWQoKSBmaW5hbDsKLQogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2dwdVByb2Nlc3NDb25uZWN0aW9uOyB9CiAgICAgdm9pZCBtYXJrQ29udGV4dExvc3QoKTsK
IApAQCAtMzUwLDExICszNTAsMTggQEAgcHJpdmF0ZToKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVj
dGlvbjo6Q2xpZW50IG92ZXJyaWRlcy4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlk
Q2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKIAorICAgIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVz
dGFibGVFeHRlbnNpb25zKTsKKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CiAgICAg
dm9pZCBkaXNjb25uZWN0R3B1UHJvY2Vzc0lmTmVlZGVkKCk7CiAgICAgdm9pZCBhYmFuZG9uR3B1
UHJvY2VzcygpOwogCiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb247CiAgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OworICAgIC8vIEd1YXJk
ZWQgYnkgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKS4KKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFp
bGFibGVFeHRlbnNpb25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9uczsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOwogICAgIEdD
R0xlbnVtIG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCA9IE5PX0VSUk9SOwogICAgIElQQzo6U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhiN2U0MjI4MzYzNWI3NzYy
OTU4YWNmMWRiMThiMDBkMTMzYTQ4NTkuLmExNTM0MTQ2M2YwNzllMzAzZjc2OWNlNWVkMWM2NGVj
ZDVmM2M0NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNz
LCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIG1hbnVhbGx5IGltcGxlbWVudGVkIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjItMDItMTEgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IHRvIHF1
ZXJ5IGNhbWVyYSBhbmQgbWljcm9waG9uZSBwZXJtaXNzaW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsCmluZGV4IDMwZjdmZDgyYjMzMWEwNmY0YzRlMGNiNGUzYjg5Zjc1ZmZlNmIxODEuLmM2
NWQ4NzZhNGFmMjExY2JmNzNjYjcyOTg2NDMxMDgxYjYwZjg4ZjYgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wKQEAgLTQxLDcgKzQxLDYgQEAgaW1wb3J0IGNvbGxlY3Rpb25zCiBmcm9tIHR5
cGluZyBpbXBvcnQgTGlzdCwgRGljdCwgSXRlcmFibGUsIENhbGxhYmxlLCBUdXBsZSwgU2V0LCBP
cHRpb25hbCwgR2VuZXJhdG9yLCBJdGVyYXRvciwgQ291bnRlcgogCiByb290X2RpciA9IChwYXRo
bGliLlBhdGgoX19maWxlX18pLnBhcmVudCAvICIuLiIgLyAiLi4iKS5yZXNvbHZlKCkKLWV4dGVu
c2lvbnNfaW5wdXRfZm4gPSByb290X2RpciAvICJTb3VyY2UiIC8gIldlYkNvcmUiIC8gInBsYXRm
b3JtIiAvICJncmFwaGljcyIgLyAiRXh0ZW5zaW9uc0dMLmgiCiAKIGZ1bmN0aW9uc19pbnB1dF9m
bnMgPSBbCiAgICAgcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJLaXQiIC8gIldlYlByb2Nlc3Mi
IC8gIkdQVSIgLyAiZ3JhcGhpY3MiIC8gIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIK
QEAgLTk4LDcgKzk3LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90
UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkg
U3luY2hyb25vdXMKICNlbmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJp
bmcgZXh0ZW5zaW9uKQotICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKKyAgICB2
b2lkIE1hcmtDb250ZXh0Q2hhbmdlZCgpCiAgICAgdm9pZCBTeW50aGVzaXplR0xFcnJvcih1aW50
MzJfdCBlcnJvcikKICAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cwogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5j
aHJvbm91cwpAQCAtNDIwLDE0ICs0MTksMTIgQEAgY2xhc3MgY3BwX2Z1bmMob2JqZWN0KToKICAg
ICBuYW1lOiBzdHIKICAgICBhcmdzOiBjcHBfYXJnX2xpc3QKICAgICByZXR1cm5fdHlwZTogY3Bw
X3R5cGUKLSAgICBpc19leHRlbnNpb246IGJvb2wKICAgICBvdmVybG9hZF9zdWZmaXg6IHN0cgog
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBl
LCBhcmdzOiBjcHBfYXJnX2xpc3QsIGlzX2V4dGVuc2lvbjogYm9vbCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWU6IHN0ciwgcmV0dXJuX3R5cGU6IGNwcF90eXBlLCBhcmdzOiBjcHBfYXJn
X2xpc3QpOgogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYucmV0dXJuX3R5
cGUgPSByZXR1cm5fdHlwZQogICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCi0gICAgICAgIHNlbGYu
aXNfZXh0ZW5zaW9uID0gaXNfZXh0ZW5zaW9uCiAgICAgICAgIHNlbGYub3ZlcmxvYWRfc3VmZml4
ID0gIiIKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgpAQCAtNzExLDcgKzcwOCw2IEBAIGNsYXNz
IGNvbnRleHRfcHJveHlfY3BwX3dlYmtpdF9pcGNfZ2VuZXJhdG9yKG9iamVjdCk6CiBjbGFzcyB3
ZWJraXRfaXBjX2NwcF9pbXBsKG9iamVjdCk6CiAgICAgbmFtZTogc3RyCiAgICAgYXJnczogY3Bw
X2FyZ19saXN0Ci0gICAgaXNfZXh0ZW5zaW9uOiBib29sCiAgICAgcHJlX2NhbGxfc3RtdHM6IExp
c3Rbc3RyXQogICAgIGNhbGxfc3RtdHM6IExpc3Rbc3RyXQogICAgIHBvc3RfY2FsbF9zdG10czog
TGlzdFtzdHJdCkBAIC03MjMsNyArNzE5LDYgQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfaW1wbChv
YmplY3QpOgogICAgICAgICBzZWxmLm5hbWUgPSBjcHBfZnVuYy5uYW1lCiAgICAgICAgIHNlbGYu
b3ZlcmxvYWRfc3VmZml4ID0gY3BwX2Z1bmMub3ZlcmxvYWRfc3VmZml4CiAgICAgICAgIHNlbGYu
YXJncyA9IGNwcF9hcmdfbGlzdChbXSkKLSAgICAgICAgc2VsZi5pc19leHRlbnNpb24gPSBjcHBf
ZnVuYy5pc19leHRlbnNpb24KICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyA9IFtdCiAgICAg
ICAgIHNlbGYuY2FsbF9zdG10cyA9IFtdCiAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0g
W10KQEAgLTczOCwxMiArNzMzLDExIEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0
KToKIAogICAgIGRlZiBwcm9jZXNzX2NhbGwoc2VsZik6CiAgICAgICAgIHNlbGYuY2FsbF9zdG10
cyArPSBbICJhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOyIgXQotICAgICAgICBleHQg
PSAiZ2V0RXh0ZW5zaW9ucygpLiIgaWYgc2VsZi5pc19leHRlbnNpb24gZWxzZSAiIgogCiAgICAg
ICAgIGluX2V4cHJzID0gIiwgIi5qb2luKHN0cihlKSBmb3IgZSBpbiBzZWxmLmluX2V4cHJzKQog
ICAgICAgICBpc19hc3luYyA9IGxlbihzZWxmLm91dF9leHBycykgPT0gMAogCi0gICAgICAgIGNh
bGxfZXhwciA9IGYibV9jb250ZXh0LT57ZXh0fXtzZWxmLm5hbWV9KHtpbl9leHByc30pIgorICAg
ICAgICBjYWxsX2V4cHIgPSBmIm1fY29udGV4dC0+e3NlbGYubmFtZX0oe2luX2V4cHJzfSkiCiAg
ICAgICAgIGlmIG5vdCBzZWxmLnJldHVybl92YWx1ZV9leHByOgogICAgICAgICAgICAgc2VsZi5j
YWxsX3N0bXRzICs9IFtmIntjYWxsX2V4cHJ9OyJdCiAgICAgICAgIGVsc2U6CkBAIC04NzksOCAr
ODczLDggQEAgZGVmIGNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjczogSXRlcmFibGVbc3Ry
XSk6CiAgICAgcmV0dXJuIGNwcF9hcmdfbGlzdChbY3JlYXRlX2NwcF9hcmcoYXJnX3NwZWM9ZSwg
YXJnX2luZGV4PWkpIGZvciBpLCBlIGluIGVudW1lcmF0ZShhcmdzX3NwZWNzKV0pCiAKIAotZGVm
IGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6
IExpc3Rbc3RyXSwgaXNfZXh0ZW5zaW9uOiBib29sKToKLSAgICByZXR1cm4gY3BwX2Z1bmMobmFt
ZT1uYW1lLCByZXR1cm5fdHlwZT1nZXRfY3BwX3R5cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0
ZV9jcHBfYXJnX2xpc3QoYXJnc19zcGVjcyksIGlzX2V4dGVuc2lvbj1pc19leHRlbnNpb24pCitk
ZWYgY3JlYXRlX2NwcF9mdW5jKG5hbWU6IHN0ciwgcmV0dXJuX3NwZWM6IHN0ciwgYXJnc19zcGVj
czogTGlzdFtzdHJdKToKKyAgICByZXR1cm4gY3BwX2Z1bmMobmFtZT1uYW1lLCByZXR1cm5fdHlw
ZT1nZXRfY3BwX3R5cGUocmV0dXJuX3NwZWMpLCBhcmdzPWNyZWF0ZV9jcHBfYXJnX2xpc3QoYXJn
c19zcGVjcykpCiAKIAogZGVmIHJlYWRfbGluZXNfdW50aWwobGluZXMgOiBJdGVyYWJsZVtzdHJd
LCBtYXRjaCA6IHN0cikgLT4gR2VuZXJhdG9yW3N0ciwgTm9uZSwgTm9uZV06CkBAIC04OTYsMjAg
Kzg5MCw2IEBAIGRlZiBtYWluKCk6CiAKICAgICAjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBmdW5j
dGlvbnMgdG8gcmVtb3RlIGZyb20gd2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MuCiAKLSAgICAj
IEZJWE1FOiBVbnRpbCBleHRlbnNpb25zIGhlYWRlciBpcyByZW1vdmVkLCB3ZSBuZWVkIHRvIGNv
bXBsaWNhdGUgdGhlIGltcGxlbWVudGF0aW9uCi0gICAgIyB3aXRoIHRoZSBkaXN0aW5jdGlvbiBv
ZiB3aGV0aGVyIGEgZnVuY3Rpb24gaXMgb3IgaXMgbm90IGFuIGV4dGVuc2lvbiBmdW5jdGlvbi4K
LSAgICBleHRlbnNpb25fc2lnbmF0dXJlcyA6IFNldFtzdHJdID0gc2V0KCkKLSAgICB3aXRoIG9w
ZW4oZXh0ZW5zaW9uc19pbnB1dF9mbikgYXMgZjoKLSAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFk
bGluZXMoKToKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIi4qdmlydHVhbCAoXFMrKVxzKyhc
dyspXCgoLiopXCkgPSAwOyIsIGxpbmUpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAg
ICAgIGZ1bmMgPSBjcmVhdGVfY3BwX2Z1bmMoCi0gICAgICAgICAgICAgICAgICAgIG5hbWU9bVsy
XSwKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3NwZWM9bVsxXSwKLSAgICAgICAgICAgICAg
ICAgICAgYXJnc19zcGVjcz1jcHBfc3BsaXRfYXJnc19zcGVjcyhtWzNdKSwKLSAgICAgICAgICAg
ICAgICAgICAgaXNfZXh0ZW5zaW9uPVRydWUsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbl9zaWduYXR1cmVzLnVwZGF0ZShbc3RyKGZ1bmMpXSkKICAgICBmdW5j
cyA9IFtdCiAgICAgdW5pbXBsZW1lbnRlZCA9IFtdCiAgICAgZm9yIGZuIGluIGZ1bmN0aW9uc19p
bnB1dF9mbnM6CkBAIC05MjYsOSArOTA2LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWU9ZnVuY19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
X3NwZWM9bVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0
X2FyZ3Nfc3BlY3MobVszXSksCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNpb249
RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgZnVuYy5p
c19leHRlbnNpb24gPSBzdHIoZnVuYykgaW4gZXh0ZW5zaW9uX3NpZ25hdHVyZXMKICAgICAgICAg
ICAgICAgICAgICAgaWYgZnVuYy5pc19pbXBsZW1lbnRlZCgpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgZnVuY3MuYXBwZW5kKGZ1bmMpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Cg==
</data>
<flag name="commit-queue"
          id="478487"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451680</attachid>
            <date>2022-02-11 05:38:57 -0800</date>
            <delta_ts>2022-02-11 06:55:14 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236490-20220211153854.patch</filename>
            <type>text/plain</type>
            <size>282620</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uNDA1NWY5MWUxZDUyMjliMThkN2Y4MjlhMjFkNDVj
NDEwNTIxOGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJv
dGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFnZSI+
IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTM1
Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZWJjMDFjOWZiNDA4YmQxNjZk
NTQ2OTBkZTU4NjgzZjlhNjUxZjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTEx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDU3YzRhYTliMWExOGNjZmE5YWIyODdlNGUwYjM3MGVlM2FkNTA5Yy4uMWQ2
ODAxNTBlYmY5YzExMTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MDgsNyArMTkwOCw2IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICkKICAg
ICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFm
NWJhZmFjMi4uNDI4OWIxM2FkZTgwM2YyZjJhOTQwOTVjMzg1OGNkZWMzNzM3NTFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xNDM1LDcgKzE0MzUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgKQEAgLTE1NTMsNyArMTU1Miw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMTU4MSw3ICsxNTc5LDYgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
SGVhZGVycy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMjM5YTIyYmQxMDMwMjFkMTI3NTI2YTBmNDhjNzAxZDliNjc0MGUzNS4uYWRkYzEw
MjFmODA5M2UxMDE1OTZmYTc0ZGJhYjY5MGZjYzk4Zjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzIsMTIgKzI3MiwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwog
ICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbGlmIFVTRShP
UEVOR0xfRVMpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5z
aW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGF1dG8mIGV4dGVuc2lv
bnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4
dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwg
PSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsK
ICNlbHNlCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBhdXRvJiBleHRlbnNp
b25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCY+KGdsKS5nZXRF
eHRlbnNpb25zKCk7CiAgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2ls
ID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9D
T01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5U
OwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBG
cmFtZWJ1ZmZlcigpCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBnbC5nZXRJbnRlZ2VydihHTDo6
TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbHNlCi0g
ICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dM
U3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NHTFNwYW4oJm1heFNhbXBsZUNvdW50LCAx
KSk7CiAjZW5kaWYKICAgICAgICAgLy8gQ2FwIHRoZSBtYXhpdW11bSBtdWx0aXNhbXBsZSBjb3Vu
dCBhdCA0LiBBbnkgbW9yZSB0aGFuIHRoaXMgaXMgbGlrZWx5IG92ZXJraWxsIGFuZCB3aWxsIGlt
cGFjdCBwZXJmb3JtYW5jZS4KICAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1h
eFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0
YWIzM2E4YmQ3NWU3YTU4YS4uOGM4MDVmMmYwNzdmZmVjYWI3YzUxNWE2YWM3NzQ1ZmIzZWMxY2Nm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIwNzMsNyArMjA3Myw2IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQx
ZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uN2JkNWEyNGI0YTYxYWJhMjEwYmZiNDVhYThjYjczMzIz
MjJmNWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTUsNiArNjE1LDUgQEAgdGVz
dGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCiAvLyB3aXRo
IGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdMLgogCiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2
MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uYjQ1YmQwZDlmYTJkMWM1NmQ1ZGYyMGIx
MjZiYTJjMzU3YWY2NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NywxMSArMjE4Nyw4IEBACiAJCTZFNDdFNjYxMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJD
RDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQy
OTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBF
eHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Ki87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUy
OTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07
Ci0JCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDQyMjlDOUY4
RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi87IH07CiAJCTZFNzJGNTUxMjI5RENE
MUEwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLzsgfTsKIAkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RThBQ0RFRDIzMzQ1
Q0JDMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4QUNERUIyMzM0NUNBRjAwMjRBQUY1
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCAqLzsgfTsKQEAgLTI0MTIsNyArMjQwOSw2
IEBACiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhB
QzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5NUNGRUQyNzU0
RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwODY5LDggKzEwODY1LDYgQEAKIAkJNkUyNDJCMjkyMzM1OTNENzAw
MkNBREQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjQyQjJBMjMzNTkzRDgwMDJDQURENCAvKiBKU1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xB
TkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25z
R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQ0MjI5QzlG
OEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFyeUFOR0xFU2V0
dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYzMjI5REI5NzAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA5MDIsNyArMTA4OTYsNiBAQAogCQk2RTUzODhFMDI0NThBRTFEMDA3NkFFMDMgLyogV2Vi
R0xDb2xvckJ1ZmZlckZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTM4OEUxMjQ1OEFF
MUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29sb3JC
dWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTc2QkMzMjRF
QjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVu
c2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTdDQTMwQTI1QjREMjhB
MDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMTXVs
dGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFN0NBMzBCMjVCNEQzMjgw
MDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xNdWx0aURyYXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTg0RTlERTE3
NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE1MjYsNyArMTE1MTksNiBAQAogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I5MDQxNkUyNTUwMTEw
OTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTVDRkVDMjc1
NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1NDIsNyArMTE1MzQsNiBAQAogCQk3
QkREQTMxRDI3NEY5REE1MDAzODY1OUUgLyogR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzQ5Mjc1QTAxMzAwMDM4NjU5RSAvKiBQ
cm9jZXNzSWRlbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c0lkZW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzRCMjc1QTAx
MzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RUYy
NzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRkY1OUYxMjc1NzcxRTgwMDc3M0QzOSAv
KiBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdz
LmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0Mzk1LDggKzI0Mzg2LDYgQEAKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIg
LyogQU5HTEVIZWFkZXJzLmggKi8sCiAJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFO
R0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5H
TEVVdGlsaXRpZXMuaCAqLywKLQkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwICovLAotCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRl
bnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKIAkJCQk3Qjk1Q0ZFQzI3NTRGRjdDMDAwMDYwQ0Ug
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5
ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLApAQCAtMjg4NzAsNyArMjg4NTks
NiBAQAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcyQyAvKiBEaXNwbGF5VXBkYXRlLmNwcCAq
LywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMgLyogRGlzcGxheVVwZGF0ZS5oICovLAog
CQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLywK
LQkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8sCiAJCQkJ
MkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5jcHAgKi8sCiAJCQkJMkU4ODhD
QTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5oICovLAogCQkJCUIyNzUzNTNBMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKQEAgLTI5MDY1LDggKzI5MDUzLDYgQEAK
IAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyogUGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAot
CQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgKi8sCi0JCQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEw
OEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBF
QTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMzQ0NDEsOCArMzQ0MjcsNiBAQAogCQkJ
CTJEMjkzODZCMjM1RjZCNjkwMEM3RjNCMiAvKiBFeGNlcHRpb25EZXRhaWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTcyRjU1MDIyOURDRDE3MDBC
M0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0UyNzY1
MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY3NjEsNyArMzY3NDUsNiBA
QAogCQkJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjkwNDE3MDI1NTAxMTQy
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXli
YWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0MjE3
N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
ODY0OCw3ICszODYzMSw2IEBACiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1By
b3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyMjgzMDMyM0E4NDcwNzAwMzY0
QjdFIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTU5MjI4MEU5MjYw
MDJCMjJBQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkU3
MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdhbWVDb250
cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRENjE2MDBG
QTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRleCA4MjIwMzM5MTVk
MDRlM2IwYzI5NjJmYmI1MjM0ZTkzNGY5M2E3MTE3Li44NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZm
YzE4N2Y2Y2Y1YmJlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
QU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0yOCwxMCArMjgsNiBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbmNsdWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0o
R1RLKSB8fCBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKFdQRSkKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArMzgsNyBAQCBBTkdMRUluc3RhbmNlZEFycmF5czo6
QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKICNlbmRpZgogfQogCkBAIC01MywxMCArNDksMTAgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBBTkdMRUluc3RhbmNlZEFycmF5c05hbWU7CiB9CiAKLWJvb2wgQU5HTEVJbnN0YW5jZWRBcnJh
eXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBB
TkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDMyZWI4
OTdiMTZkOTA5ZDM5NGExMGE3ODUxYzFlMzI2NzU0ZWM5MzYuLjY5YzQ0ZGQ0OTEzYWZlM2Q1ZjBl
YjNkZjMwYTgxN2MzNGJmZjA4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKaW5kZXggMDllNTBjNGNiYWQzZjU5
OGEzMjJkOTA1MWM5ODNmZmIwZTdiMjVlNy4uNzk2NTYwYmQ0Y2U2YTUwOTYxNjNiZTE5NDAwYmVl
ZTI0ODJmMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsMTAgKzM3LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRD
b2xvckJ1ZmZlckZsb2F0KTsKIEVYVENvbG9yQnVmZmVyRmxvYXQ6OkVYVENvbG9yQnVmZmVyRmxv
YXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
S2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zs
b2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVYVENvbG9y
QnVmZmVyRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSAr
NTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckZsb2F0
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9
CiAKLWJvb2wgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZm
ZXJGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5oCmluZGV4IGViMjlmYTBlNTQ5M2EyNDgxMWNjMTA2ODczNjNhMWQ4OWNiZGZkNzYuLjk1NDhm
MGY5M2YwZTQ2N2Q2YjkyYWFlZmRjNTk1M2Y0OGQ1MzgwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCmluZGV4IDc5ZTFjYzE5ZDFlYmY3
ZWMwNzQ3ZTM2NWIyMGJmNDFiY2MzMzIwNGYuLjBlZmVkODNhZDZhOTFmMDQ0MWIyM2U0NzE0MmFi
OTg3NzgzMzQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KTsKIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0
OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29s
b3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
Il9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdCgpID0gZGVmYXVsdDsKQEAgLTQ4LDEwICs0NywxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0
ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxm
RmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZs
b2F0LmgKaW5kZXggMTA3NzllZjZjMmM5YzQyNmYzZDY1MTE2MWU4ZjZkMGRkZjIzY2Y3NS4uNmY0
YmM0ODFhMzA0ZjY0ZDQ1ZDkyMmIxYjcyMzExZmM5OGQ5Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKaW5kZXggOGVmNjg3OTMzYWFlY2Y1YjhkMzNjZTAy
MDc4ODJjMmJkZDU3ODk2MS4uYmRkODVkMDcwZDA4NzEzOTYzZGMxN2IxNjRhMmZiYWVlNjA3MDIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhURmxvYXRCbGVu
ZC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhURmxvYXRCbGVuZCk7CiBFWFRGbG9hdEJsZW5kOjpF
WFRGbG9hdEJsZW5kKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBFWFRGbG9hdEJsZW5kOjp+RVhURmxvYXRC
bGVuZCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgRVhURmxvYXRCbGVuZDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVYVEZs
b2F0QmxlbmROYW1lOwogfQogCi1ib29sIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBFWFRGbG9hdEJsZW5kOjpz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZmxvYXRfYmxlbmQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCmluZGV4IDIyYzMwMmEz
MzBhNjIyMjM1Y2Y2ODUyOTNjZDhjMTY4NTZhNDU3YmUuLjQ0NmI5ZmYzNzFkYzI5MmI4ZmU2MTgy
OTMyZDU4ZjU2NjYwNjc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZsb2F0QmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9h
dEJsZW5kLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcAppbmRleCA0NjNhNTg3M2NmMzA5NjMxMmQ5N2Q2MzI3ZjYxYWU4MWU0NzFkZDdk
Li40NmM5NjBmMTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM4LDEyICszNywxMiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9S
R1RDMl9FWFQpOwogfQogCiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCmluZGV4IDUyNzEzOGYzMGY3
NWZhZDA3Mzk4NTk0YjMzM2E3ZGY5YzE0MmQyODAuLmU2NmJiODI0M2E3Mzc5MjFhMGQ1MzUzNzVm
ZWM2Y2RmM2IzOWFmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCIKIAotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk7CiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGU6OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3BhcmFsbGVsX3NoYWRl
cl9jb21waWxlIl9zKTsKIH0KIAogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjp+S0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGVOYW1lOwogfQogCi1ib29s
IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3Bh
cmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKIH0KICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKaW5kZXggMWZjZmMyYjU4ZWQ5ZmI0ZTZkMTE3
NDE4NjE0N2RmM2JkYzAyNTNhOS4uODM4MDRkNmRmOWYyNjMxZDlhNzNkOTUwOGVhNzEwZjlhY2I1
MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1h
cC5jcHAKaW5kZXggNzFhODFkMGQ5MzA5ZDY0NGVlNDg2OGJkYWEyM2VkODc4NGFmNTIxYi4uNjUy
MjBiN2FiYzA3MTMzNTY1NmJkN2ZiMzUzNjJmM2U0YTIyZjZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIk9FU0ZCT1JlbmRlck1pcG1hcC5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTRkJPUmVuZGVyTWlwbWFwKTsKIE9FU0ZCT1JlbmRlck1pcG1h
cDo6T0VTRkJPUmVuZGVyTWlwbWFwKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiBPRVNG
Qk9SZW5kZXJNaXBtYXA6On5PRVNGQk9SZW5kZXJNaXBtYXAoKSA9IGRlZmF1bHQ7CkBAIC00OCw5
ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU0ZCT1JlbmRlck1pcG1h
cDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU0ZCT1JlbmRlck1pcG1hcE5hbWU7CiB9
CiAKLWJvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBt
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCmlu
ZGV4IDMzOTZmOWUxZTExNGU1MWFmY2RmZGQ4M2YzZWQyZWI2ODMzZTZkZjIuLjAyYTcyOGNjZWUx
ZmViZTAwNmQyZDk2YTRkMDg3MGQ4YTRmMjA0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwCmluZGV4IGU5MmIyZmVmYmYwOTQ2OGJlY2RiZDFlZjhkOWRkMjEwZDViOGMy
MGYuLjVkMWU4OTY3N2U2MTJjMjk3ZTQ2MjkxMTg0MzY3MzhmMzU5YjlkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTVGV4dHVyZUZsb2F0KTsKIE9FU1RleHR1cmVGbG9hdDo6T0VT
VGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9z
KTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWly
ZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAK
IE9FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTUzLDkg
KzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUZsb2F0Ojpn
ZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsKIH0KIAotYm9v
bCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0Nv
bnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsK
KyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxv
YXQiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IDhhNzI3NGRkZWNhOGY3ZDNiMjM0NjU2
YWIzZGY1YzdkOGZmZWQwNmMuLjEwZTE5ZWI3MGE3YmFkOTNlYzY5OWIwOWE2YTU3ODkyOWY1N2M4
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKaW5kZXggNDBiOTg5
OTZmNjdhYzFlOGFiNjVjZDY2NmQ2M2QyN2QzOWYzMWNlZS4uNGVhODY2ZGVlMjRjYzVhMGNlMWEz
MDgxZWU5NzM5Y2IwZTBhMzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUg
Ik9FU1RleHR1cmVIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9FU1RleHR1cmVIYWxm
RmxvYXQpOwogT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiX3MpOwogICAgIC8vIFJlbmRlcmFiaWxpdHkgaXMgaW1wbGljaXQgd2hl
biB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQog
CiBPRVNUZXh0dXJlSGFsZkZsb2F0Ojp+T0VTVGV4dHVyZUhhbGZGbG9hdCgpID0gZGVmYXVsdDsK
QEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVy
ZUhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU1RleHR1cmVIYWxmRmxv
YXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlSGFsZkZs
b2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXQuaAppbmRleCBhMzU0ZmNiN2UzOWI1MzBiZjQ5MzM2MTI5Njg5MTM2ZWE5NjIx
NjYzLi5kNTE5NDZhYmE0MzkwNGYzMDZlMWE3ZDA3Y2YwMGI5YWViZGU1MTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCAzMGQ0YjNmZjBj
YmQyNGY1MzgwODYzMGJjYzQzMDY3ZDhjZThmMDZkLi40ZjI4NWM1ZjRjMmUwMzAxZGJmNTQ3NDAz
Y2ZmMTBjYzg2OTRmZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
V0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDVhMzg3OTU3YzI2MDY2MjJkYjQ2ZjRiZjYw
ODhiZTMzMTA2MWFiYmIuLjZkMGE4NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTI0MCwxMCArMjM5LDEwIEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkK
IHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRoZSBXZWJHTCAyLjAgY29yZSBBUEkgYW5k
IHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgIG1fY29udGV4dC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIG1fY29u
dGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVw
dGgiKTsKIH0KIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRh
cmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKQEAgLTI3MTUs
MjAgKzI3MTQsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5l
YXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250
ZXh0IiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
QVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMxLCAiV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJU
QywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
LCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbywgbV93ZWJnbERlYnVnUmVuZGVyZXJJ
bmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIsIHRydWUpOwotICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9k
ZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUQ29sb3JCdWZmZXJGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdCIsIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwot
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29s
b3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xv
ckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1
cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRl
cnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9z
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENv
bG9yQnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBt
X2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVs
dGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIHRydWUpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtMjc0Myw0MiArMjc0Miw0MSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAo
bV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlm
IChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQorICAg
IGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6
c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAg
IH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykp
CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3Rj
Il9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250
ZXh0Il9zKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6
OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRo
aXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQi
X3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxl
bF9zaGFkZXJfY29tcGlsZSJfcyk7Ci0gICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0aV9kcmF3Il9zKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xv
ckJ1ZmZlckZsb2F0LmNwcAppbmRleCBhODFhNDljMmNhNzY5MzgwNTg2MjM0YzFmMjA5ZTQ4ZWEy
YzZkYzBmLi42YzBhOWJlNTYxZDc5ZTcwZDlmMzVkNThhOTcwNmM2NTU2NTBkODgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwx
MiArMzcsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29sb3JCdWZmZXJG
bG9hdCk7CiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OldlYkdMQ29sb3JCdWZmZXJGbG9hdChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CiAgICAgLy8gT3B0aW1p
c3RpY2FsbHkgZW5hYmxlIFJHQiBmbG9hdGluZy1wb2ludCByZW5kZXIgdGFyZ2V0cyBhbHNvLCBp
ZiBwb3NzaWJsZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOwogICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAgLy8gU3BlYyBy
ZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0bHkgaGVyZS4K
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsK
IH0KIAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2ViR0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBk
ZWZhdWx0OwpAQCAtNTMsMTAgKzUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1l
IFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojpz
dXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykKLSAgICAgICAgJiYgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpCisgICAgICAgICYmIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAppbmRleCAwZDJkMDdjMjU1
OTllMDRjY2VjYTA2NmE0NTk2NTA1ZDEwMmUxODY0Li45NGNkZWQ2Y2Q2MzY3YzE4ZDYwMDJhNmVh
ZWIyMTQwMzEzMjM5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXggNmVhY2ExZjJhMDI1MTc2ZGE0NTNiNTAw
MTI4YTM2ZjExMzZiODE1ZC4uNGZmMDIyZTllZDUxMmE5MmVkYTMxMDFjZjFjMjZjMmVlNWFmODM5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzksNDEgKzM4LDQxIEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyk7CiAKIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKLSAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfaGRyIl9zKSkKLSAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIl9zKSkKKyAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19oZHIiX3MpKQorICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lv
bl9hc3RjX2xkciJfcykpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tI
Uik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUik7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
Uik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CiAgICAgCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2
X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUik7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MngxMl9LSFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpAQCAtOTUsMTAgKzk0LDEwIEBAIFZlY3RvcjxT
dHJpbmc+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpnZXRTdXBwb3J0ZWRQcm9maWxlcygp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2hkciJfcykKLSAgICAgICAgfHwgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19oZHIiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKaW5kZXggMzBlZmUzZDgxYzFiOWI5NDYz
Mzk3MzFkMzc4ZDJjYzE3YTMxNTlmMC4uZmEwZTViOTllM2UxZjQ2Y2I4NTU0MDI3MjYyZTA2NWJm
MThmMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBnZXRTdXBwb3J0ZWRQcm9maWxlcygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNv
bnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSERSU3VwcG9y
dGVkIDogMTsKICAgICBib29sIG1faXNMRFJTdXBwb3J0ZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApp
bmRleCBjOWU3YmUzMGM2MzEwNTAzMDNkZmJlNjZhMTMzZmZkNDI0NmVjMjI5Li5iYzNlYmUyZDVl
NzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMjks
NyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTEgKzM4LDExIEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0g
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2Vk
X0FUQ190ZXh0dXJlIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQ
SEFfQU1EKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMoKSA9IGRlZmF1bHQ7CkBAIC01Myw5ICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDTmFtZTsKIH0KIAotYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU1EX2NvbXByZXNz
ZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oCmluZGV4IGUwYmQyNjYxMDk0NDBmY2IzMDdjOTNiMzVjNTQzMGIxZGQ5
NGQxZmEuLjEwNTY4YTlkZDk0YzNiZTI3NzhjMzI0Nzg5YzRmOGY3NTQ0YWE0YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4IDRmZWFhNWRkODc5MTIzNTkzMWY5
ODU5Zjk2NzBjNDY4YTVhM2JmYTMuLjkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5
ZjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zOSwxOCArMzgsMTggQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUjExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMy
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOwogfQogCiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpID0gZGVm
YXVsdDsKQEAgLTYwLDkgKzU5LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9v
bCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7
CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
CmluZGV4IDc0Njc3OGNjMmRlMDIzOWI5ZWUyYzc1M2RiMGY2OTJlMDRkODk3ZDQuLmMzODgyOTEx
YWI1OTZkOWYyMTA2YTgxODFlOWVmMjBjMjhkMDgxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZDlhN2NmYWI2OWU3NmVhZTMxN2VjMGJjZjU2NTQ5OTZj
ZjI0MTVlYS4uYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYxOTBiMTcwOTJmNjA4MDliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTKTsKKyAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhf
T0VTKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6On5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMSgpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMU5hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2NvbXBy
ZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKaW5kZXggMDZmZTI3YWFiMTc4M2RiYzFi
M2IwMWUxZWY0OTgwOWJkM2NkYjIzYy4uMDQ0OWY1NzA0NDY0YzI1NmJiMzgzZDc3NGFmYmM5ZTM2
ZjE3OTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoKTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApp
bmRleCAxYTIwYzA3ZDI3MzNjMTgwZTQ1YWRmYTQzZGFmOGU4NTM2YjQ0NWJhLi41YTg0OTllOWU0
Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQw
LDEyICszOSwxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQ
UFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKIH0KIAogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgPSBkZWZh
dWx0OwpAQCAtNTUsOSArNTQsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25f
cHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuaAppbmRleCBhODY2OWYwZWI4ZDAyZjA4OTgwMGNmMmMyNjViODFjN2E1ZjNj
YTVkLi4zMzcyYzI5YWIyNGU1Yzg5MGZhMzM3ZWIwZjk0OWVlZjllZjVjMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggMDdiYTRmYTViZTEy
NTdjM2M4MTIwMzc5OGMxZjk1ZmE3NzQ2YTlhZi4uZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBh
OTE4NmEzYTUwMjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00MCwxNSArMzksMTUgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKTsKIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKTsKLSAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgIGF1
dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAg
IGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQogCiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkg
PSBkZWZhdWx0OwpAQCAtNTgsMTYgKzU3LDE1IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CiAjaWYgVVNFKEFOR0xFKQotICAg
IHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAm
JiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDMiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKICNlbHNlCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgK
aW5kZXggYTM0NzNkOGVlZmJkMjIyZjFiMjZjYjEyOWQ0ZDQ0NzJjYzQxMTUwOS4uMWRiZjQ1YTRj
MGUyNDNiM2M2MDAwMTRmNTVmNmYwZDhmNTQ4MDM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRleCA1MGQwYmQ5MDdlOGZkZWU4ZmQ0MWQ2
NWQyMWI4ZDAwYTJmYWZmNTc3Li5mNjVmNDJhZTIyYWM3MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2
NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgi
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzks
MTMgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiIik7Ci0KLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0Y19zcmdiIik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6On5XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoKSA9IGRlZmF1bHQ7CkBAIC01NSwxMCArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0JOYW1lOwogfQog
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCmluZGV4IGM3OTNiOTE2ZGIwZTY2
Y2YzZTljNjc3MGY1NjYwN2YzMThmZjc0NmIuLjU5YTY2M2YxNGQxZmI0YmM2Yzg1ODY3NWY1NWY0
OGQ3YTdlZmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQigpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApp
bmRleCA2YjA0OTU0YTRhNTI5Y2U4ODJmMmE2NGJiM2Q4NjdmYTg0YzM4Y2YwLi5hNjlkYTI5MDM4
NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDcgKzQw
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVidWdTaGFkZXJzKTsKIFdl
YkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSIpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTcsNyArNTYsNyBAQCBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRl
cnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2Jq
ZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
Lm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9iamVjdCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IGE2OTE1MzIzYTg0OTQ0ZTU5YmMxNzJkM2Y1Yjk0MzM3
MjY4MTQzNzYuLjkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1NTgwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICszOCw5IEBAIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJHTERlcHRoVGV4dHVyZSk7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xE
ZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOworICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdM
RGVwdGhUZXh0dXJlKCkgPSBkZWZhdWx0OwpAQCAtNTIsOSArNTIsOCBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJv
b2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9k
ZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMGRjMTdlYTli
YzBjZGM3NGQxZTYxYzFmMDI1M2M4ZWNlYjM2ODk1My4uMDY3MGE0NzY0MmJmYmZlY2JkZWY1NjM3
OGEyYmViNWIxOGM5NWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3
QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQog
ewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
IH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBA
IC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRHJhd0J1
ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwog
I2VuZGlmCiB9CkBAIC03NSw3ICs3NCw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1
ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICB9CiAg
ICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJy
ZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hN
RU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyBidWZzWzBdID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCQUNLID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOworICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKHZhbHVlKTsKICAg
ICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0woY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAg
ICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAh
PSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKKyAgICAgICAgICAg
IGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FICYmIGJ1ZnNbaV0gIT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhU
IG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC05
OCw4ICs5Nyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlz
IHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50
ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKLSAgICBHQ0dMaW50IG1h
eENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNv
bnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
KTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAo
bWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywxMCArMTA2LDEwIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
d2ViCiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAw
LCAwLCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBm
b3Igb3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRo
U3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3Rl
bmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRo
U3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggNTBiYWNmNTY0ZmNhZjY2NmY4
NTdiZDQ5MTU2Mjc5NDJjZmM1MjA3My4uNDlmYjFkZGRmNThhOGVkZmMwMWI0OGRhNWRmZjQ5Nzcx
Zjc2ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKQEAgLTI3OSwyMSArMjc4LDIxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJp
dHNCeUF0dGFjaG1lbnRUeXBlKEdDR0xlbnVtIGF0dGFjaG1lbnQpCiB7CiAgICAgc3dpdGNoIChh
dHRhY2htZW50KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVO
VDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNI
TUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDhfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1F
TlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ1
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDdfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQxNV9FWFQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQlVGRkVSX0JJVDsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9BVFRBQ0hN
RU5UOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7
CkBAIC0zNjMsOCArMzYyLDggQEAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9ybWF0
KEdDR0xlbnVtIGZvcm1hdCkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMTZJOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEzMkk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQTMyVUk6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhB
X0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDE2OgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDI0OgpAQCAtNjMzLDcgKzYzMiw3
IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiBy
ZWFzb24pIGNvbnN0CiAgICAgICAgIEdDR0xlbnVtIGF0dGFjaG1lbnRGb3JtYXQgPSBhdHRhY2ht
ZW50LT5nZXRGb3JtYXQoKTsKIAogICAgICAgICAvLyBBdHRhY2hpbmcgYW4gU1JHQl9FWFQgZm9y
bWF0IGF0dGFjaG1lbnQgdG8gYSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkLgotICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUKQorICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQpCiAgICAgICAg
ICAgICBhdHRhY2htZW50Rm9ybWF0ID0gMDsKIAogICAgICAgICBpZiAoIWF0dGFjaG1lbnRGb3Jt
YXQpIHsKQEAgLTgzMywxOCArODMyLDE4IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1
ZmZlcnNJZk5lY2Vzc2FyeShib29sIGZvcmNlKQogICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+
aXNXZWJHTDIoKSkKICAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdM
KCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKG1f
ZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIEdDR0xlbnVtIFdl
YkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoR0NHTGVudW0gZHJhd0J1ZmZlcikKIHsKLSAg
ICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGRyYXdCdWZmZXIgLSBFeHRlbnNpb25zR0w6
OkRSQVdfQlVGRkVSMF9FWFQpOworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJh
d0J1ZmZlciAtIEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUKTsKICAgICBBU1NF
UlQoaW5kZXggPj0gMCk7CiAgICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihtX2RyYXdC
dWZmZXJzLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBtX2RyYXdCdWZmZXJzW2luZGV4XTsKLSAg
ICBpZiAoZHJhd0J1ZmZlciA9PSBFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQpCisgICAg
aWYgKGRyYXdCdWZmZXIgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVGRkVSMF9FWFQpCiAg
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDA7CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCmluZGV4IDY0YjE1ZDVmZjg2MTNjZmQ3ODRjN2Uz
MWQwMjJkNTNiZDYxM2NlZmUuLmYxY2M1NmM5ZGZiMTg4NGI4YjhkZWFhMmVlZmU1ODI3ZjkyZmVl
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xNdWx0
aURyYXcuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQyLDggQEAg
c3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlE
cmF3OjpJbnQzMkxpc3QmIGxpc3QsIEcKIFdlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKTsKLSAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX211bHRpX2RyYXciX3MpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiB9CiAKIFdlYkdMTXVsdGlEcmF3Ojp+V2ViR0xN
dWx0aURyYXcoKSA9IGRlZmF1bHQ7CkBAIC01NCwxMCArNTMsMTAgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBXZWJHTE11bHRpRHJhd05hbWU7CiB9CiAKLWJvb2wgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRl
ZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJl
dHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKLSAgICAgICAgJiYgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6
bXVsdGlEcmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3Qs
IEdDR0x1aW50IGZpcnN0c09mZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNv
dW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5oCmluZGV4IDY1OTI5ZjUxY2FiOGJmODkyN2I3YzkwYmU5NmMx
OGU0ODMxODFkNzYuLjUwZDZkYjgxYTJkOTc0Mzg4MDBiNGU3OWRhMzEyYTIwMjIyNTBkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
Jik7CiAKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c1dFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMy
TGlzdCBmaXJzdHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNM
aXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBmYTU3YmI1NDAyM2UzZmY5OTYzNGIzYTk5OTE4ZTA5M2NhYTJkNGJiLi5jOTYwYzI2
MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAi
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKQEAgLTE1MywxMCArMTUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0RlcHRoLCAiRVhUX2ZyYWdfZGVwdGgiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSkg
ewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVyZUxPRCkgewotICAgICAgICAgICAgaWYg
KCEobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9B
UkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCisgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkp
CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJfcyk7CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0g
YWRvcHRSZWYobmV3IEVYVFNoYWRlclRleHR1cmVMT0QoKnRoaXMpKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0xNjUsMzEgKzE2NCwzMSBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIH0KICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCAiRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJh
bGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVk
KCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21w
aWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwog
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTU3RhbmRhcmREZXJpdmF0aXZlcywgbV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZW5hYmxlU3VwcG9y
dGVkRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNf
dGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAi
T0VTX3RleHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKTsKLSAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBw
b3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxv
YXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNU
ZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChPRVNWZXJ0ZXhBcnJheU9iamVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoT0VTRWxlbWVudEluZGV4VWludCwgbV9vZXNFbGVtZW50SW5kZXhVaW50LCAiT0VTX2VsZW1l
bnRfaW5kZXhfdWludCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTRkJPUmVuZGVyTWlw
bWFwLCBtX29lc0ZCT1JlbmRlck1pcG1hcCwgIk9FU19mYm9fcmVuZGVyX21pcG1hcCIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQs
ICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3Ny
Z2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlcHRoVGV4dHVyZSwgbV93ZWJnbERl
cHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiLCBXZWJHTERlcHRoVGV4dHVyZTo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCR0xfZHJhd19idWZmZXJzIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZl
cnMpIHsKICAgICAgICAgICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IGFkb3B0UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJz
KCp0aGlzKSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQpAQCAtMTk4LDEwICsx
OTcsMTAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSkgewogICAgICAgICBpZiAoIW1f
YW5nbGVJbnN0YW5jZWRBcnJheXMpIHsKLSAgICAgICAgICAgIGlmICghQU5HTEVJbnN0YW5jZWRB
cnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgICAgICAgICBpZiAoIUFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBhZG9wdFJlZihuZXcgQU5HTEVJbnN0YW5j
ZWRBcnJheXMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0y
MDksMTEgKzIwOCwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gbV9hbmdsZUlu
c3RhbmNlZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1
Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIl9zKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwg
IkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTE11
bHRpRHJhdywgbV93ZWJnbE11bHRpRHJhdywgIldFQkdMX211bHRpX2RyYXciLCBXZWJHTE11bHRp
RHJhdzo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJF
WFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC0yMjcsNjkgKzIyNiw2OSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIGlm
IChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9ibGVu
ZF9taW5tYXgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21p
bm1heCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9FWFRfc1JHQiJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X0VYVF9zUkdCIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiX3MpOwotICAg
IGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVw
dGgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZnJh
Z19kZXB0aCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mcmFnX2RlcHRoIl9zKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFk
ZXJfdGV4dHVyZV9sb2QiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9z
KSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKKyAgICBp
ZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7Ci0gICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVt
ZW50X2luZGV4X3VpbnQiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMi
X3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NS
R0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgaWYgKFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlcHRoX3RleHR1cmUiX3MpOwogICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgaWYgKEFOR0xF
SW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChBTkdMRUluc3RhbmNl
ZEFycmF5czo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpCisg
ICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3No
YWRlcnMiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8i
X3MpOwotICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkK
KyAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsK
LSAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhURmxv
YXRCbGVuZDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfZmxvYXRfYmxlbmQiX3MpOwotICAgIGlmIChXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCpt
X2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxv
YXQiX3MpOwotICAgIGlmIChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhp
cykpCisgICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUi
KTsKLSAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQkdMX211bHRpX2RyYXciX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMCw3
ICszMjksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgogICAg
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CkBAIC0zNDMsMTYgKzM0MiwxNiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyPihvYmpl
Y3QpOwotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQ6IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKICAgICAgICAgICAgIGlm
ICghbV9leHRzUkdCKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciByZW5kZXJidWZmZXIgYXR0YWNobWVu
dCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiByZW5kZXJCdWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2JqZWN0LmdldCgpKTsKICAgICAgICAgICAg
IEdDR0xlbnVtIHJlbmRlckJ1ZmZlckZvcm1hdCA9IHJlbmRlckJ1ZmZlci0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEV4
dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpOworICAgICAgICAgICAg
QVNTRVJUKHJlbmRlckJ1ZmZlckZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQg
JiYgcmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VCk7CisgICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCOF9BTFBIQThfRVhUKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKTsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTM2Nyw5ICszNjYsOSBAQCBHQ0dMaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFX
X0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6
Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtMzc5
LDcgKzM3OCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29s
b3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKQEAgLTQ1
NCw5ICs0NTMsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEVx
dWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZVTkNfQUREOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZVTkNfU1VC
VFJBQ1Q6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19SRVZFUlNFX1NVQlRSQUNU
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNSU5fRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfRVhUOgotICAgICAgICBpZiAoKG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNSU5fRVhUIHx8
IG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNQVhfRVhUKSAmJiAhbV9leHRCbGVuZE1pbk1heCkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0VYVDoKKyAgICAgICAgaWYgKChtb2RlID09IEdyYXBoaWNzQ29udGV4dEdM
OjpNSU5fRVhUIHx8IG1vZGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9FWFQpICYmICFtX2V4
dEJsZW5kTWluTWF4KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIG1vZGUiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBi
OGI1ZmI2NWFjZjQxMmU5MzIyNTI0NWE0MWE1ZDgxODE1NTVkNjgxLi5kNTI1OWM0M2JiOGQyMDg1
MjVjMmIzNTQ0OWU3MzA1OTM5YWI1Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUg
IkVYVHNSR0IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01NTUsMTIgKzU1NCwxMiBAQCBzdGF0aWMg
dWludDhfdCBnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JBKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
NTY1OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KENoYW5uZWxCaXRzOjpSR0IpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCNV9BMToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCQSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfQ09NUE9ORU5UOgpAQCAtNjQzLDggKzY0Miw4IEBAIHN0YXRpYyBib29sIHBv
c3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMCiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NURU5DSUw4LCBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0lOVF8yNF84KTsKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEgzMkZfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVO
Q0lMLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfRVhU
LCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdC
X0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhULCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhULCBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9BTFBIQV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA5MSwx
NyArMTA5MCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3Mo
KQogICAgIC8vIHR1cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJD
b21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dM
RVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAg
ICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAg
ICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRo
X3RleHR1cmUiKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dM
RVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxzZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0
ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVf
bm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdv
Iik7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRl
eHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikgfHwg
bV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsK
ICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAgbV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3JvYnVzdG5lc3MiKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0zMzAzLDkgKzMzMDIs
OSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiAiV2ViR0wgMS4wIl9zdHI7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRf
T0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgaWYgKG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcykKLSAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRl
cihFeHRlbnNpb25zR0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRH
TDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOwogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFdlYkdMRGVidWdS
ZW5kZXJlckluZm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgpAQCAtMzMzNiwyNSArMzMzNSwy
NSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxlZCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8v
IEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAobV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJh
bWV0ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAg
ICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOwogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVmZmVycyBCRUdJTgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQ6IC8v
IEVYVF9kcmF3X2J1ZmZlcnMgQkVHSU4KICAgICAgICAgaWYgKG1fd2ViZ2xEcmF3QnVmZmVycyB8
fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdldE1heENvbG9yQXR0YWNobWVudHMo
KTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kcmF3
X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgogICAgICAgICBpZiAobV93ZWJnbERyYXdC
dWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0TWF4RHJhd0J1ZmZl
cnMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9k
cmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkK
LSAgICAgICAgICAgICYmIHBuYW1lID49IEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVAot
ICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dM
OjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkpIHsKKyAgICAgICAgICAg
ICYmIHBuYW1lID49IEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUCisgICAgICAg
ICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xlbnVtPihHcmFwaGljc0NvbnRleHRHTDo6
RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7CiAgICAgICAgICAgICBH
Q0dMaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiAgICAgICAgICAgICBpZiAo
bV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX2ZyYW1lYnVm
ZmVyQmluZGluZy0+Z2V0RHJhd0J1ZmZlcihwbmFtZSk7CkBAIC0zMzcyLDcgKzMzNzEsNyBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIC8vIENPTVBMRVRJT05fU1RBVFVTX0tIUiBzaG91
bGQgYWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IGlzIGxvc3QsIHNvIGFwcGxpY2F0
aW9ucwogICAgIC8vIGRvbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBwb2xsaW5nIGxvb3Au
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkgewotICAgICAgICBpZiAocG5hbWUg
PT0gRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFIpCisgICAgICAgIGlmIChwbmFt
ZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTMzOTks
NyArMzM5OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2toclBhcmFsbGVsU2hhZGVy
Q29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQcm9ncmFtUGFy
YW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5hYmxlZCIpOwpAQCAt
MzUwMyw3ICszNTAyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKICAgICAvLyBDT01QTEVU
SU9OX1NUQVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBp
cyBsb3N0LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5m
aW5pdGUgcG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpIHsK
LSAgICAgICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hS
KQorICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RB
VFVTX0tIUikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0zNTE3LDcgKzM1MTYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQt
PmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQYXJhbGxlbFNoYWRlckNv
bXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRl
ciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVuYWJsZWQiKTsKQEAgLTM1ODYs
NyArMzU4NSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYg
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQogICAgICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMgbm90IGVuYWJsZWQiKTsKQEAgLTM3NDksNyArMzc0OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25z
dCBXZWJHCiAgICAgICAgIEdDR0xmbG9hdCB2YWx1ZVsxNl0gPSB7MH07CiAjaWYgIVVTRShBTkdM
RSkKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQotICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVj
dCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOworICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkp
LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2Nh
dGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5k
aWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0KCks
IGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwpAQCAtMzc2MSw3ICszNzYw
LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJH
TFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgR0NHTGludCB2YWx1ZVs0XSA9
IHswfTsKICNpZiAhVVNFKEFOR0xFKQogICAgICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBw
b3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9y
bWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2
YWx1ZSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+
KG1fY29udGV4dC5nZXQoKSktPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dy
YW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAg
ICAgIGVsc2UKICNlbmRpZgogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJv
Z3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bhbih2YWx1ZSwgbGVuZ3RoKSk7CkBA
IC0zNzgwLDcgKzM3NzksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICBHQ0dM
aW50IHZhbHVlWzRdID0gezB9OwogI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9i
dXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmdldG5Vbmlmb3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXpl
b2YoR0NHTGludCksIHZhbHVlKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlm
b3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0NHTGludCks
IHZhbHVlKTsKICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVl
LCBsZW5ndGgpKTsKQEAgLTM5NTksNyArMzk1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CiAgICAgICAgIGlzVmFsaWQg
PSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRf
U0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcywg
b3IgY29yZSBpbiBXZWJHTCAyLjAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVO
VF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
LCBvciBjb3JlIGluIFdlYkdMIDIuMAogICAgICAgICBpZiAobV9vZXNTdGFuZGFyZERlcml2YXRp
dmVzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CkBAIC00NTY5LDcgKzQ1NjgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aAogICAg
IG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSkpOwogI2Vsc2UKICAgICBp
ZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnJlYWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgZGF0YSk7CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0RXh0ZW5zaW9ucygpLnJl
YWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5
dGVMZW5ndGgoKSwgZGF0YSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4
ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEs
IHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsKICNlbmRpZgpAQCAtNDYxMCw4ICs0NjA5LDggQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0I1X0Ex
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjU2NToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0lOREVYODoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQjhf
QUxQSEE4X0VYVDoKLSAgICAgICAgaWYgKGludGVybmFsZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6
U1JHQjhfQUxQSEE4X0VYVCAmJiAhbV9leHRzUkdCKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQjhfQUxQSEE4X0VYVDoKKyAgICAgICAgaWYgKGludGVybmFsZm9ybWF0ID09IEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThfRVhUICYmICFtX2V4dHNSR0IpIHsKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
IGZ1bmN0aW9uTmFtZSwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDYyMiw3ICs0NjIxLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhf
U1RFTkNJTDoKICAgICAgICAgaWYgKGlzRGVwdGhTdGVuY2lsU3VwcG9ydGVkKCkpCi0gICAgICAg
ICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBFeHRlbnNpb25zR0w6
OkRFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgbV9jb250ZXh0
LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIMjRf
U1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PnNldFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+
c2V0SXNWYWxpZChpc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCgpKTsKICAgICAgICAgbV9yZW5kZXJi
dWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CkBAIC01NjE2
LDggKzU2MTUsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4
RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpTUkdCX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIGlmICghbV9leHRzUkdCKSB7CiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJzUkdCIHRleHR1cmUgZm9ybWF0cyBub3QgZW5hYmxlZCIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc3NSw3ICs1Nzc0LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIq
IGZ1bmN0aW8KICAgICBJTlRFUk5BTF9GT1JNQVRfQ0FTRShERVBUSF9TVEVOQ0lMICAgICAsIERF
UFRIX1NURU5DSUwgICwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yNF84ICAgICAg
ICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBJTlRFUk5B
TF9GT1JNQVRfQ0FTRShERVBUSDI0X1NURU5DSUw4ICAsIERFUFRIX1NURU5DSUwgICwgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yNF84ICAgICAgICAgICAgICwgMCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAg
ICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBJTlRFUk5BTF9GT1JNQVRfQ0FTRShERVBUSDMy
Rl9TVEVOQ0lMOCAsIERFUFRIX1NURU5DSUwgICwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUXzMy
X1VOU0lHTkVEX0lOVF8yNF84X1JFViwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAg
KTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9FWFQ6CiAgICAgICAgIGlmIChmb3JtYXQgIT0gaW50ZXJuYWxGb3JtYXQp
IHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiZm9ybWF0IGFuZCBpbnRlcm5hbGZvcm1hdCBt
dXN0IG1hdGNoIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01Nzg1LDcgKzU3ODQs
NyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1h
dEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FM
UEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VYVDoKICAg
ICAgICAgaWYgKGZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkgewogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlv
bk5hbWUsICJmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IG11c3QgbWF0Y2giKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTU5NjgsNyArNTk2Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv
cGljCiAgICAgICAgIGlmICghbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpIHsKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJ0ZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIsIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyBub3QgZW5hYmxlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjM4NSw3
ICs2Mzg0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TG9zdEMKICAgICAgICAgYXV0byogY2FudmFz
ID0gaHRtbENhbnZhcygpOwogICAgICAgICBpZiAoY2FudmFzKSB7CiAgICAgICAgICAgICBpZiAo
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IGNhbnZhcy0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2ViR0xDb250ZXh0KG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSk7Cisg
ICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRl
eHQobV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02ODk4LDE4ICs2ODk3LDE4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAg
ICAgICAgIEJsb2NrUGFyYW1ldGVycyB7IDEyLCAxMCwga0FTVENCbG9ja1NpemUgfSwKICAgICAg
ICAgQmxvY2tQYXJhbWV0ZXJzIHsgMTIsIDEyLCBrQVNUQ0Jsb2NrU2l6ZSB9CiAgICAgfTsKLSAg
ICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0UkdCQSA9IEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfNHg0X0tIUjsKLSAgICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0
U1JHQjggPSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tI
UjsKKyAgICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0UkdCQSA9IEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOworICAgIGNvbnN0IEdDR0xlbnVtIEFT
VENFbnVtU3RhcnRTUkdCOCA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzR4NF9LSFI7CiAKICAgICBjb25zdCBpbnQga0VBQ0FuZEVUQzJCbG9ja1NpemUg
PSA0OwogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9BVENfUkdCX0FNRDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RVRDMV9SR0I4X09FUzog
eworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENf
RFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FM
UEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9BVENfUkdCX0FNRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhfT0VT
OiB7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKICAgICAgICAgY29uc3QgaW50
IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CkBA
IC02OTE4LDEyICs2OTE3LDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgIGJ5
dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duICoga0Jsb2NrU2l6
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQ6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQz
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQ1X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FU
Q19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQ6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CiAgICAgICAgICAgICBjb25zdCBp
bnQga0Jsb2NrV2lkdGggPSA0OwpAQCAtNjkzMyw4ICs2OTMyLDggQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFy
KiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBu
dW1CbG9ja3NEb3duICoga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQ
UFYxX0lNRzoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSA4
OwogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gODsKQEAgLTY5NDIsOCArNjk0
MSw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2Vk
VGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBieXRlc1JlcXVpcmVk
ID0gKHN0ZDo6bWF4KHdpZHRoLCBrQmxvY2tXaWR0aCkgKiBzdGQ6Om1heChoZWlnaHQsIGtCbG9j
a0hlaWdodCkgKiA0ICsgNykgLyBrQmxvY2tTaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJU
Q18yQlBQVjFfSU1HOgogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6
ZSA9IDg7CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSAxNjsKQEAgLTY5NTEs
NDQgKzY5NTAsNDQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNv
bXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVz
UmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgsIGtCbG9ja1dpZHRoKSAqIHN0ZDo6bWF4KGhlaWdo
dCwga0Jsb2NrSGVpZ2h0KSAqIDIgKyA3KSAvIGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4
NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEw
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18x
MngxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfMTJ4MTJfS0hSOgogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2FsY3VsYXRlQnl0ZXNGb3JB
U1RDKHdpZHRoLCBoZWlnaHQsIEFTVENQYXJhbWV0ZXJzW2Zvcm1hdCAtIEFTVENFbnVtU3RhcnRS
R0JBXSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUjoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4
X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTJ4MTJfS0hSOgogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2FsY3VsYXRl
Qnl0ZXNGb3JBU1RDKHdpZHRoLCBoZWlnaHQsIEFTVENQYXJhbWV0ZXJzW2Zvcm1hdCAtIEFTVENF
bnVtU3RhcnRTUkdCOF0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJ
R05FRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9B
TFBIQTFfRVRDMjogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUjEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFf
RUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVO
Q0hUSFJPVUdIX0FMUEhBMV9FVEMyOiB7CiAgICAgICAgIENoZWNrZWRVaW50MzIgY2hlY2tlZEJ5
dGVzUmVxdWlyZWQgPSAod2lkdGggKyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0Fu
ZEVUQzJCbG9ja1NpemU7CiAgICAgICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IChoZWlnaHQg
KyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0FuZEVUQzJCbG9ja1NpemU7CiAgICAg
ICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IDg7CkBAIC02OTk5LDEwICs2OTk4LDEwIEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0Rh
dGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0
ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
MTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQThfRVRD
Ml9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKICAgICAgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQnl0ZXNSZXF1aXJl
ZCA9ICh3aWR0aCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2Nr
U2l6ZTsKICAgICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gKGhlaWdodCArIGtFQUNBbmRF
VEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAgICAgICAgY2hlY2tl
ZEJ5dGVzUmVxdWlyZWQgKj0gMTY7CkBAIC03MDEzLDggKzcwMTIsOCBAQCBib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNo
YXIqIGZ1bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2hlY2tlZEJ5dGVzUmVxdWlyZWQ7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SRURfUkdUQzFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05F
RF9SRURfUkdUQzFfRVhUOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SRURfUkdUQzFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U0lHTkVEX1JFRF9SR1RDMV9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSA4
OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTcwMjMsOCArNzAyMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciog
ZnVuY3RpCiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9j
a3NEb3duICoga0Jsb2NrU2l6ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6IHsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OwogICAgICAgICBj
b25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0
ID0gNDsKQEAgLTcwNDksMTQgKzcwNDgsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5z
aW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQp
CiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
X1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9B
TFBIQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9T
M1RDX0RYVDVfRVhUOiB7CiAgICAgICAgIGNvbnN0IEdDR0xzaXplaSBrQmxvY2tXaWR0aCA9IDQ7
CiAgICAgICAgIGNvbnN0IEdDR0xzaXplaSBrQmxvY2tIZWlnaHQgPSA0OwogICAgICAgICBjb25z
dCBHQ0dMaW50IG1heFRleHR1cmVTaXplID0gdGFyZ2V0ID8gbV9tYXhUZXh0dXJlU2l6ZSA6IG1f
bWF4Q3ViZU1hcFRleHR1cmVTaXplOwpAQCAtNzA2OSw1NSArNzA2OCw1NSBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoY29u
c3QgY2hhciogZnVuYwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9J
TUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQ
UFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfUFZSVENfMkJQUFYxX0lNRzoKICAgICAgICAgLy8gSGVpZ2h0IGFuZCB3aWR0aCBtdXN0IGJl
IHBvd2VycyBvZiAyLgogICAgICAgICBpZiAoKHdpZHRoICYgKHdpZHRoIC0gMSkpIHx8IChoZWln
aHQgJiAoaGVpZ2h0IC0gMSkpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIndpZHRoIG9y
IGhlaWdodCBpbnZhbGlkIGZvciBsZXZlbCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ182eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ182eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ184eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q184eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184
eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1
X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
NXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgx
MF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEyeDEyX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RVRDMV9SR0I4X09F
UzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9B
TFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzR4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ181eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4
NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ181eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
Xzh4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkVUQzFfUkdCOF9PRVM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRzExX0VB
QzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VB
QzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
RVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgogICAgICAgICAvLyBObyBoZWlnaHQgYW5kIHdpZHRo
IHJlc3RyaWN0aW9ucyBvbiBBU1RDLCBFVEMxIG9yIEVUQzIuCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGRlZmF1bHQ6CkBAIC03MTMzLDE0ICs3MTMyLDE0IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBj
aGFyKiBmCiAgICAgfQogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0
aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwogICAgICAgICBpZiAo
KHhvZmZzZXQgJSBrQmxvY2tXaWR0aCkgfHwgKHlvZmZzZXQgJSBrQmxvY2tIZWlnaHQpKSB7CkBA
IC03MTU0LDEwICs3MTUzLDEwIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmCiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoZnVuY3Rpb25O
YW1lLCB0YXJnZXQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpOwogICAgIH0KLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRzoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOiB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJU
Q180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9QVlJUQ18yQlBQVjFfSU1HOiB7CiAgICAgICAgIGlmICh4b2Zmc2V0IHx8IHlvZmZzZXQpIHsK
ICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBhbmQgeW9mZnNldCBtdXN0IGJlIHpl
cm8iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxNjksMTkgKzcxNjgsMTkgQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJE
aW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsaWRh
dGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWwsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCk7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMx
X1JHQjhfT0VTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVM6CiAg
ICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgZm9yIEVUQzFfUkdCOF9PRVMgdGV4dHVyZXMuCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFf
RUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4
X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NJR05FRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CiAgICAgICAgIGlmICh0
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfM0QpIHsKICAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVu
Y3Rpb25OYW1lLCAibm90IHN1cHBvcnRlZCBvbiBURVhUVVJFXzNEIHRleHR1cmVzIik7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03Njk4LDcgKzc2OTcsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAgIGlmICghbV9yZXN0
b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGNvbnRleHRMb3N0UmVhc29u
ID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
OworICAgIGludCBjb250ZXh0TG9zdFJlYXNvbiA9IG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpOwogCiAgICAgc3dpdGNoIChjb250ZXh0TG9zdFJlYXNvbikgewogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOgpAQCAtNzcwNywxNSArNzcwNiwxNSBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAg
ICAgICAvLyBXRUJHTF9sb3NlX2NvbnRleHQgZXh0ZW5zaW9uIG1pZ2h0IGhhdmUgYmVlbiB1c2Vk
IHRvIGZvcmNlCiAgICAgICAgIC8vIGEgbG9zdCBjb250ZXh0LgogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkdVSUxUWV9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8g
VGhlIHJlbmRlcmluZyBjb250ZXh0IGlzIG5vdCByZXN0b3JlZCBpZiB0aGlzIGNvbnRleHQgd2Fz
CiAgICAgICAgIC8vIGd1aWx0eSBvZiBjYXVzaW5nIHRoZSBncmFwaGljcyByZXNldC4KICAgICAg
ICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV0FSTklORzogV2ViR0wg
Y29udGVudCBvbiB0aGUgcGFnZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVzZXQ7IG5v
dCByZXN0b3JpbmcgdGhlIGNvbnRleHQiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8gQWx3YXlz
IGFsbG93IHRoZSBjb250ZXh0IHRvIGJlIHJlc3RvcmVkLgogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6VU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBX
YXJuLiBJZGVhbGx5LCBwcm9tcHQgdGhlIHVzZXIgdGVsbGluZyB0aGVtIHRoYXQgV2ViR0wKICAg
ICAgICAgLy8gY29udGVudCBvbiB0aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNlZCB0aGUgZ3JhcGhp
Y3MgY2FyZCB0bwogICAgICAgICAvLyByZXNldCBhbmQgYXNrIHRoZW0gd2hldGhlciB0aGV5IHdh
bnQgdG8gY29udGludWUgcnVubmluZwpAQCAtNzg4Miw5ICs3ODgxLDkgQEAgR0NHTGludCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBw
b3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3
QnVmZmVycykKLSAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgbV9tYXhEcmF3
QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAg
ICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9u
c0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFj
aG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09M
T1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVxdWlyZXMg
TUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0dXJuIHN0
ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9CkBAIC03
ODk0LDcgKzc4OTMsNyBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1h
eENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0K
IApAQCAtODAzOSwxMSArODAzOCwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdgogYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oQVNDSUlM
aXRlcmFsIGV4dGVuc2lvbk5hbWVMaXRlcmFsKQogewogICAgIEFTU0VSVChtX2NvbnRleHQpOwot
ICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKICAgICBT
dHJpbmcgZXh0ZW5zaW9uTmFtZSB7IGV4dGVuc2lvbk5hbWVMaXRlcmFsIH07Ci0gICAgaWYgKCFl
eHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbk5hbWUpKQorICAgIGlmICghbV9jb250ZXh0LT5z
dXBwb3J0c0V4dGVuc2lvbihleHRlbnNpb25OYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb25OYW1lKTsKKyAgICBtX2NvbnRl
eHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uTmFtZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKaW5kZXggNzJiOTY4OGU2Zjk1ZWZjMmMwMDk5ZWViZDVk
ZWNkNDMzZWQ2OWFjZi4uZTEyMTE2ZDgwZTYwMzljN2NkODIzYjM5YzkxODVlYzI3MDNjYThkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3YTdhMWI1ZjI0
YzU4YzA4OWMyMDlmMmVmMzAzNTMzMTM0NDYxNzc4Li43OTQzNWEzYWMyNDc1NmY3ZjlkOTRhNTky
NmMyMDE2ZTkxMTY3MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMzQxLDcgKzM0MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAg
dmlydHVhbCBib29sIGFsbG93V2ViR0woYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJu
IGVuYWJsZWRQZXJTZXR0aW5nczsgfQogICAgIC8vIEluZm9ybXMgdGhlIGVtYmVkZGVyIHRoYXQg
YSBXZWJHTCBjYW52YXMgaW5zaWRlIHRoaXMgZnJhbWUgcmVjZWl2ZWQgYSBsb3N0IGNvbnRleHQK
LSAgICAvLyBub3RpZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4gR0xfQVJCX3JvYnVzdG5lc3MgZ3Vp
bHQvaW5ub2NlbmNlIGNvZGUgKHNlZSBFeHRlbnNpb25zR0wuaCkuCisgICAgLy8gbm90aWZpY2F0
aW9uIHdpdGggdGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9jZW5jZSBjb2Rl
IChzZWUgR3JhcGhpY3NDb250ZXh0R0wuaCkuCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VXZWJH
TENvbnRleHQoaW50KSB7IH0KICAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGlj
eUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdM
QWxsb3dDcmVhdGlvbjsgfQogICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJH
TFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQb2xpY3k6
OldlYkdMQWxsb3dDcmVhdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYwNzYz
MDhjNThhMGJkNDU5MzliMGE3YmM1ZTYyNGQ1NjRlYjUxMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKLQotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoaXMg
aXMgYSBiYXNlIGNsYXNzIGNvbnRhaW5pbmcgb25seSBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zLgot
Ly8gSW1wbGVtZW50YXRpb25zIG11c3QgcHJvdmlkZSBhIHN1YmNsYXNzLgotLy8KLS8vIFRoZSBz
dXBwb3J0ZWQgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBiZWxvdyBhbmQgaW4gc3ViY2xhc3NlcywK
LS8vIHBvc3NpYmx5IHBsYXRmb3JtLXNwZWNpZmljIG9uZXMuCi0vLwotLy8gQ2FsbGluZyBhbnkg
ZXh0ZW5zaW9uIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgY29udGV4dAot
Ly8gbXVzdCBiZSBhIG5vLW9wOyBpbiBwYXJ0aWN1bGFyLCBpdCBtYXkgbm90IGhhdmUgc2lkZSBl
ZmZlY3RzLiBJbgotLy8gdGhpcyBzaXR1YXRpb24sIGlmIHRoZSBmdW5jdGlvbiBoYXMgYSByZXR1
cm4gdmFsdWUsIDAgaXMgcmV0dXJuZWQuCi1jbGFzcyBFeHRlbnNpb25zR0wgewotcHVibGljOgot
ICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTCgpID0gZGVmYXVsdDsKLQotICAgIC8vIFN1cHBvcnRl
ZCBleHRlbnNpb25zOgotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ci0g
ICAgLy8gICBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYQotICAgIC8vICAgR0xfQVJCX3JvYnVzdG5l
c3MKLSAgICAvLyAgIEdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28gLyBHTF9PRVNfdGV4
dHVyZV9ucG90Ci0gICAgLy8gICBHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwgLyBHTF9PRVNf
cGFja2VkX2RlcHRoX3N0ZW5jaWwKLSAgICAvLyAgIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQg
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIC8vICAgR0xfSU1HX211bHRp
c2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQotICAgIC8vICAgR0xfT0VTX3RleHR1cmVfZmxvYXQK
LSAgICAvLyAgIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhcgotICAgIC8vICAgR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdAotICAgIC8vICAgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIKLSAgICAvLyAgIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwotICAgIC8vICAgR0xfT0VT
X3JnYjhfcmdiYTgKLSAgICAvLyAgIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Ci0gICAgLy8g
ICBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Ci0gICAgLy8gICBHTF9BTkdMRV90cmFuc2xhdGVk
X3NoYWRlcl9zb3VyY2UKLSAgICAvLyAgIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSAob25seSB0
aGUgc3Vic2V0IHJlcXVpcmVkIHRvCi0gICAgLy8gICAgIGltcGxlbWVudCBJT1N1cmZhY2UgYmlu
ZGluZzsgaXQncyByZWNvbW1lbmRlZCB0byBzdXBwb3J0Ci0gICAgLy8gICAgIHRoaXMgb25seSBv
biBNYWMgT1MgWCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIGNvZGUgZGVwZW5kZW50Ci0gICAgLy8g
ICAgIG9uIHRoaXMgZXh0ZW5zaW9uKQotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MQotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YwotICAgIC8v
ICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCi0gICAgLy8gICBHTF9PRVNf
Y29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQotICAgIC8vICAgR0xfSU1HX3RleHR1cmVfY29t
cHJlc3Npb25fcHZydGMKLSAgICAvLyAgIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNf
aGRyCi0gICAgLy8gICBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkcgotICAgIC8v
ICAgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0gICAgLy8gICBHTF9FWFRfZGVidWdf
bWFya2VyCi0gICAgLy8gICBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwotICAgIC8vICAgR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIC8vICAgR0xfQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkKLQotICAgIC8vIFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNp
b247IGZvciBleGFtcGxlLAotICAgIC8vICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgi
LgotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAv
LyBDZXJ0YWluIE9wZW5HTCBhbmQgV2ViR0wgaW1wbGVtZW50YXRpb25zIG1heSBzdXBwb3J0IGVu
YWJsaW5nCi0gICAgLy8gZXh0ZW5zaW9ucyBsYXppbHkuIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJl
IGNhbGxlZCB3aXRoCi0gICAgLy8gZXh0ZW5zaW9uIG5hbWVzIGZvciB3aGljaCBzdXBwb3J0cyBy
ZXR1cm5zIHRydWUuCi0gICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JikgPSAwOwotCi0gICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjogZm9yIGV4YW1w
bGUsICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgotICAgIC8vIENoZWNrcyB0byBz
ZWUgd2hldGhlciB0aGUgZ2l2ZW4gZXh0ZW5zaW9uIGlzIGFjdHVhbGx5IGVuYWJsZWQgKHNlZSBl
bnN1cmVFbmFibGVkKS4KLSAgICAvLyBIYXMgbm8gb3RoZXIgc2lkZS1lZmZlY3RzLgotICAgIHZp
cnR1YWwgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgPSAwOwotCi0gICAgLy8gRVhUX3NS
R0IgZm9ybWF0cwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JHQl9FWFQgPSAweDhD
NDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0FMUEhBX0VYVCA9IDB4OEM0
MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFNSR0I4X0FMUEhBOF9FWFQgPSAweDhD
NDM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X0NPTE9SX0VOQ09ESU5HX0VYVCA9IDB4ODIxMDsKLQotICAgIC8vIEVYVF9ibGVuZF9taW5tYXgg
ZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1JTl9FWFQgPSAweDgwMDc7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRVhUID0gMHg4MDA4OwotCi0gICAgLy8g
R0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBCR1JBX0VYVCA9IDB4ODBFMTsKLQotICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNz
IGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBHVUlMVFlfQ09OVEVYVF9SRVNF
VF9BUkIgPSAweDgyNTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBJTk5PQ0VOVF9D
T05URVhUX1JFU0VUX0FSQiA9IDB4ODI1NDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IFVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT05URVhUX1JPQlVTVF9BQ0NFU1MgPSAweDkwRjM7Ci0KLSAgICAvLyBHTF9F
WFQvT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBERVBUSDI0X1NURU5DSUw4ID0gMHg4OEYwOwotCi0gICAgLy8gR0xfQU5HTEVfZnJh
bWVidWZmZXJfYmxpdCBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVBRF9G
UkFNRUJVRkZFUiA9IDB4OENBODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
RlJBTUVCVUZGRVIgPSAweDhDQTk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0ZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQUE7Ci0KLSAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVMgPSAweDhDQUI7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFID0gMHg4RDU2Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVMgPSAweDhENTc7Ci0KLSAg
ICAvLyBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCi0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJfU0FNUExFU19JTUcgPSAweDkxMzM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FN
UExFX0lNRyA9IDB4OTEzNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9TQU1Q
TEVTX0lNRyA9IDB4OTEzNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVf
U0FNUExFU19JTUcgPSAweDkxMzY7Ci0KLSAgICAvLyBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQUdNRU5UX1NIQURFUl9E
RVJJVkFUSVZFX0hJTlRfT0VTID0gMHg4QjhCOwotCi0gICAgLy8gR0xfT0VTX3JnYjhfcmdiYTgg
bmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJHQjhfT0VTID0gMHg4MDUxOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCQThfT0VTID0gMHg4MDU4OwotCi0gICAg
Ly8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIFZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNTsKLQotICAgIC8vIEdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9IDB4OTNBMDsKLQot
ICAgIC8vIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCID0gIDB4ODRGNTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCID0gMHg4NEY2OwotCi0g
ICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQotICAgIC8vIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQgPSAweDgzRjA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUID0gMHg4
M0YyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9FWFQgPSAweDgzRjM7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjX3NyZ2IKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9T
M1RDX0RYVDFfRVhUID0gMHg4QzRDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgPSAweDhDNEQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCA9IDB4
OEM0RTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDVfRVhUID0gMHg4QzRGOwotCi0gICAgLy8gR0xfT0VTX2NvbXByZXNzZWRfRVRD
MV9SR0I4X3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEVUQzFfUkdCOF9P
RVMgPSAweDhENjQ7Ci0KLSAgICAvLyBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjCi0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1IxMV9FQUMgPSAweDkyNzA7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDID0g
MHg5MjcxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRzExX0VB
QyA9IDB4OTI3MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lH
TkVEX1JHMTFfRUFDID0gMHg5MjczOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0I4X0VUQzIgPSAweDkyNzQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0VUQzIgPSAweDkyNzU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyID0gMHg5Mjc2
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIgPSAweDkyNzc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDID0gMHg5Mjc4OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMgPSAweDkyNzk7Ci0K
LSAgICAvLyBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMDsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBW
MV9JTUcgPSAweDhDMDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzOwotCi0gICAg
Ly8gR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQl9BTUQgPSAweDhDOTI7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCA9IDB4
OEM5MzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQkFf
SU5URVJQT0xBVEVEX0FMUEhBX0FNRCA9IDB4ODdFRTsKLQotICAgIC8vIEdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfaGRyCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSID0gMHg5M0IwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiA9IDB4OTNCMTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIgPSAweDkz
QjI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182
eDVfS0hSID0gMHg5M0IzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9SR0JBX0FTVENfNng2X0tIUiA9IDB4OTNCNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIgPSAweDkzQjU7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSID0gMHg5M0I2Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tI
UiA9IDB4OTNCNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDVfS0hSID0gMHg5M0I4OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIgPSAweDkzQjk7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiA9IDB4OTNCQTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tI
UiA9IDB4OTNCQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9BU1RDXzEyeDEwX0tIUiA9IDB4OTNCQzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiA9IDB4OTNCRDsKLQotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSID0g
MHg5M0QwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ181eDRfS0hSID0gMHg5M0QxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSID0gMHg5M0QyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVf
S0hSID0gMHg5M0QzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ182eDZfS0hSID0gMHg5M0Q0OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSID0gMHg5M0Q1Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDZfS0hSID0gMHg5M0Q2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSID0gMHg5M0Q3OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiA9IDB4
OTNEODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4Nl9LSFIgPSAweDkzRDk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSID0gMHg5M0RBOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgx
MF9LSFIgPSAweDkzREI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNEQzsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSID0gMHg5
M0REOwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUID0gMHg4REJCOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMx
X0VYVCA9IDB4OERCQzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkU7Ci0KLSAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4NEZFOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0g
MHg4NEZGOwotCi0gICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZl
cnMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9EUkFXX0JVRkZFUlNfRVhUID0g
MHg4ODI0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIwX0VYVCA9
IDB4ODgyNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMV9FWFQg
PSAweDg4MjY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjJfRVhU
ID0gMHg4ODI3OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIzX0VY
VCA9IDB4ODgyODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNF9F
WFQgPSAweDg4Mjk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjVf
RVhUID0gMHg4ODJBOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI2
X0VYVCA9IDB4ODgyQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVS
N19FWFQgPSAweDg4MkM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZF
UjhfRVhUID0gMHg4ODJEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZG
RVI5X0VYVCA9IDB4ODgyRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVG
RkVSMTBfRVhUID0gMHg4ODJGOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVIxMV9FWFQgPSAweDg4MzA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjEyX0VYVCA9IDB4ODgzMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSMTNfRVhUID0gMHg4ODMyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVIxNF9FWFQgPSAweDg4MzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjE1X0VYVCA9IDB4ODgzNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgPSAweDhDREY7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMF9FWFQgPSAweDhDRTA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMV9FWFQgPSAweDhDRTE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMl9FWFQgPSAweDhDRTI7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UM19FWFQgPSAw
eDhDRTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UNF9F
WFQgPSAweDhDRTQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hN
RU5UNV9FWFQgPSAweDhDRTU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9B
VFRBQ0hNRU5UNl9FWFQgPSAweDhDRTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UN19FWFQgPSAweDhDRTc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UOF9FWFQgPSAweDhDRTg7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UOV9FWFQgPSAweDhDRTk7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTBfRVhUID0gMHg4Q0VBOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDExX0VYVCA9IDB4OENFQjsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMl9FWFQgPSAw
eDhDRUM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTNf
RVhUID0gMHg4Q0VEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNI
TUVOVDE0X0VYVCA9IDB4OENFRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQxNV9FWFQgPSAweDhDRUY7Ci0KLSAgICAvLyBHTF9LSFJfcGFyYWxsZWxfc2hh
ZGVyX2NvbXBpbGUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBMRVRJT05fU1RB
VFVTX0tIUiA9IDB4OTFCMTsKLQotICAgIC8vIEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xF
ID0gMHg5M0E4OwotCi0gICAgLy8gV2ViR0wgZnVuY3Rpb25zLgotCi0gICAgLy8gR0xfQVJCX3Jv
YnVzdG5lc3MKLSAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJv
bSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKLSAgICAvLyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb2xs
b3dpbmcgd2F5OgotICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IG5vdCByZXNldCB0aGUg
ZXJyb3Igc3RhdGUgZHVyaW5nIHRoaXMgY2FsbC4KLSAgICAvLyBJZiBnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3IsIGl0IHNob3VsZCBjb250aW51ZQotICAgIC8vIHJl
dHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVzdG9yaW5nIHRoZSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBpcyBoYW5kbGVkCi0gICAgLy8gZXh0ZXJuYWxseS4KLSAgICB2aXJ0dWFsIEdDR0xpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKLQotICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQotICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7Ci0KLSAgICAvLyBHTF9BUkJfZHJh
d19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwotCi0gICAgLy8gT3Ro
ZXIgZnVuY3Rpb25zLgotI2lmICFVU0UoQU5HTEUpCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1
c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhl
bHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0KLSNlbmRpZgotCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAKaW5kZXggZDYwYzM3YTlmZmU1YzJjYmUwMzY2ZTI3NmQ4NDg4NjY1YmQ2
ZTIwYi4uYTE0MDkwYTdmOThkNGFmY2FlMzU4MGRkYzhlNzllNjE5MzQzZDk1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAi
RXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0Q29udmVydGVyLmgiCiAjaW5jbHVkZSAi
SG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC0zNzYsMTMgKzM3NSwxMyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCX0lOVEVHRVI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlNSR0JfRVhUOgogICAgICAgICAqY29tcG9uZW50c1BlclBpeGVsID0gMzsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQToKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpSR0JBX0lOVEVHRVI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkJH
UkFfRVhUOiAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QkdS
QV9FWFQ6IC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICAqY29tcG9uZW50c1BlclBpeGVs
ID0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGI1ZjVlY2Qz
ODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMuLjFjY2VlYjUzNzM1MzhkNTM1MjNmNDlk
Y2UyYTA2ODJlNDdkZmM4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjc0LDYgKzY3NCwxNDUgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCID0g
MHg4NEY1OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9CSU5ESU5HX1JF
Q1RBTkdMRV9BUkIgPSAweDg0RjY7CiAKKyAgICAvLyBFWFRfc1JHQiBmb3JtYXRzCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0VYVCA9IDB4OEM0MDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIFNSR0JfQUxQSEFfRVhUID0gMHg4QzQyOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gU1JHQjhfQUxQSEE4X0VYVCA9IDB4OEM0MzsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhU
ID0gMHg4MjEwOworCisgICAgLy8gRVhUX2JsZW5kX21pbm1heCBlbnVtcworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gTUlOX0VYVCA9IDB4ODAwNzsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIE1BWF9FWFQgPSAweDgwMDg7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggZW51bXMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEJHUkFfRVhU
ID0gMHg4MEUxOworCisgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MgZW51bXMKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1MzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIElOTk9DRU5UX0NPTlRFWFRfUkVTRVRfQVJCID0g
MHg4MjU0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVU5LTk9XTl9DT05URVhUX1JF
U0VUX0FSQiA9IDB4ODI1NTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTlRFWFRf
Uk9CVVNUX0FDQ0VTUyA9IDB4OTBGMzsKKworICAgIC8vIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyBuYW1lcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBR01FTlRfU0hBREVS
X0RFUklWQVRJVkVfSElOVF9PRVMgPSAweDhCOEI7CisKKyAgICAvLyBHTF9PRVNfcmdiOF9yZ2Jh
OCBuYW1lcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCOF9PRVMgPSAweDgwNTE7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSR0JBOF9PRVMgPSAweDgwNTg7CisKKyAg
ICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgPSAweDkz
QTA7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCisgICAgLy8gR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUID0gMHg4M0YxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19F
WFQgPSAweDgzRjI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNGMzsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGNfc3JnYgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhDNEM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUID0gMHg4QzRFOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCX0FMUEhBX1MzVENfRFhUNV9FWFQgPSAweDhDNEY7CisKKyAgICAvLyBHTF9PRVNfY29tcHJl
c3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRVRD
MV9SR0I4X09FUyA9IDB4OEQ2NDsKKworICAgIC8vIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9u
X3B2cnRjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9QVlJU
Q180QlBQVjFfSU1HID0gMHg4QzAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAyOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBW
MV9JTUcgPSAweDhDMDM7CisKKyAgICAvLyBHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCX0FNRCA9IDB4
OEM5MjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EID0gMHg4QzkzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EID0gMHg4N0VFOwor
CisgICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIgPSAweDkzQjA7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRf
S0hSID0gMHg5M0IxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUiA9IDB4OTNCMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIgPSAweDkzQjM7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSID0gMHg5M0I0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUiA9
IDB4OTNCNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9B
U1RDXzh4Nl9LSFIgPSAweDkzQjY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSID0gMHg5M0I3OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgPSAweDkzQjg7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiA9IDB4
OTNCOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDhfS0hSID0gMHg5M0JBOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSID0gMHg5M0JCOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSID0gMHg5M0JDOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSID0g
MHg5M0JEOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzR4NF9LSFIgPSAweDkzRDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIgPSAweDkzRDE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4
NV9LSFIgPSAweDkzRDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgPSAweDkzRDM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIgPSAweDkzRDQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4NV9LSFIgPSAweDkzRDU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIgPSAweDkzRDY7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIgPSAw
eDkzRDc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDVfS0hSID0gMHg5M0Q4OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiA9IDB4OTNEOTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
OF9LSFIgPSAweDkzREE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiA9IDB4OTNEQjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSID0gMHg5
M0RDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQ7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9yZ3RjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JF
RF9SR1RDMV9FWFQgPSAweDhEQkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUID0gMHg4REJDOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJEOworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVCA9IDB4OERCRTsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9NQVhfQU5JU09UUk9Q
WV9FWFQgPSAweDg0RkU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfVEVYVFVS
RV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7CisKKyAgICAvLyBHTF9BUkJfZHJhd19idWZm
ZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
TUFYX0RSQVdfQlVGRkVSU19FWFQgPSAweDg4MjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBEUkFXX0JVRkZFUjBfRVhUID0gMHg4ODI1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIxX0VYVCA9IDB4ODgyNjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIERSQVdfQlVGRkVSMl9FWFQgPSAweDg4Mjc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBEUkFXX0JVRkZFUjNfRVhUID0gMHg4ODI4OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gRFJBV19CVUZGRVI0X0VYVCA9IDB4ODgyOTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIERSQVdfQlVGRkVSNV9FWFQgPSAweDg4MkE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBEUkFXX0JVRkZFUjZfRVhUID0gMHg4ODJCOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gRFJBV19CVUZGRVI3X0VYVCA9IDB4ODgyQzsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIERSQVdfQlVGRkVSOF9FWFQgPSAweDg4MkQ7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjlfRVhUID0gMHg4ODJFOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMF9FWFQgPSAweDg4MkY7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjExX0VYVCA9IDB4ODgzMDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTJfRVhUID0gMHg4ODMxOworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxM19FWFQgPSAweDg4MzI7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE0X0VYVCA9IDB4ODgzMzsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTVfRVhUID0gMHg4ODM0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCA9IDB4
OENERjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQwX0VY
VCA9IDB4OENFMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQxX0VYVCA9IDB4OENFMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQyX0VYVCA9IDB4OENFMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TE9SX0FUVEFDSE1FTlQzX0VYVCA9IDB4OENFMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCA9IDB4OENFNDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ1X0VYVCA9IDB4OENFNTsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ2X0VYVCA9IDB4OENFNjsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ3X0VYVCA9IDB4OENFNzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ4X0VYVCA9IDB4OENF
ODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ5X0VYVCA9
IDB4OENFOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQx
MF9FWFQgPSAweDhDRUE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRB
Q0hNRU5UMTFfRVhUID0gMHg4Q0VCOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09M
T1JfQVRUQUNITUVOVDEyX0VYVCA9IDB4OENFQzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTE9SX0FUVEFDSE1FTlQxM19FWFQgPSAweDhDRUQ7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VFOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9IDB4OENFRjsKKworICAg
IC8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQorICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOworCisgICAgLy8gR0xfQU5H
TEVfcmVxdWVzdF9leHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVF
U1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7CisKICAgICAvLyBBdHRlbXB0IHRvIGVu
dW1lcmF0ZSBhbGwgcG9zc2libGUgbmF0aXZlIGltYWdlIGZvcm1hdHMgdG8KICAgICAvLyByZWR1
Y2UgdGhlIGFtb3VudCBvZiB0ZW1wb3JhcnkgYWxsb2NhdGlvbnMgZHVyaW5nIHRleHR1cmUKICAg
ICAvLyB1cGxvYWRpbmcuIFRoaXMgZW51bSBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIGl0IGlzIGFj
Y2Vzc2VkCkBAIC0xMjMzLDYgKzEzNzIsMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBt
dWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG11bHRpRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NH
THNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9m
ZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmKSA9IDA7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBtYXkgb25seSBiZSBjYWxs
ZWQgd2l0aCBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVybnMgdHJ1ZS4K
KyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9
IDA7CisKKyAgICAvLyBUYWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBmb3IgZXhhbXBsZSwg
IkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCisgICAgLy8gQ2hlY2tzIHRvIHNlZSB3
aGV0aGVyIHRoZSBnaXZlbiBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxlZCAoc2VlIGVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQpLgorICAgIC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCisg
ICAgdmlydHVhbCBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisK
KyAgICAvLyBHTF9BUkJfcm9idXN0bmVzcworICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVo
YXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcworICAgIC8vIHNwZWNpZmlj
YXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG11
c3Qgbm90IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcgdGhpcyBjYWxsLgorICAgIC8vIElm
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBhbiBlcnJvciwgaXQgc2hvdWxkIGNv
bnRpbnVlCisgICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVycm9yLiBSZXN0b3JpbmcgdGhlIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKKyAgICAvLyBleHRlcm5hbGx5LgorICAg
IHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOworCisgICAg
Ly8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCisgICAgdmlydHVhbCBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKKwor
ICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCisgICAgdmly
dHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9
IDA7CisKICAgICAvLyA9PT09PT09PT09IE90aGVyIGZ1bmN0aW9ucy4KICAgICBHQ0dMZmxvYXQg
Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOwogICAgIEdDR0xib29sZWFuIGdldEJvb2xlYW4oR0NH
TGVudW0gcG5hbWUpOwpAQCAtMTI0MywxMSArMTQwNyw2IEBAIHB1YmxpYzoKICAgICBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBt
X2F0dHJzOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQogCi0gICAgLy8g
U3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdo
IG5vdAotICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBz
dXBwb3J0ZWQgb24gdGhlCi0gICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVu
c2lvbnNHTDo6c3VwcG9ydHMoKSB0bwotICAgIC8vIGRldGVybWluZSB0aGlzLgotICAgIHZpcnR1
YWwgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRleHRWaXNpYmlsaXR5KGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAppbmRleCAyMzNiMGRmNzU2ZWNkZDRiYzkyZDkwYmFhZjAxNTNjYzZhNTk1
ZmY3Li44ZjVmZjFhZTc2MDBmNWRjOTAwOWQ4NDU1Y2NmZjkxNWJjYTFlNjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00Niw3OCArNDYsNyBAQCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoY29uc3QgR3JhcGhpYwogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZhdWx0OwogCi1FeHRlbnNp
b25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkK
LXsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVT
MkNvbXBsaWFudCgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICByZXR1cm4gY29u
dGV4dEF0dHJpYnV0ZXMoKS53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZl
cnNpb246OldlYkdMMjsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgp
Ci17Ci0gICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCi0g
ICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKSB7Ci0gICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hh
bmdlZCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2VkKCk7
Ci0gICAgfQotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
LSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwotICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgewotICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOwotICAgICAgICBt
X2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKLSAgICB9Ci19CiAKLWJvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17
Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKLSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxp
emUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKLXsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKLSAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRl
bnNpb25zLnNwbGl0KCcgJykpCi0gICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChl
eHRlbnNpb24pOwotfQotCi0jaWYgIVVTRShBTkdMRSkKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OnJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHZvaWQqKQot
ewotfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9y
bWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCopCi17Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtaXZFWFQo
R0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopCi17Ci19Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmICFQTEFURk9STShDT0NPQSkKLSNlbmRpZgogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRleCA1ZTVjMDli
ODcyMDQzZWEwZmEyYTk2N2Y0ZjM5OTNiYWQ4MGE3OTQxLi43OGMxMDA3M2M5MDhlNDFkYmUwNGZk
NTA3YWY4MWQ0MGU4YzBjYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zOSw0MiArMzgsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBwYXJ0cyB0aGF0
IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6CiAvLyAtIERyYXdpbmcg
YnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCiAvLyAtIENvbXBvc2l0aW5nIHN1cHBvcnQuCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6IHB1
YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNHTCB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6IHB1YmxpYyBHcmFw
aGljc0NvbnRleHRHTCB7CiBwdWJsaWM6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CiAgICAgflJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBPdGhlciBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCi0gICAgdXNpbmcgR3JhcGhpY3NDb250
ZXh0R0w6OmlzRW5hYmxlZDsKLSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5h
bDsKLSAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwotICAgIGJvb2wg
aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWFya0NvbnRleHRDaGFu
Z2VkKCkgZmluYWw7CiAKLSAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCi0gICAg
dXNpbmcgRXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7Ci0gICAgYm9vbCBzdXBwb3J0cyhjb25zdCBT
dHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmlu
YWw7Ci0gICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0KLSNpZiAhVVNF
KEFOR0xFKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCop
IGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NH
THNpemVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NH
THVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopIGZpbmFsOwotI2VuZGlmCi0KLXBy
b3RlY3RlZDoKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7Ci0gICAgdmlydHVh
bCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOwotCi1wcml2YXRlOgotICAgIC8vIEd1YXJk
ZWQgYnkgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKS4KLSAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFp
bGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9uczsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
ZDA0OWM1MTA5MjY2MTQ1ZGU5MTE3Nzk3MDQzZTk1ZWJiOTg3YTc5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQU5HTEUpCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLQotI2luY2x1
ZGUgIkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dM
QU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBTkdMRSogY29udGV4dCkKLSAgICA6IG1faW5pdGlhbGl6
ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi17
Ci19Ci0KLUV4dGVuc2lvbnNHTEFOR0xFOjp+RXh0ZW5zaW9uc0dMQU5HTEUoKSA9IGRlZmF1bHQ7
Ci0KLWJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICBpZiAoIW1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKSB7Ci0gICAgICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICAvLyBF
bmFibGUgc3VwcG9ydCBpbiBBTkdMRSAoaWYgbm90IGVuYWJsZWQgYWxyZWFkeSkuCi0gICAgaWYg
KG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJsZWRFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR0xfUmVxdWVzdEV4
dGVuc2lvbkFOR0xFKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBtX2VuYWJsZWRFeHRl
bnNpb25zLmFkZChuYW1lKTsKLQotICAgICAgICBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1fY29s
b3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpCi0gICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJG
bG9hdFJHQkEgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9j
b2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKQotICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgPSB0cnVlOwotICAgIH0KLX0KLQotYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6aXNF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Ci19Ci0KLUdMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkKLXsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwotfQotCi1T
dHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGludCBzb3VyY2VM
ZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURF
Ul9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKLQotICAgIGlmICghc291cmNlTGVuZ3RoKQotICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxl
bmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVk
ZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0gMDsKLSAg
ICBHTF9HZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgs
ICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkpOwotICAgIGlmICghcmV0dXJuZWRMZW5ndGgp
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIC8vIHJldHVybmVkTGVuZ3RoIGRv
ZXMgbm90IGluY2x1ZGUgdGhlIG51bGwgdGVybWluYXRvci4KLSAgICBBU1NFUlQocmV0dXJuZWRM
ZW5ndGggPT0gc291cmNlTGVuZ3RoIC0gMSk7Ci0gICAgcmV0dXJuIFN0cmluZyhuYW1lLmRhdGEo
KSwgcmV0dXJuZWRMZW5ndGgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFs
aXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCi17Ci0gICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcg
PSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25z
U3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0
ZW5zaW9uKTsKLSAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xF
KSkpOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgn
ICcpKQotICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAg
ICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7Ci19Ci0KLWJvb2wgRXh0
ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsK
LSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEdMX0RyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKLX0K
LQotU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRFeHRlbnNpb25zKCkKLXsKLSAgICByZXR1
cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9F
WFRFTlNJT05TKSkpOwotfQotCi1HQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRqdXN0V2Vi
R0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpCi17Ci0gICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9m
IFdFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCBmb3IgV2ViR0wgMS4wIC8gRVMgMi4wIHJlcXVpcmVz
IGEgc2l6ZWQKLSAgICAvLyBpbnRlcm5hbCBmb3JtYXQuIEFkanVzdCBpdCBpZiBuZWNlc3Nhcnkg
YXQgdGhpcyBsb3dlc3QgbGV2ZWwuCi0gICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpIHsKLSAgICAg
ICAgaWYgKG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSAmJiBmb3JtYXQgPT0gR0xfUkdCQSAm
JiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0JBKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkEz
MkY7Ci0gICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiAmJiBmb3JtYXQgPT0g
R0xfUkdCICYmIGludGVybmFsZm9ybWF0ID09IEdMX1JHQikKLSAgICAgICAgICAgIHJldHVybiBH
TF9SR0IzMkY7Ci0gICAgfQotICAgIHJldHVybiBpbnRlcm5hbGZvcm1hdDsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk3OGUy
ZjlmNjRiOWY2MTVjM2IzYTg1YzQzYTNjYTA1NGVkNzVjYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCi0KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOwot
Ci1jbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBpbXBsZW1l
bnRhdGlvbnMuCi0gICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xBTkdMRSopOwotICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTEFOR0xFKCk7Ci0KLSAgICAvLyBF
eHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBHQ0dMaW50
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZHJhd0J1
ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKLQotICAgIFN0cmlu
ZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7Ci0KLSAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgotICAgIEdDR0xl
bnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKLQotcHJpdmF0ZToKLSAgICBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyBnZXRFeHRl
bnNpb25zKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lv
bnMoKTsKLSAgICBib29sIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zOwotICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+
IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRF
eHRlbnNpb25zOwotCi0gICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS4KLSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKiBtX2NvbnRleHQ7Ci0KLSAgICAv
LyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmls
aXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCi0gICAgYm9vbCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9h
dFJHQkEgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA0OGY3MzQyZjNlMDkwMWZlNDY3MmNhNWI1ZTAz
MjFlODQxNmE5NjZkLi5jNWM2YmZhNTc1ZTk0OTQ2NjEwMGUxNjUzMTgzMjgzYTA4YTBkYjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAj
aW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgpAQCAtNzEsNiArNzAsMzAgQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZy
b21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNl
bmRpZgogCisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW5pdGlhbGl6ZSgpCit7Cisg
ICAgaWYgKCFwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsKKyAgICBmb3IgKGF1
dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJpbmcg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX1JF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRl
bnNpb25zLmFkZChleHRlbnNpb24pOworICAgIHJldHVybiBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
K30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemVDb250
ZXh0KCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIHJldHVybiB0cnVlOworfQorCiBHQ0dM
ZW51bSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgp
CiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQpAQCAtMzU0LDcgKzM3Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQog
ewogICAgIGlmICghbV9pc0ZvcldlYkdMMikKLSAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBzdGF0
aWNfY2FzdDxFeHRlbnNpb25zR0xBTkdMRSY+KGdldEV4dGVuc2lvbnMoKSkuYWRqdXN0V2ViR0wx
VGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOworICAg
ICAgICBpbnRlcm5hbGZvcm1hdCA9IGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChp
bnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAgICAgR0xfVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKQEAgLTQyNSwxMyArNDQ4LDYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgp
CiAgICAgR0xfQ2xlYXJEZXB0aGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlcHRoKSk7CiB9CiAKLUV4
dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0RXh0ZW5zaW9ucygpCi17Ci0g
ICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uc0dMQU5HTEU+KHRoaXMpOwotICAgIHJldHVybiAqbV9leHRlbnNpb25zOwotfQot
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgcmVhZG5Q
aXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXpl
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsKQEAgLTQ4Mywx
MiArNDk5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHNJbXBs
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkCiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKQogewotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4
dGVuc2lvbnMoKTsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBvZiB2YXJp
b3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhlcmUuCiAg
ICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFsaXplIHRo
ZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbAogICAgIC8v
IHVzZSB0byB0dXJuIG9uIGZlYXR1cmUgZmxhZ3MuCi0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9y
dHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICBpZiAoc3VwcG9y
dHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgeworICAgICAgICBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgICAg
IG1faW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9pbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RF
UFRIX0NPTVBPTkVOVDE2OwpAQCAtNTA1LDE3ICs1MjAsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaWwKIAogICAgIGlmIChhdHRycy5hbnRpYWxpYXMpIHsKICAgICAgICAgLy8gRklYTUU6IG11
c3QgYWRqdXN0IHRoaXMgd2hlbiB1cGdyYWRpbmcgdG8gV2ViR0wgMi4wIC8gT3BlbkdMIEVTIDMu
MCBzdXBwb3J0LgotICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIikgfHwgIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xF
X2ZyYW1lYnVmZmVyX2JsaXQiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX3JnYjhf
cmdiYTgiKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpIHx8ICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJh
bWVidWZmZXJfYmxpdCIpIHx8ICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3JnYjhfcmdiYTgi
KSkgewogICAgICAgICAgICAgYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgICAgICBz
ZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlIik7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX2JsaXQiKTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgi
R0xfT0VTX3JnYjhfcmdiYTgiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgICAgICBlbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgICAg
ICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKICAgICAgICAg
Ly8gTmVlZGVkIGZvciBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1ZSBzdXBwb3J0IHdpdGhvdXQg
YW50aWFsaWFzaW5nLgotICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xF
X2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOwogICAgIH0KIH0KIApAQCAtMjg5MCw2ICsyOTA1LDY0
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMCiAgICAgR0xfTXVsdGlEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9pbnRlcnMuZGF0YSgpLCBpbnN0
YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOwogfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIC8v
IEVuYWJsZSBzdXBwb3J0IGluIEFOR0xFIChpZiBub3QgZW5hYmxlZCBhbHJlYWR5KS4KKyAgICBp
ZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgR0xfUmVxdWVzdEV4dGVuc2lvbkFO
R0xFKG5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFk
ZChuYW1lKTsKKworICAgICAgICBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVy
X2Zsb2F0X3JnYmEiX3MpCisgICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
PSB0cnVlOworICAgICAgICBlbHNlIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZm
ZXJfZmxvYXRfcmdiIl9zKQorICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0Ig
PSB0cnVlOworICAgIH0KK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVu
c2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKK30KKworR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpCit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJP
UjsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpbnQgc291
cmNlTGVuZ3RoID0gZ2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJD
RV9MRU5HVEhfQU5HTEUpOworCisgICAgaWYgKCFzb3VyY2VMZW5ndGgpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsg
Ly8gR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxs
IHRlcm1pbmF0aW9uLgorICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdMX0dl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVy
bmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CisgICAgaWYgKCFyZXR1cm5lZExlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgLy8gcmV0dXJuZWRMZW5ndGggZG9lcyBub3Qg
aW5jbHVkZSB0aGUgbnVsbCB0ZXJtaW5hdG9yLgorICAgIEFTU0VSVChyZXR1cm5lZExlbmd0aCA9
PSBzb3VyY2VMZW5ndGggLSAxKTsKKyAgICByZXR1cm4gU3RyaW5nKG5hbWUuZGF0YSgpLCByZXR1
cm5lZExlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR0xfRHJhd0J1ZmZlcnNFWFQo
YnVmcy5idWZTaXplLCBidWZzLmRhdGEpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OndhaXRBbmRVcGRhdGVPbGRlc3RGcmFtZSgpCiB7CiAgICAgc2l6ZV90IG9sZGVzdEZyYW1l
Q29tcGxldGlvbkZlbmNlID0gbV9vbGRlc3RGcmFtZUNvbXBsZXRpb25GZW5jZSsrICUgbWF4UGVu
ZGluZ0ZyYW1lczsKQEAgLTI5OTcsNiArMzA3MCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50KQogewogfQogCitH
Q0dMZW51bSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJu
YWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSkKK3sKKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV0VCR0xfY29sb3JfYnVm
ZmVyX2Zsb2F0IGZvciBXZWJHTCAxLjAgLyBFUyAyLjAgcmVxdWlyZXMgYSBzaXplZAorICAgIC8v
IGludGVybmFsIGZvcm1hdC4gQWRqdXN0IGl0IGlmIG5lY2Vzc2FyeSBhdCB0aGlzIGxvd2VzdCBs
ZXZlbC4KKyAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgeworICAgICAgICBpZiAobV93ZWJnbENv
bG9yQnVmZmVyRmxvYXRSR0JBICYmIGZvcm1hdCA9PSBHTF9SR0JBICYmIGludGVybmFsZm9ybWF0
ID09IEdMX1JHQkEpCisgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRjsKKyAgICAgICAgaWYg
KG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCICYmIGZvcm1hdCA9PSBHTF9SR0IgJiYgaW50ZXJu
YWxmb3JtYXQgPT0gR0xfUkdCKQorICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRjsKKyAgICB9
CisgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCAx
MDdlYzIzOGI3ODBmNDQ5MTYwZmY1ZjExOTc1YjFiMDQ0MGJiY2Q4Li40NGQxZWMzZjBkOWYzZTUx
MDgwNTY4ZTRkNDhiMzcxMmEzODc3YjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5o
CkBAIC01Myw3ICs1Myw2IEBAIHN0cnVjdCBnYm1fYm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEV4dGVuc2lvbnNHTDsKLWNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogY2xhc3MgR0xD
b250ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlQnVmZmVyOwpAQCAtMzMyLDYg
KzMzMSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3Rh
bmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIG11bHRp
RHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMs
IEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywg
R0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdj
b3VudCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CisKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZl
cigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5h
bDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKQEAgLTM0Niwx
MiArMzUyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9i
amVjdCkgZmluYWw7CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikg
ZmluYWw7CiAgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsK
LSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKICAgICB2b2lkIHNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFs
OwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
UGl4ZWxCdWZmZXIoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwogICAgIHZvaWQgcmVjeWNs
ZUNvbnRleHQoKTsKQEAgLTM2NiwxNSArMzcwLDIxIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90
ZWN0ZWQ6Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikK
LSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywg
Y29uc3QgUHJvY2Vzc0lkZW50aXR5Jik7Ci0jZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKLSNlbmRpZgorCiAgICAgLy8gQ2FsbGVk
IG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxs
IE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2lu
dHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAorICAgIC8vIEluaXRp
YWxpemVzIHRoZSBpbnN0YW5jZS4gUmV0dXJucyBmYWxzZSBpZiB0aGUgaW5zdGFuY2Ugc2hvdWxk
IG5vdCBiZSB1c2VkLgorICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworICAgIC8vIENhbGxlZCBmaXJz
dCBieSBpbml0aWFsaXplKCkuIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRvIGluc3RhbnRp
YXRlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiaXRzIG9mIEVHTENvbnRleHQuCisgICAgLy8gRklY
TUU6IEN1cnJlbnRseSBwbGF0Zm9ybXMgZG8gbm90IHNoYXJlIHRoZSBjb250ZXh0IGNyZWF0aW9u
LiBUaGV5IHNob3VsZC4KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCgpOworICAgIC8vIENhbGxlZCBsYXN0IGJ5IGluaXRpYWxpemUoKS4gU3ViY2xhc3NlcyBzaG91
bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgcGxhdGZvcm0gc3BlY2lmaWMgc3RhdGUgdGhhdCBk
ZXBlbmQgb24KKyAgICAvLyB0aGUgc2hhcmVkIHN0YXRlLgorICAgIHZpcnR1YWwgYm9vbCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKKwogICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3Mg
cmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcywKICAgICAvLyBpbiBwYXJ0aWN1
bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgog
ICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2Yg
dGhlIE9wZW5HTApAQCAtMzk1LDEzICs0MDUsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHJl
cGFyZVRleHR1cmVJbXBsKCk7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNz
YXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKICAgICB2b2lkIGF0dGFjaERlcHRoQW5k
U3RlbmNpbEJ1ZmZlcklmTmVlZGVkKEdDR0x1aW50IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotCi0gICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGFsbG9jYXRlQW5kQmlu
ZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7Ci0gICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CiAg
ICAgc3RhdGljIGJvb2wgbWFrZUN1cnJlbnQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3Bs
YXksIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wpOwogI2VuZGlmCisgICAgdmlydHVhbCBib29s
IHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpID0gMDsKKwogICAgIC8vIFJldHVybnMgZmFs
c2UgaWYgY29udGV4dCBzaG91bGQgYmUgbG9zdCBkdWUgdG8gdGltZW91dC4KICAgICBib29sIHdh
aXRBbmRVcGRhdGVPbGRlc3RGcmFtZSgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIApAQCAtNDEwLDYg
KzQxOCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUtub3du
VGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpOwogCisgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIu
MCBjb250ZXh0cy4KKyAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNpb25zOworICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKyAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0
UkdCIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZh
bHNlIH07CiAgICAgR0NHTHVpbnQgbV90ZXh0dXJlIHsgMCB9OwogICAgIEdDR0x1aW50IG1fZmJv
IHsgMCB9OwogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2lsQnVmZmVyIHsgMCB9OwpAQCAtNDM0
LDcgKzQ1MCw2IEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9vbGRlc3RGcmFtZUNvbXBsZXRp
b25GZW5jZSB7IDAgfTsKICAgICBTY29wZWRHTEZlbmNlIG1fZnJhbWVDb21wbGV0aW9uRmVuY2Vz
W21heFBlbmRpbmdGcmFtZXNdOwogICAgIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUgbV9zdGF0ZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMQU5HTEU+IG1fZXh0ZW5zaW9uczsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuCkBAIC00NDcsNyArNDYyLDYgQEAgcHJvdGVjdGVkOgogICAgIC8vIFdo
ZW4gcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRlZCB0byBkdXJp
bmcgZGlzcGxheSBwcmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlz
cGxheUJ1ZmZlckJhY2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB7IG51
bGxwdHIgfTsKLSAgICBQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwogI2VuZGlmCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIEdDR0x1aW50IG1fY29tcG9zaXRvclRl
eHR1cmUgeyAwIH07CkBAIC00ODYsNyArNTAwLDYgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+IG1fdGV4bWFwTGF5ZXI7CiAj
ZW5kaWYKIAotICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKICNpZiBVU0UoTklD
T1NJQSkKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6R0NHTEFOR0xFTGF5ZXI7CiAgICAgZnJp
ZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IGEwOGRhMGY0ZjEwZTRjM2U0YTlhNzFlZThmNTMyNWZhNjZlMDkxZmYuLjdiM2I0YTAxZjI2OTZj
MGQ5YjA2MTI4MDY0NjM4ZGY2OTIyYTFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
NDAsNyArNDAsNiBAQAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgotI2ltcG9ydCAiRXh0ZW5z
aW9uc0dMLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5oCmluZGV4IGM1NmU2OTUzNWU3MDk3ZmRkMjVkMmZjZTMwMmUxMDY4
ZTc2YzZlM2IuLmMzMWY1ZWZiZTJlYTgyMGRjNzBmZDUwZDU3YTI4NzFjYzM5NmY5MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKQEAgLTc5LDE3ICs3OSwyMyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBm
aW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCB1cGRhdGVDb250ZXh0T25EaXNwbGF5UmVjb25maWd1cmF0aW9u
KCk7CiAjZW5kaWYKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29hKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNv
dXJjZU93bmVyKTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgorICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplQ29u
dGV4dCgpIGZpbmFsOworICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkgZmluYWw7CiAgICAg
dm9pZCBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dMdWludCkgZmluYWw7CisgICAg
Ym9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSBmaW5hbDsKKyAgICBib29sIGFsbG9j
YXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9vbCBiaW5kRGlzcGxheUJ1
ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1
ZmZlcik7CiAKKyAgICBQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwogI2lmIEVOQUJM
RShWSURFTykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hPiBt
X2N2OwogI2VuZGlmCkBAIC0xMDAsNiArMTA2LDcgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+
IG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb247CiAjZW5kaWYKKwogICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQppbmRleCAwY2QwYTI0ZmRiNzJjMzdiY2QyNWMwMDBjNTQ2MmM2MWMyMDVmNzUxLi4z
NmU4ZjBmYjAyOTM3N2I0ZWZmZTQwNTM1MjM3ZTU4MjIyZmJmNzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFOR0xFVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJBTkdMRVV0aWxpdGllc0NvY29hLmgiCiAjaW1wb3J0ICJDVlV0aWxp
dGllcy5oIgotI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTE5NywyOSArMTk2LDE1
IEBAIHN0YXRpYyBib29sIG5lZWRzRUFHTE9uTWFjKCkKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TENvY29hPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYgYXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcikK
IHsKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoV1RGTW92ZShhdHRyaWJ1dGVzKSwgV1RGTW92ZShyZXNvdXJjZU93bmVyKSkpOwotICAgIGlm
ICghY29udGV4dC0+aXNWYWxpZCgpKQorICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmJiBjcmVhdGlvbkF0dHJpYnV0ZXMsIFByb2Nlc3NJZGVudGl0eSYmIHJlc291
cmNlT3duZXIpCi0gICAgOgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJ
VFlfVE9LRU4pCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3ZlKGNyZWF0aW9uQXR0
cmlidXRlcyksIHJlc291cmNlT3duZXIpCi0jZWxzZQotICAgIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEUoV1RGTW92ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQotI2VuZGlmCisgICAgOiBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSkKKyAgICAsIG1fcmVzb3Vy
Y2VPd25lcihXVEZNb3ZlKHJlc291cmNlT3duZXIpKQogewotICAgIGlmICghaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBpbml0aWFsaXplciBs
aXN0IG9uY2UgbV9yZXNvdXJjZU93bmVyIG1vdmVzIHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Ci0gICAgbV9yZXNvdXJjZU93bmVyID0gV1RGTW92ZShyZXNvdXJjZU93bmVyKTsKLQotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwot
ICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCAmJiBhdHRyaWJ1dGVzLmVmZmVjdGl2ZVBvd2Vy
UHJlZmVyZW5jZSgpID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVy
Zm9ybWFuY2UpCi0gICAgICAgIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24g
PSB0cnVlOwotI2VuZGlmCiB9CiAKIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6On5HcmFwaGljc0Nv
bnRleHRHTENvY29hKCkgPSBkZWZhdWx0OwpAQCAtMjM2LDM4ICsyMjEsMzkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTENvY29hOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKIAogLy8gRklYTUU6
IEJlbG93IGlzIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgbW92ZWQgdG8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSB0byBzaW1wbGlmeSB0aGUgYmFzZSBjbGFzcy4KIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCi1HcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBh
dHRycywgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQotI2Vsc2UKIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJzKQotI2VuZGlmCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRy
cykKIHsKLSAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMud2ViR0xWZXJzaW9uID09IEdyYXBoaWNz
Q29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7Ci0gICAgaWYgKGF0dHJzLnVzZU1ldGFsICYm
ICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0ZvcldlYkdMMikpIHsKLSAgICAgICAgYXR0cnMu
dXNlTWV0YWwgPSBmYWxzZTsKLSAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwor
fQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQoKQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29u
dGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBtX2lzRm9yV2ViR0wyID0gYXR0cmlidXRlcy53ZWJHTFZl
cnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMjsKKyAgICBpZiAo
YXR0cmlidXRlcy51c2VNZXRhbCAmJiAhcGxhdGZvcm1TdXBwb3J0c01ldGFsKG1faXNGb3JXZWJH
TDIpKSB7CisgICAgICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSBmYWxzZTsKKyAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFdFQlhS
KQotICAgIGlmIChhdHRycy54ckNvbXBhdGlibGUpIHsKKyAgICBpZiAoYXR0cmlidXRlcy54ckNv
bXBhdGlibGUpIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhhdCBh
bnkgY29ubmVjdGVkIGhlYWRzZXQgd2lsbCByZXF1aXJlIHRoZSBoaWdoLXBvd2VyIEdQVSwKICAg
ICAgICAgLy8gd2hpY2ggaXMgdGhlIHNhbWUgR1BVIHdlIG5lZWQgdGhpcyBjb250ZXh0IHRvIHVz
ZS4gSG93ZXZlciwgdGhpcyBpcyBub3QgZ3VhcmFudGVlZCwgYW5kCiAgICAgICAgIC8vIHRoZXJl
IGlzIGFsc28gdGhlIGNoYW5jZSB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBHUFVzLiBHaXZlbiB0
aGF0IHlvdSBjYW4gcmVxdWVzdCB0aGUKICAgICAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0wgYmVm
b3JlIGluaXRpYWxpemluZyB0aGUgV2ViWFIgc2Vzc2lvbiwgd2UnbGwgbmVlZCBzb21lIHdheSB0
bwogICAgICAgICAvLyBtaWdyYXRlIHRoZSBjb250ZXh0IHRvIHRoZSBhcHByb3ByaWF0ZSBHUFUg
d2hlbiB0aGUgY29kZSBoZXJlIGRvZXMgbm90IHdvcmsuCiAgICAgICAgIExPRyhXZWJHTCwgIldl
YlhSIGNvbXBhdGlibGUgY29udGV4dCByZXF1ZXN0ZWQuIFRoaXMgd2lsbCBhbHNvIHRyaWdnZXIg
YSByZXF1ZXN0IGZvciB0aGUgaGlnaC1wb3dlciBHUFUuIik7Ci0gICAgICAgIGF0dHJzLmZvcmNl
UmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IHRydWU7Ci0gICAgICAgIHNldENvbnRleHRB
dHRyaWJ1dGVzKGF0dHJzKTsKKyAgICAgICAgYXR0cmlidXRlcy5mb3JjZVJlcXVlc3RGb3JIaWdo
UGVyZm9ybWFuY2VHUFUgPSB0cnVlOworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRy
aWJ1dGVzKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fZGlzcGxheU9iaiA9IGluaXRpYWxpemVF
R0xEaXNwbGF5KGF0dHJzKTsKKyAgICBtX2Rpc3BsYXlPYmogPSBpbml0aWFsaXplRUdMRGlzcGxh
eShhdHRyaWJ1dGVzKTsKICAgICBpZiAoIW1fZGlzcGxheU9iaikKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFhdHRy
cy51c2VNZXRhbCkgeworICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCkgewogICAgICAgICAv
LyBGb3IgT3BlbkdMLCBFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSBpcyB1c2VkLiBUaGUgY29u
dGV4dCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZQogICAgICAgICAvLyBkZWZhdWx0LCBsb3ctcG93
ZXIgZGV2aWNlLiBGb3IgaGlnaC1wZXJmb3JtYW5jZSBjb250ZXh0cywgd2UgcmVxdWVzdCB0aGUg
aGlnaC1wZXJmb3JtYW5jZQogICAgICAgICAvLyBHUFUgaW4gc2V0Q29udGV4dFZpc2liaWxpdHku
IFdoZW4gdGhlIHJlcXVlc3QgaXMgZnVsbGZpbGxlZCBieSB0aGUgc3lzdGVtLCB3ZSBnZXQgdGhl
CkBAIC0yNzUsMTEgKzI2MSwxMSBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0Nv
bnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgICAgICBj
b25zdCBjaGFyICpkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmluZyhtX2Rpc3BsYXlP
YmosIEVHTF9FWFRFTlNJT05TKTsKICAgICAgICAgYm9vbCBzdXBwb3J0c1Bvd2VyUHJlZmVyZW5j
ZSA9IHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNl
Iik7CiAgICAgICAgIGlmICghc3VwcG9ydHNQb3dlclByZWZlcmVuY2UpIHsKLSAgICAgICAgICAg
IGF0dHJzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IGZhbHNlOwotICAgICAg
ICAgICAgaWYgKGF0dHJzLnBvd2VyUHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlKSB7Ci0gICAgICAgICAgICAgICAgYXR0cnMucG93
ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQ7
CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQ
VSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID09
IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKKyAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
c2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOworICAgICAgICAgICAgc2V0Q29udGV4dEF0dHJp
YnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTI5OCwxNCAr
Mjg0LDE0IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgRUdMX0Nob29zZUNvbmZpZyht
X2Rpc3BsYXlPYmosIGNvbmZpZ0F0dHJpYnV0ZXMsICZtX2NvbmZpZ09iaiwgMSwgJm51bWJlckNv
bmZpZ3NSZXR1cm5lZCk7CiAgICAgaWYgKG51bWJlckNvbmZpZ3NSZXR1cm5lZCAhPSAxKSB7CiAg
ICAgICAgIExPRyhXZWJHTCwgIkVHTENvbmZpZyBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBMT0coV2Vi
R0wsICJHb3QgRUdMQ29uZmlnIik7CiAKICAgICBFR0xfQmluZEFQSShFR0xfT1BFTkdMX0VTX0FQ
SSk7CiAgICAgaWYgKEVHTF9HZXRFcnJvcigpICE9IEVHTF9TVUNDRVNTKSB7CiAgICAgICAgIExP
RyhXZWJHTCwgIlVuYWJsZSB0byBiaW5kIHRvIE9QRU5HTF9FU19BUEkiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgVmVjdG9yPEVHTGludD4g
ZWdsQ29udGV4dEF0dHJpYnV0ZXM7CkBAIC0zMzMsMTMgKzMxOSwxMiBAQCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRycwogICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9C
SU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSk7CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0
ZXMuYXBwZW5kKEVHTF9GQUxTRSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgSEFWRShUQVNL
X0lERU5USVRZX1RPS0VOKQorI2lmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICBhdXRv
IGRpc3BsYXlFeHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxheU9iaiwgRUdMX0VY
VEVOU0lPTlMpOwogICAgIGJvb2wgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0eSA9IHN0cnN0cihk
aXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9tZXRhbF9jcmVhdGVfY29udGV4dF9vd25lcnNo
aXBfaWRlbnRpdHkiKTsKLSAgICAvLyBGSVhNRTogVXNlIG1fcmVzb3VyY2VPd25lciBvbmNlIGl0
IG1vdmVzIHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EuCi0gICAgaWYgKGF0dHJzLnVzZU1ldGFs
ICYmIHJlc291cmNlT3duZXIgJiYgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0eSkgeworICAgIGlm
IChhdHRyaWJ1dGVzLnVzZU1ldGFsICYmIG1fcmVzb3VyY2VPd25lciAmJiBzdXBwb3J0c093bmVy
c2hpcElkZW50aXR5KSB7CiAgICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xf
Q09OVEVYVF9NRVRBTF9PV05FUlNISVBfSURFTlRJVFlfQU5HTEUpOwotICAgICAgICBlZ2xDb250
ZXh0QXR0cmlidXRlcy5hcHBlbmQocmVzb3VyY2VPd25lci50YXNrSWRUb2tlbigpKTsKKyAgICAg
ICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKG1fcmVzb3VyY2VPd25lci50YXNrSWRUb2tl
bigpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzQ4LDEwICszMzMsMTQgQEAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cnMKICAgICBtX2NvbnRleHRPYmogPSBFR0xfQ3JlYXRlQ29udGV4dChtX2Rpc3Bs
YXlPYmosIG1fY29uZmlnT2JqLCBFR0xfTk9fQ09OVEVYVCwgZWdsQ29udGV4dEF0dHJpYnV0ZXMu
ZGF0YSgpKTsKICAgICBpZiAobV9jb250ZXh0T2JqID09IEVHTF9OT19DT05URVhUIHx8ICFtYWtl
Q3VycmVudChtX2Rpc3BsYXlPYmosIG1fY29udGV4dE9iaikpIHsKICAgICAgICAgTE9HKFdlYkdM
LCAiRUdMQ29udGV4dCBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBMT0coV2ViR0wsICJHb3QgRUdMQ29u
dGV4dCIpOworICAgIHJldHVybiB0cnVlOworfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4
dEF0dHJpYnV0ZXMoKTsKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgR0xfRW5hYmxl
KEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKQEAg
LTM2MywzOCArMzUyLDM3IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoIW5lZWRzRUFHTE9uTWFjKCkp
IHsKICAgICAgICAgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAgICAgIGlm
ICghYXR0cnMudXNlTWV0YWwpCisgICAgICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCkKICAg
ICAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX3RleHR1cmVfcmVj
dGFuZ2xlIl9zKTsKICAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3VyZmFjZSBmcm9t
IGFuIElPU3VyZmFjZS4KICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhU
X3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICB9CiAjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNpZiBFTkFCTEUoV0VCWFIpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS54
ckNvbXBhdGlibGUpCisgICAgaWYgKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKQogICAgICAgICBy
ZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9PRVNfRUdMX2ltYWdlIl9zKTsKICNlbmRpZgog
ICAgIGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5k
KCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7Ci0gICAgRXh0ZW5zaW9uc0dM
JiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogcmVxdWlyZWRFeHRlbnNpb25zKSB7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0
cyhleHRlbnNpb24pKSB7CisgICAgICAgIGlmICghc3VwcG9ydHNFeHRlbnNpb24oZXh0ZW5zaW9u
KSkgewogICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24u
ICVzIiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKGV4dGVuc2lvbik7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0
ZW5zaW9uKTsKICAgICB9Ci0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkudXNlTWV0YWwpIHsK
KyAgICBpZiAoYXR0cmlidXRlcy51c2VNZXRhbCkgewogICAgICAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFIHVzZXMgc3luYyBvYmplY3RzIHRvIHRocm90dGxlIGRpc3BsYXkgb24gTWV0YWwg
aW1wbGVtZW50YXRpb25zLgogICAgICAgICAvLyBPcGVuR0wgc3luYyBvYmplY3RzIGFyZSBub3Qg
c2lnbmFsaW5nIHVwb24gY29tcGxldGlvbiBvbiBDYXRhbGluYS1lcmEgZHJpdmVycywgc28KICAg
ICAgICAgLy8gT3BlbkdMIGNhbm5vdCB1c2UgdGhpcyBtZXRob2Qgb2YgdGhyb3R0bGluZy4gT3Bl
bkdMIGRyaXZlcnMgdHlwaWNhbGx5IGltcGxlbWVudAogICAgICAgICAvLyBzb21lIHNvcnQgb2Yg
aW50ZXJuYWwgdGhyb3R0bGluZy4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0FSQl9zeW5jIl9zKSkgeworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9z
eW5jIl9zKSkgewogICAgICAgICAgICAgbV91c2VGZW5jZVN5bmNGb3JEaXNwbGF5UmF0ZUxpbWl0
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQVJCX3N5
bmMiX3MpOworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQVJCX3N5bmMi
X3MpOwogICAgICAgICB9CiAgICAgfQogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIGF0
dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmlu
ZyB2YWxpZGF0aW9uLgorICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBU
aGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKICAgICAvLyBDcmVhdGUg
dGhlIHRleHR1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1ZmZlci4KICAgICBH
TGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CkBAIC00
MTEsMTggKzM5OSwxOCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRH
TEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIEdMX0JpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIG1fc3RhdGUuYm91bmREcmF3RkJP
ID0gbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPSBtX2ZibzsKIAotICAgIGlmICghYXR0cnMuYW50aWFs
aWFzICYmIChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKSkKKyAgICBpZiAoIWF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkp
CiAgICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsK
IAogICAgIC8vIElmIG5lY2Vzc2FyeSwgY3JlYXRlIGFub3RoZXIgZnJhbWVidWZmZXIgZm9yIHRo
ZSBtdWx0aXNhbXBsZSByZXN1bHRzLgotICAgIGlmIChhdHRycy5hbnRpYWxpYXMpIHsKKyAgICBp
ZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMpIHsKICAgICAgICAgR0xfR2VuRnJhbWVidWZmZXJzKDEs
ICZtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgbV9zdGF0ZS5ib3VuZERyYXdGQk8g
PSBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87CiAgICAgICAgIEdMX0dl
blJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAgICAgIGlm
IChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKQorICAgICAgICBpZiAoYXR0cmlidXRlcy5z
dGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpCiAgICAgICAgICAgICBHTF9HZW5SZW5kZXJidWZm
ZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICB9IGVsc2UgaWYg
KGF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgIH0gZWxzZSBpZiAoYXR0cmlidXRl
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKICAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCBjcmVh
dGUgYW5vdGhlciB0ZXh0dXJlIHRvIGhhbmRsZSBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1ZSB3
aXRob3V0CiAgICAgICAgIC8vIGFudGlhbGlhc2luZy4KICAgICAgICAgR0xfR2VuVGV4dHVyZXMo
MSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVyZSk7CkBAIC00MzgsNyArNDI2LDExIEBA
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAKICAgICBHTF9DbGVhckNvbG9yKDAsIDAsIDAsIDAp
OwogCi0gICAgTE9HKFdlYkdMLCAiQ3JlYXRlZCBhIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgKCVw
KS4iLCB0aGlzKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1l
dGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93ZXJQcmVmZXJlbmNlKCkgPT0gR3JhcGhpY3ND
b250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKKyAgICAgICAgbV9zd2l0
Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlvbiA9IHRydWU7CisjZW5kaWYKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdM
QU5HTEUoKQpAQCAtNDg1LDExICs0NzcsNiBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp+R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRSgpCiAgICAgTE9HKFdlYkdMLCAiRGVzdHJveWVkIGEgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRSAoJXApLiIsIHRoaXMpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3RleHR1cmU7Ci19Ci0K
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTU1MCw3ICs1MzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OnVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24oKQogfQog
I2VuZGlmCiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZm
ZXJCYWNraW5nKCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkuaXNFbXB0eSgpKTsKICAgICAvLyBSZXNldCB0aGUgY3VycmVudCBiYWNrYnVmZmVyIG5vdyBi
ZWZvcmUgYWxsb2NhdGluZyBhIG5ldyBvbmUgaW4gb3JkZXIgdG8gc2xpZ2h0bHkgcmVkdWNlIG1l
bW9yeSBwcmVzc3VyZS4KQEAgLTU2OCw3ICs1NTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgcmV0dXJuIGFsbG9jYXRl
QW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQorYm9vbCBHcmFw
aGljc0NvbnRleHRHTENvY29hOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygp
CiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7
CiAgICAgYXV0byBiYWNraW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1
ZmZlclNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwpAQCAtNTk4LDcgKzU4
NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6YWxsb2NhdGVBbmRCaW5kRGlzcGxh
eUJ1ZmZlckJhY2tpbmcoKQogICAgIHJldHVybiBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoV1RG
TW92ZShiYWNraW5nKSwgcGJ1ZmZlcik7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6YmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJh
Y2tpbmcsIHZvaWQqIHBidWZmZXIpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2
b2lkKiBwYnVmZmVyKQogewogICAgIEdDR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVm
ZmVyVGV4dHVyZVRhcmdldCgpOwogICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0
b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1Rhcmdl
dCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJF
X1JFQ1RBTkdMRV9BUkIpOwpAQCAtNjg5LDcgKzY3Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6ZGV0YWNoSU9TdXJmYWNlRnJvbVNoYXJlZFRleHR1cmUodm9pZCogaGFuZGxlKQog
fQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7
CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDdkMGNlMzZiNjBh
MGQ2OWE1OTIzYzI0MDBkMDNiYjdiYWQzODY0OTguLjBiYjEwNjViM2E2MTY2OWI5ODUwMTg1MzA0
NWE3MGI2ZmFhMWI1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXgK
ICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCku
aGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8g
Y29udGV4dCA9IGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pKTsKLSAgICBpZiAoIWNv
bnRleHQtPmlzVmFsaWQoKSkKKyAgICBpZiAoIWNvbnRleHQtPmluaXRpYWxpemUoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LmdldCgpKTsKICAgICByZXR1cm4gY29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNTFjYmU2YjdlMTNiODBhZjcx
MmUzZWZlNzZiNjI1MTU4MzQ5ZmY0YS4uNzNlMjQ4NDVjYjMzZTUwZDU0NTdhNjIwNjE4NDQ0MjY5
NTE3ZDY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAv
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgogICAg
IC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCBkOWYxNWY0NWJkZmI0ZTFiYmU4
ZDM5MzYzNWI2MGFhZDFkMmQ5MGE3Li5lNzMyYzFjZjkxYTNkODRmNjQzMmMwZjIyYzg2OGYzZDgw
NDRjNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIHN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgcGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0RXh0
ZW5zaW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmNwcAppbmRleCA3ZDUwMGFiYzBjZjFlZTU1MjY4MzExMmFmY2YyMjI0YWU2OTU3
MWJmLi4yMWU4MjlmYmQxMDFkZjZkNDY5MzE2ZjlkMjljZWQ4NmI0YWM5NjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKIH0KIAogdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjplbnN1
cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgU2hCdWlsdEluUmVzb3VyY2Vz
IEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CiAgICAgICAgIGlmICgh
QU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykgewogICAgICAgICAgICAgQU5HTEVSZXNv
dXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgICAgICBBTkdMRVJlc291cmNlcy5N
YXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9E
UkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZm
ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19C
VUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNv
dXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4
IDI5YTBjNGQ4ZjVhOTI2YzcwOTUzNTQxYzBiMjYxM2ZkYTc1MmI0MjYuLjJjMzdmYWM5NjVjMDIx
NmRhMDVhYzVmYjhlYWFlYjY4M2Q0NGE3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmgKQEAgLTI2LDggKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJF
eHRlbnNpb25zR0wuaCIKLQorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC0z
NSwxNiArMzQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDsKIAotY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIDogcHVibGljIEV4
dGVuc2lvbnNHTCB7CitjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbigpOwogCi0gICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgYm9vbCBz
dXBwb3J0cyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlk
ZTsKKyAgICAvLyBNZXRob2RzIGZvcndhcmRlZCBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAvLyBHTF9PRVNfdmVy
dGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpID0gMDsKQEAgLTUyLDE4ICs1MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsK
IAotICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVy
cmlkZSA9IDA7Ci0KLSAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwg
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lk
ICpkYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CiAKICAgICBib29sIGlzTlZJ
RElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQogICAgIGJvb2wgaXNBTUQoKSBjb25z
dCB7IHJldHVybiBtX2lzQU1EOyB9CkBAIC03OCw3ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBm
cmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7CiAgICAgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5n
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDE1NDYyMzZmOGI2YmRiNTIyM2QwZWRlMzdhYjc0
ZjBlZDZmMTBiY2YuLjg2ZGNiZjMxZTY5ZDBmYzM3YjcyNjhkYTM3NzVjMjUwYzViNjg0Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogCiAgICAg
Ly8gRm9yIEdMX0VYVF9yb2J1c3RuZXNzLCBjaGVjayB0aGF0IHRoZSBjb250ZXh0IHN1cHBvcnRz
IHJvYnVzdCBhY2Nlc3MuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikKLSAg
ICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6OkNPTlRFWFRf
Uk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJVRTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9U
UlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXYKICAgICBtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBk
aXZpc29yKTsKIH0KIAotYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6c3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUg
PT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7CiAgICAgICAgIGF1dG8gbWFqb3JWZXJz
aW9uID0gW10oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDlhNTgxYTAwMGRk
MzcyZmYxZWNkZDkxZmY5OWRlYzk4YWQ4ZTM4NTguLjliYjUyZjliYWFhY2I1NzE2YzRkMDJiOWI1
YmY3OTFhNzhmNzUwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03MSw2ICs3
MSwxMiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIAogY2xhc3MgRXh0ZW5zaW9u
c0dMT3BlbkdMRVMgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIHsKIHB1YmxpYzoK
KyAgICAvLyBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJfU0FNUExFU19JTUcgPSAweDkxMzM7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJ
U0FNUExFX0lNRyA9IDB4OTEzNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9T
QU1QTEVTX0lNRyA9IDB4OTEzNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRV
UkVfU0FNUExFU19JTUcgPSAweDkxMzY7CisKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMg
dG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0
aW9ucy4KICAgICBFeHRlbnNpb25zR0xPcGVuR0xFUyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCos
IGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZyk7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3Bl
bkdMRVMoKTsKQEAgLTEwMSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRuVW5pZm9y
bWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IGludCAqcGFyYW1zKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgc3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBnZXRFeHRl
bnNpb25zKCkgb3ZlcnJpZGU7CiAKICAgICBHQ0dMZW51bSBtX2NvbnRleHRSZXNldFN0YXR1czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGYzMGI1ZTFlNmVhOWQw
MTU3NzRmODA2MGI5MTUzZjQ3ZTMwNjJlYWIuLmJiZjBlODFlYjk4NTUyNWYzMjQ3NzEyOGU0NDM3
MzMwNDlhOWM1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAt
MzEyLDE4ICszMTIsMjAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNHTEVTMkNv
bXBsaWFudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKEdUSykKLUV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQorI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKE9QRU5HTF9FUykKK0V4dGVuc2lvbnNHTE9wZW5H
TEVTJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYg
KCFtX2V4dGVuc2lvbnMpIHsKLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICAvLyBnbEdldFN0
cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KKyAgICAvLyBnbEdldFN0cmluZ2kgaXMg
bm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KKyAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAg
bV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4odGhpcywgIGZh
bHNlKTsKLSNlbHNlCi0gICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENv
cmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAgICByZXR1
cm4gKm1fZXh0ZW5zaW9uczsKK30KKyNlbGlmIFBMQVRGT1JNKEdUSykKK0V4dGVuc2lvbnNHTE9w
ZW5HTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQoreworICAgIC8v
IEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdl
IG11c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAg
bV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIEdMQ29u
dGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKLSNlbmRpZgotICAgIH0KICAgICBy
ZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpAQCAtMzUxLDEwICszNTMsOSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRl
cygpOwogCi0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0
ZW5zaW9ucygpOwogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwor
ICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KSkgeworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0
cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKQEAg
LTM2MiwxMSArMzYzLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRl
RGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpCiAgICAgICAgIHNldENv
bnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKICAgICB9CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAm
JiAhbV9pc0ZvcldlYkdMMikgewotICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0
c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkgewogICAgICAg
ICAgICAgYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgICAgICBzZXRDb250ZXh0QXR0
cmlidXRlcyhhdHRycyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZXh0ZW5zaW9ucy5l
bnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAg
ICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUiKTsKICAgICB9CiB9CiAKQEAgLTMwNjksNiArMzA3MCwzNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVt
LCBHQ0dMU3BhbgogICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTik7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBnZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChuYW1lKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZChuYW1lKTsKK30KKworR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAg
IHJldHVybiBnZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYnVmZmVycykKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmRy
YXdCdWZmZXJzRVhUKGJ1ZmZlcnMpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRl
cikKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShzaGFkZXIpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCB1bnBh
Y2tBbGlnbm1lbnQpCiB7CiAgICAgQVNTRVJUKHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFj
a0FsaWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVu
dCA9PSA4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggOTFmZWZlZjUx
MmY2NTI4YmMzYTc3ODMxZWJlOWI2NDUxZDk3NDU2Yy4uNTk3OTY4ZTBmZmU5Mjc4MzA4MDYxMzI5
M2JmZjgwYWM4MDgyMGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTQzLDEwICs0Myw5IEBAIGNsYXNzIEdDR0xMYXllcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBFeHRlbnNpb25zR0w7CiAjaWYgVVNFKE9QRU5HTF9FUykKIGNsYXNzIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOwotI2VsaWYgVVNFKE9QRU5HTCkKKyNlbHNlCiBjbGFzcyBFeHRl
bnNpb25zR0xPcGVuR0w7CiAjZW5kaWYKIGNsYXNzIEhvc3RXaW5kb3c7CkBAIC0zNzAsNiArMzY5
LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJy
aWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBp
bnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAKKyAgICBib29s
IHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBHTGludCBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisKICAgICAvLyBIZWxwZXIgbWV0
aG9kcy4KICAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKTsKICAgICB2b2lkIHJlY3ljbGVDb250
ZXh0KCk7CkBAIC00MDUsMTEgKzQxMSwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBTdXBwb3J0IGZv
ciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90CiAgICAg
Ly8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBv
biB0aGUKLSAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpz
dXBwb3J0cygpIHRvCisgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lv
bnNHTE9wZW5HTHtFU306OnN1cHBvcnRzKCkgdG8KICAgICAvLyBkZXRlcm1pbmUgdGhpcy4KLSAg
ICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCi0gICAg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7Ci0KKyNpZiBV
U0UoT1BFTkdMX0VTKQorICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVTJiBnZXRFeHRlbnNpb25zKCk7
CisjZWxzZQorICAgIEV4dGVuc2lvbnNHTE9wZW5HTCYgZ2V0RXh0ZW5zaW9ucygpOworI2VuZGlm
CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3Rp
bmcpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwpA
QCAtNDIwLDcgKzQyOCw3IEBAIHByb3RlY3RlZDoKICAgICBHQ0dMdWludCBtX3RleHR1cmUgeyAw
IH07CiAKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgotICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0
aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wgdGhhdCBldmVudHVhbGx5IGNh
bGwgT3BlbkdMLgorICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBv
aW50cyBvZiBFeHRlbnNpb25zR0xPcGVuR0wvRXh0ZW5zaW9uR0xPcGVuR0xFUyB0aGF0IGV2ZW50
dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSBXQVJOX1VO
VVNFRF9SRVRVUk47CiAKICAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVl
c3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsCkBAIC01MTIsMTMgKzUyMCwxMiBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZGVyTmFtZUhhc2g+IG5hbWVIYXNo
TWFwRm9yU2hhZGVyczsKIAorICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b247CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM7Ci0gICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+IG1fZXh0ZW5zaW9uczsKLSNlbGlm
IFVTRShPUEVOR0wpCisjZWxzZQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7
Ci0gICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCA2OGI2Y2QzZjUy
NGJmNmEwOWVhZjdmZDY4NDhmYmFjMWRhNzMzYWIzLi5jMzViMmYwZjE1ZDljZDA5YjliMjhiZTBi
ZjQ0Nzc4ODc0MzA1NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcApAQCAtMzQ1LDEwICszNDUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKICAg
ICAgICAgdHlwZSA9IEdMX0hBTEZfRkxPQVRfQVJCOwogICAgIH0KIAotICAgIEFTU0VSVChmb3Jt
YXQgIT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUKTsKLSAgICBpZiAoZm9ybWF0ID09
IEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQpCisgICAgQVNTRVJUKGZvcm1hdCAhPSBHcmFw
aGljc0NvbnRleHRHTDo6U1JHQjhfQUxQSEE4X0VYVCk7CisgICAgaWYgKGZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQpCiAgICAgICAgIG9wZW5HTEZvcm1hdCA9IEdM
X1JHQkE7Ci0gICAgZWxzZSBpZiAoZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpCisg
ICAgZWxzZSBpZiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCkKICAgICAg
ICAgb3BlbkdMRm9ybWF0ID0gR0xfUkdCOwogI2VuZGlmCiAKQEAgLTM5OCw3ICszOTgsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgp
CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0wm
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1f
ZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25z
R0xPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMzg2NDE5OGY3NGE1OTJiYTQyOWM2ZDBhOGJjNjFk
ZTgxYTM4ZjYwOS4uODNiOWI4NmM1MzI3MmZjNTQxNTdjOTBmNDY2NWFmODExOThkYTRmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNp
emUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNp
bCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgIC8vIFNlZSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgotICAgIGJvb2wgc3VwcG9ydFBhY2tlZERl
cHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0
aCkgJiYgZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmli
dXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZC
Ty4KICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7CkBAIC0xMzEsMTAgKzEzMSwxMCBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKICNlbmRpZgog
Ci0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRl
bnNpb25zR0xPcGVuR0xFUyY+KGdldEV4dGVuc2lvbnMoKSk7CisgICAgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGV4dGVuc2lvbnMu
aXNJbWFnaW5hdGlvbigpICYmIGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7CiAgICAgICAgIEdMaW50
IG1heFNhbXBsZUNvdW50OwotICAgICAgICA6OmdsR2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpN
QVhfU0FNUExFU19JTUcsICZtYXhTYW1wbGVDb3VudCk7IAorICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Ok1BWF9TQU1QTEVTX0lNRywgJm1heFNhbXBsZUNvdW50
KTsgCiAgICAgICAgIEdMaW50IHNhbXBsZUNvdW50ID0gc3RkOjptaW4oOCwgbWF4U2FtcGxlQ291
bnQpOwogCiAgICAgICAgIGV4dGVuc2lvbnMuZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBs
ZUlNRyhHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQs
IG1fdGV4dHVyZSwgMCwgc2FtcGxlQ291bnQpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiAKICAgICBhdXRvIGF0
dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50
aWFsaWFzICYmICFnZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0lNR19tdWx0aXNhbXBsZWRf
cmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAh
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUi
KSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAgICBzZXRD
b250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CkBAIC0yNjcsNyArMjY3LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRo
KQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdM
RVMmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAo
IW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNp
b25zR0xPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5jcHAKaW5kZXggZTU0YWUzZjc5OWY4NTJlMWVlN2E3MDYwN2M5MDdiZmMyYzQ1YWMxMi4uOTFl
OGVhODAxNGI3YTk1ODkwMGI0ZjcxYzYwNDM3MTk2NmMxNWRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3
NTBhODRhZjYzODJjNTQxMzBjZjM2ZTg2ZDliYzhjNzYwNGNmYmNiLi43NTI4YzBlOTdmN2U1NmI4
NTc5YWFiNWFlY2Q2N2I5MmIwNWViNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDcsMTUgKzQ3LDggQEAKICNpbmNsdWRlICJPcGVu
R0xTaGltcy5oIgogI2VuZGlmCiAKLSNpZiBVU0UoQU5HTEUpCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMQU5HTEUuaCIKLSNlbHNlCisjaWYgIVVTRShBTkdMRSkKICNpbmNsdWRlIDxBTkdMRS9TaGFk
ZXJMYW5nLmg+Ci0jaWYgVVNFKE9QRU5HTF9FUykKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVu
R0xFUy5oIgotI2Vsc2UKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0wuaCIKLSNlbmRpZgog
I2VuZGlmCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTEwOCw3ICsxMDEsMTIgQEAgcHJpdmF0ZToK
IAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0
cmlidXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgIGF1dG8gY29udGV4dCA9IGFk
b3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmli
dXRlcykpKTsKKyNpZiBVU0UoQU5HTEUpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCisgICAgcmV0dXJuIGNvbnRleHQ7CiB9
CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKQEAgLTE0OCw3ICsxNDYsOCBAQCBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleAogCiAgICAgLy8gQ3JlYXRlIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBv
YmplY3QgZmlyc3QgaW4gb3JkZXIgdG8gZXN0YWJsaXN0IGEgY3VycmVudCBjb250ZXh0IG9uIHRo
aXMgdGhyZWFkLgogICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7
Ci0KKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogI2lmIFVTRShM
SUJFUE9YWSkgJiYgVVNFKE9QRU5HTF9FUykgJiYgRU5BQkxFKFdFQkdMMikKICAgICAvLyBCYWls
IGlmIEdMRVMzIHdhcyByZXF1ZXN0ZWQgYnV0IGNhbm5vdCBiZSBwcm92aWRlZC4KICAgICBpZiAo
YXR0cmlidXRlcy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246
OldlYkdMMiAmJiAhZXBveHlfaXNfZGVza3RvcF9nbCgpICYmIGVwb3h5X2dsX3ZlcnNpb24oKSA8
IDMwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4
IDJkYjJlOGQ3ZDljZDdiOWNhYmI0YzljYTQxNzI0M2YwZTdhMGI1MjIuLjkxZmE1NWJjZjg0ZDcx
OTcwYmM1MGY4NDM3N2U1NWE0MGQ3ZjBhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBP
UlQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4
dEdMVGUKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcj4gY3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsK
ICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7Ci0KKyAgICAKICAgICAvLyBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KICAgICBSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtNTYsNiArNTYsOCBAQCBw
dWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJp
bGl0eShib29sKSBmaW5hbDsKKyAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygp
IGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNlbmRpZgogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckFOR0xFLmNwcAppbmRleCA2NmUzMmFhMDMzM2Y3YjhhNmI1ZjQ4NzQyYTY4NTc5ZGVlZjcx
Y2U1Li5iZmNmNzIxZmY1YzFlNGZiNzVlNmJkODhlZDBmNzUzZjlkODNlYTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkFO
R0xFVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZl
ci5oIgogCkBAIC02Nyw2ICs2Niw4IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpCiAjZW5kaWYK
ICAgICBib29sIHN1Y2Nlc3MgPSBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBBU1NFUlRfVU5V
U0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplKCk7CisgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBo
YXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCkBAIC0yNjAsMTEgKzI2MSwxMSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9v
bCkKIHsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlRm9yRGlzcGxh
eSgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogewogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5
QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKICAgICBjb25zdCBhdXRvIHNpemUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVy
U2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBkMjYxYTQwMjRjZjdlZjcxODdhMTBm
NDc3ZWI1MzNlZjI0NmM4OGNhLi5hMzdmNGE1OGM2ZTgwZDM2NjQ2MjNmYzc2ZDEwMGE5MzY5MzE1
NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVk
ZSAiQml0bWFwVGV4dHVyZUdMLmgiCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVyZVBvb2wuaCIKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2
MmMzNDJjMzNiNi4uODk3MmMyMzk2MzlkYzNjNTA1ZGQ4YmFmZjRhMzA3NGM2Zjk5MjQ3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHIKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIG1fY29udGV4dC0+YWRk
Q2xpZW50KCp0aGlzKTsKICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdl
dFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7Ci0gICAgICAgIFN0cmluZyBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6
OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgICAgICBTdHJpbmcgcmVxdWVzdGFi
bGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHRydWUsIHJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkud2FrZVVwU2VtYXBob3JlKCksIGV4dGVuc2lvbnMs
IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykpOwogICAgIH0gZWxzZQogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJUEM6
OlNlbWFwaG9yZSB7IH0sICIiLCAiIikpOwpAQCAtMTg4LDEwICsxODgsMTAgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXJyb3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGwKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoU3RyaW5nJiYgZXh0ZW5zaW9uKQogewogICAgIGFzc2VydElzQ3VycmVudCht
X3N0cmVhbVRocmVhZCk7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZChleHRlbnNpb24pOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChl
eHRlbnNpb24pOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRl
eHRDaGFuZ2VkKCkKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAg
IG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmlu
ZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLmQ4Yjk4MjA3MTBi
NzJkOWI0NDA4YjliYzkwNTc1YmFlMmE2MGQ4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRBc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTk0LDkgKzkz
LDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNh
dGlvbigpIGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9p
ZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKICAgICB2b2lkIGVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOwotICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRD
aGFuZ2VkKCk7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICB2b2lkIHJlc2hh
cGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgPSAwOwogI2VsaWYgVVNFKEdSQVBISUNTX0xBWUVS
X1dDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIy
OTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4OThlMzAyYjIuLjk3NjgwYTg3YWIzYWE0YTA3M2Yy
MTkzM2M1ZmVjYjViMjI0ZGZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVz
c2FnZXMuaW4KQEAgLTM2LDcgKzM2LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXko
KSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFi
bGVkKFN0cmluZyBleHRlbnNpb24pCi0gICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQo
KQorICAgIHZvaWQgTWFya0NvbnRleHRDaGFuZ2VkKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVy
cm9yKHVpbnQzMl90IGVycm9yKQogICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+
ICgpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oCmluZGV4IGQxYzMyOTA1MTdkMjk2YzUxZTM1NmU4YjRlNTcwYzA2N2Ji
Nzc1OGQuLjkzYmQ2NzcxNjhiYjQ0Yzk4MTM0ZGM3ODk4YzkwM2UwZmJkMDNlNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0x
MzM3LDIwICsxMzM3LDIwIEBACiAgICAgewogICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0g
eyB9OwogICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OwogICAgIH0KICAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICB7CiAgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICAgICAg
YXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
YXJnMCk7CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoYXJnMCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmV0dXJuVmFsdWUpKTsKICAgICB9CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCiAgICAgewogICAgICAgICBhc3NlcnRJc0N1cnJl
bnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5k
cmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51
bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3
QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+
KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKICAgICB9CiAgICAgdm9pZCBnZXRJbnRlcm5h
bGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQz
Ml90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDdhZTFlZTc2
ZGM0YjA3YzQwM2Y2MGI4YWQxM2RhZDliODdiZGVkMGEuLjM4Yzk0YjNhOGI3N2YwMjE5ZjE2Y2Qz
MjA5OWVjY2RmYzc5MzBmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKIAogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
KGF0dHJpYnV0ZXMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKQogICAgICwg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0
cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0
U3RyZWFtU2l6ZSkKIHsKQEAgLTU5LDMxICs1OSw3MyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiAgICAgZGlzY29ubmVjdEdw
dVByb2Nlc3NJZk5lZWRlZCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRo
OwotICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVp
Z2h0KSk7Ci0gICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiti
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25z
dAogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pKTsKLSAgICBpZiAoIXNlbmRSZXN1bHQpCi0g
ICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworI2lmIEVOQUJMRShXRUJHTDIpCisgICAgcmV0dXJu
IGNvbnRleHRBdHRyaWJ1dGVzKCkud2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2Vi
R0xWZXJzaW9uOjpXZWJHTDI7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1hcmtDb250ZXh0Q2hhbmdlZCgp
Cit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisg
ICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjpt
YXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1hcmtDb250ZXh0Q2hhbmdlZCgpKTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQog
fQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0
Q2hhbmdlZCgpCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN1cHBvcnRzRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgp
OworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9y
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSkpIHsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7Cisg
ICAgICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQorfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5p
dGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdGFibGVFeHRlbnNpb25zKQoreworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZh
aWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuYWRkKGV4dGVuc2lvbik7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
YWRkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3Qo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSk7Cisg
ICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpOwogICAgIGlmICghc2VuZFJlc3VsdCkKICAg
ICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCmluZGV4IDI5ZjAxOTg3MTk1NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5NzM5NzEu
LjU3M2Y3Y2I0YzBjOTVmNTQ1ZWY2ZTA2NTQ0ODQ2ZjE3NDhjMzNhMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAi
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eQogICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgICwgcHJpdmF0ZSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgLCBwdWJsaWMg
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgeworICAgICwgcHVibGlj
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAg
ICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKTsKQEAgLTU4LDExICs1OCwxNCBAQCBw
dWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CiAKLSAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCisg
ICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgogICAgIHZvaWQgcmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHVzaW5nIFdlYkNvcmU6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7Ci0gICAgdm9pZCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKLSAgICB2
b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29u
c3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKQEAg
LTMyMSw5ICszMjQsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAot
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KLSAgICB2
b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7Ci0KICAgICBib29sIGlzQ29udGV4dExv
c3QoKSBjb25zdCB7IHJldHVybiAhbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsgfQogICAgIHZvaWQg
bWFya0NvbnRleHRMb3N0KCk7CiAKQEAgLTM1MCwxMSArMzUwLDE4IEBAIHByaXZhdGU6CiAgICAg
Ly8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CiAK
KyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YWl0VW50aWxJ
bml0aWFsaXplZCgpOwogICAgIHZvaWQgZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgpOwog
ICAgIHZvaWQgYWJhbmRvbkdwdVByb2Nlc3MoKTsKIAogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9u
KiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFs
c2UgfTsKKyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFz
aFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4g
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVk
RXh0ZW5zaW9uczsKICAgICBHQ0dMZW51bSBtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3QgPSBOT19F
UlJPUjsKICAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gbV9zdHJlYW1Db25uZWN0aW9u
OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA4YjdlNDIyODM2MzViNzc2Mjk1OGFjZjFkYjE4YjAwZDEzM2E0ODU5Li5hMTUzNDE0NjNmMDc5
ZTMwM2Y3NjljZTVlZDFjNjRlY2Q1ZjNjNDYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTEgIEtpbW1v
IEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbnNpb25zR0wg
aXMgbm90IHVzZWZ1bCBjbGFzcywgaXQgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQ5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBtYW51YWxseSBpbXBsZW1l
bnRlZCBmdW5jdGlvbnMuCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgor
CiAyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgc3VwcG9ydCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRl
M2I4OWY3NWZmZTZiMTgxLi5jNjVkODc2YTRhZjIxMWNiZjczY2I3Mjk4NjQzMTA4MWI2MGY4OGY2
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC00MSw3ICs0MSw2IEBAIGltcG9ydCBj
b2xsZWN0aW9ucwogZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxs
YWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIK
IAogcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4u
IikucmVzb2x2ZSgpCi1leHRlbnNpb25zX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAv
ICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgog
CiBmdW5jdGlvbnNfaW5wdXRfZm5zID0gWwogICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2Vi
S2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgiCkBAIC05OCw3ICs5Nyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBQcmVwYXJl
Rm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKLSAgICB2b2lkIE5vdGlmeU1hcmtDb250
ZXh0Q2hhbmdlZCgpCisgICAgdm9pZCBNYXJrQ29udGV4dENoYW5nZWQoKQogICAgIHZvaWQgU3lu
dGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCiAgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKQEAgLTQyMCwxNCArNDE5LDEyIEBAIGNsYXNzIGNw
cF9mdW5jKG9iamVjdCk6CiAgICAgbmFtZTogc3RyCiAgICAgYXJnczogY3BwX2FyZ19saXN0CiAg
ICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCi0gICAgaXNfZXh0ZW5zaW9uOiBib29sCiAgICAgb3Zl
cmxvYWRfc3VmZml4OiBzdHIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJl
dHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJv
b2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBf
dHlwZSwgYXJnczogY3BwX2FyZ19saXN0KToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAg
ICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKICAgICAgICAgc2VsZi5hcmdzID0g
YXJncwotICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgogICAgICAgICBz
ZWxmLm92ZXJsb2FkX3N1ZmZpeCA9ICIiCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTcx
MSw3ICs3MDgsNiBAQCBjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRv
cihvYmplY3QpOgogY2xhc3Mgd2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgogICAgIG5hbWU6
IHN0cgogICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAotICAgIGlzX2V4dGVuc2lvbjogYm9vbAogICAg
IHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KICAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KICAg
ICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQpAQCAtNzIzLDcgKzcxOSw2IEBAIGNsYXNzIHdl
YmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKICAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMu
bmFtZQogICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNwcF9mdW5jLm92ZXJsb2FkX3N1
ZmZpeAogICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3QoW10pCi0gICAgICAgIHNlbGYu
aXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCiAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxm
LnBvc3RfY2FsbF9zdG10cyA9IFtdCkBAIC03MzgsMTIgKzczMywxMSBAQCBjbGFzcyB3ZWJraXRf
aXBjX2NwcF9pbXBsKG9iamVjdCk6CiAKICAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgogICAg
ICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWyAiYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFk
KTsiIF0KLSAgICAgICAgZXh0ID0gImdldEV4dGVuc2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5z
aW9uIGVsc2UgIiIKIAogICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUg
aW4gc2VsZi5pbl9leHBycykKICAgICAgICAgaXNfYXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMp
ID09IDAKIAotICAgICAgICBjYWxsX2V4cHIgPSBmIm1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1l
fSh7aW5fZXhwcnN9KSIKKyAgICAgICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntzZWxmLm5h
bWV9KHtpbl9leHByc30pIgogICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoK
ICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQogICAgICAg
ICBlbHNlOgpAQCAtODc5LDggKzg3Myw4IEBAIGRlZiBjcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nf
c3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgogICAgIHJldHVybiBjcHBfYXJnX2xpc3QoW2NyZWF0ZV9j
cHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwgZSBpbiBlbnVtZXJhdGUoYXJn
c19zcGVjcyldKQogCiAKLWRlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3RyLCByZXR1cm5fc3Bl
Yzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVuc2lvbjogYm9vbCk6Ci0gICAg
cmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVy
bl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpLCBpc19leHRlbnNp
b249aXNfZXh0ZW5zaW9uKQorZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9z
cGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5h
bWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVh
dGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpKQogCiAKIGRlZiByZWFkX2xpbmVzX3VudGlsKGxp
bmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5vbmUs
IE5vbmVdOgpAQCAtODk2LDIwICs4OTAsNiBAQCBkZWYgbWFpbigpOgogCiAgICAgIyBDb25zdHJ1
Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQ
VSBwcm9jZXNzLgogCi0gICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVt
b3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgotICAgICMgd2l0
aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBl
eHRlbnNpb24gZnVuY3Rpb24uCi0gICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9
IHNldCgpCi0gICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6Ci0gICAgICAg
IGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICBtID0gcmUubWF0Y2gociIu
KnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQotICAgICAgICAgICAg
aWYgbToKLSAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAotICAgICAgICAg
ICAgICAgICAgICBuYW1lPW1bMl0sCi0gICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1b
MV0sCi0gICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3Mo
bVszXSksCi0gICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAotICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0
cihmdW5jKV0pCiAgICAgZnVuY3MgPSBbXQogICAgIHVuaW1wbGVtZW50ZWQgPSBbXQogICAgIGZv
ciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgpAQCAtOTI2LDkgKzkwNiw3IEBAIGRlZiBtYWlu
KCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBh
cmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAotICAgICAgICAgICAgICAgICAg
ICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg
ICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9z
aWduYXR1cmVzCiAgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQogICAgICAgICAgICAg
ICAgICAgICBlbHNlOgo=
</data>
<flag name="commit-queue"
          id="478495"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451681</attachid>
            <date>2022-02-11 05:47:50 -0800</date>
            <delta_ts>2022-02-11 06:37:51 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236490-20220211154747.patch</filename>
            <type>text/plain</type>
            <size>282620</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uNDA1NWY5MWUxZDUyMjliMThkN2Y4MjlhMjFkNDVj
NDEwNTIxOGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJv
dGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFnZSI+
IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTM1
Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZWJjMDFjOWZiNDA4YmQxNjZk
NTQ2OTBkZTU4NjgzZjlhNjUxZjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTEx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDU3YzRhYTliMWExOGNjZmE5YWIyODdlNGUwYjM3MGVlM2FkNTA5Yy4uMWQ2
ODAxNTBlYmY5YzExMTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MDgsNyArMTkwOCw2IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICkKICAg
ICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFm
NWJhZmFjMi4uNDI4OWIxM2FkZTgwM2YyZjJhOTQwOTVjMzg1OGNkZWMzNzM3NTFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xNDM1LDcgKzE0MzUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgKQEAgLTE1NTMsNyArMTU1Miw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMTU4MSw3ICsxNTc5LDYgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
SGVhZGVycy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMjM5YTIyYmQxMDMwMjFkMTI3NTI2YTBmNDhjNzAxZDliNjc0MGUzNS4uYWRkYzEw
MjFmODA5M2UxMDE1OTZmYTc0ZGJhYjY5MGZjYzk4Zjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzIsMTIgKzI3MiwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwog
ICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbGlmIFVTRShP
UEVOR0xfRVMpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5z
aW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGF1dG8mIGV4dGVuc2lv
bnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4
dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwg
PSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsK
ICNlbHNlCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBhdXRvJiBleHRlbnNp
b25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCY+KGdsKS5nZXRF
eHRlbnNpb25zKCk7CiAgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2ls
ID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9D
T01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5U
OwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBG
cmFtZWJ1ZmZlcigpCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBnbC5nZXRJbnRlZ2VydihHTDo6
TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbHNlCi0g
ICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dM
U3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NHTFNwYW4oJm1heFNhbXBsZUNvdW50LCAx
KSk7CiAjZW5kaWYKICAgICAgICAgLy8gQ2FwIHRoZSBtYXhpdW11bSBtdWx0aXNhbXBsZSBjb3Vu
dCBhdCA0LiBBbnkgbW9yZSB0aGFuIHRoaXMgaXMgbGlrZWx5IG92ZXJraWxsIGFuZCB3aWxsIGlt
cGFjdCBwZXJmb3JtYW5jZS4KICAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1h
eFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0
YWIzM2E4YmQ3NWU3YTU4YS4uOGM4MDVmMmYwNzdmZmVjYWI3YzUxNWE2YWM3NzQ1ZmIzZWMxY2Nm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIwNzMsNyArMjA3Myw2IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQx
ZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uN2JkNWEyNGI0YTYxYWJhMjEwYmZiNDVhYThjYjczMzIz
MjJmNWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTUsNiArNjE1LDUgQEAgdGVz
dGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCiAvLyB3aXRo
IGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdMLgogCiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2
MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uYjQ1YmQwZDlmYTJkMWM1NmQ1ZGYyMGIx
MjZiYTJjMzU3YWY2NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NywxMSArMjE4Nyw4IEBACiAJCTZFNDdFNjYxMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJD
RDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQy
OTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBF
eHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Ki87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUy
OTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07
Ci0JCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDQyMjlDOUY4
RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi87IH07CiAJCTZFNzJGNTUxMjI5RENE
MUEwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLzsgfTsKIAkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RThBQ0RFRDIzMzQ1
Q0JDMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4QUNERUIyMzM0NUNBRjAwMjRBQUY1
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCAqLzsgfTsKQEAgLTI0MTIsNyArMjQwOSw2
IEBACiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhB
QzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5NUNGRUQyNzU0
RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwODY5LDggKzEwODY1LDYgQEAKIAkJNkUyNDJCMjkyMzM1OTNENzAw
MkNBREQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjQyQjJBMjMzNTkzRDgwMDJDQURENCAvKiBKU1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xB
TkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25z
R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQ0MjI5QzlG
OEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFyeUFOR0xFU2V0
dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYzMjI5REI5NzAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA5MDIsNyArMTA4OTYsNiBAQAogCQk2RTUzODhFMDI0NThBRTFEMDA3NkFFMDMgLyogV2Vi
R0xDb2xvckJ1ZmZlckZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTM4OEUxMjQ1OEFF
MUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29sb3JC
dWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTc2QkMzMjRF
QjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVu
c2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTdDQTMwQTI1QjREMjhB
MDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMTXVs
dGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFN0NBMzBCMjVCNEQzMjgw
MDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xNdWx0aURyYXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTg0RTlERTE3
NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE1MjYsNyArMTE1MTksNiBAQAogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I5MDQxNkUyNTUwMTEw
OTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTVDRkVDMjc1
NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1NDIsNyArMTE1MzQsNiBAQAogCQk3
QkREQTMxRDI3NEY5REE1MDAzODY1OUUgLyogR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzQ5Mjc1QTAxMzAwMDM4NjU5RSAvKiBQ
cm9jZXNzSWRlbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c0lkZW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzRCMjc1QTAx
MzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RUYy
NzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRkY1OUYxMjc1NzcxRTgwMDc3M0QzOSAv
KiBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdz
LmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0Mzk1LDggKzI0Mzg2LDYgQEAKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIg
LyogQU5HTEVIZWFkZXJzLmggKi8sCiAJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFO
R0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5H
TEVVdGlsaXRpZXMuaCAqLywKLQkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwICovLAotCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRl
bnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKIAkJCQk3Qjk1Q0ZFQzI3NTRGRjdDMDAwMDYwQ0Ug
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5
ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLApAQCAtMjg4NzAsNyArMjg4NTks
NiBAQAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcyQyAvKiBEaXNwbGF5VXBkYXRlLmNwcCAq
LywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMgLyogRGlzcGxheVVwZGF0ZS5oICovLAog
CQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLywK
LQkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8sCiAJCQkJ
MkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5jcHAgKi8sCiAJCQkJMkU4ODhD
QTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5oICovLAogCQkJCUIyNzUzNTNBMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKQEAgLTI5MDY1LDggKzI5MDUzLDYgQEAK
IAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyogUGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAot
CQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgKi8sCi0JCQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEw
OEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBF
QTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMzQ0NDEsOCArMzQ0MjcsNiBAQAogCQkJ
CTJEMjkzODZCMjM1RjZCNjkwMEM3RjNCMiAvKiBFeGNlcHRpb25EZXRhaWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTcyRjU1MDIyOURDRDE3MDBC
M0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0UyNzY1
MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY3NjEsNyArMzY3NDUsNiBA
QAogCQkJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjkwNDE3MDI1NTAxMTQy
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXli
YWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0MjE3
N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
ODY0OCw3ICszODYzMSw2IEBACiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1By
b3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyMjgzMDMyM0E4NDcwNzAwMzY0
QjdFIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTU5MjI4MEU5MjYw
MDJCMjJBQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkU3
MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdhbWVDb250
cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRENjE2MDBG
QTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRleCA4MjIwMzM5MTVk
MDRlM2IwYzI5NjJmYmI1MjM0ZTkzNGY5M2E3MTE3Li44NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZm
YzE4N2Y2Y2Y1YmJlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
QU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0yOCwxMCArMjgsNiBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbmNsdWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0o
R1RLKSB8fCBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKFdQRSkKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArMzgsNyBAQCBBTkdMRUluc3RhbmNlZEFycmF5czo6
QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKICNlbmRpZgogfQogCkBAIC01MywxMCArNDksMTAgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBBTkdMRUluc3RhbmNlZEFycmF5c05hbWU7CiB9CiAKLWJvb2wgQU5HTEVJbnN0YW5jZWRBcnJh
eXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBB
TkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDMyZWI4
OTdiMTZkOTA5ZDM5NGExMGE3ODUxYzFlMzI2NzU0ZWM5MzYuLjY5YzQ0ZGQ0OTEzYWZlM2Q1ZjBl
YjNkZjMwYTgxN2MzNGJmZjA4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKaW5kZXggMDllNTBjNGNiYWQzZjU5
OGEzMjJkOTA1MWM5ODNmZmIwZTdiMjVlNy4uNzk2NTYwYmQ0Y2U2YTUwOTYxNjNiZTE5NDAwYmVl
ZTI0ODJmMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsMTAgKzM3LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRD
b2xvckJ1ZmZlckZsb2F0KTsKIEVYVENvbG9yQnVmZmVyRmxvYXQ6OkVYVENvbG9yQnVmZmVyRmxv
YXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
S2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zs
b2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVYVENvbG9y
QnVmZmVyRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSAr
NTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckZsb2F0
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9
CiAKLWJvb2wgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZm
ZXJGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5oCmluZGV4IGViMjlmYTBlNTQ5M2EyNDgxMWNjMTA2ODczNjNhMWQ4OWNiZGZkNzYuLjk1NDhm
MGY5M2YwZTQ2N2Q2YjkyYWFlZmRjNTk1M2Y0OGQ1MzgwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCmluZGV4IDc5ZTFjYzE5ZDFlYmY3
ZWMwNzQ3ZTM2NWIyMGJmNDFiY2MzMzIwNGYuLjBlZmVkODNhZDZhOTFmMDQ0MWIyM2U0NzE0MmFi
OTg3NzgzMzQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KTsKIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0
OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29s
b3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
Il9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdCgpID0gZGVmYXVsdDsKQEAgLTQ4LDEwICs0NywxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0
ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxm
RmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZs
b2F0LmgKaW5kZXggMTA3NzllZjZjMmM5YzQyNmYzZDY1MTE2MWU4ZjZkMGRkZjIzY2Y3NS4uNmY0
YmM0ODFhMzA0ZjY0ZDQ1ZDkyMmIxYjcyMzExZmM5OGQ5Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKaW5kZXggOGVmNjg3OTMzYWFlY2Y1YjhkMzNjZTAy
MDc4ODJjMmJkZDU3ODk2MS4uYmRkODVkMDcwZDA4NzEzOTYzZGMxN2IxNjRhMmZiYWVlNjA3MDIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhURmxvYXRCbGVu
ZC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhURmxvYXRCbGVuZCk7CiBFWFRGbG9hdEJsZW5kOjpF
WFRGbG9hdEJsZW5kKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBFWFRGbG9hdEJsZW5kOjp+RVhURmxvYXRC
bGVuZCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgRVhURmxvYXRCbGVuZDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVYVEZs
b2F0QmxlbmROYW1lOwogfQogCi1ib29sIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBFWFRGbG9hdEJsZW5kOjpz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZmxvYXRfYmxlbmQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCmluZGV4IDIyYzMwMmEz
MzBhNjIyMjM1Y2Y2ODUyOTNjZDhjMTY4NTZhNDU3YmUuLjQ0NmI5ZmYzNzFkYzI5MmI4ZmU2MTgy
OTMyZDU4ZjU2NjYwNjc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZsb2F0QmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9h
dEJsZW5kLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcAppbmRleCA0NjNhNTg3M2NmMzA5NjMxMmQ5N2Q2MzI3ZjYxYWU4MWU0NzFkZDdk
Li40NmM5NjBmMTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM4LDEyICszNywxMiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9S
R1RDMl9FWFQpOwogfQogCiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCmluZGV4IDUyNzEzOGYzMGY3
NWZhZDA3Mzk4NTk0YjMzM2E3ZGY5YzE0MmQyODAuLmU2NmJiODI0M2E3Mzc5MjFhMGQ1MzUzNzVm
ZWM2Y2RmM2IzOWFmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCIKIAotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk7CiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGU6OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3BhcmFsbGVsX3NoYWRl
cl9jb21waWxlIl9zKTsKIH0KIAogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjp+S0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGVOYW1lOwogfQogCi1ib29s
IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3Bh
cmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKIH0KICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKaW5kZXggMWZjZmMyYjU4ZWQ5ZmI0ZTZkMTE3
NDE4NjE0N2RmM2JkYzAyNTNhOS4uODM4MDRkNmRmOWYyNjMxZDlhNzNkOTUwOGVhNzEwZjlhY2I1
MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1h
cC5jcHAKaW5kZXggNzFhODFkMGQ5MzA5ZDY0NGVlNDg2OGJkYWEyM2VkODc4NGFmNTIxYi4uNjUy
MjBiN2FiYzA3MTMzNTY1NmJkN2ZiMzUzNjJmM2U0YTIyZjZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIk9FU0ZCT1JlbmRlck1pcG1hcC5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTRkJPUmVuZGVyTWlwbWFwKTsKIE9FU0ZCT1JlbmRlck1pcG1h
cDo6T0VTRkJPUmVuZGVyTWlwbWFwKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiBPRVNG
Qk9SZW5kZXJNaXBtYXA6On5PRVNGQk9SZW5kZXJNaXBtYXAoKSA9IGRlZmF1bHQ7CkBAIC00OCw5
ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU0ZCT1JlbmRlck1pcG1h
cDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU0ZCT1JlbmRlck1pcG1hcE5hbWU7CiB9
CiAKLWJvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBt
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCmlu
ZGV4IDMzOTZmOWUxZTExNGU1MWFmY2RmZGQ4M2YzZWQyZWI2ODMzZTZkZjIuLjAyYTcyOGNjZWUx
ZmViZTAwNmQyZDk2YTRkMDg3MGQ4YTRmMjA0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwCmluZGV4IGU5MmIyZmVmYmYwOTQ2OGJlY2RiZDFlZjhkOWRkMjEwZDViOGMy
MGYuLjVkMWU4OTY3N2U2MTJjMjk3ZTQ2MjkxMTg0MzY3MzhmMzU5YjlkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTVGV4dHVyZUZsb2F0KTsKIE9FU1RleHR1cmVGbG9hdDo6T0VT
VGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9z
KTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWly
ZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAK
IE9FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTUzLDkg
KzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUZsb2F0Ojpn
ZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsKIH0KIAotYm9v
bCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0Nv
bnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsK
KyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxv
YXQiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IDhhNzI3NGRkZWNhOGY3ZDNiMjM0NjU2
YWIzZGY1YzdkOGZmZWQwNmMuLjEwZTE5ZWI3MGE3YmFkOTNlYzY5OWIwOWE2YTU3ODkyOWY1N2M4
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKaW5kZXggNDBiOTg5
OTZmNjdhYzFlOGFiNjVjZDY2NmQ2M2QyN2QzOWYzMWNlZS4uNGVhODY2ZGVlMjRjYzVhMGNlMWEz
MDgxZWU5NzM5Y2IwZTBhMzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUg
Ik9FU1RleHR1cmVIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9FU1RleHR1cmVIYWxm
RmxvYXQpOwogT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiX3MpOwogICAgIC8vIFJlbmRlcmFiaWxpdHkgaXMgaW1wbGljaXQgd2hl
biB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQog
CiBPRVNUZXh0dXJlSGFsZkZsb2F0Ojp+T0VTVGV4dHVyZUhhbGZGbG9hdCgpID0gZGVmYXVsdDsK
QEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVy
ZUhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU1RleHR1cmVIYWxmRmxv
YXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlSGFsZkZs
b2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXQuaAppbmRleCBhMzU0ZmNiN2UzOWI1MzBiZjQ5MzM2MTI5Njg5MTM2ZWE5NjIx
NjYzLi5kNTE5NDZhYmE0MzkwNGYzMDZlMWE3ZDA3Y2YwMGI5YWViZGU1MTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCAzMGQ0YjNmZjBj
YmQyNGY1MzgwODYzMGJjYzQzMDY3ZDhjZThmMDZkLi40ZjI4NWM1ZjRjMmUwMzAxZGJmNTQ3NDAz
Y2ZmMTBjYzg2OTRmZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
V0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDVhMzg3OTU3YzI2MDY2MjJkYjQ2ZjRiZjYw
ODhiZTMzMTA2MWFiYmIuLjZkMGE4NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTI0MCwxMCArMjM5LDEwIEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkK
IHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRoZSBXZWJHTCAyLjAgY29yZSBBUEkgYW5k
IHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgIG1fY29udGV4dC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIG1fY29u
dGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVw
dGgiKTsKIH0KIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRh
cmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKQEAgLTI3MTUs
MjAgKzI3MTQsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5l
YXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250
ZXh0IiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
QVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMxLCAiV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJU
QywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
LCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbywgbV93ZWJnbERlYnVnUmVuZGVyZXJJ
bmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIsIHRydWUpOwotICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9k
ZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUQ29sb3JCdWZmZXJGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdCIsIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwot
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29s
b3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xv
ckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1
cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRl
cnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9z
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENv
bG9yQnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBt
X2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVs
dGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIHRydWUpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtMjc0Myw0MiArMjc0Miw0MSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAo
bV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlm
IChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQorICAg
IGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6
c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAg
IH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykp
CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3Rj
Il9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250
ZXh0Il9zKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6
OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRo
aXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQi
X3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxl
bF9zaGFkZXJfY29tcGlsZSJfcyk7Ci0gICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0aV9kcmF3Il9zKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xv
ckJ1ZmZlckZsb2F0LmNwcAppbmRleCBhODFhNDljMmNhNzY5MzgwNTg2MjM0YzFmMjA5ZTQ4ZWEy
YzZkYzBmLi42YzBhOWJlNTYxZDc5ZTcwZDlmMzVkNThhOTcwNmM2NTU2NTBkODgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwx
MiArMzcsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29sb3JCdWZmZXJG
bG9hdCk7CiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OldlYkdMQ29sb3JCdWZmZXJGbG9hdChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CiAgICAgLy8gT3B0aW1p
c3RpY2FsbHkgZW5hYmxlIFJHQiBmbG9hdGluZy1wb2ludCByZW5kZXIgdGFyZ2V0cyBhbHNvLCBp
ZiBwb3NzaWJsZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOwogICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAgLy8gU3BlYyBy
ZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0bHkgaGVyZS4K
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsK
IH0KIAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2ViR0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBk
ZWZhdWx0OwpAQCAtNTMsMTAgKzUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1l
IFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojpz
dXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykKLSAgICAgICAgJiYgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpCisgICAgICAgICYmIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAppbmRleCAwZDJkMDdjMjU1
OTllMDRjY2VjYTA2NmE0NTk2NTA1ZDEwMmUxODY0Li45NGNkZWQ2Y2Q2MzY3YzE4ZDYwMDJhNmVh
ZWIyMTQwMzEzMjM5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXggNmVhY2ExZjJhMDI1MTc2ZGE0NTNiNTAw
MTI4YTM2ZjExMzZiODE1ZC4uNGZmMDIyZTllZDUxMmE5MmVkYTMxMDFjZjFjMjZjMmVlNWFmODM5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzksNDEgKzM4LDQxIEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyk7CiAKIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKLSAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfaGRyIl9zKSkKLSAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIl9zKSkKKyAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19oZHIiX3MpKQorICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lv
bl9hc3RjX2xkciJfcykpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tI
Uik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUik7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
Uik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CiAgICAgCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2
X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUik7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MngxMl9LSFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpAQCAtOTUsMTAgKzk0LDEwIEBAIFZlY3RvcjxT
dHJpbmc+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpnZXRTdXBwb3J0ZWRQcm9maWxlcygp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2hkciJfcykKLSAgICAgICAgfHwgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19oZHIiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKaW5kZXggMzBlZmUzZDgxYzFiOWI5NDYz
Mzk3MzFkMzc4ZDJjYzE3YTMxNTlmMC4uZmEwZTViOTllM2UxZjQ2Y2I4NTU0MDI3MjYyZTA2NWJm
MThmMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBnZXRTdXBwb3J0ZWRQcm9maWxlcygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNv
bnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSERSU3VwcG9y
dGVkIDogMTsKICAgICBib29sIG1faXNMRFJTdXBwb3J0ZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApp
bmRleCBjOWU3YmUzMGM2MzEwNTAzMDNkZmJlNjZhMTMzZmZkNDI0NmVjMjI5Li5iYzNlYmUyZDVl
NzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMjks
NyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTEgKzM4LDExIEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0g
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2Vk
X0FUQ190ZXh0dXJlIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQ
SEFfQU1EKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMoKSA9IGRlZmF1bHQ7CkBAIC01Myw5ICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDTmFtZTsKIH0KIAotYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU1EX2NvbXByZXNz
ZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oCmluZGV4IGUwYmQyNjYxMDk0NDBmY2IzMDdjOTNiMzVjNTQzMGIxZGQ5
NGQxZmEuLjEwNTY4YTlkZDk0YzNiZTI3NzhjMzI0Nzg5YzRmOGY3NTQ0YWE0YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4IDRmZWFhNWRkODc5MTIzNTkzMWY5
ODU5Zjk2NzBjNDY4YTVhM2JmYTMuLjkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5
ZjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zOSwxOCArMzgsMTggQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUjExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMy
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOwogfQogCiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpID0gZGVm
YXVsdDsKQEAgLTYwLDkgKzU5LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9v
bCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7
CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
CmluZGV4IDc0Njc3OGNjMmRlMDIzOWI5ZWUyYzc1M2RiMGY2OTJlMDRkODk3ZDQuLmMzODgyOTEx
YWI1OTZkOWYyMTA2YTgxODFlOWVmMjBjMjhkMDgxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZDlhN2NmYWI2OWU3NmVhZTMxN2VjMGJjZjU2NTQ5OTZj
ZjI0MTVlYS4uYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYxOTBiMTcwOTJmNjA4MDliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTKTsKKyAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhf
T0VTKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6On5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMSgpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMU5hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2NvbXBy
ZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKaW5kZXggMDZmZTI3YWFiMTc4M2RiYzFi
M2IwMWUxZWY0OTgwOWJkM2NkYjIzYy4uMDQ0OWY1NzA0NDY0YzI1NmJiMzgzZDc3NGFmYmM5ZTM2
ZjE3OTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoKTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApp
bmRleCAxYTIwYzA3ZDI3MzNjMTgwZTQ1YWRmYTQzZGFmOGU4NTM2YjQ0NWJhLi41YTg0OTllOWU0
Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQw
LDEyICszOSwxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQ
UFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKIH0KIAogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgPSBkZWZh
dWx0OwpAQCAtNTUsOSArNTQsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25f
cHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuaAppbmRleCBhODY2OWYwZWI4ZDAyZjA4OTgwMGNmMmMyNjViODFjN2E1ZjNj
YTVkLi4zMzcyYzI5YWIyNGU1Yzg5MGZhMzM3ZWIwZjk0OWVlZjllZjVjMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggMDdiYTRmYTViZTEy
NTdjM2M4MTIwMzc5OGMxZjk1ZmE3NzQ2YTlhZi4uZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBh
OTE4NmEzYTUwMjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00MCwxNSArMzksMTUgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKTsKIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKTsKLSAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgIGF1
dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAg
IGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQogCiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkg
PSBkZWZhdWx0OwpAQCAtNTgsMTYgKzU3LDE1IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CiAjaWYgVVNFKEFOR0xFKQotICAg
IHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAm
JiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDMiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKICNlbHNlCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgK
aW5kZXggYTM0NzNkOGVlZmJkMjIyZjFiMjZjYjEyOWQ0ZDQ0NzJjYzQxMTUwOS4uMWRiZjQ1YTRj
MGUyNDNiM2M2MDAwMTRmNTVmNmYwZDhmNTQ4MDM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRleCA1MGQwYmQ5MDdlOGZkZWU4ZmQ0MWQ2
NWQyMWI4ZDAwYTJmYWZmNTc3Li5mNjVmNDJhZTIyYWM3MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2
NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgi
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzks
MTMgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiIik7Ci0KLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0Y19zcmdiIik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6On5XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoKSA9IGRlZmF1bHQ7CkBAIC01NSwxMCArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0JOYW1lOwogfQog
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCmluZGV4IGM3OTNiOTE2ZGIwZTY2
Y2YzZTljNjc3MGY1NjYwN2YzMThmZjc0NmIuLjU5YTY2M2YxNGQxZmI0YmM2Yzg1ODY3NWY1NWY0
OGQ3YTdlZmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQigpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApp
bmRleCA2YjA0OTU0YTRhNTI5Y2U4ODJmMmE2NGJiM2Q4NjdmYTg0YzM4Y2YwLi5hNjlkYTI5MDM4
NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDcgKzQw
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVidWdTaGFkZXJzKTsKIFdl
YkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSIpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTcsNyArNTYsNyBAQCBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRl
cnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2Jq
ZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
Lm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9iamVjdCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IGE2OTE1MzIzYTg0OTQ0ZTU5YmMxNzJkM2Y1Yjk0MzM3
MjY4MTQzNzYuLjkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1NTgwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICszOCw5IEBAIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJHTERlcHRoVGV4dHVyZSk7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xE
ZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOworICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdM
RGVwdGhUZXh0dXJlKCkgPSBkZWZhdWx0OwpAQCAtNTIsOSArNTIsOCBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJv
b2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9k
ZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMGRjMTdlYTli
YzBjZGM3NGQxZTYxYzFmMDI1M2M4ZWNlYjM2ODk1My4uMDY3MGE0NzY0MmJmYmZlY2JkZWY1NjM3
OGEyYmViNWIxOGM5NWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3
QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQog
ewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
IH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBA
IC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRHJhd0J1
ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwog
I2VuZGlmCiB9CkBAIC03NSw3ICs3NCw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1
ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICB9CiAg
ICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJy
ZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hN
RU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyBidWZzWzBdID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCQUNLID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOworICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKHZhbHVlKTsKICAg
ICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0woY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAg
ICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAh
PSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKKyAgICAgICAgICAg
IGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FICYmIGJ1ZnNbaV0gIT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhU
IG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC05
OCw4ICs5Nyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlz
IHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50
ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKLSAgICBHQ0dMaW50IG1h
eENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNv
bnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
KTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAo
bWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywxMCArMTA2LDEwIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
d2ViCiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAw
LCAwLCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBm
b3Igb3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRo
U3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3Rl
bmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRo
U3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggNTBiYWNmNTY0ZmNhZjY2NmY4
NTdiZDQ5MTU2Mjc5NDJjZmM1MjA3My4uNDlmYjFkZGRmNThhOGVkZmMwMWI0OGRhNWRmZjQ5Nzcx
Zjc2ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKQEAgLTI3OSwyMSArMjc4LDIxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJp
dHNCeUF0dGFjaG1lbnRUeXBlKEdDR0xlbnVtIGF0dGFjaG1lbnQpCiB7CiAgICAgc3dpdGNoIChh
dHRhY2htZW50KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVO
VDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNI
TUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDhfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1F
TlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ1
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDdfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQxNV9FWFQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQlVGRkVSX0JJVDsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9BVFRBQ0hN
RU5UOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7
CkBAIC0zNjMsOCArMzYyLDggQEAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9ybWF0
KEdDR0xlbnVtIGZvcm1hdCkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMTZJOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEzMkk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQTMyVUk6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhB
X0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDE2OgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDI0OgpAQCAtNjMzLDcgKzYzMiw3
IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiBy
ZWFzb24pIGNvbnN0CiAgICAgICAgIEdDR0xlbnVtIGF0dGFjaG1lbnRGb3JtYXQgPSBhdHRhY2ht
ZW50LT5nZXRGb3JtYXQoKTsKIAogICAgICAgICAvLyBBdHRhY2hpbmcgYW4gU1JHQl9FWFQgZm9y
bWF0IGF0dGFjaG1lbnQgdG8gYSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkLgotICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUKQorICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQpCiAgICAgICAg
ICAgICBhdHRhY2htZW50Rm9ybWF0ID0gMDsKIAogICAgICAgICBpZiAoIWF0dGFjaG1lbnRGb3Jt
YXQpIHsKQEAgLTgzMywxOCArODMyLDE4IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1
ZmZlcnNJZk5lY2Vzc2FyeShib29sIGZvcmNlKQogICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+
aXNXZWJHTDIoKSkKICAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdM
KCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKG1f
ZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIEdDR0xlbnVtIFdl
YkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoR0NHTGVudW0gZHJhd0J1ZmZlcikKIHsKLSAg
ICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGRyYXdCdWZmZXIgLSBFeHRlbnNpb25zR0w6
OkRSQVdfQlVGRkVSMF9FWFQpOworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJh
d0J1ZmZlciAtIEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUKTsKICAgICBBU1NF
UlQoaW5kZXggPj0gMCk7CiAgICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihtX2RyYXdC
dWZmZXJzLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBtX2RyYXdCdWZmZXJzW2luZGV4XTsKLSAg
ICBpZiAoZHJhd0J1ZmZlciA9PSBFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQpCisgICAg
aWYgKGRyYXdCdWZmZXIgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVGRkVSMF9FWFQpCiAg
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDA7CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCmluZGV4IDY0YjE1ZDVmZjg2MTNjZmQ3ODRjN2Uz
MWQwMjJkNTNiZDYxM2NlZmUuLmYxY2M1NmM5ZGZiMTg4NGI4YjhkZWFhMmVlZmU1ODI3ZjkyZmVl
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xNdWx0
aURyYXcuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQyLDggQEAg
c3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlE
cmF3OjpJbnQzMkxpc3QmIGxpc3QsIEcKIFdlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKTsKLSAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX211bHRpX2RyYXciX3MpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiB9CiAKIFdlYkdMTXVsdGlEcmF3Ojp+V2ViR0xN
dWx0aURyYXcoKSA9IGRlZmF1bHQ7CkBAIC01NCwxMCArNTMsMTAgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBXZWJHTE11bHRpRHJhd05hbWU7CiB9CiAKLWJvb2wgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRl
ZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJl
dHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKLSAgICAgICAgJiYgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6
bXVsdGlEcmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3Qs
IEdDR0x1aW50IGZpcnN0c09mZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNv
dW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5oCmluZGV4IDY1OTI5ZjUxY2FiOGJmODkyN2I3YzkwYmU5NmMx
OGU0ODMxODFkNzYuLjUwZDZkYjgxYTJkOTc0Mzg4MDBiNGU3OWRhMzEyYTIwMjIyNTBkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
Jik7CiAKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c1dFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMy
TGlzdCBmaXJzdHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNM
aXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBmYTU3YmI1NDAyM2UzZmY5OTYzNGIzYTk5OTE4ZTA5M2NhYTJkNGJiLi5jOTYwYzI2
MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAi
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKQEAgLTE1MywxMCArMTUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0RlcHRoLCAiRVhUX2ZyYWdfZGVwdGgiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSkg
ewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVyZUxPRCkgewotICAgICAgICAgICAgaWYg
KCEobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9B
UkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCisgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkp
CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJfcyk7CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0g
YWRvcHRSZWYobmV3IEVYVFNoYWRlclRleHR1cmVMT0QoKnRoaXMpKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0xNjUsMzEgKzE2NCwzMSBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIH0KICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCAiRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJh
bGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVk
KCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21w
aWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwog
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTU3RhbmRhcmREZXJpdmF0aXZlcywgbV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZW5hYmxlU3VwcG9y
dGVkRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNf
dGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAi
T0VTX3RleHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKTsKLSAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBw
b3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxv
YXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNU
ZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChPRVNWZXJ0ZXhBcnJheU9iamVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoT0VTRWxlbWVudEluZGV4VWludCwgbV9vZXNFbGVtZW50SW5kZXhVaW50LCAiT0VTX2VsZW1l
bnRfaW5kZXhfdWludCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTRkJPUmVuZGVyTWlw
bWFwLCBtX29lc0ZCT1JlbmRlck1pcG1hcCwgIk9FU19mYm9fcmVuZGVyX21pcG1hcCIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQs
ICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3Ny
Z2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlcHRoVGV4dHVyZSwgbV93ZWJnbERl
cHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiLCBXZWJHTERlcHRoVGV4dHVyZTo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCR0xfZHJhd19idWZmZXJzIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZl
cnMpIHsKICAgICAgICAgICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IGFkb3B0UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJz
KCp0aGlzKSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQpAQCAtMTk4LDEwICsx
OTcsMTAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSkgewogICAgICAgICBpZiAoIW1f
YW5nbGVJbnN0YW5jZWRBcnJheXMpIHsKLSAgICAgICAgICAgIGlmICghQU5HTEVJbnN0YW5jZWRB
cnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgICAgICAgICBpZiAoIUFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBhZG9wdFJlZihuZXcgQU5HTEVJbnN0YW5j
ZWRBcnJheXMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0y
MDksMTEgKzIwOCwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gbV9hbmdsZUlu
c3RhbmNlZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1
Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIl9zKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwg
IkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTE11
bHRpRHJhdywgbV93ZWJnbE11bHRpRHJhdywgIldFQkdMX211bHRpX2RyYXciLCBXZWJHTE11bHRp
RHJhdzo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJF
WFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC0yMjcsNjkgKzIyNiw2OSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIGlm
IChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9ibGVu
ZF9taW5tYXgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21p
bm1heCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9FWFRfc1JHQiJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X0VYVF9zUkdCIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiX3MpOwotICAg
IGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVw
dGgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZnJh
Z19kZXB0aCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mcmFnX2RlcHRoIl9zKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFk
ZXJfdGV4dHVyZV9sb2QiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9z
KSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKKyAgICBp
ZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7Ci0gICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVt
ZW50X2luZGV4X3VpbnQiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMi
X3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NS
R0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgaWYgKFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlcHRoX3RleHR1cmUiX3MpOwogICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgaWYgKEFOR0xF
SW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChBTkdMRUluc3RhbmNl
ZEFycmF5czo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpCisg
ICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3No
YWRlcnMiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8i
X3MpOwotICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkK
KyAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsK
LSAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhURmxv
YXRCbGVuZDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfZmxvYXRfYmxlbmQiX3MpOwotICAgIGlmIChXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCpt
X2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxv
YXQiX3MpOwotICAgIGlmIChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhp
cykpCisgICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUi
KTsKLSAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQkdMX211bHRpX2RyYXciX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMCw3
ICszMjksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgogICAg
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CkBAIC0zNDMsMTYgKzM0MiwxNiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyPihvYmpl
Y3QpOwotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQ6IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKICAgICAgICAgICAgIGlm
ICghbV9leHRzUkdCKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciByZW5kZXJidWZmZXIgYXR0YWNobWVu
dCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiByZW5kZXJCdWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2JqZWN0LmdldCgpKTsKICAgICAgICAgICAg
IEdDR0xlbnVtIHJlbmRlckJ1ZmZlckZvcm1hdCA9IHJlbmRlckJ1ZmZlci0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEV4
dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpOworICAgICAgICAgICAg
QVNTRVJUKHJlbmRlckJ1ZmZlckZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQg
JiYgcmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VCk7CisgICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCOF9BTFBIQThfRVhUKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKTsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTM2Nyw5ICszNjYsOSBAQCBHQ0dMaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFX
X0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6
Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtMzc5
LDcgKzM3OCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29s
b3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKQEAgLTQ1
NCw5ICs0NTMsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEVx
dWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZVTkNfQUREOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZVTkNfU1VC
VFJBQ1Q6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19SRVZFUlNFX1NVQlRSQUNU
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNSU5fRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfRVhUOgotICAgICAgICBpZiAoKG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNSU5fRVhUIHx8
IG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNQVhfRVhUKSAmJiAhbV9leHRCbGVuZE1pbk1heCkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0VYVDoKKyAgICAgICAgaWYgKChtb2RlID09IEdyYXBoaWNzQ29udGV4dEdM
OjpNSU5fRVhUIHx8IG1vZGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9FWFQpICYmICFtX2V4
dEJsZW5kTWluTWF4KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIG1vZGUiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBi
OGI1ZmI2NWFjZjQxMmU5MzIyNTI0NWE0MWE1ZDgxODE1NTVkNjgxLi5kNTI1OWM0M2JiOGQyMDg1
MjVjMmIzNTQ0OWU3MzA1OTM5YWI1Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUg
IkVYVHNSR0IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01NTUsMTIgKzU1NCwxMiBAQCBzdGF0aWMg
dWludDhfdCBnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JBKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
NTY1OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KENoYW5uZWxCaXRzOjpSR0IpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCNV9BMToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCQSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfQ09NUE9ORU5UOgpAQCAtNjQzLDggKzY0Miw4IEBAIHN0YXRpYyBib29sIHBv
c3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMCiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NURU5DSUw4LCBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0lOVF8yNF84KTsKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEgzMkZfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVO
Q0lMLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfRVhU
LCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdC
X0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhULCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhULCBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9BTFBIQV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA5MSwx
NyArMTA5MCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3Mo
KQogICAgIC8vIHR1cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJD
b21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dM
RVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAg
ICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAg
ICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRo
X3RleHR1cmUiKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dM
RVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxzZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0
ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVf
bm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdv
Iik7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRl
eHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikgfHwg
bV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsK
ICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAgbV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3JvYnVzdG5lc3MiKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0zMzAzLDkgKzMzMDIs
OSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiAiV2ViR0wgMS4wIl9zdHI7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRf
T0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgaWYgKG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcykKLSAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRl
cihFeHRlbnNpb25zR0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRH
TDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOwogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFdlYkdMRGVidWdS
ZW5kZXJlckluZm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgpAQCAtMzMzNiwyNSArMzMzNSwy
NSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxlZCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8v
IEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAobV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJh
bWV0ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAg
ICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOwogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVmZmVycyBCRUdJTgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQ6IC8v
IEVYVF9kcmF3X2J1ZmZlcnMgQkVHSU4KICAgICAgICAgaWYgKG1fd2ViZ2xEcmF3QnVmZmVycyB8
fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdldE1heENvbG9yQXR0YWNobWVudHMo
KTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kcmF3
X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgogICAgICAgICBpZiAobV93ZWJnbERyYXdC
dWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0TWF4RHJhd0J1ZmZl
cnMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9k
cmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkK
LSAgICAgICAgICAgICYmIHBuYW1lID49IEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVAot
ICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dM
OjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkpIHsKKyAgICAgICAgICAg
ICYmIHBuYW1lID49IEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUCisgICAgICAg
ICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xlbnVtPihHcmFwaGljc0NvbnRleHRHTDo6
RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7CiAgICAgICAgICAgICBH
Q0dMaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiAgICAgICAgICAgICBpZiAo
bV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX2ZyYW1lYnVm
ZmVyQmluZGluZy0+Z2V0RHJhd0J1ZmZlcihwbmFtZSk7CkBAIC0zMzcyLDcgKzMzNzEsNyBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIC8vIENPTVBMRVRJT05fU1RBVFVTX0tIUiBzaG91
bGQgYWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IGlzIGxvc3QsIHNvIGFwcGxpY2F0
aW9ucwogICAgIC8vIGRvbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBwb2xsaW5nIGxvb3Au
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkgewotICAgICAgICBpZiAocG5hbWUg
PT0gRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFIpCisgICAgICAgIGlmIChwbmFt
ZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTMzOTks
NyArMzM5OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2toclBhcmFsbGVsU2hhZGVy
Q29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQcm9ncmFtUGFy
YW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5hYmxlZCIpOwpAQCAt
MzUwMyw3ICszNTAyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKICAgICAvLyBDT01QTEVU
SU9OX1NUQVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBp
cyBsb3N0LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5m
aW5pdGUgcG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpIHsK
LSAgICAgICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hS
KQorICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RB
VFVTX0tIUikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0zNTE3LDcgKzM1MTYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQt
PmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQYXJhbGxlbFNoYWRlckNv
bXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRl
ciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVuYWJsZWQiKTsKQEAgLTM1ODYs
NyArMzU4NSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYg
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQogICAgICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMgbm90IGVuYWJsZWQiKTsKQEAgLTM3NDksNyArMzc0OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25z
dCBXZWJHCiAgICAgICAgIEdDR0xmbG9hdCB2YWx1ZVsxNl0gPSB7MH07CiAjaWYgIVVTRShBTkdM
RSkKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQotICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVj
dCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOworICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkp
LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2Nh
dGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5k
aWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0KCks
IGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwpAQCAtMzc2MSw3ICszNzYw
LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJH
TFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgR0NHTGludCB2YWx1ZVs0XSA9
IHswfTsKICNpZiAhVVNFKEFOR0xFKQogICAgICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBw
b3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9y
bWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2
YWx1ZSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+
KG1fY29udGV4dC5nZXQoKSktPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dy
YW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAg
ICAgIGVsc2UKICNlbmRpZgogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJv
Z3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bhbih2YWx1ZSwgbGVuZ3RoKSk7CkBA
IC0zNzgwLDcgKzM3NzksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICBHQ0dM
aW50IHZhbHVlWzRdID0gezB9OwogI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9i
dXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmdldG5Vbmlmb3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXpl
b2YoR0NHTGludCksIHZhbHVlKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlm
b3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0NHTGludCks
IHZhbHVlKTsKICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVl
LCBsZW5ndGgpKTsKQEAgLTM5NTksNyArMzk1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CiAgICAgICAgIGlzVmFsaWQg
PSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRf
U0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcywg
b3IgY29yZSBpbiBXZWJHTCAyLjAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVO
VF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
LCBvciBjb3JlIGluIFdlYkdMIDIuMAogICAgICAgICBpZiAobV9vZXNTdGFuZGFyZERlcml2YXRp
dmVzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CkBAIC00NTY5LDcgKzQ1NjgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aAogICAg
IG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSkpOwogI2Vsc2UKICAgICBp
ZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnJlYWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgZGF0YSk7CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0RXh0ZW5zaW9ucygpLnJl
YWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5
dGVMZW5ndGgoKSwgZGF0YSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4
ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEs
IHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsKICNlbmRpZgpAQCAtNDYxMCw4ICs0NjA5LDggQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0I1X0Ex
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjU2NToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0lOREVYODoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQjhf
QUxQSEE4X0VYVDoKLSAgICAgICAgaWYgKGludGVybmFsZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6
U1JHQjhfQUxQSEE4X0VYVCAmJiAhbV9leHRzUkdCKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQjhfQUxQSEE4X0VYVDoKKyAgICAgICAgaWYgKGludGVybmFsZm9ybWF0ID09IEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThfRVhUICYmICFtX2V4dHNSR0IpIHsKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
IGZ1bmN0aW9uTmFtZSwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDYyMiw3ICs0NjIxLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhf
U1RFTkNJTDoKICAgICAgICAgaWYgKGlzRGVwdGhTdGVuY2lsU3VwcG9ydGVkKCkpCi0gICAgICAg
ICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBFeHRlbnNpb25zR0w6
OkRFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgbV9jb250ZXh0
LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIMjRf
U1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PnNldFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+
c2V0SXNWYWxpZChpc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCgpKTsKICAgICAgICAgbV9yZW5kZXJi
dWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CkBAIC01NjE2
LDggKzU2MTUsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4
RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpTUkdCX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIGlmICghbV9leHRzUkdCKSB7CiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJzUkdCIHRleHR1cmUgZm9ybWF0cyBub3QgZW5hYmxlZCIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc3NSw3ICs1Nzc0LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIq
IGZ1bmN0aW8KICAgICBJTlRFUk5BTF9GT1JNQVRfQ0FTRShERVBUSF9TVEVOQ0lMICAgICAsIERF
UFRIX1NURU5DSUwgICwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yNF84ICAgICAg
ICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBJTlRFUk5B
TF9GT1JNQVRfQ0FTRShERVBUSDI0X1NURU5DSUw4ICAsIERFUFRIX1NURU5DSUwgICwgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yNF84ICAgICAgICAgICAgICwgMCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAg
ICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBJTlRFUk5BTF9GT1JNQVRfQ0FTRShERVBUSDMy
Rl9TVEVOQ0lMOCAsIERFUFRIX1NURU5DSUwgICwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUXzMy
X1VOU0lHTkVEX0lOVF8yNF84X1JFViwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAg
KTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9FWFQ6CiAgICAgICAgIGlmIChmb3JtYXQgIT0gaW50ZXJuYWxGb3JtYXQp
IHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiZm9ybWF0IGFuZCBpbnRlcm5hbGZvcm1hdCBt
dXN0IG1hdGNoIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01Nzg1LDcgKzU3ODQs
NyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1h
dEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FM
UEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VYVDoKICAg
ICAgICAgaWYgKGZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkgewogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlv
bk5hbWUsICJmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IG11c3QgbWF0Y2giKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTU5NjgsNyArNTk2Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv
cGljCiAgICAgICAgIGlmICghbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpIHsKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJ0ZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIsIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyBub3QgZW5hYmxlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjM4NSw3
ICs2Mzg0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TG9zdEMKICAgICAgICAgYXV0byogY2FudmFz
ID0gaHRtbENhbnZhcygpOwogICAgICAgICBpZiAoY2FudmFzKSB7CiAgICAgICAgICAgICBpZiAo
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IGNhbnZhcy0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2ViR0xDb250ZXh0KG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSk7Cisg
ICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRl
eHQobV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02ODk4LDE4ICs2ODk3LDE4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAg
ICAgICAgIEJsb2NrUGFyYW1ldGVycyB7IDEyLCAxMCwga0FTVENCbG9ja1NpemUgfSwKICAgICAg
ICAgQmxvY2tQYXJhbWV0ZXJzIHsgMTIsIDEyLCBrQVNUQ0Jsb2NrU2l6ZSB9CiAgICAgfTsKLSAg
ICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0UkdCQSA9IEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfNHg0X0tIUjsKLSAgICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0
U1JHQjggPSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tI
UjsKKyAgICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0UkdCQSA9IEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOworICAgIGNvbnN0IEdDR0xlbnVtIEFT
VENFbnVtU3RhcnRTUkdCOCA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzR4NF9LSFI7CiAKICAgICBjb25zdCBpbnQga0VBQ0FuZEVUQzJCbG9ja1NpemUg
PSA0OwogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9BVENfUkdCX0FNRDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RVRDMV9SR0I4X09FUzog
eworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENf
RFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FM
UEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9BVENfUkdCX0FNRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhfT0VT
OiB7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKICAgICAgICAgY29uc3QgaW50
IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CkBA
IC02OTE4LDEyICs2OTE3LDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgIGJ5
dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duICoga0Jsb2NrU2l6
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQ6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQz
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQ1X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FU
Q19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQ6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CiAgICAgICAgICAgICBjb25zdCBp
bnQga0Jsb2NrV2lkdGggPSA0OwpAQCAtNjkzMyw4ICs2OTMyLDggQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFy
KiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBu
dW1CbG9ja3NEb3duICoga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQ
UFYxX0lNRzoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSA4
OwogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gODsKQEAgLTY5NDIsOCArNjk0
MSw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2Vk
VGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBieXRlc1JlcXVpcmVk
ID0gKHN0ZDo6bWF4KHdpZHRoLCBrQmxvY2tXaWR0aCkgKiBzdGQ6Om1heChoZWlnaHQsIGtCbG9j
a0hlaWdodCkgKiA0ICsgNykgLyBrQmxvY2tTaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJU
Q18yQlBQVjFfSU1HOgogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6
ZSA9IDg7CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSAxNjsKQEAgLTY5NTEs
NDQgKzY5NTAsNDQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNv
bXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVz
UmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgsIGtCbG9ja1dpZHRoKSAqIHN0ZDo6bWF4KGhlaWdo
dCwga0Jsb2NrSGVpZ2h0KSAqIDIgKyA3KSAvIGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4
NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEw
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18x
MngxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfMTJ4MTJfS0hSOgogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2FsY3VsYXRlQnl0ZXNGb3JB
U1RDKHdpZHRoLCBoZWlnaHQsIEFTVENQYXJhbWV0ZXJzW2Zvcm1hdCAtIEFTVENFbnVtU3RhcnRS
R0JBXSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUjoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4
X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTJ4MTJfS0hSOgogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2FsY3VsYXRl
Qnl0ZXNGb3JBU1RDKHdpZHRoLCBoZWlnaHQsIEFTVENQYXJhbWV0ZXJzW2Zvcm1hdCAtIEFTVENF
bnVtU3RhcnRTUkdCOF0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJ
R05FRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9B
TFBIQTFfRVRDMjogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUjEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFf
RUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVO
Q0hUSFJPVUdIX0FMUEhBMV9FVEMyOiB7CiAgICAgICAgIENoZWNrZWRVaW50MzIgY2hlY2tlZEJ5
dGVzUmVxdWlyZWQgPSAod2lkdGggKyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0Fu
ZEVUQzJCbG9ja1NpemU7CiAgICAgICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IChoZWlnaHQg
KyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0FuZEVUQzJCbG9ja1NpemU7CiAgICAg
ICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IDg7CkBAIC02OTk5LDEwICs2OTk4LDEwIEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0Rh
dGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0
ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
MTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQThfRVRD
Ml9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKICAgICAgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQnl0ZXNSZXF1aXJl
ZCA9ICh3aWR0aCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2Nr
U2l6ZTsKICAgICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gKGhlaWdodCArIGtFQUNBbmRF
VEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAgICAgICAgY2hlY2tl
ZEJ5dGVzUmVxdWlyZWQgKj0gMTY7CkBAIC03MDEzLDggKzcwMTIsOCBAQCBib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNo
YXIqIGZ1bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2hlY2tlZEJ5dGVzUmVxdWlyZWQ7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SRURfUkdUQzFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05F
RF9SRURfUkdUQzFfRVhUOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SRURfUkdUQzFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U0lHTkVEX1JFRF9SR1RDMV9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSA4
OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTcwMjMsOCArNzAyMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciog
ZnVuY3RpCiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9j
a3NEb3duICoga0Jsb2NrU2l6ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6IHsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OwogICAgICAgICBj
b25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0
ID0gNDsKQEAgLTcwNDksMTQgKzcwNDgsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5z
aW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQp
CiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
X1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9B
TFBIQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9T
M1RDX0RYVDVfRVhUOiB7CiAgICAgICAgIGNvbnN0IEdDR0xzaXplaSBrQmxvY2tXaWR0aCA9IDQ7
CiAgICAgICAgIGNvbnN0IEdDR0xzaXplaSBrQmxvY2tIZWlnaHQgPSA0OwogICAgICAgICBjb25z
dCBHQ0dMaW50IG1heFRleHR1cmVTaXplID0gdGFyZ2V0ID8gbV9tYXhUZXh0dXJlU2l6ZSA6IG1f
bWF4Q3ViZU1hcFRleHR1cmVTaXplOwpAQCAtNzA2OSw1NSArNzA2OCw1NSBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoY29u
c3QgY2hhciogZnVuYwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9J
TUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQ
UFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfUFZSVENfMkJQUFYxX0lNRzoKICAgICAgICAgLy8gSGVpZ2h0IGFuZCB3aWR0aCBtdXN0IGJl
IHBvd2VycyBvZiAyLgogICAgICAgICBpZiAoKHdpZHRoICYgKHdpZHRoIC0gMSkpIHx8IChoZWln
aHQgJiAoaGVpZ2h0IC0gMSkpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIndpZHRoIG9y
IGhlaWdodCBpbnZhbGlkIGZvciBsZXZlbCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ182eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ182eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ184eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q184eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184
eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1
X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
NXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgx
MF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEyeDEyX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RVRDMV9SR0I4X09F
UzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9B
TFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzR4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ181eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4
NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ181eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
Xzh4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkVUQzFfUkdCOF9PRVM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRzExX0VB
QzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VB
QzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
RVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgogICAgICAgICAvLyBObyBoZWlnaHQgYW5kIHdpZHRo
IHJlc3RyaWN0aW9ucyBvbiBBU1RDLCBFVEMxIG9yIEVUQzIuCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGRlZmF1bHQ6CkBAIC03MTMzLDE0ICs3MTMyLDE0IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBj
aGFyKiBmCiAgICAgfQogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0
aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwogICAgICAgICBpZiAo
KHhvZmZzZXQgJSBrQmxvY2tXaWR0aCkgfHwgKHlvZmZzZXQgJSBrQmxvY2tIZWlnaHQpKSB7CkBA
IC03MTU0LDEwICs3MTUzLDEwIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmCiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoZnVuY3Rpb25O
YW1lLCB0YXJnZXQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpOwogICAgIH0KLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRzoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOiB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJU
Q180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9QVlJUQ18yQlBQVjFfSU1HOiB7CiAgICAgICAgIGlmICh4b2Zmc2V0IHx8IHlvZmZzZXQpIHsK
ICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBhbmQgeW9mZnNldCBtdXN0IGJlIHpl
cm8iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxNjksMTkgKzcxNjgsMTkgQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJE
aW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsaWRh
dGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWwsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCk7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMx
X1JHQjhfT0VTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVM6CiAg
ICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgZm9yIEVUQzFfUkdCOF9PRVMgdGV4dHVyZXMuCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFf
RUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4
X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NJR05FRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CiAgICAgICAgIGlmICh0
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfM0QpIHsKICAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVu
Y3Rpb25OYW1lLCAibm90IHN1cHBvcnRlZCBvbiBURVhUVVJFXzNEIHRleHR1cmVzIik7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03Njk4LDcgKzc2OTcsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAgIGlmICghbV9yZXN0
b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGNvbnRleHRMb3N0UmVhc29u
ID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
OworICAgIGludCBjb250ZXh0TG9zdFJlYXNvbiA9IG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpOwogCiAgICAgc3dpdGNoIChjb250ZXh0TG9zdFJlYXNvbikgewogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOgpAQCAtNzcwNywxNSArNzcwNiwxNSBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAg
ICAgICAvLyBXRUJHTF9sb3NlX2NvbnRleHQgZXh0ZW5zaW9uIG1pZ2h0IGhhdmUgYmVlbiB1c2Vk
IHRvIGZvcmNlCiAgICAgICAgIC8vIGEgbG9zdCBjb250ZXh0LgogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkdVSUxUWV9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8g
VGhlIHJlbmRlcmluZyBjb250ZXh0IGlzIG5vdCByZXN0b3JlZCBpZiB0aGlzIGNvbnRleHQgd2Fz
CiAgICAgICAgIC8vIGd1aWx0eSBvZiBjYXVzaW5nIHRoZSBncmFwaGljcyByZXNldC4KICAgICAg
ICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV0FSTklORzogV2ViR0wg
Y29udGVudCBvbiB0aGUgcGFnZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVzZXQ7IG5v
dCByZXN0b3JpbmcgdGhlIGNvbnRleHQiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8gQWx3YXlz
IGFsbG93IHRoZSBjb250ZXh0IHRvIGJlIHJlc3RvcmVkLgogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6VU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBX
YXJuLiBJZGVhbGx5LCBwcm9tcHQgdGhlIHVzZXIgdGVsbGluZyB0aGVtIHRoYXQgV2ViR0wKICAg
ICAgICAgLy8gY29udGVudCBvbiB0aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNlZCB0aGUgZ3JhcGhp
Y3MgY2FyZCB0bwogICAgICAgICAvLyByZXNldCBhbmQgYXNrIHRoZW0gd2hldGhlciB0aGV5IHdh
bnQgdG8gY29udGludWUgcnVubmluZwpAQCAtNzg4Miw5ICs3ODgxLDkgQEAgR0NHTGludCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBw
b3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3
QnVmZmVycykKLSAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgbV9tYXhEcmF3
QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAg
ICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9u
c0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFj
aG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09M
T1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVxdWlyZXMg
TUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0dXJuIHN0
ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9CkBAIC03
ODk0LDcgKzc4OTMsNyBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1h
eENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0K
IApAQCAtODAzOSwxMSArODAzOCwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdgogYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oQVNDSUlM
aXRlcmFsIGV4dGVuc2lvbk5hbWVMaXRlcmFsKQogewogICAgIEFTU0VSVChtX2NvbnRleHQpOwot
ICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKICAgICBT
dHJpbmcgZXh0ZW5zaW9uTmFtZSB7IGV4dGVuc2lvbk5hbWVMaXRlcmFsIH07Ci0gICAgaWYgKCFl
eHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbk5hbWUpKQorICAgIGlmICghbV9jb250ZXh0LT5z
dXBwb3J0c0V4dGVuc2lvbihleHRlbnNpb25OYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb25OYW1lKTsKKyAgICBtX2NvbnRl
eHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uTmFtZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKaW5kZXggNzJiOTY4OGU2Zjk1ZWZjMmMwMDk5ZWViZDVk
ZWNkNDMzZWQ2OWFjZi4uZTEyMTE2ZDgwZTYwMzljN2NkODIzYjM5YzkxODVlYzI3MDNjYThkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3YTdhMWI1ZjI0
YzU4YzA4OWMyMDlmMmVmMzAzNTMzMTM0NDYxNzc4Li43OTQzNWEzYWMyNDc1NmY3ZjlkOTRhNTky
NmMyMDE2ZTkxMTY3MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMzQxLDcgKzM0MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAg
dmlydHVhbCBib29sIGFsbG93V2ViR0woYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJu
IGVuYWJsZWRQZXJTZXR0aW5nczsgfQogICAgIC8vIEluZm9ybXMgdGhlIGVtYmVkZGVyIHRoYXQg
YSBXZWJHTCBjYW52YXMgaW5zaWRlIHRoaXMgZnJhbWUgcmVjZWl2ZWQgYSBsb3N0IGNvbnRleHQK
LSAgICAvLyBub3RpZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4gR0xfQVJCX3JvYnVzdG5lc3MgZ3Vp
bHQvaW5ub2NlbmNlIGNvZGUgKHNlZSBFeHRlbnNpb25zR0wuaCkuCisgICAgLy8gbm90aWZpY2F0
aW9uIHdpdGggdGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9jZW5jZSBjb2Rl
IChzZWUgR3JhcGhpY3NDb250ZXh0R0wuaCkuCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VXZWJH
TENvbnRleHQoaW50KSB7IH0KICAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGlj
eUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdM
QWxsb3dDcmVhdGlvbjsgfQogICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJH
TFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQb2xpY3k6
OldlYkdMQWxsb3dDcmVhdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYwNzYz
MDhjNThhMGJkNDU5MzliMGE3YmM1ZTYyNGQ1NjRlYjUxMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKLQotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoaXMg
aXMgYSBiYXNlIGNsYXNzIGNvbnRhaW5pbmcgb25seSBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zLgot
Ly8gSW1wbGVtZW50YXRpb25zIG11c3QgcHJvdmlkZSBhIHN1YmNsYXNzLgotLy8KLS8vIFRoZSBz
dXBwb3J0ZWQgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBiZWxvdyBhbmQgaW4gc3ViY2xhc3NlcywK
LS8vIHBvc3NpYmx5IHBsYXRmb3JtLXNwZWNpZmljIG9uZXMuCi0vLwotLy8gQ2FsbGluZyBhbnkg
ZXh0ZW5zaW9uIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgY29udGV4dAot
Ly8gbXVzdCBiZSBhIG5vLW9wOyBpbiBwYXJ0aWN1bGFyLCBpdCBtYXkgbm90IGhhdmUgc2lkZSBl
ZmZlY3RzLiBJbgotLy8gdGhpcyBzaXR1YXRpb24sIGlmIHRoZSBmdW5jdGlvbiBoYXMgYSByZXR1
cm4gdmFsdWUsIDAgaXMgcmV0dXJuZWQuCi1jbGFzcyBFeHRlbnNpb25zR0wgewotcHVibGljOgot
ICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTCgpID0gZGVmYXVsdDsKLQotICAgIC8vIFN1cHBvcnRl
ZCBleHRlbnNpb25zOgotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ci0g
ICAgLy8gICBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYQotICAgIC8vICAgR0xfQVJCX3JvYnVzdG5l
c3MKLSAgICAvLyAgIEdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28gLyBHTF9PRVNfdGV4
dHVyZV9ucG90Ci0gICAgLy8gICBHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwgLyBHTF9PRVNf
cGFja2VkX2RlcHRoX3N0ZW5jaWwKLSAgICAvLyAgIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQg
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIC8vICAgR0xfSU1HX211bHRp
c2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQotICAgIC8vICAgR0xfT0VTX3RleHR1cmVfZmxvYXQK
LSAgICAvLyAgIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhcgotICAgIC8vICAgR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdAotICAgIC8vICAgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIKLSAgICAvLyAgIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwotICAgIC8vICAgR0xfT0VT
X3JnYjhfcmdiYTgKLSAgICAvLyAgIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Ci0gICAgLy8g
ICBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Ci0gICAgLy8gICBHTF9BTkdMRV90cmFuc2xhdGVk
X3NoYWRlcl9zb3VyY2UKLSAgICAvLyAgIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSAob25seSB0
aGUgc3Vic2V0IHJlcXVpcmVkIHRvCi0gICAgLy8gICAgIGltcGxlbWVudCBJT1N1cmZhY2UgYmlu
ZGluZzsgaXQncyByZWNvbW1lbmRlZCB0byBzdXBwb3J0Ci0gICAgLy8gICAgIHRoaXMgb25seSBv
biBNYWMgT1MgWCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIGNvZGUgZGVwZW5kZW50Ci0gICAgLy8g
ICAgIG9uIHRoaXMgZXh0ZW5zaW9uKQotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MQotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YwotICAgIC8v
ICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCi0gICAgLy8gICBHTF9PRVNf
Y29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQotICAgIC8vICAgR0xfSU1HX3RleHR1cmVfY29t
cHJlc3Npb25fcHZydGMKLSAgICAvLyAgIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNf
aGRyCi0gICAgLy8gICBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkcgotICAgIC8v
ICAgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0gICAgLy8gICBHTF9FWFRfZGVidWdf
bWFya2VyCi0gICAgLy8gICBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwotICAgIC8vICAgR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIC8vICAgR0xfQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkKLQotICAgIC8vIFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNp
b247IGZvciBleGFtcGxlLAotICAgIC8vICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgi
LgotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAv
LyBDZXJ0YWluIE9wZW5HTCBhbmQgV2ViR0wgaW1wbGVtZW50YXRpb25zIG1heSBzdXBwb3J0IGVu
YWJsaW5nCi0gICAgLy8gZXh0ZW5zaW9ucyBsYXppbHkuIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJl
IGNhbGxlZCB3aXRoCi0gICAgLy8gZXh0ZW5zaW9uIG5hbWVzIGZvciB3aGljaCBzdXBwb3J0cyBy
ZXR1cm5zIHRydWUuCi0gICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JikgPSAwOwotCi0gICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjogZm9yIGV4YW1w
bGUsICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgotICAgIC8vIENoZWNrcyB0byBz
ZWUgd2hldGhlciB0aGUgZ2l2ZW4gZXh0ZW5zaW9uIGlzIGFjdHVhbGx5IGVuYWJsZWQgKHNlZSBl
bnN1cmVFbmFibGVkKS4KLSAgICAvLyBIYXMgbm8gb3RoZXIgc2lkZS1lZmZlY3RzLgotICAgIHZp
cnR1YWwgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgPSAwOwotCi0gICAgLy8gRVhUX3NS
R0IgZm9ybWF0cwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JHQl9FWFQgPSAweDhD
NDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0FMUEhBX0VYVCA9IDB4OEM0
MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFNSR0I4X0FMUEhBOF9FWFQgPSAweDhD
NDM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X0NPTE9SX0VOQ09ESU5HX0VYVCA9IDB4ODIxMDsKLQotICAgIC8vIEVYVF9ibGVuZF9taW5tYXgg
ZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1JTl9FWFQgPSAweDgwMDc7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRVhUID0gMHg4MDA4OwotCi0gICAgLy8g
R0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBCR1JBX0VYVCA9IDB4ODBFMTsKLQotICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNz
IGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBHVUlMVFlfQ09OVEVYVF9SRVNF
VF9BUkIgPSAweDgyNTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBJTk5PQ0VOVF9D
T05URVhUX1JFU0VUX0FSQiA9IDB4ODI1NDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IFVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT05URVhUX1JPQlVTVF9BQ0NFU1MgPSAweDkwRjM7Ci0KLSAgICAvLyBHTF9F
WFQvT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBERVBUSDI0X1NURU5DSUw4ID0gMHg4OEYwOwotCi0gICAgLy8gR0xfQU5HTEVfZnJh
bWVidWZmZXJfYmxpdCBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVBRF9G
UkFNRUJVRkZFUiA9IDB4OENBODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
RlJBTUVCVUZGRVIgPSAweDhDQTk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0ZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQUE7Ci0KLSAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVMgPSAweDhDQUI7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFID0gMHg4RDU2Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVMgPSAweDhENTc7Ci0KLSAg
ICAvLyBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCi0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJfU0FNUExFU19JTUcgPSAweDkxMzM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FN
UExFX0lNRyA9IDB4OTEzNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9TQU1Q
TEVTX0lNRyA9IDB4OTEzNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVf
U0FNUExFU19JTUcgPSAweDkxMzY7Ci0KLSAgICAvLyBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQUdNRU5UX1NIQURFUl9E
RVJJVkFUSVZFX0hJTlRfT0VTID0gMHg4QjhCOwotCi0gICAgLy8gR0xfT0VTX3JnYjhfcmdiYTgg
bmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJHQjhfT0VTID0gMHg4MDUxOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCQThfT0VTID0gMHg4MDU4OwotCi0gICAg
Ly8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIFZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNTsKLQotICAgIC8vIEdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9IDB4OTNBMDsKLQot
ICAgIC8vIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCID0gIDB4ODRGNTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCID0gMHg4NEY2OwotCi0g
ICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQotICAgIC8vIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQgPSAweDgzRjA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUID0gMHg4
M0YyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9FWFQgPSAweDgzRjM7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjX3NyZ2IKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9T
M1RDX0RYVDFfRVhUID0gMHg4QzRDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgPSAweDhDNEQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCA9IDB4
OEM0RTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDVfRVhUID0gMHg4QzRGOwotCi0gICAgLy8gR0xfT0VTX2NvbXByZXNzZWRfRVRD
MV9SR0I4X3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEVUQzFfUkdCOF9P
RVMgPSAweDhENjQ7Ci0KLSAgICAvLyBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjCi0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1IxMV9FQUMgPSAweDkyNzA7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDID0g
MHg5MjcxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRzExX0VB
QyA9IDB4OTI3MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lH
TkVEX1JHMTFfRUFDID0gMHg5MjczOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0I4X0VUQzIgPSAweDkyNzQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0VUQzIgPSAweDkyNzU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyID0gMHg5Mjc2
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIgPSAweDkyNzc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDID0gMHg5Mjc4OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMgPSAweDkyNzk7Ci0K
LSAgICAvLyBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMDsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBW
MV9JTUcgPSAweDhDMDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzOwotCi0gICAg
Ly8gR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQl9BTUQgPSAweDhDOTI7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCA9IDB4
OEM5MzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQkFf
SU5URVJQT0xBVEVEX0FMUEhBX0FNRCA9IDB4ODdFRTsKLQotICAgIC8vIEdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfaGRyCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSID0gMHg5M0IwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiA9IDB4OTNCMTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIgPSAweDkz
QjI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182
eDVfS0hSID0gMHg5M0IzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9SR0JBX0FTVENfNng2X0tIUiA9IDB4OTNCNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIgPSAweDkzQjU7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSID0gMHg5M0I2Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tI
UiA9IDB4OTNCNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDVfS0hSID0gMHg5M0I4OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIgPSAweDkzQjk7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiA9IDB4OTNCQTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tI
UiA9IDB4OTNCQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9BU1RDXzEyeDEwX0tIUiA9IDB4OTNCQzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiA9IDB4OTNCRDsKLQotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSID0g
MHg5M0QwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ181eDRfS0hSID0gMHg5M0QxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSID0gMHg5M0QyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVf
S0hSID0gMHg5M0QzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ182eDZfS0hSID0gMHg5M0Q0OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSID0gMHg5M0Q1Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDZfS0hSID0gMHg5M0Q2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSID0gMHg5M0Q3OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiA9IDB4
OTNEODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4Nl9LSFIgPSAweDkzRDk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSID0gMHg5M0RBOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgx
MF9LSFIgPSAweDkzREI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNEQzsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSID0gMHg5
M0REOwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUID0gMHg4REJCOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMx
X0VYVCA9IDB4OERCQzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkU7Ci0KLSAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4NEZFOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0g
MHg4NEZGOwotCi0gICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZl
cnMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9EUkFXX0JVRkZFUlNfRVhUID0g
MHg4ODI0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIwX0VYVCA9
IDB4ODgyNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMV9FWFQg
PSAweDg4MjY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjJfRVhU
ID0gMHg4ODI3OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIzX0VY
VCA9IDB4ODgyODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNF9F
WFQgPSAweDg4Mjk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjVf
RVhUID0gMHg4ODJBOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI2
X0VYVCA9IDB4ODgyQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVS
N19FWFQgPSAweDg4MkM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZF
UjhfRVhUID0gMHg4ODJEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZG
RVI5X0VYVCA9IDB4ODgyRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVG
RkVSMTBfRVhUID0gMHg4ODJGOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVIxMV9FWFQgPSAweDg4MzA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjEyX0VYVCA9IDB4ODgzMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSMTNfRVhUID0gMHg4ODMyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVIxNF9FWFQgPSAweDg4MzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjE1X0VYVCA9IDB4ODgzNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgPSAweDhDREY7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMF9FWFQgPSAweDhDRTA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMV9FWFQgPSAweDhDRTE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMl9FWFQgPSAweDhDRTI7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UM19FWFQgPSAw
eDhDRTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UNF9F
WFQgPSAweDhDRTQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hN
RU5UNV9FWFQgPSAweDhDRTU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9B
VFRBQ0hNRU5UNl9FWFQgPSAweDhDRTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UN19FWFQgPSAweDhDRTc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UOF9FWFQgPSAweDhDRTg7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UOV9FWFQgPSAweDhDRTk7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTBfRVhUID0gMHg4Q0VBOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDExX0VYVCA9IDB4OENFQjsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMl9FWFQgPSAw
eDhDRUM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTNf
RVhUID0gMHg4Q0VEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNI
TUVOVDE0X0VYVCA9IDB4OENFRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQxNV9FWFQgPSAweDhDRUY7Ci0KLSAgICAvLyBHTF9LSFJfcGFyYWxsZWxfc2hh
ZGVyX2NvbXBpbGUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBMRVRJT05fU1RB
VFVTX0tIUiA9IDB4OTFCMTsKLQotICAgIC8vIEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xF
ID0gMHg5M0E4OwotCi0gICAgLy8gV2ViR0wgZnVuY3Rpb25zLgotCi0gICAgLy8gR0xfQVJCX3Jv
YnVzdG5lc3MKLSAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJv
bSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKLSAgICAvLyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb2xs
b3dpbmcgd2F5OgotICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IG5vdCByZXNldCB0aGUg
ZXJyb3Igc3RhdGUgZHVyaW5nIHRoaXMgY2FsbC4KLSAgICAvLyBJZiBnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3IsIGl0IHNob3VsZCBjb250aW51ZQotICAgIC8vIHJl
dHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVzdG9yaW5nIHRoZSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBpcyBoYW5kbGVkCi0gICAgLy8gZXh0ZXJuYWxseS4KLSAgICB2aXJ0dWFsIEdDR0xpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKLQotICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQotICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7Ci0KLSAgICAvLyBHTF9BUkJfZHJh
d19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwotCi0gICAgLy8gT3Ro
ZXIgZnVuY3Rpb25zLgotI2lmICFVU0UoQU5HTEUpCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1
c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhl
bHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0KLSNlbmRpZgotCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAKaW5kZXggZDYwYzM3YTlmZmU1YzJjYmUwMzY2ZTI3NmQ4NDg4NjY1YmQ2
ZTIwYi4uYTE0MDkwYTdmOThkNGFmY2FlMzU4MGRkYzhlNzllNjE5MzQzZDk1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAi
RXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0Q29udmVydGVyLmgiCiAjaW5jbHVkZSAi
SG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC0zNzYsMTMgKzM3NSwxMyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCX0lOVEVHRVI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlNSR0JfRVhUOgogICAgICAgICAqY29tcG9uZW50c1BlclBpeGVsID0gMzsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQToKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpSR0JBX0lOVEVHRVI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkJH
UkFfRVhUOiAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QkdS
QV9FWFQ6IC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICAqY29tcG9uZW50c1BlclBpeGVs
ID0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGI1ZjVlY2Qz
ODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMuLjFjY2VlYjUzNzM1MzhkNTM1MjNmNDlk
Y2UyYTA2ODJlNDdkZmM4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjc0LDYgKzY3NCwxNDUgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCID0g
MHg4NEY1OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9CSU5ESU5HX1JF
Q1RBTkdMRV9BUkIgPSAweDg0RjY7CiAKKyAgICAvLyBFWFRfc1JHQiBmb3JtYXRzCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0VYVCA9IDB4OEM0MDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIFNSR0JfQUxQSEFfRVhUID0gMHg4QzQyOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gU1JHQjhfQUxQSEE4X0VYVCA9IDB4OEM0MzsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhU
ID0gMHg4MjEwOworCisgICAgLy8gRVhUX2JsZW5kX21pbm1heCBlbnVtcworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gTUlOX0VYVCA9IDB4ODAwNzsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIE1BWF9FWFQgPSAweDgwMDg7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggZW51bXMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEJHUkFfRVhU
ID0gMHg4MEUxOworCisgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MgZW51bXMKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1MzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIElOTk9DRU5UX0NPTlRFWFRfUkVTRVRfQVJCID0g
MHg4MjU0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVU5LTk9XTl9DT05URVhUX1JF
U0VUX0FSQiA9IDB4ODI1NTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTlRFWFRf
Uk9CVVNUX0FDQ0VTUyA9IDB4OTBGMzsKKworICAgIC8vIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyBuYW1lcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBR01FTlRfU0hBREVS
X0RFUklWQVRJVkVfSElOVF9PRVMgPSAweDhCOEI7CisKKyAgICAvLyBHTF9PRVNfcmdiOF9yZ2Jh
OCBuYW1lcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCOF9PRVMgPSAweDgwNTE7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSR0JBOF9PRVMgPSAweDgwNTg7CisKKyAg
ICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgPSAweDkz
QTA7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCisgICAgLy8gR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUID0gMHg4M0YxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19F
WFQgPSAweDgzRjI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNGMzsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGNfc3JnYgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhDNEM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUID0gMHg4QzRFOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCX0FMUEhBX1MzVENfRFhUNV9FWFQgPSAweDhDNEY7CisKKyAgICAvLyBHTF9PRVNfY29tcHJl
c3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRVRD
MV9SR0I4X09FUyA9IDB4OEQ2NDsKKworICAgIC8vIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9u
X3B2cnRjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9QVlJU
Q180QlBQVjFfSU1HID0gMHg4QzAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAyOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBW
MV9JTUcgPSAweDhDMDM7CisKKyAgICAvLyBHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCX0FNRCA9IDB4
OEM5MjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EID0gMHg4QzkzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EID0gMHg4N0VFOwor
CisgICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIgPSAweDkzQjA7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRf
S0hSID0gMHg5M0IxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUiA9IDB4OTNCMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIgPSAweDkzQjM7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSID0gMHg5M0I0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUiA9
IDB4OTNCNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9B
U1RDXzh4Nl9LSFIgPSAweDkzQjY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSID0gMHg5M0I3OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgPSAweDkzQjg7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiA9IDB4
OTNCOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDhfS0hSID0gMHg5M0JBOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSID0gMHg5M0JCOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSID0gMHg5M0JDOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSID0g
MHg5M0JEOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzR4NF9LSFIgPSAweDkzRDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIgPSAweDkzRDE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4
NV9LSFIgPSAweDkzRDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgPSAweDkzRDM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIgPSAweDkzRDQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4NV9LSFIgPSAweDkzRDU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIgPSAweDkzRDY7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIgPSAw
eDkzRDc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDVfS0hSID0gMHg5M0Q4OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiA9IDB4OTNEOTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
OF9LSFIgPSAweDkzREE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiA9IDB4OTNEQjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSID0gMHg5
M0RDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQ7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9yZ3RjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JF
RF9SR1RDMV9FWFQgPSAweDhEQkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUID0gMHg4REJDOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJEOworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVCA9IDB4OERCRTsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9NQVhfQU5JU09UUk9Q
WV9FWFQgPSAweDg0RkU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfVEVYVFVS
RV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7CisKKyAgICAvLyBHTF9BUkJfZHJhd19idWZm
ZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
TUFYX0RSQVdfQlVGRkVSU19FWFQgPSAweDg4MjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBEUkFXX0JVRkZFUjBfRVhUID0gMHg4ODI1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIxX0VYVCA9IDB4ODgyNjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIERSQVdfQlVGRkVSMl9FWFQgPSAweDg4Mjc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBEUkFXX0JVRkZFUjNfRVhUID0gMHg4ODI4OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gRFJBV19CVUZGRVI0X0VYVCA9IDB4ODgyOTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIERSQVdfQlVGRkVSNV9FWFQgPSAweDg4MkE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBEUkFXX0JVRkZFUjZfRVhUID0gMHg4ODJCOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gRFJBV19CVUZGRVI3X0VYVCA9IDB4ODgyQzsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIERSQVdfQlVGRkVSOF9FWFQgPSAweDg4MkQ7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjlfRVhUID0gMHg4ODJFOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMF9FWFQgPSAweDg4MkY7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjExX0VYVCA9IDB4ODgzMDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTJfRVhUID0gMHg4ODMxOworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxM19FWFQgPSAweDg4MzI7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE0X0VYVCA9IDB4ODgzMzsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTVfRVhUID0gMHg4ODM0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCA9IDB4
OENERjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQwX0VY
VCA9IDB4OENFMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQxX0VYVCA9IDB4OENFMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQyX0VYVCA9IDB4OENFMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TE9SX0FUVEFDSE1FTlQzX0VYVCA9IDB4OENFMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCA9IDB4OENFNDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ1X0VYVCA9IDB4OENFNTsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ2X0VYVCA9IDB4OENFNjsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ3X0VYVCA9IDB4OENFNzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ4X0VYVCA9IDB4OENF
ODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ5X0VYVCA9
IDB4OENFOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQx
MF9FWFQgPSAweDhDRUE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRB
Q0hNRU5UMTFfRVhUID0gMHg4Q0VCOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09M
T1JfQVRUQUNITUVOVDEyX0VYVCA9IDB4OENFQzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTE9SX0FUVEFDSE1FTlQxM19FWFQgPSAweDhDRUQ7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VFOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9IDB4OENFRjsKKworICAg
IC8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQorICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOworCisgICAgLy8gR0xfQU5H
TEVfcmVxdWVzdF9leHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVF
U1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7CisKICAgICAvLyBBdHRlbXB0IHRvIGVu
dW1lcmF0ZSBhbGwgcG9zc2libGUgbmF0aXZlIGltYWdlIGZvcm1hdHMgdG8KICAgICAvLyByZWR1
Y2UgdGhlIGFtb3VudCBvZiB0ZW1wb3JhcnkgYWxsb2NhdGlvbnMgZHVyaW5nIHRleHR1cmUKICAg
ICAvLyB1cGxvYWRpbmcuIFRoaXMgZW51bSBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIGl0IGlzIGFj
Y2Vzc2VkCkBAIC0xMjMzLDYgKzEzNzIsMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBt
dWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG11bHRpRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NH
THNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9m
ZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmKSA9IDA7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBtYXkgb25seSBiZSBjYWxs
ZWQgd2l0aCBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVybnMgdHJ1ZS4K
KyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9
IDA7CisKKyAgICAvLyBUYWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBmb3IgZXhhbXBsZSwg
IkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCisgICAgLy8gQ2hlY2tzIHRvIHNlZSB3
aGV0aGVyIHRoZSBnaXZlbiBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxlZCAoc2VlIGVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQpLgorICAgIC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCisg
ICAgdmlydHVhbCBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisK
KyAgICAvLyBHTF9BUkJfcm9idXN0bmVzcworICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVo
YXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcworICAgIC8vIHNwZWNpZmlj
YXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG11
c3Qgbm90IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcgdGhpcyBjYWxsLgorICAgIC8vIElm
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBhbiBlcnJvciwgaXQgc2hvdWxkIGNv
bnRpbnVlCisgICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVycm9yLiBSZXN0b3JpbmcgdGhlIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKKyAgICAvLyBleHRlcm5hbGx5LgorICAg
IHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOworCisgICAg
Ly8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCisgICAgdmlydHVhbCBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKKwor
ICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCisgICAgdmly
dHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9
IDA7CisKICAgICAvLyA9PT09PT09PT09IE90aGVyIGZ1bmN0aW9ucy4KICAgICBHQ0dMZmxvYXQg
Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOwogICAgIEdDR0xib29sZWFuIGdldEJvb2xlYW4oR0NH
TGVudW0gcG5hbWUpOwpAQCAtMTI0MywxMSArMTQwNyw2IEBAIHB1YmxpYzoKICAgICBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBt
X2F0dHJzOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQogCi0gICAgLy8g
U3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdo
IG5vdAotICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBz
dXBwb3J0ZWQgb24gdGhlCi0gICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVu
c2lvbnNHTDo6c3VwcG9ydHMoKSB0bwotICAgIC8vIGRldGVybWluZSB0aGlzLgotICAgIHZpcnR1
YWwgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRleHRWaXNpYmlsaXR5KGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAppbmRleCAyMzNiMGRmNzU2ZWNkZDRiYzkyZDkwYmFhZjAxNTNjYzZhNTk1
ZmY3Li44ZjVmZjFhZTc2MDBmNWRjOTAwOWQ4NDU1Y2NmZjkxNWJjYTFlNjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00Niw3OCArNDYsNyBAQCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoY29uc3QgR3JhcGhpYwogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZhdWx0OwogCi1FeHRlbnNp
b25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkK
LXsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVT
MkNvbXBsaWFudCgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICByZXR1cm4gY29u
dGV4dEF0dHJpYnV0ZXMoKS53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZl
cnNpb246OldlYkdMMjsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgp
Ci17Ci0gICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCi0g
ICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKSB7Ci0gICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hh
bmdlZCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2VkKCk7
Ci0gICAgfQotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
LSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwotICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgewotICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOwotICAgICAgICBt
X2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKLSAgICB9Ci19CiAKLWJvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17
Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKLSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxp
emUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKLXsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKLSAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRl
bnNpb25zLnNwbGl0KCcgJykpCi0gICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChl
eHRlbnNpb24pOwotfQotCi0jaWYgIVVTRShBTkdMRSkKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OnJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHZvaWQqKQot
ewotfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9y
bWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCopCi17Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtaXZFWFQo
R0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopCi17Ci19Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmICFQTEFURk9STShDT0NPQSkKLSNlbmRpZgogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRleCA1ZTVjMDli
ODcyMDQzZWEwZmEyYTk2N2Y0ZjM5OTNiYWQ4MGE3OTQxLi43OGMxMDA3M2M5MDhlNDFkYmUwNGZk
NTA3YWY4MWQ0MGU4YzBjYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zOSw0MiArMzgsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBwYXJ0cyB0aGF0
IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6CiAvLyAtIERyYXdpbmcg
YnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCiAvLyAtIENvbXBvc2l0aW5nIHN1cHBvcnQuCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6IHB1
YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNHTCB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6IHB1YmxpYyBHcmFw
aGljc0NvbnRleHRHTCB7CiBwdWJsaWM6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CiAgICAgflJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBPdGhlciBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCi0gICAgdXNpbmcgR3JhcGhpY3NDb250
ZXh0R0w6OmlzRW5hYmxlZDsKLSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5h
bDsKLSAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwotICAgIGJvb2wg
aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWFya0NvbnRleHRDaGFu
Z2VkKCkgZmluYWw7CiAKLSAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCi0gICAg
dXNpbmcgRXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7Ci0gICAgYm9vbCBzdXBwb3J0cyhjb25zdCBT
dHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmlu
YWw7Ci0gICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0KLSNpZiAhVVNF
KEFOR0xFKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCop
IGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NH
THNpemVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NH
THVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopIGZpbmFsOwotI2VuZGlmCi0KLXBy
b3RlY3RlZDoKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7Ci0gICAgdmlydHVh
bCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOwotCi1wcml2YXRlOgotICAgIC8vIEd1YXJk
ZWQgYnkgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKS4KLSAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFp
bGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9uczsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
ZDA0OWM1MTA5MjY2MTQ1ZGU5MTE3Nzk3MDQzZTk1ZWJiOTg3YTc5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQU5HTEUpCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLQotI2luY2x1
ZGUgIkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dM
QU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBTkdMRSogY29udGV4dCkKLSAgICA6IG1faW5pdGlhbGl6
ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi17
Ci19Ci0KLUV4dGVuc2lvbnNHTEFOR0xFOjp+RXh0ZW5zaW9uc0dMQU5HTEUoKSA9IGRlZmF1bHQ7
Ci0KLWJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICBpZiAoIW1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKSB7Ci0gICAgICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICAvLyBF
bmFibGUgc3VwcG9ydCBpbiBBTkdMRSAoaWYgbm90IGVuYWJsZWQgYWxyZWFkeSkuCi0gICAgaWYg
KG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJsZWRFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR0xfUmVxdWVzdEV4
dGVuc2lvbkFOR0xFKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBtX2VuYWJsZWRFeHRl
bnNpb25zLmFkZChuYW1lKTsKLQotICAgICAgICBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1fY29s
b3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpCi0gICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJG
bG9hdFJHQkEgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9j
b2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKQotICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgPSB0cnVlOwotICAgIH0KLX0KLQotYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6aXNF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Ci19Ci0KLUdMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkKLXsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwotfQotCi1T
dHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGludCBzb3VyY2VM
ZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURF
Ul9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKLQotICAgIGlmICghc291cmNlTGVuZ3RoKQotICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxl
bmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVk
ZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0gMDsKLSAg
ICBHTF9HZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgs
ICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkpOwotICAgIGlmICghcmV0dXJuZWRMZW5ndGgp
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIC8vIHJldHVybmVkTGVuZ3RoIGRv
ZXMgbm90IGluY2x1ZGUgdGhlIG51bGwgdGVybWluYXRvci4KLSAgICBBU1NFUlQocmV0dXJuZWRM
ZW5ndGggPT0gc291cmNlTGVuZ3RoIC0gMSk7Ci0gICAgcmV0dXJuIFN0cmluZyhuYW1lLmRhdGEo
KSwgcmV0dXJuZWRMZW5ndGgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFs
aXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCi17Ci0gICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcg
PSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25z
U3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0
ZW5zaW9uKTsKLSAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xF
KSkpOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgn
ICcpKQotICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAg
ICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7Ci19Ci0KLWJvb2wgRXh0
ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsK
LSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEdMX0RyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKLX0K
LQotU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRFeHRlbnNpb25zKCkKLXsKLSAgICByZXR1
cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9F
WFRFTlNJT05TKSkpOwotfQotCi1HQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRqdXN0V2Vi
R0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpCi17Ci0gICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9m
IFdFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCBmb3IgV2ViR0wgMS4wIC8gRVMgMi4wIHJlcXVpcmVz
IGEgc2l6ZWQKLSAgICAvLyBpbnRlcm5hbCBmb3JtYXQuIEFkanVzdCBpdCBpZiBuZWNlc3Nhcnkg
YXQgdGhpcyBsb3dlc3QgbGV2ZWwuCi0gICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpIHsKLSAgICAg
ICAgaWYgKG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSAmJiBmb3JtYXQgPT0gR0xfUkdCQSAm
JiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0JBKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkEz
MkY7Ci0gICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiAmJiBmb3JtYXQgPT0g
R0xfUkdCICYmIGludGVybmFsZm9ybWF0ID09IEdMX1JHQikKLSAgICAgICAgICAgIHJldHVybiBH
TF9SR0IzMkY7Ci0gICAgfQotICAgIHJldHVybiBpbnRlcm5hbGZvcm1hdDsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk3OGUy
ZjlmNjRiOWY2MTVjM2IzYTg1YzQzYTNjYTA1NGVkNzVjYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCi0KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOwot
Ci1jbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBpbXBsZW1l
bnRhdGlvbnMuCi0gICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xBTkdMRSopOwotICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTEFOR0xFKCk7Ci0KLSAgICAvLyBF
eHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBHQ0dMaW50
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZHJhd0J1
ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKLQotICAgIFN0cmlu
ZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7Ci0KLSAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgotICAgIEdDR0xl
bnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKLQotcHJpdmF0ZToKLSAgICBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyBnZXRFeHRl
bnNpb25zKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lv
bnMoKTsKLSAgICBib29sIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zOwotICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+
IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRF
eHRlbnNpb25zOwotCi0gICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS4KLSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKiBtX2NvbnRleHQ7Ci0KLSAgICAv
LyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmls
aXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCi0gICAgYm9vbCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9h
dFJHQkEgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA0OGY3MzQyZjNlMDkwMWZlNDY3MmNhNWI1ZTAz
MjFlODQxNmE5NjZkLi5jNWM2YmZhNTc1ZTk0OTQ2NjEwMGUxNjUzMTgzMjgzYTA4YTBkYjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAj
aW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgpAQCAtNzEsNiArNzAsMzAgQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZy
b21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNl
bmRpZgogCisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW5pdGlhbGl6ZSgpCit7Cisg
ICAgaWYgKCFwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsKKyAgICBmb3IgKGF1
dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJpbmcg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX1JF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRl
bnNpb25zLmFkZChleHRlbnNpb24pOworICAgIHJldHVybiBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
K30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemVDb250
ZXh0KCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIHJldHVybiB0cnVlOworfQorCiBHQ0dM
ZW51bSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgp
CiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQpAQCAtMzU0LDcgKzM3Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQog
ewogICAgIGlmICghbV9pc0ZvcldlYkdMMikKLSAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBzdGF0
aWNfY2FzdDxFeHRlbnNpb25zR0xBTkdMRSY+KGdldEV4dGVuc2lvbnMoKSkuYWRqdXN0V2ViR0wx
VGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOworICAg
ICAgICBpbnRlcm5hbGZvcm1hdCA9IGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChp
bnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAgICAgR0xfVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKQEAgLTQyNSwxMyArNDQ4LDYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgp
CiAgICAgR0xfQ2xlYXJEZXB0aGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlcHRoKSk7CiB9CiAKLUV4
dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0RXh0ZW5zaW9ucygpCi17Ci0g
ICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uc0dMQU5HTEU+KHRoaXMpOwotICAgIHJldHVybiAqbV9leHRlbnNpb25zOwotfQot
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgcmVhZG5Q
aXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXpl
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsKQEAgLTQ4Mywx
MiArNDk5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHNJbXBs
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkCiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKQogewotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4
dGVuc2lvbnMoKTsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBvZiB2YXJp
b3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhlcmUuCiAg
ICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFsaXplIHRo
ZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbAogICAgIC8v
IHVzZSB0byB0dXJuIG9uIGZlYXR1cmUgZmxhZ3MuCi0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9y
dHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICBpZiAoc3VwcG9y
dHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgeworICAgICAgICBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgICAg
IG1faW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9pbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RF
UFRIX0NPTVBPTkVOVDE2OwpAQCAtNTA1LDE3ICs1MjAsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaWwKIAogICAgIGlmIChhdHRycy5hbnRpYWxpYXMpIHsKICAgICAgICAgLy8gRklYTUU6IG11
c3QgYWRqdXN0IHRoaXMgd2hlbiB1cGdyYWRpbmcgdG8gV2ViR0wgMi4wIC8gT3BlbkdMIEVTIDMu
MCBzdXBwb3J0LgotICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIikgfHwgIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xF
X2ZyYW1lYnVmZmVyX2JsaXQiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX3JnYjhf
cmdiYTgiKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpIHx8ICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJh
bWVidWZmZXJfYmxpdCIpIHx8ICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3JnYjhfcmdiYTgi
KSkgewogICAgICAgICAgICAgYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgICAgICBz
ZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlIik7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX2JsaXQiKTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgi
R0xfT0VTX3JnYjhfcmdiYTgiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgICAgICBlbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgICAg
ICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKICAgICAgICAg
Ly8gTmVlZGVkIGZvciBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1ZSBzdXBwb3J0IHdpdGhvdXQg
YW50aWFsaWFzaW5nLgotICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xF
X2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOwogICAgIH0KIH0KIApAQCAtMjg5MCw2ICsyOTA1LDY0
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMCiAgICAgR0xfTXVsdGlEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9pbnRlcnMuZGF0YSgpLCBpbnN0
YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOwogfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIC8v
IEVuYWJsZSBzdXBwb3J0IGluIEFOR0xFIChpZiBub3QgZW5hYmxlZCBhbHJlYWR5KS4KKyAgICBp
ZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgR0xfUmVxdWVzdEV4dGVuc2lvbkFO
R0xFKG5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFk
ZChuYW1lKTsKKworICAgICAgICBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVy
X2Zsb2F0X3JnYmEiX3MpCisgICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
PSB0cnVlOworICAgICAgICBlbHNlIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZm
ZXJfZmxvYXRfcmdiIl9zKQorICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0Ig
PSB0cnVlOworICAgIH0KK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVu
c2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKK30KKworR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpCit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJP
UjsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpbnQgc291
cmNlTGVuZ3RoID0gZ2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJD
RV9MRU5HVEhfQU5HTEUpOworCisgICAgaWYgKCFzb3VyY2VMZW5ndGgpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsg
Ly8gR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxs
IHRlcm1pbmF0aW9uLgorICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdMX0dl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVy
bmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CisgICAgaWYgKCFyZXR1cm5lZExlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgLy8gcmV0dXJuZWRMZW5ndGggZG9lcyBub3Qg
aW5jbHVkZSB0aGUgbnVsbCB0ZXJtaW5hdG9yLgorICAgIEFTU0VSVChyZXR1cm5lZExlbmd0aCA9
PSBzb3VyY2VMZW5ndGggLSAxKTsKKyAgICByZXR1cm4gU3RyaW5nKG5hbWUuZGF0YSgpLCByZXR1
cm5lZExlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR0xfRHJhd0J1ZmZlcnNFWFQo
YnVmcy5idWZTaXplLCBidWZzLmRhdGEpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OndhaXRBbmRVcGRhdGVPbGRlc3RGcmFtZSgpCiB7CiAgICAgc2l6ZV90IG9sZGVzdEZyYW1l
Q29tcGxldGlvbkZlbmNlID0gbV9vbGRlc3RGcmFtZUNvbXBsZXRpb25GZW5jZSsrICUgbWF4UGVu
ZGluZ0ZyYW1lczsKQEAgLTI5OTcsNiArMzA3MCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50KQogewogfQogCitH
Q0dMZW51bSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJu
YWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSkKK3sKKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV0VCR0xfY29sb3JfYnVm
ZmVyX2Zsb2F0IGZvciBXZWJHTCAxLjAgLyBFUyAyLjAgcmVxdWlyZXMgYSBzaXplZAorICAgIC8v
IGludGVybmFsIGZvcm1hdC4gQWRqdXN0IGl0IGlmIG5lY2Vzc2FyeSBhdCB0aGlzIGxvd2VzdCBs
ZXZlbC4KKyAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgeworICAgICAgICBpZiAobV93ZWJnbENv
bG9yQnVmZmVyRmxvYXRSR0JBICYmIGZvcm1hdCA9PSBHTF9SR0JBICYmIGludGVybmFsZm9ybWF0
ID09IEdMX1JHQkEpCisgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRjsKKyAgICAgICAgaWYg
KG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCICYmIGZvcm1hdCA9PSBHTF9SR0IgJiYgaW50ZXJu
YWxmb3JtYXQgPT0gR0xfUkdCKQorICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRjsKKyAgICB9
CisgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCAx
MDdlYzIzOGI3ODBmNDQ5MTYwZmY1ZjExOTc1YjFiMDQ0MGJiY2Q4Li40NGQxZWMzZjBkOWYzZTUx
MDgwNTY4ZTRkNDhiMzcxMmEzODc3YjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5o
CkBAIC01Myw3ICs1Myw2IEBAIHN0cnVjdCBnYm1fYm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEV4dGVuc2lvbnNHTDsKLWNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogY2xhc3MgR0xD
b250ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlQnVmZmVyOwpAQCAtMzMyLDYg
KzMzMSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3Rh
bmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIG11bHRp
RHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMs
IEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywg
R0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdj
b3VudCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CisKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZl
cigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5h
bDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKQEAgLTM0Niwx
MiArMzUyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9i
amVjdCkgZmluYWw7CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikg
ZmluYWw7CiAgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsK
LSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKICAgICB2b2lkIHNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFs
OwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
UGl4ZWxCdWZmZXIoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwogICAgIHZvaWQgcmVjeWNs
ZUNvbnRleHQoKTsKQEAgLTM2NiwxNSArMzcwLDIxIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90
ZWN0ZWQ6Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikK
LSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywg
Y29uc3QgUHJvY2Vzc0lkZW50aXR5Jik7Ci0jZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKLSNlbmRpZgorCiAgICAgLy8gQ2FsbGVk
IG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxs
IE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2lu
dHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAorICAgIC8vIEluaXRp
YWxpemVzIHRoZSBpbnN0YW5jZS4gUmV0dXJucyBmYWxzZSBpZiB0aGUgaW5zdGFuY2Ugc2hvdWxk
IG5vdCBiZSB1c2VkLgorICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworICAgIC8vIENhbGxlZCBmaXJz
dCBieSBpbml0aWFsaXplKCkuIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRvIGluc3RhbnRp
YXRlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiaXRzIG9mIEVHTENvbnRleHQuCisgICAgLy8gRklY
TUU6IEN1cnJlbnRseSBwbGF0Zm9ybXMgZG8gbm90IHNoYXJlIHRoZSBjb250ZXh0IGNyZWF0aW9u
LiBUaGV5IHNob3VsZC4KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCgpOworICAgIC8vIENhbGxlZCBsYXN0IGJ5IGluaXRpYWxpemUoKS4gU3ViY2xhc3NlcyBzaG91
bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgcGxhdGZvcm0gc3BlY2lmaWMgc3RhdGUgdGhhdCBk
ZXBlbmQgb24KKyAgICAvLyB0aGUgc2hhcmVkIHN0YXRlLgorICAgIHZpcnR1YWwgYm9vbCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKKwogICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3Mg
cmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcywKICAgICAvLyBpbiBwYXJ0aWN1
bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgog
ICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2Yg
dGhlIE9wZW5HTApAQCAtMzk1LDEzICs0MDUsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHJl
cGFyZVRleHR1cmVJbXBsKCk7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNz
YXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKICAgICB2b2lkIGF0dGFjaERlcHRoQW5k
U3RlbmNpbEJ1ZmZlcklmTmVlZGVkKEdDR0x1aW50IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotCi0gICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGFsbG9jYXRlQW5kQmlu
ZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7Ci0gICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CiAg
ICAgc3RhdGljIGJvb2wgbWFrZUN1cnJlbnQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3Bs
YXksIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wpOwogI2VuZGlmCisgICAgdmlydHVhbCBib29s
IHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpID0gMDsKKwogICAgIC8vIFJldHVybnMgZmFs
c2UgaWYgY29udGV4dCBzaG91bGQgYmUgbG9zdCBkdWUgdG8gdGltZW91dC4KICAgICBib29sIHdh
aXRBbmRVcGRhdGVPbGRlc3RGcmFtZSgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIApAQCAtNDEwLDYg
KzQxOCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUtub3du
VGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpOwogCisgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIu
MCBjb250ZXh0cy4KKyAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNpb25zOworICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKyAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0
UkdCIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZh
bHNlIH07CiAgICAgR0NHTHVpbnQgbV90ZXh0dXJlIHsgMCB9OwogICAgIEdDR0x1aW50IG1fZmJv
IHsgMCB9OwogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2lsQnVmZmVyIHsgMCB9OwpAQCAtNDM0
LDcgKzQ1MCw2IEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9vbGRlc3RGcmFtZUNvbXBsZXRp
b25GZW5jZSB7IDAgfTsKICAgICBTY29wZWRHTEZlbmNlIG1fZnJhbWVDb21wbGV0aW9uRmVuY2Vz
W21heFBlbmRpbmdGcmFtZXNdOwogICAgIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUgbV9zdGF0ZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMQU5HTEU+IG1fZXh0ZW5zaW9uczsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuCkBAIC00NDcsNyArNDYyLDYgQEAgcHJvdGVjdGVkOgogICAgIC8vIFdo
ZW4gcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRlZCB0byBkdXJp
bmcgZGlzcGxheSBwcmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlz
cGxheUJ1ZmZlckJhY2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB7IG51
bGxwdHIgfTsKLSAgICBQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwogI2VuZGlmCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIEdDR0x1aW50IG1fY29tcG9zaXRvclRl
eHR1cmUgeyAwIH07CkBAIC00ODYsNyArNTAwLDYgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+IG1fdGV4bWFwTGF5ZXI7CiAj
ZW5kaWYKIAotICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKICNpZiBVU0UoTklD
T1NJQSkKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6R0NHTEFOR0xFTGF5ZXI7CiAgICAgZnJp
ZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IGEwOGRhMGY0ZjEwZTRjM2U0YTlhNzFlZThmNTMyNWZhNjZlMDkxZmYuLjdiM2I0YTAxZjI2OTZj
MGQ5YjA2MTI4MDY0NjM4ZGY2OTIyYTFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
NDAsNyArNDAsNiBAQAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgotI2ltcG9ydCAiRXh0ZW5z
aW9uc0dMLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5oCmluZGV4IGM1NmU2OTUzNWU3MDk3ZmRkMjVkMmZjZTMwMmUxMDY4
ZTc2YzZlM2IuLmMzMWY1ZWZiZTJlYTgyMGRjNzBmZDUwZDU3YTI4NzFjYzM5NmY5MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKQEAgLTc5LDE3ICs3OSwyMyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBm
aW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCB1cGRhdGVDb250ZXh0T25EaXNwbGF5UmVjb25maWd1cmF0aW9u
KCk7CiAjZW5kaWYKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29hKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNv
dXJjZU93bmVyKTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgorICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplQ29u
dGV4dCgpIGZpbmFsOworICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkgZmluYWw7CiAgICAg
dm9pZCBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dMdWludCkgZmluYWw7CisgICAg
Ym9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSBmaW5hbDsKKyAgICBib29sIGFsbG9j
YXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9vbCBiaW5kRGlzcGxheUJ1
ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1
ZmZlcik7CiAKKyAgICBQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwogI2lmIEVOQUJM
RShWSURFTykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hPiBt
X2N2OwogI2VuZGlmCkBAIC0xMDAsNiArMTA2LDcgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+
IG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb247CiAjZW5kaWYKKwogICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQppbmRleCAwY2QwYTI0ZmRiNzJjMzdiY2QyNWMwMDBjNTQ2MmM2MWMyMDVmNzUxLi4z
NmU4ZjBmYjAyOTM3N2I0ZWZmZTQwNTM1MjM3ZTU4MjIyZmJmNzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFOR0xFVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJBTkdMRVV0aWxpdGllc0NvY29hLmgiCiAjaW1wb3J0ICJDVlV0aWxp
dGllcy5oIgotI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTE5NywyOSArMTk2LDE1
IEBAIHN0YXRpYyBib29sIG5lZWRzRUFHTE9uTWFjKCkKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TENvY29hPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYgYXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcikK
IHsKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoV1RGTW92ZShhdHRyaWJ1dGVzKSwgV1RGTW92ZShyZXNvdXJjZU93bmVyKSkpOwotICAgIGlm
ICghY29udGV4dC0+aXNWYWxpZCgpKQorICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmJiBjcmVhdGlvbkF0dHJpYnV0ZXMsIFByb2Nlc3NJZGVudGl0eSYmIHJlc291
cmNlT3duZXIpCi0gICAgOgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJ
VFlfVE9LRU4pCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3ZlKGNyZWF0aW9uQXR0
cmlidXRlcyksIHJlc291cmNlT3duZXIpCi0jZWxzZQotICAgIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEUoV1RGTW92ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQotI2VuZGlmCisgICAgOiBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSkKKyAgICAsIG1fcmVzb3Vy
Y2VPd25lcihXVEZNb3ZlKHJlc291cmNlT3duZXIpKQogewotICAgIGlmICghaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBpbml0aWFsaXplciBs
aXN0IG9uY2UgbV9yZXNvdXJjZU93bmVyIG1vdmVzIHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Ci0gICAgbV9yZXNvdXJjZU93bmVyID0gV1RGTW92ZShyZXNvdXJjZU93bmVyKTsKLQotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwot
ICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCAmJiBhdHRyaWJ1dGVzLmVmZmVjdGl2ZVBvd2Vy
UHJlZmVyZW5jZSgpID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVy
Zm9ybWFuY2UpCi0gICAgICAgIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24g
PSB0cnVlOwotI2VuZGlmCiB9CiAKIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6On5HcmFwaGljc0Nv
bnRleHRHTENvY29hKCkgPSBkZWZhdWx0OwpAQCAtMjM2LDM4ICsyMjEsMzkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTENvY29hOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKIAogLy8gRklYTUU6
IEJlbG93IGlzIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgbW92ZWQgdG8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSB0byBzaW1wbGlmeSB0aGUgYmFzZSBjbGFzcy4KIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCi1HcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBh
dHRycywgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQotI2Vsc2UKIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJzKQotI2VuZGlmCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRy
cykKIHsKLSAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMud2ViR0xWZXJzaW9uID09IEdyYXBoaWNz
Q29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7Ci0gICAgaWYgKGF0dHJzLnVzZU1ldGFsICYm
ICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0ZvcldlYkdMMikpIHsKLSAgICAgICAgYXR0cnMu
dXNlTWV0YWwgPSBmYWxzZTsKLSAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwor
fQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQoKQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29u
dGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBtX2lzRm9yV2ViR0wyID0gYXR0cmlidXRlcy53ZWJHTFZl
cnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMjsKKyAgICBpZiAo
YXR0cmlidXRlcy51c2VNZXRhbCAmJiAhcGxhdGZvcm1TdXBwb3J0c01ldGFsKG1faXNGb3JXZWJH
TDIpKSB7CisgICAgICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSBmYWxzZTsKKyAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFdFQlhS
KQotICAgIGlmIChhdHRycy54ckNvbXBhdGlibGUpIHsKKyAgICBpZiAoYXR0cmlidXRlcy54ckNv
bXBhdGlibGUpIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhhdCBh
bnkgY29ubmVjdGVkIGhlYWRzZXQgd2lsbCByZXF1aXJlIHRoZSBoaWdoLXBvd2VyIEdQVSwKICAg
ICAgICAgLy8gd2hpY2ggaXMgdGhlIHNhbWUgR1BVIHdlIG5lZWQgdGhpcyBjb250ZXh0IHRvIHVz
ZS4gSG93ZXZlciwgdGhpcyBpcyBub3QgZ3VhcmFudGVlZCwgYW5kCiAgICAgICAgIC8vIHRoZXJl
IGlzIGFsc28gdGhlIGNoYW5jZSB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBHUFVzLiBHaXZlbiB0
aGF0IHlvdSBjYW4gcmVxdWVzdCB0aGUKICAgICAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0wgYmVm
b3JlIGluaXRpYWxpemluZyB0aGUgV2ViWFIgc2Vzc2lvbiwgd2UnbGwgbmVlZCBzb21lIHdheSB0
bwogICAgICAgICAvLyBtaWdyYXRlIHRoZSBjb250ZXh0IHRvIHRoZSBhcHByb3ByaWF0ZSBHUFUg
d2hlbiB0aGUgY29kZSBoZXJlIGRvZXMgbm90IHdvcmsuCiAgICAgICAgIExPRyhXZWJHTCwgIldl
YlhSIGNvbXBhdGlibGUgY29udGV4dCByZXF1ZXN0ZWQuIFRoaXMgd2lsbCBhbHNvIHRyaWdnZXIg
YSByZXF1ZXN0IGZvciB0aGUgaGlnaC1wb3dlciBHUFUuIik7Ci0gICAgICAgIGF0dHJzLmZvcmNl
UmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IHRydWU7Ci0gICAgICAgIHNldENvbnRleHRB
dHRyaWJ1dGVzKGF0dHJzKTsKKyAgICAgICAgYXR0cmlidXRlcy5mb3JjZVJlcXVlc3RGb3JIaWdo
UGVyZm9ybWFuY2VHUFUgPSB0cnVlOworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRy
aWJ1dGVzKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fZGlzcGxheU9iaiA9IGluaXRpYWxpemVF
R0xEaXNwbGF5KGF0dHJzKTsKKyAgICBtX2Rpc3BsYXlPYmogPSBpbml0aWFsaXplRUdMRGlzcGxh
eShhdHRyaWJ1dGVzKTsKICAgICBpZiAoIW1fZGlzcGxheU9iaikKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFhdHRy
cy51c2VNZXRhbCkgeworICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCkgewogICAgICAgICAv
LyBGb3IgT3BlbkdMLCBFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSBpcyB1c2VkLiBUaGUgY29u
dGV4dCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZQogICAgICAgICAvLyBkZWZhdWx0LCBsb3ctcG93
ZXIgZGV2aWNlLiBGb3IgaGlnaC1wZXJmb3JtYW5jZSBjb250ZXh0cywgd2UgcmVxdWVzdCB0aGUg
aGlnaC1wZXJmb3JtYW5jZQogICAgICAgICAvLyBHUFUgaW4gc2V0Q29udGV4dFZpc2liaWxpdHku
IFdoZW4gdGhlIHJlcXVlc3QgaXMgZnVsbGZpbGxlZCBieSB0aGUgc3lzdGVtLCB3ZSBnZXQgdGhl
CkBAIC0yNzUsMTEgKzI2MSwxMSBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0Nv
bnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgICAgICBj
b25zdCBjaGFyICpkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmluZyhtX2Rpc3BsYXlP
YmosIEVHTF9FWFRFTlNJT05TKTsKICAgICAgICAgYm9vbCBzdXBwb3J0c1Bvd2VyUHJlZmVyZW5j
ZSA9IHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNl
Iik7CiAgICAgICAgIGlmICghc3VwcG9ydHNQb3dlclByZWZlcmVuY2UpIHsKLSAgICAgICAgICAg
IGF0dHJzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IGZhbHNlOwotICAgICAg
ICAgICAgaWYgKGF0dHJzLnBvd2VyUHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlKSB7Ci0gICAgICAgICAgICAgICAgYXR0cnMucG93
ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQ7
CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQ
VSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID09
IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKKyAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
c2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOworICAgICAgICAgICAgc2V0Q29udGV4dEF0dHJp
YnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTI5OCwxNCAr
Mjg0LDE0IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgRUdMX0Nob29zZUNvbmZpZyht
X2Rpc3BsYXlPYmosIGNvbmZpZ0F0dHJpYnV0ZXMsICZtX2NvbmZpZ09iaiwgMSwgJm51bWJlckNv
bmZpZ3NSZXR1cm5lZCk7CiAgICAgaWYgKG51bWJlckNvbmZpZ3NSZXR1cm5lZCAhPSAxKSB7CiAg
ICAgICAgIExPRyhXZWJHTCwgIkVHTENvbmZpZyBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBMT0coV2Vi
R0wsICJHb3QgRUdMQ29uZmlnIik7CiAKICAgICBFR0xfQmluZEFQSShFR0xfT1BFTkdMX0VTX0FQ
SSk7CiAgICAgaWYgKEVHTF9HZXRFcnJvcigpICE9IEVHTF9TVUNDRVNTKSB7CiAgICAgICAgIExP
RyhXZWJHTCwgIlVuYWJsZSB0byBiaW5kIHRvIE9QRU5HTF9FU19BUEkiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgVmVjdG9yPEVHTGludD4g
ZWdsQ29udGV4dEF0dHJpYnV0ZXM7CkBAIC0zMzMsMTMgKzMxOSwxMiBAQCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRycwogICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9C
SU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSk7CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0
ZXMuYXBwZW5kKEVHTF9GQUxTRSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgSEFWRShUQVNL
X0lERU5USVRZX1RPS0VOKQorI2lmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICBhdXRv
IGRpc3BsYXlFeHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxheU9iaiwgRUdMX0VY
VEVOU0lPTlMpOwogICAgIGJvb2wgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0eSA9IHN0cnN0cihk
aXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9tZXRhbF9jcmVhdGVfY29udGV4dF9vd25lcnNo
aXBfaWRlbnRpdHkiKTsKLSAgICAvLyBGSVhNRTogVXNlIG1fcmVzb3VyY2VPd25lciBvbmNlIGl0
IG1vdmVzIHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EuCi0gICAgaWYgKGF0dHJzLnVzZU1ldGFs
ICYmIHJlc291cmNlT3duZXIgJiYgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0eSkgeworICAgIGlm
IChhdHRyaWJ1dGVzLnVzZU1ldGFsICYmIG1fcmVzb3VyY2VPd25lciAmJiBzdXBwb3J0c093bmVy
c2hpcElkZW50aXR5KSB7CiAgICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xf
Q09OVEVYVF9NRVRBTF9PV05FUlNISVBfSURFTlRJVFlfQU5HTEUpOwotICAgICAgICBlZ2xDb250
ZXh0QXR0cmlidXRlcy5hcHBlbmQocmVzb3VyY2VPd25lci50YXNrSWRUb2tlbigpKTsKKyAgICAg
ICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKG1fcmVzb3VyY2VPd25lci50YXNrSWRUb2tl
bigpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzQ4LDEwICszMzMsMTQgQEAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cnMKICAgICBtX2NvbnRleHRPYmogPSBFR0xfQ3JlYXRlQ29udGV4dChtX2Rpc3Bs
YXlPYmosIG1fY29uZmlnT2JqLCBFR0xfTk9fQ09OVEVYVCwgZWdsQ29udGV4dEF0dHJpYnV0ZXMu
ZGF0YSgpKTsKICAgICBpZiAobV9jb250ZXh0T2JqID09IEVHTF9OT19DT05URVhUIHx8ICFtYWtl
Q3VycmVudChtX2Rpc3BsYXlPYmosIG1fY29udGV4dE9iaikpIHsKICAgICAgICAgTE9HKFdlYkdM
LCAiRUdMQ29udGV4dCBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBMT0coV2ViR0wsICJHb3QgRUdMQ29u
dGV4dCIpOworICAgIHJldHVybiB0cnVlOworfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4
dEF0dHJpYnV0ZXMoKTsKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgR0xfRW5hYmxl
KEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKQEAg
LTM2MywzOCArMzUyLDM3IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoIW5lZWRzRUFHTE9uTWFjKCkp
IHsKICAgICAgICAgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAgICAgIGlm
ICghYXR0cnMudXNlTWV0YWwpCisgICAgICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCkKICAg
ICAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX3RleHR1cmVfcmVj
dGFuZ2xlIl9zKTsKICAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3VyZmFjZSBmcm9t
IGFuIElPU3VyZmFjZS4KICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhU
X3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICB9CiAjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNpZiBFTkFCTEUoV0VCWFIpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS54
ckNvbXBhdGlibGUpCisgICAgaWYgKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKQogICAgICAgICBy
ZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9PRVNfRUdMX2ltYWdlIl9zKTsKICNlbmRpZgog
ICAgIGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5k
KCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7Ci0gICAgRXh0ZW5zaW9uc0dM
JiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogcmVxdWlyZWRFeHRlbnNpb25zKSB7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0
cyhleHRlbnNpb24pKSB7CisgICAgICAgIGlmICghc3VwcG9ydHNFeHRlbnNpb24oZXh0ZW5zaW9u
KSkgewogICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24u
ICVzIiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKGV4dGVuc2lvbik7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0
ZW5zaW9uKTsKICAgICB9Ci0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkudXNlTWV0YWwpIHsK
KyAgICBpZiAoYXR0cmlidXRlcy51c2VNZXRhbCkgewogICAgICAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFIHVzZXMgc3luYyBvYmplY3RzIHRvIHRocm90dGxlIGRpc3BsYXkgb24gTWV0YWwg
aW1wbGVtZW50YXRpb25zLgogICAgICAgICAvLyBPcGVuR0wgc3luYyBvYmplY3RzIGFyZSBub3Qg
c2lnbmFsaW5nIHVwb24gY29tcGxldGlvbiBvbiBDYXRhbGluYS1lcmEgZHJpdmVycywgc28KICAg
ICAgICAgLy8gT3BlbkdMIGNhbm5vdCB1c2UgdGhpcyBtZXRob2Qgb2YgdGhyb3R0bGluZy4gT3Bl
bkdMIGRyaXZlcnMgdHlwaWNhbGx5IGltcGxlbWVudAogICAgICAgICAvLyBzb21lIHNvcnQgb2Yg
aW50ZXJuYWwgdGhyb3R0bGluZy4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0FSQl9zeW5jIl9zKSkgeworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9z
eW5jIl9zKSkgewogICAgICAgICAgICAgbV91c2VGZW5jZVN5bmNGb3JEaXNwbGF5UmF0ZUxpbWl0
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQVJCX3N5
bmMiX3MpOworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQVJCX3N5bmMi
X3MpOwogICAgICAgICB9CiAgICAgfQogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIGF0
dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmlu
ZyB2YWxpZGF0aW9uLgorICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBU
aGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKICAgICAvLyBDcmVhdGUg
dGhlIHRleHR1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1ZmZlci4KICAgICBH
TGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CkBAIC00
MTEsMTggKzM5OSwxOCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRH
TEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIEdMX0JpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIG1fc3RhdGUuYm91bmREcmF3RkJP
ID0gbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPSBtX2ZibzsKIAotICAgIGlmICghYXR0cnMuYW50aWFs
aWFzICYmIChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKSkKKyAgICBpZiAoIWF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkp
CiAgICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsK
IAogICAgIC8vIElmIG5lY2Vzc2FyeSwgY3JlYXRlIGFub3RoZXIgZnJhbWVidWZmZXIgZm9yIHRo
ZSBtdWx0aXNhbXBsZSByZXN1bHRzLgotICAgIGlmIChhdHRycy5hbnRpYWxpYXMpIHsKKyAgICBp
ZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMpIHsKICAgICAgICAgR0xfR2VuRnJhbWVidWZmZXJzKDEs
ICZtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgbV9zdGF0ZS5ib3VuZERyYXdGQk8g
PSBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87CiAgICAgICAgIEdMX0dl
blJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAgICAgIGlm
IChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKQorICAgICAgICBpZiAoYXR0cmlidXRlcy5z
dGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpCiAgICAgICAgICAgICBHTF9HZW5SZW5kZXJidWZm
ZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICB9IGVsc2UgaWYg
KGF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgIH0gZWxzZSBpZiAoYXR0cmlidXRl
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKICAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCBjcmVh
dGUgYW5vdGhlciB0ZXh0dXJlIHRvIGhhbmRsZSBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1ZSB3
aXRob3V0CiAgICAgICAgIC8vIGFudGlhbGlhc2luZy4KICAgICAgICAgR0xfR2VuVGV4dHVyZXMo
MSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVyZSk7CkBAIC00MzgsNyArNDI2LDExIEBA
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAKICAgICBHTF9DbGVhckNvbG9yKDAsIDAsIDAsIDAp
OwogCi0gICAgTE9HKFdlYkdMLCAiQ3JlYXRlZCBhIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgKCVw
KS4iLCB0aGlzKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1l
dGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93ZXJQcmVmZXJlbmNlKCkgPT0gR3JhcGhpY3ND
b250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKKyAgICAgICAgbV9zd2l0
Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlvbiA9IHRydWU7CisjZW5kaWYKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdM
QU5HTEUoKQpAQCAtNDg1LDExICs0NzcsNiBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp+R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRSgpCiAgICAgTE9HKFdlYkdMLCAiRGVzdHJveWVkIGEgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRSAoJXApLiIsIHRoaXMpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3RleHR1cmU7Ci19Ci0K
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTU1MCw3ICs1MzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OnVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24oKQogfQog
I2VuZGlmCiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZm
ZXJCYWNraW5nKCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkuaXNFbXB0eSgpKTsKICAgICAvLyBSZXNldCB0aGUgY3VycmVudCBiYWNrYnVmZmVyIG5vdyBi
ZWZvcmUgYWxsb2NhdGluZyBhIG5ldyBvbmUgaW4gb3JkZXIgdG8gc2xpZ2h0bHkgcmVkdWNlIG1l
bW9yeSBwcmVzc3VyZS4KQEAgLTU2OCw3ICs1NTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgcmV0dXJuIGFsbG9jYXRl
QW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQorYm9vbCBHcmFw
aGljc0NvbnRleHRHTENvY29hOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygp
CiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7
CiAgICAgYXV0byBiYWNraW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1
ZmZlclNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwpAQCAtNTk4LDcgKzU4
NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6YWxsb2NhdGVBbmRCaW5kRGlzcGxh
eUJ1ZmZlckJhY2tpbmcoKQogICAgIHJldHVybiBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoV1RG
TW92ZShiYWNraW5nKSwgcGJ1ZmZlcik7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6YmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJh
Y2tpbmcsIHZvaWQqIHBidWZmZXIpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2
b2lkKiBwYnVmZmVyKQogewogICAgIEdDR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVm
ZmVyVGV4dHVyZVRhcmdldCgpOwogICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0
b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1Rhcmdl
dCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJF
X1JFQ1RBTkdMRV9BUkIpOwpAQCAtNjg5LDcgKzY3Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6ZGV0YWNoSU9TdXJmYWNlRnJvbVNoYXJlZFRleHR1cmUodm9pZCogaGFuZGxlKQog
fQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7
CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDdkMGNlMzZiNjBh
MGQ2OWE1OTIzYzI0MDBkMDNiYjdiYWQzODY0OTguLjBiYjEwNjViM2E2MTY2OWI5ODUwMTg1MzA0
NWE3MGI2ZmFhMWI1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXgK
ICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCku
aGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8g
Y29udGV4dCA9IGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pKTsKLSAgICBpZiAoIWNv
bnRleHQtPmlzVmFsaWQoKSkKKyAgICBpZiAoIWNvbnRleHQtPmluaXRpYWxpemUoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LmdldCgpKTsKICAgICByZXR1cm4gY29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNTFjYmU2YjdlMTNiODBhZjcx
MmUzZWZlNzZiNjI1MTU4MzQ5ZmY0YS4uNzNlMjQ4NDVjYjMzZTUwZDU0NTdhNjIwNjE4NDQ0MjY5
NTE3ZDY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAv
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgogICAg
IC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCBkOWYxNWY0NWJkZmI0ZTFiYmU4
ZDM5MzYzNWI2MGFhZDFkMmQ5MGE3Li5lNzMyYzFjZjkxYTNkODRmNjQzMmMwZjIyYzg2OGYzZDgw
NDRjNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIHN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgcGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0RXh0
ZW5zaW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmNwcAppbmRleCA3ZDUwMGFiYzBjZjFlZTU1MjY4MzExMmFmY2YyMjI0YWU2OTU3
MWJmLi4yMWU4MjlmYmQxMDFkZjZkNDY5MzE2ZjlkMjljZWQ4NmI0YWM5NjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKIH0KIAogdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjplbnN1
cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgU2hCdWlsdEluUmVzb3VyY2Vz
IEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CiAgICAgICAgIGlmICgh
QU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykgewogICAgICAgICAgICAgQU5HTEVSZXNv
dXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgICAgICBBTkdMRVJlc291cmNlcy5N
YXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9E
UkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZm
ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19C
VUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNv
dXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4
IDI5YTBjNGQ4ZjVhOTI2YzcwOTUzNTQxYzBiMjYxM2ZkYTc1MmI0MjYuLjJjMzdmYWM5NjVjMDIx
NmRhMDVhYzVmYjhlYWFlYjY4M2Q0NGE3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmgKQEAgLTI2LDggKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJF
eHRlbnNpb25zR0wuaCIKLQorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC0z
NSwxNiArMzQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDsKIAotY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIDogcHVibGljIEV4
dGVuc2lvbnNHTCB7CitjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbigpOwogCi0gICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgYm9vbCBz
dXBwb3J0cyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlk
ZTsKKyAgICAvLyBNZXRob2RzIGZvcndhcmRlZCBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAvLyBHTF9PRVNfdmVy
dGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpID0gMDsKQEAgLTUyLDE4ICs1MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsK
IAotICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVy
cmlkZSA9IDA7Ci0KLSAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwg
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lk
ICpkYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CiAKICAgICBib29sIGlzTlZJ
RElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQogICAgIGJvb2wgaXNBTUQoKSBjb25z
dCB7IHJldHVybiBtX2lzQU1EOyB9CkBAIC03OCw3ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBm
cmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7CiAgICAgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5n
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDE1NDYyMzZmOGI2YmRiNTIyM2QwZWRlMzdhYjc0
ZjBlZDZmMTBiY2YuLjg2ZGNiZjMxZTY5ZDBmYzM3YjcyNjhkYTM3NzVjMjUwYzViNjg0Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogCiAgICAg
Ly8gRm9yIEdMX0VYVF9yb2J1c3RuZXNzLCBjaGVjayB0aGF0IHRoZSBjb250ZXh0IHN1cHBvcnRz
IHJvYnVzdCBhY2Nlc3MuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikKLSAg
ICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6OkNPTlRFWFRf
Uk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJVRTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9U
UlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXYKICAgICBtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBk
aXZpc29yKTsKIH0KIAotYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6c3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUg
PT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7CiAgICAgICAgIGF1dG8gbWFqb3JWZXJz
aW9uID0gW10oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDlhNTgxYTAwMGRk
MzcyZmYxZWNkZDkxZmY5OWRlYzk4YWQ4ZTM4NTguLjliYjUyZjliYWFhY2I1NzE2YzRkMDJiOWI1
YmY3OTFhNzhmNzUwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03MSw2ICs3
MSwxMiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIAogY2xhc3MgRXh0ZW5zaW9u
c0dMT3BlbkdMRVMgOiBwdWJsaWMgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIHsKIHB1YmxpYzoK
KyAgICAvLyBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJfU0FNUExFU19JTUcgPSAweDkxMzM7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJ
U0FNUExFX0lNRyA9IDB4OTEzNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9T
QU1QTEVTX0lNRyA9IDB4OTEzNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRV
UkVfU0FNUExFU19JTUcgPSAweDkxMzY7CisKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMg
dG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0
aW9ucy4KICAgICBFeHRlbnNpb25zR0xPcGVuR0xFUyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCos
IGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZyk7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3Bl
bkdMRVMoKTsKQEAgLTEwMSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRuVW5pZm9y
bWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IGludCAqcGFyYW1zKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgc3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBnZXRFeHRl
bnNpb25zKCkgb3ZlcnJpZGU7CiAKICAgICBHQ0dMZW51bSBtX2NvbnRleHRSZXNldFN0YXR1czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGYzMGI1ZTFlNmVhOWQw
MTU3NzRmODA2MGI5MTUzZjQ3ZTMwNjJlYWIuLmJiZjBlODFlYjk4NTUyNWYzMjQ3NzEyOGU0NDM3
MzMwNDlhOWM1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAt
MzEyLDE4ICszMTIsMjAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNHTEVTMkNv
bXBsaWFudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKEdUSykKLUV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQorI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKE9QRU5HTF9FUykKK0V4dGVuc2lvbnNHTE9wZW5H
TEVTJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYg
KCFtX2V4dGVuc2lvbnMpIHsKLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICAvLyBnbEdldFN0
cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KKyAgICAvLyBnbEdldFN0cmluZ2kgaXMg
bm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KKyAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAg
bV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4odGhpcywgIGZh
bHNlKTsKLSNlbHNlCi0gICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENv
cmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAgICByZXR1
cm4gKm1fZXh0ZW5zaW9uczsKK30KKyNlbGlmIFBMQVRGT1JNKEdUSykKK0V4dGVuc2lvbnNHTE9w
ZW5HTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQoreworICAgIC8v
IEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdl
IG11c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAg
bV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIEdMQ29u
dGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKLSNlbmRpZgotICAgIH0KICAgICBy
ZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpAQCAtMzUxLDEwICszNTMsOSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRl
cygpOwogCi0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0
ZW5zaW9ucygpOwogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwor
ICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KSkgeworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0
cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKQEAg
LTM2MiwxMSArMzYzLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRl
RGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpCiAgICAgICAgIHNldENv
bnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKICAgICB9CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAm
JiAhbV9pc0ZvcldlYkdMMikgewotICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0
c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkgewogICAgICAg
ICAgICAgYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgICAgICBzZXRDb250ZXh0QXR0
cmlidXRlcyhhdHRycyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZXh0ZW5zaW9ucy5l
bnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAg
ICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUiKTsKICAgICB9CiB9CiAKQEAgLTMwNjksNiArMzA3MCwzNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVt
LCBHQ0dMU3BhbgogICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTik7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBnZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChuYW1lKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZChuYW1lKTsKK30KKworR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAg
IHJldHVybiBnZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4gYnVmZmVycykKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmRy
YXdCdWZmZXJzRVhUKGJ1ZmZlcnMpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRl
cikKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShzaGFkZXIpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCB1bnBh
Y2tBbGlnbm1lbnQpCiB7CiAgICAgQVNTRVJUKHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFj
a0FsaWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVu
dCA9PSA4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggOTFmZWZlZjUx
MmY2NTI4YmMzYTc3ODMxZWJlOWI2NDUxZDk3NDU2Yy4uNTk3OTY4ZTBmZmU5Mjc4MzA4MDYxMzI5
M2JmZjgwYWM4MDgyMGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTQzLDEwICs0Myw5IEBAIGNsYXNzIEdDR0xMYXllcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBFeHRlbnNpb25zR0w7CiAjaWYgVVNFKE9QRU5HTF9FUykKIGNsYXNzIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOwotI2VsaWYgVVNFKE9QRU5HTCkKKyNlbHNlCiBjbGFzcyBFeHRl
bnNpb25zR0xPcGVuR0w7CiAjZW5kaWYKIGNsYXNzIEhvc3RXaW5kb3c7CkBAIC0zNzAsNiArMzY5
LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJy
aWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBp
bnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAKKyAgICBib29s
IHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBHTGludCBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkgZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisKICAgICAvLyBIZWxwZXIgbWV0
aG9kcy4KICAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKTsKICAgICB2b2lkIHJlY3ljbGVDb250
ZXh0KCk7CkBAIC00MDUsMTEgKzQxMSwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBTdXBwb3J0IGZv
ciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90CiAgICAg
Ly8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBv
biB0aGUKLSAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpz
dXBwb3J0cygpIHRvCisgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lv
bnNHTE9wZW5HTHtFU306OnN1cHBvcnRzKCkgdG8KICAgICAvLyBkZXRlcm1pbmUgdGhpcy4KLSAg
ICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCi0gICAg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7Ci0KKyNpZiBV
U0UoT1BFTkdMX0VTKQorICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVTJiBnZXRFeHRlbnNpb25zKCk7
CisjZWxzZQorICAgIEV4dGVuc2lvbnNHTE9wZW5HTCYgZ2V0RXh0ZW5zaW9ucygpOworI2VuZGlm
CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3Rp
bmcpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwpA
QCAtNDIwLDcgKzQyOCw3IEBAIHByb3RlY3RlZDoKICAgICBHQ0dMdWludCBtX3RleHR1cmUgeyAw
IH07CiAKICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMg
dGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgotICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0
aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0wgdGhhdCBldmVudHVhbGx5IGNh
bGwgT3BlbkdMLgorICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBv
aW50cyBvZiBFeHRlbnNpb25zR0xPcGVuR0wvRXh0ZW5zaW9uR0xPcGVuR0xFUyB0aGF0IGV2ZW50
dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSBXQVJOX1VO
VVNFRF9SRVRVUk47CiAKICAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVl
c3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsCkBAIC01MTIsMTMgKzUyMCwxMiBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZGVyTmFtZUhhc2g+IG5hbWVIYXNo
TWFwRm9yU2hhZGVyczsKIAorICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b247CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM7Ci0gICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+IG1fZXh0ZW5zaW9uczsKLSNlbGlm
IFVTRShPUEVOR0wpCisjZWxzZQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7
Ci0gICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCA2OGI2Y2QzZjUy
NGJmNmEwOWVhZjdmZDY4NDhmYmFjMWRhNzMzYWIzLi5jMzViMmYwZjE1ZDljZDA5YjliMjhiZTBi
ZjQ0Nzc4ODc0MzA1NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcApAQCAtMzQ1LDEwICszNDUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKICAg
ICAgICAgdHlwZSA9IEdMX0hBTEZfRkxPQVRfQVJCOwogICAgIH0KIAotICAgIEFTU0VSVChmb3Jt
YXQgIT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUKTsKLSAgICBpZiAoZm9ybWF0ID09
IEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQpCisgICAgQVNTRVJUKGZvcm1hdCAhPSBHcmFw
aGljc0NvbnRleHRHTDo6U1JHQjhfQUxQSEE4X0VYVCk7CisgICAgaWYgKGZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQpCiAgICAgICAgIG9wZW5HTEZvcm1hdCA9IEdM
X1JHQkE7Ci0gICAgZWxzZSBpZiAoZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpCisg
ICAgZWxzZSBpZiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCkKICAgICAg
ICAgb3BlbkdMRm9ybWF0ID0gR0xfUkdCOwogI2VuZGlmCiAKQEAgLTM5OCw3ICszOTgsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgp
CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0wm
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1f
ZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25z
R0xPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMzg2NDE5OGY3NGE1OTJiYTQyOWM2ZDBhOGJjNjFk
ZTgxYTM4ZjYwOS4uODNiOWI4NmM1MzI3MmZjNTQxNTdjOTBmNDY2NWFmODExOThkYTRmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNp
emUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNp
bCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgIC8vIFNlZSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgotICAgIGJvb2wgc3VwcG9ydFBhY2tlZERl
cHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0
aCkgJiYgZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmli
dXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZC
Ty4KICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7CkBAIC0xMzEsMTAgKzEzMSwxMCBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKICNlbmRpZgog
Ci0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRl
bnNpb25zR0xPcGVuR0xFUyY+KGdldEV4dGVuc2lvbnMoKSk7CisgICAgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGV4dGVuc2lvbnMu
aXNJbWFnaW5hdGlvbigpICYmIGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7CiAgICAgICAgIEdMaW50
IG1heFNhbXBsZUNvdW50OwotICAgICAgICA6OmdsR2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpN
QVhfU0FNUExFU19JTUcsICZtYXhTYW1wbGVDb3VudCk7IAorICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Ok1BWF9TQU1QTEVTX0lNRywgJm1heFNhbXBsZUNvdW50
KTsgCiAgICAgICAgIEdMaW50IHNhbXBsZUNvdW50ID0gc3RkOjptaW4oOCwgbWF4U2FtcGxlQ291
bnQpOwogCiAgICAgICAgIGV4dGVuc2lvbnMuZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBs
ZUlNRyhHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQs
IG1fdGV4dHVyZSwgMCwgc2FtcGxlQ291bnQpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiAKICAgICBhdXRvIGF0
dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50
aWFsaWFzICYmICFnZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0lNR19tdWx0aXNhbXBsZWRf
cmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAh
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUi
KSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAgICBzZXRD
b250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CkBAIC0yNjcsNyArMjY3LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRo
KQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdM
RVMmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAo
IW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNp
b25zR0xPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5jcHAKaW5kZXggZTU0YWUzZjc5OWY4NTJlMWVlN2E3MDYwN2M5MDdiZmMyYzQ1YWMxMi4uOTFl
OGVhODAxNGI3YTk1ODkwMGI0ZjcxYzYwNDM3MTk2NmMxNWRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3
NTBhODRhZjYzODJjNTQxMzBjZjM2ZTg2ZDliYzhjNzYwNGNmYmNiLi43NTI4YzBlOTdmN2U1NmI4
NTc5YWFiNWFlY2Q2N2I5MmIwNWViNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDcsMTUgKzQ3LDggQEAKICNpbmNsdWRlICJPcGVu
R0xTaGltcy5oIgogI2VuZGlmCiAKLSNpZiBVU0UoQU5HTEUpCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMQU5HTEUuaCIKLSNlbHNlCisjaWYgIVVTRShBTkdMRSkKICNpbmNsdWRlIDxBTkdMRS9TaGFk
ZXJMYW5nLmg+Ci0jaWYgVVNFKE9QRU5HTF9FUykKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVu
R0xFUy5oIgotI2Vsc2UKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0wuaCIKLSNlbmRpZgog
I2VuZGlmCiAKICNpZiBVU0UoTklDT1NJQSkKQEAgLTEwOCw3ICsxMDEsMTIgQEAgcHJpdmF0ZToK
IAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0
cmlidXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgIGF1dG8gY29udGV4dCA9IGFk
b3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmli
dXRlcykpKTsKKyNpZiBVU0UoQU5HTEUpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCisgICAgcmV0dXJuIGNvbnRleHQ7CiB9
CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKQEAgLTE0OCw3ICsxNDYsOCBAQCBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleAogCiAgICAgLy8gQ3JlYXRlIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBv
YmplY3QgZmlyc3QgaW4gb3JkZXIgdG8gZXN0YWJsaXN0IGEgY3VycmVudCBjb250ZXh0IG9uIHRo
aXMgdGhyZWFkLgogICAgIGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7
Ci0KKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogI2lmIFVTRShM
SUJFUE9YWSkgJiYgVVNFKE9QRU5HTF9FUykgJiYgRU5BQkxFKFdFQkdMMikKICAgICAvLyBCYWls
IGlmIEdMRVMzIHdhcyByZXF1ZXN0ZWQgYnV0IGNhbm5vdCBiZSBwcm92aWRlZC4KICAgICBpZiAo
YXR0cmlidXRlcy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246
OldlYkdMMiAmJiAhZXBveHlfaXNfZGVza3RvcF9nbCgpICYmIGVwb3h5X2dsX3ZlcnNpb24oKSA8
IDMwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4
IDJkYjJlOGQ3ZDljZDdiOWNhYmI0YzljYTQxNzI0M2YwZTdhMGI1MjIuLjkxZmE1NWJjZjg0ZDcx
OTcwYmM1MGY4NDM3N2U1NWE0MGQ3ZjBhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBP
UlQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4
dEdMVGUKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcj4gY3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsK
ICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7Ci0KKyAgICAKICAgICAvLyBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KICAgICBSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtNTYsNiArNTYsOCBAQCBw
dWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJp
bGl0eShib29sKSBmaW5hbDsKKyAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygp
IGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNlbmRpZgogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckFOR0xFLmNwcAppbmRleCA2NmUzMmFhMDMzM2Y3YjhhNmI1ZjQ4NzQyYTY4NTc5ZGVlZjcx
Y2U1Li5iZmNmNzIxZmY1YzFlNGZiNzVlNmJkODhlZDBmNzUzZjlkODNlYTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkFO
R0xFVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZl
ci5oIgogCkBAIC02Nyw2ICs2Niw4IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpCiAjZW5kaWYK
ICAgICBib29sIHN1Y2Nlc3MgPSBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBBU1NFUlRfVU5V
U0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplKCk7CisgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBo
YXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCkBAIC0yNjAsMTEgKzI2MSwxMSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9v
bCkKIHsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlRm9yRGlzcGxh
eSgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogewogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5
QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKICAgICBjb25zdCBhdXRvIHNpemUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVy
U2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBkMjYxYTQwMjRjZjdlZjcxODdhMTBm
NDc3ZWI1MzNlZjI0NmM4OGNhLi5hMzdmNGE1OGM2ZTgwZDM2NjQ2MjNmYzc2ZDEwMGE5MzY5MzE1
NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVk
ZSAiQml0bWFwVGV4dHVyZUdMLmgiCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVyZVBvb2wuaCIKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2
MmMzNDJjMzNiNi4uODk3MmMyMzk2MzlkYzNjNTA1ZGQ4YmFmZjRhMzA3NGM2Zjk5MjQ3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHIKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIG1fY29udGV4dC0+YWRk
Q2xpZW50KCp0aGlzKTsKICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdl
dFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7Ci0gICAgICAgIFN0cmluZyBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6
OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgICAgICBTdHJpbmcgcmVxdWVzdGFi
bGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHRydWUsIHJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkud2FrZVVwU2VtYXBob3JlKCksIGV4dGVuc2lvbnMs
IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykpOwogICAgIH0gZWxzZQogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJUEM6
OlNlbWFwaG9yZSB7IH0sICIiLCAiIikpOwpAQCAtMTg4LDEwICsxODgsMTAgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXJyb3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
MzJfdCk+JiYgY29tcGwKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoU3RyaW5nJiYgZXh0ZW5zaW9uKQogewogICAgIGFzc2VydElzQ3VycmVudCht
X3N0cmVhbVRocmVhZCk7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZChleHRlbnNpb24pOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChl
eHRlbnNpb24pOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRl
eHRDaGFuZ2VkKCkKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAg
IG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmlu
ZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLmQ4Yjk4MjA3MTBi
NzJkOWI0NDA4YjliYzkwNTc1YmFlMmE2MGQ4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRBc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTk0LDkgKzkz
LDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNh
dGlvbigpIGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9p
ZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKICAgICB2b2lkIGVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOwotICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRD
aGFuZ2VkKCk7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICB2b2lkIHJlc2hh
cGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgPSAwOwogI2VsaWYgVVNFKEdSQVBISUNTX0xBWUVS
X1dDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIy
OTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4OThlMzAyYjIuLjk3NjgwYTg3YWIzYWE0YTA3M2Yy
MTkzM2M1ZmVjYjViMjI0ZGZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVz
c2FnZXMuaW4KQEAgLTM2LDcgKzM2LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXko
KSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFi
bGVkKFN0cmluZyBleHRlbnNpb24pCi0gICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQo
KQorICAgIHZvaWQgTWFya0NvbnRleHRDaGFuZ2VkKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVy
cm9yKHVpbnQzMl90IGVycm9yKQogICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+
ICgpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oCmluZGV4IGQxYzMyOTA1MTdkMjk2YzUxZTM1NmU4YjRlNTcwYzA2N2Ji
Nzc1OGQuLjkzYmQ2NzcxNjhiYjQ0Yzk4MTM0ZGM3ODk4YzkwM2UwZmJkMDNlNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0x
MzM3LDIwICsxMzM3LDIwIEBACiAgICAgewogICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0g
eyB9OwogICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAgICBy
ZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUp
OwogICAgIH0KICAgICB2b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJf
dCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICB7CiAgICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICAgICAg
YXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
YXJnMCk7CisgICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoYXJnMCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmV0dXJuVmFsdWUpKTsKICAgICB9CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMpCiAgICAgewogICAgICAgICBhc3NlcnRJc0N1cnJl
bnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5k
cmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51
bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3
QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+
KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkpKTsKICAgICB9CiAgICAgdm9pZCBnZXRJbnRlcm5h
bGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQz
Ml90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDdhZTFlZTc2
ZGM0YjA3YzQwM2Y2MGI4YWQxM2RhZDliODdiZGVkMGEuLjM4Yzk0YjNhOGI3N2YwMjE5ZjE2Y2Qz
MjA5OWVjY2RmYzc5MzBmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKIAogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
KGF0dHJpYnV0ZXMpCisgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKQogICAgICwg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0
cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0
U3RyZWFtU2l6ZSkKIHsKQEAgLTU5LDMxICs1OSw3MyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiAgICAgZGlzY29ubmVjdEdw
dVByb2Nlc3NJZk5lZWRlZCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRo
OwotICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVp
Z2h0KSk7Ci0gICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiti
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25z
dAogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pKTsKLSAgICBpZiAoIXNlbmRSZXN1bHQpCi0g
ICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworI2lmIEVOQUJMRShXRUJHTDIpCisgICAgcmV0dXJu
IGNvbnRleHRBdHRyaWJ1dGVzKCkud2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2Vi
R0xWZXJzaW9uOjpXZWJHTDI7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1hcmtDb250ZXh0Q2hhbmdlZCgp
Cit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisg
ICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjpt
YXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1hcmtDb250ZXh0Q2hhbmdlZCgpKTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQog
fQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0
Q2hhbmdlZCgpCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN1cHBvcnRzRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgp
OworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9y
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSkpIHsKKyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7Cisg
ICAgICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQorfQorCitib29sIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29u
dGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5p
dGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdGFibGVFeHRlbnNpb25zKQoreworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZh
aWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuYWRkKGV4dGVuc2lvbik7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
YWRkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3Qo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSk7Cisg
ICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpOwogICAgIGlmICghc2VuZFJlc3VsdCkKICAg
ICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCmluZGV4IDI5ZjAxOTg3MTk1NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5NzM5NzEu
LjU3M2Y3Y2I0YzBjOTVmNTQ1ZWY2ZTA2NTQ0ODQ2ZjE3NDhjMzNhMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAi
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eQogICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgICwgcHJpdmF0ZSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgLCBwdWJsaWMg
V2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgeworICAgICwgcHVibGlj
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAg
ICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKTsKQEAgLTU4LDExICs1OCwxNCBAQCBw
dWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CiAKLSAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCisg
ICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgogICAgIHZvaWQgcmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHVzaW5nIFdlYkNvcmU6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7Ci0gICAgdm9pZCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKLSAgICB2
b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29u
c3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKQEAg
LTMyMSw5ICszMjQsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAot
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KLSAgICB2
b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7Ci0KICAgICBib29sIGlzQ29udGV4dExv
c3QoKSBjb25zdCB7IHJldHVybiAhbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsgfQogICAgIHZvaWQg
bWFya0NvbnRleHRMb3N0KCk7CiAKQEAgLTM1MCwxMSArMzUwLDE4IEBAIHByaXZhdGU6CiAgICAg
Ly8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CiAK
KyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YWl0VW50aWxJ
bml0aWFsaXplZCgpOwogICAgIHZvaWQgZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgpOwog
ICAgIHZvaWQgYWJhbmRvbkdwdVByb2Nlc3MoKTsKIAogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9u
KiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFs
c2UgfTsKKyAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFz
aFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4g
bV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVk
RXh0ZW5zaW9uczsKICAgICBHQ0dMZW51bSBtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3QgPSBOT19F
UlJPUjsKICAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gbV9zdHJlYW1Db25uZWN0aW9u
OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA4YjdlNDIyODM2MzViNzc2Mjk1OGFjZjFkYjE4YjAwZDEzM2E0ODU5Li5hMTUzNDE0NjNmMDc5
ZTMwM2Y3NjljZTVlZDFjNjRlY2Q1ZjNjNDYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTEgIEtpbW1v
IEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbnNpb25zR0wg
aXMgbm90IHVzZWZ1bCBjbGFzcywgaXQgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQ5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBtYW51YWxseSBpbXBsZW1l
bnRlZCBmdW5jdGlvbnMuCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgor
CiAyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgc3VwcG9ydCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRl
M2I4OWY3NWZmZTZiMTgxLi5jNjVkODc2YTRhZjIxMWNiZjczY2I3Mjk4NjQzMTA4MWI2MGY4OGY2
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC00MSw3ICs0MSw2IEBAIGltcG9ydCBj
b2xsZWN0aW9ucwogZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxs
YWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIK
IAogcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4u
IikucmVzb2x2ZSgpCi1leHRlbnNpb25zX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAv
ICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgog
CiBmdW5jdGlvbnNfaW5wdXRfZm5zID0gWwogICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2Vi
S2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgiCkBAIC05OCw3ICs5Nyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBQcmVwYXJl
Rm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKLSAgICB2b2lkIE5vdGlmeU1hcmtDb250
ZXh0Q2hhbmdlZCgpCisgICAgdm9pZCBNYXJrQ29udGV4dENoYW5nZWQoKQogICAgIHZvaWQgU3lu
dGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCiAgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1
aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKQEAgLTQyMCwxNCArNDE5LDEyIEBAIGNsYXNzIGNw
cF9mdW5jKG9iamVjdCk6CiAgICAgbmFtZTogc3RyCiAgICAgYXJnczogY3BwX2FyZ19saXN0CiAg
ICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCi0gICAgaXNfZXh0ZW5zaW9uOiBib29sCiAgICAgb3Zl
cmxvYWRfc3VmZml4OiBzdHIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJl
dHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJv
b2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBf
dHlwZSwgYXJnczogY3BwX2FyZ19saXN0KToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAg
ICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKICAgICAgICAgc2VsZi5hcmdzID0g
YXJncwotICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgogICAgICAgICBz
ZWxmLm92ZXJsb2FkX3N1ZmZpeCA9ICIiCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTcx
MSw3ICs3MDgsNiBAQCBjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRv
cihvYmplY3QpOgogY2xhc3Mgd2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgogICAgIG5hbWU6
IHN0cgogICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAotICAgIGlzX2V4dGVuc2lvbjogYm9vbAogICAg
IHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KICAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KICAg
ICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQpAQCAtNzIzLDcgKzcxOSw2IEBAIGNsYXNzIHdl
YmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKICAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMu
bmFtZQogICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNwcF9mdW5jLm92ZXJsb2FkX3N1
ZmZpeAogICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3QoW10pCi0gICAgICAgIHNlbGYu
aXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCiAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxm
LnBvc3RfY2FsbF9zdG10cyA9IFtdCkBAIC03MzgsMTIgKzczMywxMSBAQCBjbGFzcyB3ZWJraXRf
aXBjX2NwcF9pbXBsKG9iamVjdCk6CiAKICAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgogICAg
ICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWyAiYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFk
KTsiIF0KLSAgICAgICAgZXh0ID0gImdldEV4dGVuc2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5z
aW9uIGVsc2UgIiIKIAogICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUg
aW4gc2VsZi5pbl9leHBycykKICAgICAgICAgaXNfYXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMp
ID09IDAKIAotICAgICAgICBjYWxsX2V4cHIgPSBmIm1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1l
fSh7aW5fZXhwcnN9KSIKKyAgICAgICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntzZWxmLm5h
bWV9KHtpbl9leHByc30pIgogICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoK
ICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQogICAgICAg
ICBlbHNlOgpAQCAtODc5LDggKzg3Myw4IEBAIGRlZiBjcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nf
c3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgogICAgIHJldHVybiBjcHBfYXJnX2xpc3QoW2NyZWF0ZV9j
cHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwgZSBpbiBlbnVtZXJhdGUoYXJn
c19zcGVjcyldKQogCiAKLWRlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3RyLCByZXR1cm5fc3Bl
Yzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVuc2lvbjogYm9vbCk6Ci0gICAg
cmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVy
bl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpLCBpc19leHRlbnNp
b249aXNfZXh0ZW5zaW9uKQorZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9z
cGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5h
bWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVh
dGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpKQogCiAKIGRlZiByZWFkX2xpbmVzX3VudGlsKGxp
bmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5vbmUs
IE5vbmVdOgpAQCAtODk2LDIwICs4OTAsNiBAQCBkZWYgbWFpbigpOgogCiAgICAgIyBDb25zdHJ1
Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQ
VSBwcm9jZXNzLgogCi0gICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVt
b3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgotICAgICMgd2l0
aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBl
eHRlbnNpb24gZnVuY3Rpb24uCi0gICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9
IHNldCgpCi0gICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6Ci0gICAgICAg
IGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICBtID0gcmUubWF0Y2gociIu
KnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQotICAgICAgICAgICAg
aWYgbToKLSAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAotICAgICAgICAg
ICAgICAgICAgICBuYW1lPW1bMl0sCi0gICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1b
MV0sCi0gICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3Mo
bVszXSksCi0gICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAotICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0
cihmdW5jKV0pCiAgICAgZnVuY3MgPSBbXQogICAgIHVuaW1wbGVtZW50ZWQgPSBbXQogICAgIGZv
ciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgpAQCAtOTI2LDkgKzkwNiw3IEBAIGRlZiBtYWlu
KCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBh
cmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAotICAgICAgICAgICAgICAgICAg
ICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg
ICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9z
aWduYXR1cmVzCiAgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQogICAgICAgICAgICAg
ICAgICAgICBlbHNlOgo=
</data>
<flag name="commit-queue"
          id="478494"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451686</attachid>
            <date>2022-02-11 06:37:51 -0800</date>
            <delta_ts>2022-02-11 07:11:47 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236490-20220211163748.patch</filename>
            <type>text/plain</type>
            <size>283106</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uNDA1NWY5MWUxZDUyMjliMThkN2Y4MjlhMjFkNDVj
NDEwNTIxOGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJv
dGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFnZSI+
IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTM1
Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZWJjMDFjOWZiNDA4YmQxNjZk
NTQ2OTBkZTU4NjgzZjlhNjUxZjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTEx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDU3YzRhYTliMWExOGNjZmE5YWIyODdlNGUwYjM3MGVlM2FkNTA5Yy4uMWQ2
ODAxNTBlYmY5YzExMTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MDgsNyArMTkwOCw2IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICkKICAg
ICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFm
NWJhZmFjMi4uNDI4OWIxM2FkZTgwM2YyZjJhOTQwOTVjMzg1OGNkZWMzNzM3NTFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xNDM1LDcgKzE0MzUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgKQEAgLTE1NTMsNyArMTU1Miw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMTU4MSw3ICsxNTc5LDYgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
SGVhZGVycy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMjM5YTIyYmQxMDMwMjFkMTI3NTI2YTBmNDhjNzAxZDliNjc0MGUzNS4uYWRkYzEw
MjFmODA5M2UxMDE1OTZmYTc0ZGJhYjY5MGZjYzk4Zjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzIsMTIgKzI3MiwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwog
ICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbGlmIFVTRShP
UEVOR0xfRVMpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5z
aW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGF1dG8mIGV4dGVuc2lv
bnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4
dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwg
PSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsK
ICNlbHNlCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9ucygpKTsKKyAgICBhdXRvJiBleHRlbnNp
b25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCY+KGdsKS5nZXRF
eHRlbnNpb25zKCk7CiAgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2ls
ID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9D
T01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5U
OwpAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBG
cmFtZWJ1ZmZlcigpCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBnbC5nZXRJbnRlZ2VydihHTDo6
TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbHNlCi0g
ICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dM
U3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NHTFNwYW4oJm1heFNhbXBsZUNvdW50LCAx
KSk7CiAjZW5kaWYKICAgICAgICAgLy8gQ2FwIHRoZSBtYXhpdW11bSBtdWx0aXNhbXBsZSBjb3Vu
dCBhdCA0LiBBbnkgbW9yZSB0aGFuIHRoaXMgaXMgbGlrZWx5IG92ZXJraWxsIGFuZCB3aWxsIGlt
cGFjdCBwZXJmb3JtYW5jZS4KICAgICAgICAgbV9zYW1wbGVDb3VudCA9IHN0ZDo6bWluKDQsIG1h
eFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0
YWIzM2E4YmQ3NWU3YTU4YS4uOGM4MDVmMmYwNzdmZmVjYWI3YzUxNWE2YWM3NzQ1ZmIzZWMxY2Nm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIwNzMsNyArMjA3Myw2IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQx
ZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uN2JkNWEyNGI0YTYxYWJhMjEwYmZiNDVhYThjYjczMzIz
MjJmNWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTUsNiArNjE1LDUgQEAgdGVz
dGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCiAvLyB3aXRo
IGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdMLgogCiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2
MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uYjQ1YmQwZDlmYTJkMWM1NmQ1ZGYyMGIx
MjZiYTJjMzU3YWY2NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NywxMSArMjE4Nyw4IEBACiAJCTZFNDdFNjYxMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJD
RDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQy
OTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsgfTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZFNzJGNTRDMjI5RENEMEMwMEIzRTE1MSAvKiBF
eHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Ki87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUy
OTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgKi87IH07
Ci0JCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyN0YyNDQyMjlDOUY4
RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi87IH07CiAJCTZFNzJGNTUxMjI5RENE
MUEwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLzsgfTsKIAkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RThBQ0RFRDIzMzQ1
Q0JDMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4QUNERUIyMzM0NUNBRjAwMjRBQUY1
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCAqLzsgfTsKQEAgLTI0MTIsNyArMjQwOSw2
IEBACiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhB
QzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5NUNGRUQyNzU0
RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwODY5LDggKzEwODY1LDYgQEAKIAkJNkUyNDJCMjkyMzM1OTNENzAw
MkNBREQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjQyQjJBMjMzNTkzRDgwMDJDQURENCAvKiBKU1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyN0YyNDIyMjk4Q0U0QjAwRjFG
NjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xB
TkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25z
R0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQ0MjI5QzlG
OEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFyeUFOR0xFU2V0
dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYzMjI5REI5NzAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA5MDIsNyArMTA4OTYsNiBAQAogCQk2RTUzODhFMDI0NThBRTFEMDA3NkFFMDMgLyogV2Vi
R0xDb2xvckJ1ZmZlckZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTM4OEUxMjQ1OEFF
MUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29sb3JC
dWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNTc2QkMzMjRF
QjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVu
c2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTdDQTMwQTI1QjREMjhB
MDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMTXVs
dGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFN0NBMzBCMjVCNEQzMjgw
MDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xNdWx0aURyYXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTg0RTlERTE3
NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTE1MjYsNyArMTE1MTksNiBAQAogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I5MDQxNkUyNTUwMTEw
OTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTVDRkVDMjc1
NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1NDIsNyArMTE1MzQsNiBAQAogCQk3
QkREQTMxRDI3NEY5REE1MDAzODY1OUUgLyogR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzQ5Mjc1QTAxMzAwMDM4NjU5RSAvKiBQ
cm9jZXNzSWRlbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c0lkZW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzRCMjc1QTAx
MzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RUYy
NzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRkY1OUYxMjc1NzcxRTgwMDc3M0QzOSAv
KiBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdz
LmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0Mzk1LDggKzI0Mzg2LDYgQEAKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIg
LyogQU5HTEVIZWFkZXJzLmggKi8sCiAJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFO
R0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5H
TEVVdGlsaXRpZXMuaCAqLywKLQkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuY3BwICovLAotCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRl
bnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKIAkJCQk3Qjk1Q0ZFQzI3NTRGRjdDMDAwMDYwQ0Ug
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5
ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLApAQCAtMjg4NzAsNyArMjg4NTks
NiBAQAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcyQyAvKiBEaXNwbGF5VXBkYXRlLmNwcCAq
LywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMgLyogRGlzcGxheVVwZGF0ZS5oICovLAog
CQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLywK
LQkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8sCiAJCQkJ
MkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5jcHAgKi8sCiAJCQkJMkU4ODhD
QTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5oICovLAogCQkJCUIyNzUzNTNBMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKQEAgLTI5MDY1LDggKzI5MDUzLDYgQEAK
IAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyogUGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzLmggKi8sCiAJCQkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lv
bi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovLAot
CQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgKi8sCi0JCQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEw
OEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBF
QTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMzQ0NDEsOCArMzQ0MjcsNiBAQAogCQkJ
CTJEMjkzODZCMjM1RjZCNjkwMEM3RjNCMiAvKiBFeGNlcHRpb25EZXRhaWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4Rjcg
LyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTcyRjU1MDIyOURDRDE3MDBC
M0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0UyNzY1
MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY3NjEsNyArMzY3NDUsNiBA
QAogCQkJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjkwNDE3MDI1NTAxMTQy
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRFQyAvKiBSZW1vdGVQbGF5YmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdDOTAwMTIwNEVDIC8qIFJlbW90ZVBsYXli
YWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0ExNTU0MjE3
N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
ODY0OCw3ICszODYzMSw2IEBACiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1By
b3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyMjgzMDMyM0E4NDcwNzAwMzY0
QjdFIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTU5MjI4MEU5MjYw
MDJCMjJBQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkU3
MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdhbWVDb250
cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRENjE2MDBG
QTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRleCA4MjIwMzM5MTVk
MDRlM2IwYzI5NjJmYmI1MjM0ZTkzNGY5M2E3MTE3Li44NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZm
YzE4N2Y2Y2Y1YmJlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
TkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
QU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0yOCwxMCArMjgsNiBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbmNsdWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0o
R1RLKSB8fCBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKFdQRSkKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArMzgsNyBAQCBBTkdMRUluc3RhbmNlZEFycmF5czo6
QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKICNlbmRpZgogfQogCkBAIC01MywxMCArNDksMTAgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBBTkdMRUluc3RhbmNlZEFycmF5c05hbWU7CiB9CiAKLWJvb2wgQU5HTEVJbnN0YW5jZWRBcnJh
eXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBB
TkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDMyZWI4
OTdiMTZkOTA5ZDM5NGExMGE3ODUxYzFlMzI2NzU0ZWM5MzYuLjY5YzQ0ZGQ0OTEzYWZlM2Q1ZjBl
YjNkZjMwYTgxN2MzNGJmZjA4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKaW5kZXggMDllNTBjNGNiYWQzZjU5
OGEzMjJkOTA1MWM5ODNmZmIwZTdiMjVlNy4uNzk2NTYwYmQ0Y2U2YTUwOTYxNjNiZTE5NDAwYmVl
ZTI0ODJmMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29s
b3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsMTAgKzM3LDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRD
b2xvckJ1ZmZlckZsb2F0KTsKIEVYVENvbG9yQnVmZmVyRmxvYXQ6OkVYVENvbG9yQnVmZmVyRmxv
YXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
S2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zs
b2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVYVENvbG9y
QnVmZmVyRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSAr
NTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckZsb2F0
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9
CiAKLWJvb2wgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZm
ZXJGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5oCmluZGV4IGViMjlmYTBlNTQ5M2EyNDgxMWNjMTA2ODczNjNhMWQ4OWNiZGZkNzYuLjk1NDhm
MGY5M2YwZTQ2N2Q2YjkyYWFlZmRjNTk1M2Y0OGQ1MzgwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCmluZGV4IDc5ZTFjYzE5ZDFlYmY3
ZWMwNzQ3ZTM2NWIyMGJmNDFiY2MzMzIwNGYuLjBlZmVkODNhZDZhOTFmMDQ0MWIyM2U0NzE0MmFi
OTg3NzgzMzQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KTsKIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0
OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29s
b3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
Il9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdCgpID0gZGVmYXVsdDsKQEAgLTQ4LDEwICs0NywxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0
ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxm
RmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZs
b2F0LmgKaW5kZXggMTA3NzllZjZjMmM5YzQyNmYzZDY1MTE2MWU4ZjZkMGRkZjIzY2Y3NS4uNmY0
YmM0ODFhMzA0ZjY0ZDQ1ZDkyMmIxYjcyMzExZmM5OGQ5Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKaW5kZXggOGVmNjg3OTMzYWFlY2Y1YjhkMzNjZTAy
MDc4ODJjMmJkZDU3ODk2MS4uYmRkODVkMDcwZDA4NzEzOTYzZGMxN2IxNjRhMmZiYWVlNjA3MDIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhURmxvYXRCbGVu
ZC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhURmxvYXRCbGVuZCk7CiBFWFRGbG9hdEJsZW5kOjpF
WFRGbG9hdEJsZW5kKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBFWFRGbG9hdEJsZW5kOjp+RVhURmxvYXRC
bGVuZCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgRVhURmxvYXRCbGVuZDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVYVEZs
b2F0QmxlbmROYW1lOwogfQogCi1ib29sIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBFWFRGbG9hdEJsZW5kOjpz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZmxvYXRfYmxlbmQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCmluZGV4IDIyYzMwMmEz
MzBhNjIyMjM1Y2Y2ODUyOTNjZDhjMTY4NTZhNDU3YmUuLjQ0NmI5ZmYzNzFkYzI5MmI4ZmU2MTgy
OTMyZDU4ZjU2NjYwNjc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZsb2F0QmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9h
dEJsZW5kLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcAppbmRleCA0NjNhNTg3M2NmMzA5NjMxMmQ5N2Q2MzI3ZjYxYWU4MWU0NzFkZDdk
Li40NmM5NjBmMTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM4LDEyICszNywxMiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9S
R1RDMl9FWFQpOwogfQogCiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCmluZGV4IDUyNzEzOGYzMGY3
NWZhZDA3Mzk4NTk0YjMzM2E3ZGY5YzE0MmQyODAuLmU2NmJiODI0M2E3Mzc5MjFhMGQ1MzUzNzVm
ZWM2Y2RmM2IzOWFmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaCIKIAotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk7CiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGU6OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3BhcmFsbGVsX3NoYWRl
cl9jb21waWxlIl9zKTsKIH0KIAogS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjp+S0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGVOYW1lOwogfQogCi1ib29s
IEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3Bh
cmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKIH0KICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKaW5kZXggMWZjZmMyYjU4ZWQ5ZmI0ZTZkMTE3
NDE4NjE0N2RmM2JkYzAyNTNhOS4uODM4MDRkNmRmOWYyNjMxZDlhNzNkOTUwOGVhNzEwZjlhY2I1
MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1h
cC5jcHAKaW5kZXggNzFhODFkMGQ5MzA5ZDY0NGVlNDg2OGJkYWEyM2VkODc4NGFmNTIxYi4uNjUy
MjBiN2FiYzA3MTMzNTY1NmJkN2ZiMzUzNjJmM2U0YTIyZjZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIk9FU0ZCT1JlbmRlck1pcG1hcC5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTRkJPUmVuZGVyTWlwbWFwKTsKIE9FU0ZCT1JlbmRlck1pcG1h
cDo6T0VTRkJPUmVuZGVyTWlwbWFwKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiBPRVNG
Qk9SZW5kZXJNaXBtYXA6On5PRVNGQk9SZW5kZXJNaXBtYXAoKSA9IGRlZmF1bHQ7CkBAIC00OCw5
ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU0ZCT1JlbmRlck1pcG1h
cDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU0ZCT1JlbmRlck1pcG1hcE5hbWU7CiB9
CiAKLWJvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBt
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCmlu
ZGV4IDMzOTZmOWUxZTExNGU1MWFmY2RmZGQ4M2YzZWQyZWI2ODMzZTZkZjIuLjAyYTcyOGNjZWUx
ZmViZTAwNmQyZDk2YTRkMDg3MGQ4YTRmMjA0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwCmluZGV4IGU5MmIyZmVmYmYwOTQ2OGJlY2RiZDFlZjhkOWRkMjEwZDViOGMy
MGYuLjVkMWU4OTY3N2U2MTJjMjk3ZTQ2MjkxMTg0MzY3MzhmMzU5YjlkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcApAQCAtMjgsNyArMjgs
NiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKIAot
I2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoT0VTVGV4dHVyZUZsb2F0KTsKIE9FU1RleHR1cmVGbG9hdDo6T0VT
VGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9z
KTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWly
ZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAK
IE9FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTUzLDkg
KzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUZsb2F0Ojpn
ZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsKIH0KIAotYm9v
bCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0Nv
bnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsK
KyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxv
YXQiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IDhhNzI3NGRkZWNhOGY3ZDNiMjM0NjU2
YWIzZGY1YzdkOGZmZWQwNmMuLjEwZTE5ZWI3MGE3YmFkOTNlYzY5OWIwOWE2YTU3ODkyOWY1N2M4
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKaW5kZXggNDBiOTg5
OTZmNjdhYzFlOGFiNjVjZDY2NmQ2M2QyN2QzOWYzMWNlZS4uNGVhODY2ZGVlMjRjYzVhMGNlMWEz
MDgxZWU5NzM5Y2IwZTBhMzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUg
Ik9FU1RleHR1cmVIYWxmRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9FU1RleHR1cmVIYWxm
RmxvYXQpOwogT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiX3MpOwogICAgIC8vIFJlbmRlcmFiaWxpdHkgaXMgaW1wbGljaXQgd2hl
biB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQog
CiBPRVNUZXh0dXJlSGFsZkZsb2F0Ojp+T0VTVGV4dHVyZUhhbGZGbG9hdCgpID0gZGVmYXVsdDsK
QEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVy
ZUhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9FU1RleHR1cmVIYWxmRmxv
YXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlSGFsZkZs
b2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXQuaAppbmRleCBhMzU0ZmNiN2UzOWI1MzBiZjQ5MzM2MTI5Njg5MTM2ZWE5NjIx
NjYzLi5kNTE5NDZhYmE0MzkwNGYzMDZlMWE3ZDA3Y2YwMGI5YWViZGU1MTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCAzMGQ0YjNmZjBj
YmQyNGY1MzgwODYzMGJjYzQzMDY3ZDhjZThmMDZkLi40ZjI4NWM1ZjRjMmUwMzAxZGJmNTQ3NDAz
Y2ZmMTBjYzg2OTRmZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
V0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDVhMzg3OTU3YzI2MDY2MjJkYjQ2ZjRiZjYw
ODhiZTMzMTA2MWFiYmIuLjZkMGE4NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTI0MCwxMCArMjM5LDEwIEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkK
IHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRoZSBXZWJHTCAyLjAgY29yZSBBUEkgYW5k
IHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgIG1fY29udGV4dC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIG1fY29u
dGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVw
dGgiKTsKIH0KIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRh
cmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKQEAgLTI3MTUs
MjAgKzI3MTQsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5l
YXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24o
IkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9zZV9jb250
ZXh0IiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVNUQywgIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
QVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMs
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMxLCAiV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJU
QywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
LCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNU
Q3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbywgbV93ZWJnbERlYnVnUmVuZGVyZXJJ
bmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIsIHRydWUpOwotICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9k
ZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUQ29sb3JCdWZmZXJGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdCIsIEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwot
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29s
b3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xv
ckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1
cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRl
cnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9z
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENv
bG9yQnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBt
X2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFk
ZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVs
dGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIHRydWUpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtMjc0Myw0MiArMjc0Miw0MSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAo
bV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlm
IChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQorICAg
IGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6
c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAg
IH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykp
CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3Rj
Il9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250
ZXh0Il9zKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6
OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRo
aXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQi
X3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChF
WFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxl
bF9zaGFkZXJfY29tcGlsZSJfcyk7Ci0gICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0aV9kcmF3Il9zKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xv
ckJ1ZmZlckZsb2F0LmNwcAppbmRleCBhODFhNDljMmNhNzY5MzgwNTg2MjM0YzFmMjA5ZTQ4ZWEy
YzZkYzBmLi42YzBhOWJlNTYxZDc5ZTcwZDlmMzVkNThhOTcwNmM2NTU2NTBkODgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwx
MiArMzcsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29sb3JCdWZmZXJG
bG9hdCk7CiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OldlYkdMQ29sb3JCdWZmZXJGbG9hdChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CiAgICAgLy8gT3B0aW1p
c3RpY2FsbHkgZW5hYmxlIFJHQiBmbG9hdGluZy1wb2ludCByZW5kZXIgdGFyZ2V0cyBhbHNvLCBp
ZiBwb3NzaWJsZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOwogICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAgLy8gU3BlYyBy
ZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0bHkgaGVyZS4K
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsK
IH0KIAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2ViR0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBk
ZWZhdWx0OwpAQCAtNTMsMTAgKzUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1l
IFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojpz
dXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykKLSAgICAgICAgJiYgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpCisgICAgICAgICYmIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAppbmRleCAwZDJkMDdjMjU1
OTllMDRjY2VjYTA2NmE0NTk2NTA1ZDEwMmUxODY0Li45NGNkZWQ2Y2Q2MzY3YzE4ZDYwMDJhNmVh
ZWIyMTQwMzEzMjM5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXggNmVhY2ExZjJhMDI1MTc2ZGE0NTNiNTAw
MTI4YTM2ZjExMzZiODE1ZC4uNGZmMDIyZTllZDUxMmE5MmVkYTMxMDFjZjFjMjZjMmVlNWFmODM5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzksNDEgKzM4LDQxIEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyk7CiAKIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKLSAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfaGRyIl9zKSkKLSAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIl9zKSkKKyAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19oZHIiX3MpKQorICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lv
bl9hc3RjX2xkciJfcykpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tI
Uik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUik7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
Uik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfOHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7CiAgICAgCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2
X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUik7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MngxMl9LSFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpAQCAtOTUsMTAgKzk0LDEwIEBAIFZlY3RvcjxT
dHJpbmc+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpnZXRTdXBwb3J0ZWRQcm9maWxlcygp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2hkciJfcykKLSAgICAgICAgfHwgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9z
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19oZHIiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKaW5kZXggMzBlZmUzZDgxYzFiOWI5NDYz
Mzk3MzFkMzc4ZDJjYzE3YTMxNTlmMC4uZmEwZTViOTllM2UxZjQ2Y2I4NTU0MDI3MjYyZTA2NWJm
MThmMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBnZXRTdXBwb3J0ZWRQcm9maWxlcygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNv
bnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSERSU3VwcG9y
dGVkIDogMTsKICAgICBib29sIG1faXNMRFJTdXBwb3J0ZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApp
bmRleCBjOWU3YmUzMGM2MzEwNTAzMDNkZmJlNjZhMTMzZmZkNDI0NmVjMjI5Li5iYzNlYmUyZDVl
NzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMjks
NyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTEgKzM4LDExIEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0g
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2Vk
X0FUQ190ZXh0dXJlIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFf
QU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VY
UExJQ0lUX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQ
SEFfQU1EKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMoKSA9IGRlZmF1bHQ7CkBAIC01Myw5ICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDTmFtZTsKIH0KIAotYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU1EX2NvbXByZXNz
ZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oCmluZGV4IGUwYmQyNjYxMDk0NDBmY2IzMDdjOTNiMzVjNTQzMGIxZGQ5
NGQxZmEuLjEwNTY4YTlkZDk0YzNiZTI3NzhjMzI0Nzg5YzRmOGY3NTQ0YWE0YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4IDRmZWFhNWRkODc5MTIzNTkzMWY5
ODU5Zjk2NzBjNDY4YTVhM2JmYTMuLjkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5
ZjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCIKIAotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zOSwxOCArMzgsMTggQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUjExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMy
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOwogfQogCiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpID0gZGVm
YXVsdDsKQEAgLTYwLDkgKzU5LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9v
bCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7
CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5o
CmluZGV4IDc0Njc3OGNjMmRlMDIzOWI5ZWUyYzc1M2RiMGY2OTJlMDRkODk3ZDQuLmMzODgyOTEx
YWI1OTZkOWYyMTA2YTgxODFlOWVmMjBjMjhkMDgxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZDlhN2NmYWI2OWU3NmVhZTMxN2VjMGJjZjU2NTQ5OTZj
ZjI0MTVlYS4uYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYxOTBiMTcwOTJmNjA4MDliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKTsKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTKTsKKyAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhf
T0VTKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6On5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMSgpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25z
dAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMU5hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2NvbXBy
ZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKaW5kZXggMDZmZTI3YWFiMTc4M2RiYzFi
M2IwMWUxZWY0OTgwOWJkM2NkYjIzYy4uMDQ0OWY1NzA0NDY0YzI1NmJiMzgzZDc3NGFmYmM5ZTM2
ZjE3OTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoKTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApp
bmRleCAxYTIwYzA3ZDI3MzNjMTgwZTQ1YWRmYTQzZGFmOGU4NTM2YjQ0NWJhLi41YTg0OTllOWU0
Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQw
LDEyICszOSwxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQ
UFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKIH0KIAogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgPSBkZWZh
dWx0OwpAQCAtNTUsOSArNTQsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25f
cHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuaAppbmRleCBhODY2OWYwZWI4ZDAyZjA4OTgwMGNmMmMyNjViODFjN2E1ZjNj
YTVkLi4zMzcyYzI5YWIyNGU1Yzg5MGZhMzM3ZWIwZjk0OWVlZjllZjVjMDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggMDdiYTRmYTViZTEy
NTdjM2M4MTIwMzc5OGMxZjk1ZmE3NzQ2YTlhZi4uZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBh
OTE4NmEzYTUwMjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00MCwxNSArMzksMTUgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKTsKIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKTsKLSAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgIGF1
dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAg
IGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQogCiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkg
PSBkZWZhdWx0OwpAQCAtNTgsMTYgKzU3LDE1IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CiAjaWYgVVNFKEFOR0xFKQotICAg
IHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAm
JiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDMiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKICNlbHNlCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgK
aW5kZXggYTM0NzNkOGVlZmJkMjIyZjFiMjZjYjEyOWQ0ZDQ0NzJjYzQxMTUwOS4uMWRiZjQ1YTRj
MGUyNDNiM2M2MDAwMTRmNTVmNmYwZDhmNTQ4MDM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRleCA1MGQwYmQ5MDdlOGZkZWU4ZmQ0MWQ2
NWQyMWI4ZDAwYTJmYWZmNTc3Li5mNjVmNDJhZTIyYWM3MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2
NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgi
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzks
MTMgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0IpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9u
cyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiIik7Ci0KLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0Y19zcmdiIik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6On5XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoKSA9IGRlZmF1bHQ7CkBAIC01NSwxMCArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBj
b25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0JOYW1lOwogfQog
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1
dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCmluZGV4IGM3OTNiOTE2ZGIwZTY2
Y2YzZTljNjc3MGY1NjYwN2YzMThmZjc0NmIuLjU5YTY2M2YxNGQxZmI0YmM2Yzg1ODY3NWY1NWY0
OGQ3YTdlZmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQigpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApp
bmRleCA2YjA0OTU0YTRhNTI5Y2U4ODJmMmE2NGJiM2Q4NjdmYTg0YzM4Y2YwLi5hNjlkYTI5MDM4
NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQxLDcgKzQw
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVidWdTaGFkZXJzKTsKIFdl
YkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSIpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTcsNyArNTYsNyBAQCBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRl
cnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXImIHNoYWRlcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2Jq
ZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
Lm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9iamVjdCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IGE2OTE1MzIzYTg0OTQ0ZTU5YmMxNzJkM2Y1Yjk0MzM3
MjY4MTQzNzYuLjkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1NTgwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICszOCw5IEBAIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJHTERlcHRoVGV4dHVyZSk7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xE
ZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOworICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdM
RGVwdGhUZXh0dXJlKCkgPSBkZWZhdWx0OwpAQCAtNTIsOSArNTIsOCBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJv
b2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9k
ZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMGRjMTdlYTli
YzBjZGM3NGQxZTYxYzFmMDI1M2M4ZWNlYjM2ODk1My4uMDY3MGE0NzY0MmJmYmZlY2JkZWY1NjM3
OGEyYmViNWIxOGM5NWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3
QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQog
ewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
IH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBA
IC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRHJhd0J1
ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwog
I2VuZGlmCiB9CkBAIC03NSw3ICs3NCw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1
ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICB9CiAg
ICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJy
ZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hN
RU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0geyBidWZzWzBdID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpCQUNLID8gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKLSAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQodmFsdWUpOworICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKHZhbHVlKTsKICAg
ICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0woY29u
c3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAg
ICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAh
PSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKKyAgICAgICAgICAg
IGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FICYmIGJ1ZnNbaV0gIT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpIHsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhU
IG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC05
OCw4ICs5Nyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlz
IHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50
ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKLSAgICBHQ0dMaW50IG1h
eENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFY
X0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IGNv
bnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
KTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJbnRlZ2Vy
KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICBpZiAo
bWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0YWNobWVudHMgPCA0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywxMCArMTA2LDEwIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
d2ViCiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAw
LCAwLCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBm
b3Igb3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
LSAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRo
U3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIikKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3Rl
bmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRo
U3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggNTBiYWNmNTY0ZmNhZjY2NmY4
NTdiZDQ5MTU2Mjc5NDJjZmM1MjA3My4uNDlmYjFkZGRmNThhOGVkZmMwMWI0OGRhNWRmZjQ5Nzcx
Zjc2ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKQEAgLTI3OSwyMSArMjc4LDIxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJp
dHNCeUF0dGFjaG1lbnRUeXBlKEdDR0xlbnVtIGF0dGFjaG1lbnQpCiB7CiAgICAgc3dpdGNoIChh
dHRhY2htZW50KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVO
VDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNI
TUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDhfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1F
TlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNI
TUVOVDRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ1
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDdfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0FUVEFDSE1FTlQxNV9FWFQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQlVGRkVSX0JJVDsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9BVFRBQ0hN
RU5UOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7
CkBAIC0zNjMsOCArMzYyLDggQEAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9ybWF0
KEdDR0xlbnVtIGZvcm1hdCkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMTZJOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEzMkk6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCQTMyVUk6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhB
X0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklU
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDE2OgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDI0OgpAQCAtNjMzLDcgKzYzMiw3
IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiBy
ZWFzb24pIGNvbnN0CiAgICAgICAgIEdDR0xlbnVtIGF0dGFjaG1lbnRGb3JtYXQgPSBhdHRhY2ht
ZW50LT5nZXRGb3JtYXQoKTsKIAogICAgICAgICAvLyBBdHRhY2hpbmcgYW4gU1JHQl9FWFQgZm9y
bWF0IGF0dGFjaG1lbnQgdG8gYSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkLgotICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUKQorICAgICAgICBpZiAo
YXR0YWNobWVudEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQpCiAgICAgICAg
ICAgICBhdHRhY2htZW50Rm9ybWF0ID0gMDsKIAogICAgICAgICBpZiAoIWF0dGFjaG1lbnRGb3Jt
YXQpIHsKQEAgLTgzMywxOCArODMyLDE4IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1
ZmZlcnNJZk5lY2Vzc2FyeShib29sIGZvcmNlKQogICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+
aXNXZWJHTDIoKSkKICAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdM
KCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzRVhUKG1f
ZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIEdDR0xlbnVtIFdl
YkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoR0NHTGVudW0gZHJhd0J1ZmZlcikKIHsKLSAg
ICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGRyYXdCdWZmZXIgLSBFeHRlbnNpb25zR0w6
OkRSQVdfQlVGRkVSMF9FWFQpOworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJh
d0J1ZmZlciAtIEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUKTsKICAgICBBU1NF
UlQoaW5kZXggPj0gMCk7CiAgICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihtX2RyYXdC
dWZmZXJzLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBtX2RyYXdCdWZmZXJzW2luZGV4XTsKLSAg
ICBpZiAoZHJhd0J1ZmZlciA9PSBFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQpCisgICAg
aWYgKGRyYXdCdWZmZXIgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdfQlVGRkVSMF9FWFQpCiAg
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDA7CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCmluZGV4IDY0YjE1ZDVmZjg2MTNjZmQ3ODRjN2Uz
MWQwMjJkNTNiZDYxM2NlZmUuLmYxY2M1NmM5ZGZiMTg4NGI4YjhkZWFhMmVlZmU1ODI3ZjkyZmVl
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xNdWx0
aURyYXcuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQyLDggQEAg
c3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlE
cmF3OjpJbnQzMkxpc3QmIGxpc3QsIEcKIFdlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKTsKLSAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX211bHRpX2RyYXciX3MpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiB9CiAKIFdlYkdMTXVsdGlEcmF3Ojp+V2ViR0xN
dWx0aURyYXcoKSA9IGRlZmF1bHQ7CkBAIC01NCwxMCArNTMsMTAgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVy
biBXZWJHTE11bHRpRHJhd05hbWU7CiB9CiAKLWJvb2wgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRl
ZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJl
dHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKLSAgICAgICAgJiYgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAogdm9pZCBXZWJHTE11bHRpRHJhdzo6
bXVsdGlEcmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3Qs
IEdDR0x1aW50IGZpcnN0c09mZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNv
dW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5oCmluZGV4IDY1OTI5ZjUxY2FiOGJmODkyN2I3YzkwYmU5NmMx
OGU0ODMxODFkNzYuLjUwZDZkYjgxYTJkOTc0Mzg4MDBiNGU3OWRhMzEyYTIwMjIyNTBkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
Jik7CiAKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c1dFQkdMKEdDR0xlbnVtIG1vZGUsIEludDMy
TGlzdCBmaXJzdHNMaXN0LCBHQ0dMdWludCBmaXJzdHNPZmZzZXQsIEludDMyTGlzdCBjb3VudHNM
aXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBmYTU3YmI1NDAyM2UzZmY5OTYzNGIzYTk5OTE4ZTA5M2NhYTJkNGJiLi5jOTYwYzI2
MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAi
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKQEAgLTE1MywxMCArMTUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0RlcHRoLCAiRVhUX2ZyYWdfZGVwdGgiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSkg
ewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVyZUxPRCkgewotICAgICAgICAgICAgaWYg
KCEobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9B
UkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCisgICAgICAgICAgICBpZiAoIShtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkp
CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJfcyk7CiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0g
YWRvcHRSZWYobmV3IEVYVFNoYWRlclRleHR1cmVMT0QoKnRoaXMpKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0xNjUsMzEgKzE2NCwzMSBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIH0KICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCAiRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJh
bGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVk
KCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21w
aWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwog
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTU3RhbmRhcmREZXJpdmF0aXZlcywgbV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZW5hYmxlU3VwcG9y
dGVkRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNf
dGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAi
T0VTX3RleHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKTsKLSAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBw
b3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxmRmxv
YXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNU
ZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChPRVNWZXJ0ZXhBcnJheU9iamVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9u
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoT0VTRWxlbWVudEluZGV4VWludCwgbV9vZXNFbGVtZW50SW5kZXhVaW50LCAiT0VTX2VsZW1l
bnRfaW5kZXhfdWludCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTRkJPUmVuZGVyTWlw
bWFwLCBtX29lc0ZCT1JlbmRlck1pcG1hcCwgIk9FU19mYm9fcmVuZGVyX21pcG1hcCIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSk7CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQs
ICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VC
R0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1
cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhp
cykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdi
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3Ny
Z2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlcHRoVGV4dHVyZSwgbV93ZWJnbERl
cHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiLCBXZWJHTERlcHRoVGV4dHVyZTo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCR0xfZHJhd19idWZmZXJzIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZl
cnMpIHsKICAgICAgICAgICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IGFkb3B0UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJz
KCp0aGlzKSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQpAQCAtMTk4LDEwICsx
OTcsMTAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSkgewogICAgICAgICBpZiAoIW1f
YW5nbGVJbnN0YW5jZWRBcnJheXMpIHsKLSAgICAgICAgICAgIGlmICghQU5HTEVJbnN0YW5jZWRB
cnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgICAgICAgICBpZiAoIUFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogICAgICAgICAg
ICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBhZG9wdFJlZihuZXcgQU5HTEVJbnN0YW5j
ZWRBcnJheXMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0y
MDksMTEgKzIwOCwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gbV9hbmdsZUlu
c3RhbmNlZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1
Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIl9zKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwg
IkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJG
bG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTE11
bHRpRHJhdywgbV93ZWJnbE11bHRpRHJhdywgIldFQkdMX211bHRpX2RyYXciLCBXZWJHTE11bHRp
RHJhdzo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERl
YnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBt
X2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJF
WFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZm
ZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC0yMjcsNjkgKzIyNiw2OSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIGlm
IChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9ibGVu
ZF9taW5tYXgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9F
WFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21p
bm1heCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9FWFRfc1JHQiJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X0VYVF9zUkdCIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiX3MpOwotICAg
IGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVw
dGgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZnJh
Z19kZXB0aCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mcmFnX2RlcHRoIl9zKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFk
ZXJfdGV4dHVyZV9sb2QiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9z
KSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKKyAgICBp
ZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7Ci0gICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVt
ZW50X2luZGV4X3VpbnQiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsKLSAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKSB7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMi
X3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZy
dGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NS
R0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgaWYgKFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlcHRoX3RleHR1cmUiX3MpOwogICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgaWYgKEFOR0xF
SW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChBTkdMRUluc3RhbmNl
ZEFycmF5czo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpCisg
ICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3No
YWRlcnMiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8i
X3MpOwotICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkK
KyAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsK
LSAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhURmxv
YXRCbGVuZDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfZmxvYXRfYmxlbmQiX3MpOwotICAgIGlmIChXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCpt
X2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxv
YXQiX3MpOwotICAgIGlmIChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhp
cykpCisgICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUi
KTsKLSAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQkdMX211bHRpX2RyYXciX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMCw3
ICszMjksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOgogICAg
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CkBAIC0zNDMsMTYgKzM0MiwxNiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyPihvYmpl
Y3QpOwotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQ6IHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKICAgICAgICAgICAgIGlm
ICghbV9leHRzUkdCKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciByZW5kZXJidWZmZXIgYXR0YWNobWVu
dCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiByZW5kZXJCdWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2JqZWN0LmdldCgpKTsKICAgICAgICAgICAg
IEdDR0xlbnVtIHJlbmRlckJ1ZmZlckZvcm1hdCA9IHJlbmRlckJ1ZmZlci0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEV4
dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpOworICAgICAgICAgICAg
QVNTRVJUKHJlbmRlckJ1ZmZlckZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQg
JiYgcmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VCk7CisgICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVyRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCOF9BTFBIQThfRVhUKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUKTsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTM2Nyw5ICszNjYsOSBAQCBHQ0dMaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQogICAgIGlmICghc3VwcG9y
dHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4RHJhd0J1
ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIo
RXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgIG1fbWF4RHJhd0J1
ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFX
X0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZmZXJzIHJlcXVpcmVzIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgogICAgIHJldHVybiBzdGQ6
Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVudHMpOwogfQpAQCAtMzc5
LDcgKzM3OCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIG1fbWF4Q29s
b3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9CiAKQEAgLTQ1
NCw5ICs0NTMsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEVx
dWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkZVTkNfQUREOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZVTkNfU1VC
VFJBQ1Q6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19SRVZFUlNFX1NVQlRSQUNU
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNSU5fRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfRVhUOgotICAgICAgICBpZiAoKG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNSU5fRVhUIHx8
IG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNQVhfRVhUKSAmJiAhbV9leHRCbGVuZE1pbk1heCkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6TUFYX0VYVDoKKyAgICAgICAgaWYgKChtb2RlID09IEdyYXBoaWNzQ29udGV4dEdM
OjpNSU5fRVhUIHx8IG1vZGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9FWFQpICYmICFtX2V4
dEJsZW5kTWluTWF4KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIG1vZGUiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBi
OGI1ZmI2NWFjZjQxMmU5MzIyNTI0NWE0MWE1ZDgxODE1NTVkNjgxLi5kNTI1OWM0M2JiOGQyMDg1
MjVjMmIzNTQ0OWU3MzA1OTM5YWI1Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUg
IkVYVHNSR0IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01NTUsMTIgKzU1NCwxMiBAQCBzdGF0aWMg
dWludDhfdCBnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JBKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
NTY1OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KENoYW5uZWxCaXRzOjpSR0IpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCNV9BMToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCQSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfQ09NUE9ORU5UOgpAQCAtNjQzLDggKzY0Miw4IEBAIHN0YXRpYyBib29sIHBv
c3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMCiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NURU5DSUw4LCBHcmFw
aGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVE
X0lOVF8yNF84KTsKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0Nv
bnRleHRHTDo6REVQVEgzMkZfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVO
Q0lMLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfRVhU
LCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdC
X0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhULCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhULCBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9BTFBIQV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRF
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA5MSwx
NyArMTA5MCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3Mo
KQogICAgIC8vIHR1cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJD
b21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dM
RVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAg
ICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAg
ICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRo
X3RleHR1cmUiKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dM
RVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxzZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0
ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVf
bm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdv
Iik7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRl
eHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikgfHwg
bV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsK
ICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAgbV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3JvYnVzdG5lc3MiKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0zMzAzLDkgKzMzMDIs
OSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiAiV2ViR0wgMS4wIl9zdHI7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRf
T0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgaWYgKG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcykKLSAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRl
cihFeHRlbnNpb25zR0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRH
TDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOwogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVy
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFdlYkdMRGVidWdS
ZW5kZXJlckluZm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgpAQCAtMzMzNiwyNSArMzMzNSwy
NSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxlZCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8v
IEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAobV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJh
bWV0ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAg
ICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOwogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3Qg
ZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVmZmVycyBCRUdJTgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQ6IC8v
IEVYVF9kcmF3X2J1ZmZlcnMgQkVHSU4KICAgICAgICAgaWYgKG1fd2ViZ2xEcmF3QnVmZmVycyB8
fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdldE1heENvbG9yQXR0YWNobWVudHMo
KTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kcmF3
X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgogICAgICAgICBpZiAobV93ZWJnbERyYXdC
dWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0TWF4RHJhd0J1ZmZl
cnMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9k
cmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgaWYgKChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkK
LSAgICAgICAgICAgICYmIHBuYW1lID49IEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVAot
ICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dM
OjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkpIHsKKyAgICAgICAgICAg
ICYmIHBuYW1lID49IEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBfRVhUCisgICAgICAg
ICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xlbnVtPihHcmFwaGljc0NvbnRleHRHTDo6
RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7CiAgICAgICAgICAgICBH
Q0dMaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiAgICAgICAgICAgICBpZiAo
bV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX2ZyYW1lYnVm
ZmVyQmluZGluZy0+Z2V0RHJhd0J1ZmZlcihwbmFtZSk7CkBAIC0zMzcyLDcgKzMzNzEsNyBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIC8vIENPTVBMRVRJT05fU1RBVFVTX0tIUiBzaG91
bGQgYWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IGlzIGxvc3QsIHNvIGFwcGxpY2F0
aW9ucwogICAgIC8vIGRvbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBwb2xsaW5nIGxvb3Au
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkgewotICAgICAgICBpZiAocG5hbWUg
PT0gRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFIpCisgICAgICAgIGlmIChwbmFt
ZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTMzOTks
NyArMzM5OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dy
YW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2toclBhcmFsbGVsU2hhZGVy
Q29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQcm9ncmFtUGFy
YW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5hYmxlZCIpOwpAQCAt
MzUwMyw3ICszNTAyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKICAgICAvLyBDT01QTEVU
SU9OX1NUQVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBp
cyBsb3N0LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5m
aW5pdGUgcG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpIHsK
LSAgICAgICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hS
KQorICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RB
VFVTX0tIUikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0zNTE3LDcgKzM1MTYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNoYWRlciwgR0NHTAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNo
YWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFE
RVJfVFlQRToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQt
PmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQYXJhbGxlbFNoYWRlckNv
bXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNoYWRlclBhcmFtZXRl
ciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVuYWJsZWQiKTsKQEAgLTM1ODYs
NyArMzU4NSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRleFBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYg
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQogICAgICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFRleFBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMgbm90IGVuYWJsZWQiKTsKQEAgLTM3NDksNyArMzc0OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25z
dCBXZWJHCiAgICAgICAgIEdDR0xmbG9hdCB2YWx1ZVsxNl0gPSB7MH07CiAjaWYgIVVTRShBTkdM
RSkKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQotICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVj
dCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOworICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkp
LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2Nh
dGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5k
aWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0KCks
IGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwpAQCAtMzc2MSw3ICszNzYw
LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJH
TFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgR0NHTGludCB2YWx1ZVs0XSA9
IHswfTsKICNpZiAhVVNFKEFOR0xFKQogICAgICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBw
b3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9y
bWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2
YWx1ZSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+
KG1fY29udGV4dC5nZXQoKSktPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dy
YW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAg
ICAgIGVsc2UKICNlbmRpZgogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJv
Z3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bhbih2YWx1ZSwgbGVuZ3RoKSk7CkBA
IC0zNzgwLDcgKzM3NzksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICBHQ0dM
aW50IHZhbHVlWzRdID0gezB9OwogI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9i
dXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmdldG5Vbmlmb3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXpl
b2YoR0NHTGludCksIHZhbHVlKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlm
b3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0NHTGludCks
IHZhbHVlKTsKICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVl
LCBsZW5ndGgpKTsKQEAgLTM5NTksNyArMzk1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CiAgICAgICAgIGlzVmFsaWQg
PSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBR01FTlRf
U0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcywg
b3IgY29yZSBpbiBXZWJHTCAyLjAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVO
VF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
LCBvciBjb3JlIGluIFdlYkdMIDIuMAogICAgICAgICBpZiAobV9vZXNTdGFuZGFyZERlcml2YXRp
dmVzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CkBAIC00NTY5LDcgKzQ1NjgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aAogICAg
IG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSkpOwogI2Vsc2UKICAgICBp
ZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnJlYWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgZGF0YSk7CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0RXh0ZW5zaW9ucygpLnJl
YWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5
dGVMZW5ndGgoKSwgZGF0YSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4
ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEs
IHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsKICNlbmRpZgpAQCAtNDYxMCw4ICs0NjA5LDggQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xzaXoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0I1X0Ex
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjU2NToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpTVEVOQ0lMX0lOREVYODoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQjhf
QUxQSEE4X0VYVDoKLSAgICAgICAgaWYgKGludGVybmFsZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6
U1JHQjhfQUxQSEE4X0VYVCAmJiAhbV9leHRzUkdCKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQjhfQUxQSEE4X0VYVDoKKyAgICAgICAgaWYgKGludGVybmFsZm9ybWF0ID09IEdy
YXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThfRVhUICYmICFtX2V4dHNSR0IpIHsKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
IGZ1bmN0aW9uTmFtZSwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDYyMiw3ICs0NjIxLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhf
U1RFTkNJTDoKICAgICAgICAgaWYgKGlzRGVwdGhTdGVuY2lsU3VwcG9ydGVkKCkpCi0gICAgICAg
ICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBFeHRlbnNpb25zR0w6
OkRFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgbV9jb250ZXh0
LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIMjRf
U1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmct
PnNldFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+
c2V0SXNWYWxpZChpc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCgpKTsKICAgICAgICAgbV9yZW5kZXJi
dWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CkBAIC01NjE2
LDggKzU2MTUsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4
RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpTUkdCX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIGlmICghbV9leHRzUkdCKSB7CiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJzUkdCIHRleHR1cmUgZm9ybWF0cyBub3QgZW5hYmxlZCIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc3NSw3ICs1Nzc0LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIq
IGZ1bmN0aW8KICAgICBJTlRFUk5BTF9GT1JNQVRfQ0FTRShERVBUSF9TVEVOQ0lMICAgICAsIERF
UFRIX1NURU5DSUwgICwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yNF84ICAgICAg
ICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBJTlRFUk5B
TF9GT1JNQVRfQ0FTRShERVBUSDI0X1NURU5DSUw4ICAsIERFUFRIX1NURU5DSUwgICwgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yNF84ICAgICAgICAgICAgICwgMCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAg
ICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBJTlRFUk5BTF9GT1JNQVRfQ0FTRShERVBUSDMy
Rl9TVEVOQ0lMOCAsIERFUFRIX1NURU5DSUwgICwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUXzMy
X1VOU0lHTkVEX0lOVF8yNF84X1JFViwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAg
KTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQl9FWFQ6CiAgICAgICAgIGlmIChmb3JtYXQgIT0gaW50ZXJuYWxGb3JtYXQp
IHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiZm9ybWF0IGFuZCBpbnRlcm5hbGZvcm1hdCBt
dXN0IG1hdGNoIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01Nzg1LDcgKzU3ODQs
NyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1h
dEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FM
UEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VYVDoKICAg
ICAgICAgaWYgKGZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkgewogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlv
bk5hbWUsICJmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IG11c3QgbWF0Y2giKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTU5NjgsNyArNTk2Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv
cGljCiAgICAgICAgIGlmICghbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpIHsKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0s
ICJ0ZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIsIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyBub3QgZW5hYmxlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjM4NSw3
ICs2Mzg0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TG9zdEMKICAgICAgICAgYXV0byogY2FudmFz
ID0gaHRtbENhbnZhcygpOwogICAgICAgICBpZiAoY2FudmFzKSB7CiAgICAgICAgICAgICBpZiAo
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IGNhbnZhcy0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2ViR0xDb250ZXh0KG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSk7Cisg
ICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRl
eHQobV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02ODk4LDE4ICs2ODk3LDE4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAg
ICAgICAgIEJsb2NrUGFyYW1ldGVycyB7IDEyLCAxMCwga0FTVENCbG9ja1NpemUgfSwKICAgICAg
ICAgQmxvY2tQYXJhbWV0ZXJzIHsgMTIsIDEyLCBrQVNUQ0Jsb2NrU2l6ZSB9CiAgICAgfTsKLSAg
ICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0UkdCQSA9IEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfNHg0X0tIUjsKLSAgICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0
U1JHQjggPSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tI
UjsKKyAgICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0UkdCQSA9IEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOworICAgIGNvbnN0IEdDR0xlbnVtIEFT
VENFbnVtU3RhcnRTUkdCOCA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzR4NF9LSFI7CiAKICAgICBjb25zdCBpbnQga0VBQ0FuZEVUQzJCbG9ja1NpemUg
PSA0OwogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9BVENfUkdCX0FNRDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RVRDMV9SR0I4X09FUzog
eworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENf
RFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FM
UEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9BVENfUkdCX0FNRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhfT0VT
OiB7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKICAgICAgICAgY29uc3QgaW50
IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CkBA
IC02OTE4LDEyICs2OTE3LDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgIGJ5
dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duICoga0Jsb2NrU2l6
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQ6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQz
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQ1X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FU
Q19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQ6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CiAgICAgICAgICAgICBjb25zdCBp
bnQga0Jsb2NrV2lkdGggPSA0OwpAQCAtNjkzMyw4ICs2OTMyLDggQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFy
KiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBu
dW1CbG9ja3NEb3duICoga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQ
UFYxX0lNRzoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSA4
OwogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gODsKQEAgLTY5NDIsOCArNjk0
MSw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2Vk
VGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBieXRlc1JlcXVpcmVk
ID0gKHN0ZDo6bWF4KHdpZHRoLCBrQmxvY2tXaWR0aCkgKiBzdGQ6Om1heChoZWlnaHQsIGtCbG9j
a0hlaWdodCkgKiA0ICsgNykgLyBrQmxvY2tTaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJU
Q18yQlBQVjFfSU1HOgogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6
ZSA9IDg7CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSAxNjsKQEAgLTY5NTEs
NDQgKzY5NTAsNDQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNv
bXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVz
UmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgsIGtCbG9ja1dpZHRoKSAqIHN0ZDo6bWF4KGhlaWdo
dCwga0Jsb2NrSGVpZ2h0KSAqIDIgKyA3KSAvIGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4
NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEw
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18x
MngxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfMTJ4MTJfS0hSOgogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2FsY3VsYXRlQnl0ZXNGb3JB
U1RDKHdpZHRoLCBoZWlnaHQsIEFTVENQYXJhbWV0ZXJzW2Zvcm1hdCAtIEFTVENFbnVtU3RhcnRS
R0JBXSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUjoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4
X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTJ4MTJfS0hSOgogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2FsY3VsYXRl
Qnl0ZXNGb3JBU1RDKHdpZHRoLCBoZWlnaHQsIEFTVENQYXJhbWV0ZXJzW2Zvcm1hdCAtIEFTVENF
bnVtU3RhcnRTUkdCOF0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJ
R05FRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9B
TFBIQTFfRVRDMjogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUjEx
X0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFf
RUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVO
Q0hUSFJPVUdIX0FMUEhBMV9FVEMyOiB7CiAgICAgICAgIENoZWNrZWRVaW50MzIgY2hlY2tlZEJ5
dGVzUmVxdWlyZWQgPSAod2lkdGggKyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0Fu
ZEVUQzJCbG9ja1NpemU7CiAgICAgICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IChoZWlnaHQg
KyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0FuZEVUQzJCbG9ja1NpemU7CiAgICAg
ICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IDg7CkBAIC02OTk5LDEwICs2OTk4LDEwIEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0Rh
dGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBjaGVja2VkQnl0
ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
MTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQThfRVRD
Ml9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUM6IHsKICAgICAgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2VkQnl0ZXNSZXF1aXJl
ZCA9ICh3aWR0aCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2Nr
U2l6ZTsKICAgICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gKGhlaWdodCArIGtFQUNBbmRF
VEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAgICAgICAgY2hlY2tl
ZEJ5dGVzUmVxdWlyZWQgKj0gMTY7CkBAIC03MDEzLDggKzcwMTIsOCBAQCBib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNo
YXIqIGZ1bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2hlY2tlZEJ5dGVzUmVxdWlyZWQ7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SRURfUkdUQzFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05F
RF9SRURfUkdUQzFfRVhUOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SRURfUkdUQzFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U0lHTkVEX1JFRF9SR1RDMV9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSA4
OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTcwMjMsOCArNzAyMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciog
ZnVuY3RpCiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9j
a3NEb3duICoga0Jsb2NrU2l6ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6IHsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OwogICAgICAgICBj
b25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0
ID0gNDsKQEAgLTcwNDksMTQgKzcwNDgsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5z
aW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQp
CiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
X1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9B
TFBIQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9T
M1RDX0RYVDVfRVhUOiB7CiAgICAgICAgIGNvbnN0IEdDR0xzaXplaSBrQmxvY2tXaWR0aCA9IDQ7
CiAgICAgICAgIGNvbnN0IEdDR0xzaXplaSBrQmxvY2tIZWlnaHQgPSA0OwogICAgICAgICBjb25z
dCBHQ0dMaW50IG1heFRleHR1cmVTaXplID0gdGFyZ2V0ID8gbV9tYXhUZXh0dXJlU2l6ZSA6IG1f
bWF4Q3ViZU1hcFRleHR1cmVTaXplOwpAQCAtNzA2OSw1NSArNzA2OCw1NSBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoY29u
c3QgY2hhciogZnVuYwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9J
TUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQ
UFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfUFZSVENfMkJQUFYxX0lNRzoKICAgICAgICAgLy8gSGVpZ2h0IGFuZCB3aWR0aCBtdXN0IGJl
IHBvd2VycyBvZiAyLgogICAgICAgICBpZiAoKHdpZHRoICYgKHdpZHRoIC0gMSkpIHx8IChoZWln
aHQgJiAoaGVpZ2h0IC0gMSkpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIndpZHRoIG9y
IGhlaWdodCBpbnZhbGlkIGZvciBsZXZlbCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ182eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ182eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ184eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q184eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184
eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1
X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
NXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgx
MF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEyeDEyX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RVRDMV9SR0I4X09F
UzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfRVRD
MjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9B
TFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzR4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNXg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ181eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4
NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ181eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
Xzh4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkVUQzFfUkdCOF9PRVM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRzExX0VB
QzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VB
QzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
RVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgogICAgICAgICAvLyBObyBoZWlnaHQgYW5kIHdpZHRo
IHJlc3RyaWN0aW9ucyBvbiBBU1RDLCBFVEMxIG9yIEVUQzIuCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGRlZmF1bHQ6CkBAIC03MTMzLDE0ICs3MTMyLDE0IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBj
aGFyKiBmCiAgICAgfQogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0
aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwogICAgICAgICBpZiAo
KHhvZmZzZXQgJSBrQmxvY2tXaWR0aCkgfHwgKHlvZmZzZXQgJSBrQmxvY2tIZWlnaHQpKSB7CkBA
IC03MTU0LDEwICs3MTUzLDEwIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmCiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoZnVuY3Rpb25O
YW1lLCB0YXJnZXQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpOwogICAgIH0KLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRzoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOiB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lN
RzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJU
Q180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9QVlJUQ18yQlBQVjFfSU1HOiB7CiAgICAgICAgIGlmICh4b2Zmc2V0IHx8IHlvZmZzZXQpIHsK
ICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBhbmQgeW9mZnNldCBtdXN0IGJlIHpl
cm8iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxNjksMTkgKzcxNjgsMTkgQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJE
aW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsaWRh
dGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWwsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCk7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpFVEMx
X1JHQjhfT0VTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVM6CiAg
ICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgZm9yIEVUQzFfUkdCOF9PRVMgdGV4dHVyZXMuCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFf
RUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4
X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NJR05FRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CiAgICAgICAgIGlmICh0
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfM0QpIHsKICAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVu
Y3Rpb25OYW1lLCAibm90IHN1cHBvcnRlZCBvbiBURVhUVVJFXzNEIHRleHR1cmVzIik7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03Njk4LDcgKzc2OTcsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAgIGlmICghbV9yZXN0
b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGNvbnRleHRMb3N0UmVhc29u
ID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
OworICAgIGludCBjb250ZXh0TG9zdFJlYXNvbiA9IG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpOwogCiAgICAgc3dpdGNoIChjb250ZXh0TG9zdFJlYXNvbikgewogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOgpAQCAtNzcwNywxNSArNzcwNiwxNSBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAg
ICAgICAvLyBXRUJHTF9sb3NlX2NvbnRleHQgZXh0ZW5zaW9uIG1pZ2h0IGhhdmUgYmVlbiB1c2Vk
IHRvIGZvcmNlCiAgICAgICAgIC8vIGEgbG9zdCBjb250ZXh0LgogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkdVSUxUWV9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8g
VGhlIHJlbmRlcmluZyBjb250ZXh0IGlzIG5vdCByZXN0b3JlZCBpZiB0aGlzIGNvbnRleHQgd2Fz
CiAgICAgICAgIC8vIGd1aWx0eSBvZiBjYXVzaW5nIHRoZSBncmFwaGljcyByZXNldC4KICAgICAg
ICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV0FSTklORzogV2ViR0wg
Y29udGVudCBvbiB0aGUgcGFnZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVzZXQ7IG5v
dCByZXN0b3JpbmcgdGhlIGNvbnRleHQiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8gQWx3YXlz
IGFsbG93IHRoZSBjb250ZXh0IHRvIGJlIHJlc3RvcmVkLgogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6VU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBX
YXJuLiBJZGVhbGx5LCBwcm9tcHQgdGhlIHVzZXIgdGVsbGluZyB0aGVtIHRoYXQgV2ViR0wKICAg
ICAgICAgLy8gY29udGVudCBvbiB0aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNlZCB0aGUgZ3JhcGhp
Y3MgY2FyZCB0bwogICAgICAgICAvLyByZXNldCBhbmQgYXNrIHRoZW0gd2hldGhlciB0aGV5IHdh
bnQgdG8gY29udGludWUgcnVubmluZwpAQCAtNzg4Miw5ICs3ODgxLDkgQEAgR0NHTGludCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhEcmF3QnVmZmVycygpCiAgICAgaWYgKCFzdXBw
b3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9tYXhEcmF3
QnVmZmVycykKLSAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgbV9tYXhEcmF3
QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0RS
QVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAg
ICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9u
c0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKKyAgICAgICAgbV9tYXhDb2xvckF0dGFj
aG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09M
T1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVxdWlyZXMg
TUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAgICAgcmV0dXJuIHN0
ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7CiB9CkBAIC03
ODk0LDcgKzc4OTMsNyBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1h
eENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKLSAgICAgICAg
bV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4Q29sb3JBdHRhY2ht
ZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0K
IApAQCAtODAzOSwxMSArODAzOCwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdgogYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oQVNDSUlM
aXRlcmFsIGV4dGVuc2lvbk5hbWVMaXRlcmFsKQogewogICAgIEFTU0VSVChtX2NvbnRleHQpOwot
ICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKICAgICBT
dHJpbmcgZXh0ZW5zaW9uTmFtZSB7IGV4dGVuc2lvbk5hbWVMaXRlcmFsIH07Ci0gICAgaWYgKCFl
eHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbk5hbWUpKQorICAgIGlmICghbV9jb250ZXh0LT5z
dXBwb3J0c0V4dGVuc2lvbihleHRlbnNpb25OYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb25OYW1lKTsKKyAgICBtX2NvbnRl
eHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uTmFtZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKaW5kZXggNzJiOTY4OGU2Zjk1ZWZjMmMwMDk5ZWViZDVk
ZWNkNDMzZWQ2OWFjZi4uZTEyMTE2ZDgwZTYwMzljN2NkODIzYjM5YzkxODVlYzI3MDNjYThkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3YTdhMWI1ZjI0
YzU4YzA4OWMyMDlmMmVmMzAzNTMzMTM0NDYxNzc4Li43OTQzNWEzYWMyNDc1NmY3ZjlkOTRhNTky
NmMyMDE2ZTkxMTY3MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMzQxLDcgKzM0MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAg
dmlydHVhbCBib29sIGFsbG93V2ViR0woYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJu
IGVuYWJsZWRQZXJTZXR0aW5nczsgfQogICAgIC8vIEluZm9ybXMgdGhlIGVtYmVkZGVyIHRoYXQg
YSBXZWJHTCBjYW52YXMgaW5zaWRlIHRoaXMgZnJhbWUgcmVjZWl2ZWQgYSBsb3N0IGNvbnRleHQK
LSAgICAvLyBub3RpZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4gR0xfQVJCX3JvYnVzdG5lc3MgZ3Vp
bHQvaW5ub2NlbmNlIGNvZGUgKHNlZSBFeHRlbnNpb25zR0wuaCkuCisgICAgLy8gbm90aWZpY2F0
aW9uIHdpdGggdGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9jZW5jZSBjb2Rl
IChzZWUgR3JhcGhpY3NDb250ZXh0R0wuaCkuCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VXZWJH
TENvbnRleHQoaW50KSB7IH0KICAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGlj
eUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdM
QWxsb3dDcmVhdGlvbjsgfQogICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJH
TFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQb2xpY3k6
OldlYkdMQWxsb3dDcmVhdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYwNzYz
MDhjNThhMGJkNDU5MzliMGE3YmM1ZTYyNGQ1NjRlYjUxMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKLQotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoaXMg
aXMgYSBiYXNlIGNsYXNzIGNvbnRhaW5pbmcgb25seSBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zLgot
Ly8gSW1wbGVtZW50YXRpb25zIG11c3QgcHJvdmlkZSBhIHN1YmNsYXNzLgotLy8KLS8vIFRoZSBz
dXBwb3J0ZWQgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBiZWxvdyBhbmQgaW4gc3ViY2xhc3NlcywK
LS8vIHBvc3NpYmx5IHBsYXRmb3JtLXNwZWNpZmljIG9uZXMuCi0vLwotLy8gQ2FsbGluZyBhbnkg
ZXh0ZW5zaW9uIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgY29udGV4dAot
Ly8gbXVzdCBiZSBhIG5vLW9wOyBpbiBwYXJ0aWN1bGFyLCBpdCBtYXkgbm90IGhhdmUgc2lkZSBl
ZmZlY3RzLiBJbgotLy8gdGhpcyBzaXR1YXRpb24sIGlmIHRoZSBmdW5jdGlvbiBoYXMgYSByZXR1
cm4gdmFsdWUsIDAgaXMgcmV0dXJuZWQuCi1jbGFzcyBFeHRlbnNpb25zR0wgewotcHVibGljOgot
ICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTCgpID0gZGVmYXVsdDsKLQotICAgIC8vIFN1cHBvcnRl
ZCBleHRlbnNpb25zOgotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ci0g
ICAgLy8gICBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYQotICAgIC8vICAgR0xfQVJCX3JvYnVzdG5l
c3MKLSAgICAvLyAgIEdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28gLyBHTF9PRVNfdGV4
dHVyZV9ucG90Ci0gICAgLy8gICBHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwgLyBHTF9PRVNf
cGFja2VkX2RlcHRoX3N0ZW5jaWwKLSAgICAvLyAgIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQg
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIC8vICAgR0xfSU1HX211bHRp
c2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQotICAgIC8vICAgR0xfT0VTX3RleHR1cmVfZmxvYXQK
LSAgICAvLyAgIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhcgotICAgIC8vICAgR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdAotICAgIC8vICAgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIKLSAgICAvLyAgIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwotICAgIC8vICAgR0xfT0VT
X3JnYjhfcmdiYTgKLSAgICAvLyAgIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Ci0gICAgLy8g
ICBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Ci0gICAgLy8gICBHTF9BTkdMRV90cmFuc2xhdGVk
X3NoYWRlcl9zb3VyY2UKLSAgICAvLyAgIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSAob25seSB0
aGUgc3Vic2V0IHJlcXVpcmVkIHRvCi0gICAgLy8gICAgIGltcGxlbWVudCBJT1N1cmZhY2UgYmlu
ZGluZzsgaXQncyByZWNvbW1lbmRlZCB0byBzdXBwb3J0Ci0gICAgLy8gICAgIHRoaXMgb25seSBv
biBNYWMgT1MgWCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIGNvZGUgZGVwZW5kZW50Ci0gICAgLy8g
ICAgIG9uIHRoaXMgZXh0ZW5zaW9uKQotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MQotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YwotICAgIC8v
ICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCi0gICAgLy8gICBHTF9PRVNf
Y29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQotICAgIC8vICAgR0xfSU1HX3RleHR1cmVfY29t
cHJlc3Npb25fcHZydGMKLSAgICAvLyAgIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNf
aGRyCi0gICAgLy8gICBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkcgotICAgIC8v
ICAgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0gICAgLy8gICBHTF9FWFRfZGVidWdf
bWFya2VyCi0gICAgLy8gICBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVy
cwotICAgIC8vICAgR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIC8vICAgR0xfQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkKLQotICAgIC8vIFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNp
b247IGZvciBleGFtcGxlLAotICAgIC8vICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgi
LgotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSA9IDA7Ci0KLSAgICAv
LyBDZXJ0YWluIE9wZW5HTCBhbmQgV2ViR0wgaW1wbGVtZW50YXRpb25zIG1heSBzdXBwb3J0IGVu
YWJsaW5nCi0gICAgLy8gZXh0ZW5zaW9ucyBsYXppbHkuIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJl
IGNhbGxlZCB3aXRoCi0gICAgLy8gZXh0ZW5zaW9uIG5hbWVzIGZvciB3aGljaCBzdXBwb3J0cyBy
ZXR1cm5zIHRydWUuCi0gICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JikgPSAwOwotCi0gICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjogZm9yIGV4YW1w
bGUsICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgotICAgIC8vIENoZWNrcyB0byBz
ZWUgd2hldGhlciB0aGUgZ2l2ZW4gZXh0ZW5zaW9uIGlzIGFjdHVhbGx5IGVuYWJsZWQgKHNlZSBl
bnN1cmVFbmFibGVkKS4KLSAgICAvLyBIYXMgbm8gb3RoZXIgc2lkZS1lZmZlY3RzLgotICAgIHZp
cnR1YWwgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgPSAwOwotCi0gICAgLy8gRVhUX3NS
R0IgZm9ybWF0cwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JHQl9FWFQgPSAweDhD
NDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0FMUEhBX0VYVCA9IDB4OEM0
MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFNSR0I4X0FMUEhBOF9FWFQgPSAweDhD
NDM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X0NPTE9SX0VOQ09ESU5HX0VYVCA9IDB4ODIxMDsKLQotICAgIC8vIEVYVF9ibGVuZF9taW5tYXgg
ZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1JTl9FWFQgPSAweDgwMDc7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRVhUID0gMHg4MDA4OwotCi0gICAgLy8g
R0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBCR1JBX0VYVCA9IDB4ODBFMTsKLQotICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNz
IGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBHVUlMVFlfQ09OVEVYVF9SRVNF
VF9BUkIgPSAweDgyNTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBJTk5PQ0VOVF9D
T05URVhUX1JFU0VUX0FSQiA9IDB4ODI1NDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IFVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT05URVhUX1JPQlVTVF9BQ0NFU1MgPSAweDkwRjM7Ci0KLSAgICAvLyBHTF9F
WFQvT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBERVBUSDI0X1NURU5DSUw4ID0gMHg4OEYwOwotCi0gICAgLy8gR0xfQU5HTEVfZnJh
bWVidWZmZXJfYmxpdCBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVBRF9G
UkFNRUJVRkZFUiA9IDB4OENBODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
RlJBTUVCVUZGRVIgPSAweDhDQTk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0ZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQUE7Ci0KLSAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVMgPSAweDhDQUI7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFID0gMHg4RDU2Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVMgPSAweDhENTc7Ci0KLSAg
ICAvLyBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCi0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJfU0FNUExFU19JTUcgPSAweDkxMzM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FN
UExFX0lNRyA9IDB4OTEzNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9TQU1Q
TEVTX0lNRyA9IDB4OTEzNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVf
U0FNUExFU19JTUcgPSAweDkxMzY7Ci0KLSAgICAvLyBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQUdNRU5UX1NIQURFUl9E
RVJJVkFUSVZFX0hJTlRfT0VTID0gMHg4QjhCOwotCi0gICAgLy8gR0xfT0VTX3JnYjhfcmdiYTgg
bmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJHQjhfT0VTID0gMHg4MDUxOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCQThfT0VTID0gMHg4MDU4OwotCi0gICAg
Ly8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIFZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNTsKLQotICAgIC8vIEdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9IDB4OTNBMDsKLQot
ICAgIC8vIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZQotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCID0gIDB4ODRGNTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCID0gMHg4NEY2OwotCi0g
ICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQotICAgIC8vIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQgPSAweDgzRjA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUID0gMHg4
M0YyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9FWFQgPSAweDgzRjM7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjX3NyZ2IKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9T
M1RDX0RYVDFfRVhUID0gMHg4QzRDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgPSAweDhDNEQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCA9IDB4
OEM0RTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDVfRVhUID0gMHg4QzRGOwotCi0gICAgLy8gR0xfT0VTX2NvbXByZXNzZWRfRVRD
MV9SR0I4X3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEVUQzFfUkdCOF9P
RVMgPSAweDhENjQ7Ci0KLSAgICAvLyBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjCi0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1IxMV9FQUMgPSAweDkyNzA7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDID0g
MHg5MjcxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRzExX0VB
QyA9IDB4OTI3MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lH
TkVEX1JHMTFfRUFDID0gMHg5MjczOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0I4X0VUQzIgPSAweDkyNzQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0VUQzIgPSAweDkyNzU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyID0gMHg5Mjc2
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIgPSAweDkyNzc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDID0gMHg5Mjc4OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMgPSAweDkyNzk7Ci0K
LSAgICAvLyBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMDsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBW
MV9JTUcgPSAweDhDMDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzOwotCi0gICAg
Ly8gR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQl9BTUQgPSAweDhDOTI7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCA9IDB4
OEM5MzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQkFf
SU5URVJQT0xBVEVEX0FMUEhBX0FNRCA9IDB4ODdFRTsKLQotICAgIC8vIEdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfaGRyCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSID0gMHg5M0IwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiA9IDB4OTNCMTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIgPSAweDkz
QjI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182
eDVfS0hSID0gMHg5M0IzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9SR0JBX0FTVENfNng2X0tIUiA9IDB4OTNCNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIgPSAweDkzQjU7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSID0gMHg5M0I2Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tI
UiA9IDB4OTNCNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDVfS0hSID0gMHg5M0I4OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIgPSAweDkzQjk7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiA9IDB4OTNCQTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tI
UiA9IDB4OTNCQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9BU1RDXzEyeDEwX0tIUiA9IDB4OTNCQzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiA9IDB4OTNCRDsKLQotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSID0g
MHg5M0QwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ181eDRfS0hSID0gMHg5M0QxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSID0gMHg5M0QyOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVf
S0hSID0gMHg5M0QzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ182eDZfS0hSID0gMHg5M0Q0OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSID0gMHg5M0Q1Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDZfS0hSID0gMHg5M0Q2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSID0gMHg5M0Q3OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiA9IDB4
OTNEODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4Nl9LSFIgPSAweDkzRDk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSID0gMHg5M0RBOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgx
MF9LSFIgPSAweDkzREI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNEQzsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSID0gMHg5
M0REOwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUID0gMHg4REJCOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMx
X0VYVCA9IDB4OERCQzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
UkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkU7Ci0KLSAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4NEZFOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0g
MHg4NEZGOwotCi0gICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZl
cnMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9EUkFXX0JVRkZFUlNfRVhUID0g
MHg4ODI0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIwX0VYVCA9
IDB4ODgyNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMV9FWFQg
PSAweDg4MjY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjJfRVhU
ID0gMHg4ODI3OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIzX0VY
VCA9IDB4ODgyODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNF9F
WFQgPSAweDg4Mjk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjVf
RVhUID0gMHg4ODJBOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI2
X0VYVCA9IDB4ODgyQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVS
N19FWFQgPSAweDg4MkM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZF
UjhfRVhUID0gMHg4ODJEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZG
RVI5X0VYVCA9IDB4ODgyRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVG
RkVSMTBfRVhUID0gMHg4ODJGOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVIxMV9FWFQgPSAweDg4MzA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjEyX0VYVCA9IDB4ODgzMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSMTNfRVhUID0gMHg4ODMyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVIxNF9FWFQgPSAweDg4MzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjE1X0VYVCA9IDB4ODgzNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgPSAweDhDREY7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMF9FWFQgPSAweDhDRTA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMV9FWFQgPSAweDhDRTE7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMl9FWFQgPSAweDhDRTI7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UM19FWFQgPSAw
eDhDRTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UNF9F
WFQgPSAweDhDRTQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hN
RU5UNV9FWFQgPSAweDhDRTU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9B
VFRBQ0hNRU5UNl9FWFQgPSAweDhDRTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UN19FWFQgPSAweDhDRTc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UOF9FWFQgPSAweDhDRTg7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UOV9FWFQgPSAweDhDRTk7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTBfRVhUID0gMHg4Q0VBOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDExX0VYVCA9IDB4OENFQjsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMl9FWFQgPSAw
eDhDRUM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTNf
RVhUID0gMHg4Q0VEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNI
TUVOVDE0X0VYVCA9IDB4OENFRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQxNV9FWFQgPSAweDhDRUY7Ci0KLSAgICAvLyBHTF9LSFJfcGFyYWxsZWxfc2hh
ZGVyX2NvbXBpbGUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBMRVRJT05fU1RB
VFVTX0tIUiA9IDB4OTFCMTsKLQotICAgIC8vIEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xF
ID0gMHg5M0E4OwotCi0gICAgLy8gV2ViR0wgZnVuY3Rpb25zLgotCi0gICAgLy8gR0xfQVJCX3Jv
YnVzdG5lc3MKLSAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJv
bSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKLSAgICAvLyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb2xs
b3dpbmcgd2F5OgotICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IG5vdCByZXNldCB0aGUg
ZXJyb3Igc3RhdGUgZHVyaW5nIHRoaXMgY2FsbC4KLSAgICAvLyBJZiBnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3IsIGl0IHNob3VsZCBjb250aW51ZQotICAgIC8vIHJl
dHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVzdG9yaW5nIHRoZSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBpcyBoYW5kbGVkCi0gICAgLy8gZXh0ZXJuYWxseS4KLSAgICB2aXJ0dWFsIEdDR0xpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKLQotICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQotICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7Ci0KLSAgICAvLyBHTF9BUkJfZHJh
d19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVm
ZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwotCi0gICAgLy8gT3Ro
ZXIgZnVuY3Rpb25zLgotI2lmICFVU0UoQU5HTEUpCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1
c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhl
bHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKSA9IDA7Ci0KLSNlbmRpZgotCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAKaW5kZXggZDYwYzM3YTlmZmU1YzJjYmUwMzY2ZTI3NmQ4NDg4NjY1YmQ2
ZTIwYi4uYTE0MDkwYTdmOThkNGFmY2FlMzU4MGRkYzhlNzllNjE5MzQzZDk1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAi
RXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0Q29udmVydGVyLmgiCiAjaW5jbHVkZSAi
SG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC0zNzYsMTMgKzM3NSwxMyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCX0lOVEVHRVI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlNSR0JfRVhUOgogICAgICAgICAqY29tcG9uZW50c1BlclBpeGVsID0gMzsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQToKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpSR0JBX0lOVEVHRVI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkJH
UkFfRVhUOiAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6QkdS
QV9FWFQ6IC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICAqY29tcG9uZW50c1BlclBpeGVs
ID0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGI1ZjVlY2Qz
ODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMuLjFjY2VlYjUzNzM1MzhkNTM1MjNmNDlk
Y2UyYTA2ODJlNDdkZmM4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjc0LDYgKzY3NCwxNDUgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCID0g
MHg4NEY1OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9CSU5ESU5HX1JF
Q1RBTkdMRV9BUkIgPSAweDg0RjY7CiAKKyAgICAvLyBFWFRfc1JHQiBmb3JtYXRzCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0VYVCA9IDB4OEM0MDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIFNSR0JfQUxQSEFfRVhUID0gMHg4QzQyOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gU1JHQjhfQUxQSEE4X0VYVCA9IDB4OEM0MzsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhU
ID0gMHg4MjEwOworCisgICAgLy8gRVhUX2JsZW5kX21pbm1heCBlbnVtcworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gTUlOX0VYVCA9IDB4ODAwNzsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIE1BWF9FWFQgPSAweDgwMDg7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggZW51bXMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEJHUkFfRVhU
ID0gMHg4MEUxOworCisgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MgZW51bXMKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1MzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIElOTk9DRU5UX0NPTlRFWFRfUkVTRVRfQVJCID0g
MHg4MjU0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVU5LTk9XTl9DT05URVhUX1JF
U0VUX0FSQiA9IDB4ODI1NTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTlRFWFRf
Uk9CVVNUX0FDQ0VTUyA9IDB4OTBGMzsKKworICAgIC8vIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyBuYW1lcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBR01FTlRfU0hBREVS
X0RFUklWQVRJVkVfSElOVF9PRVMgPSAweDhCOEI7CisKKyAgICAvLyBHTF9PRVNfcmdiOF9yZ2Jh
OCBuYW1lcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCOF9PRVMgPSAweDgwNTE7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSR0JBOF9PRVMgPSAweDgwNTg7CisKKyAg
ICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFRSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgPSAweDkz
QTA7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCisgICAgLy8gR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUID0gMHg4M0YxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19F
WFQgPSAweDgzRjI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNGMzsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGNfc3JnYgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhDNEM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCA9IDB4OEM0RDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUID0gMHg4QzRFOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCX0FMUEhBX1MzVENfRFhUNV9FWFQgPSAweDhDNEY7CisKKyAgICAvLyBHTF9PRVNfY29tcHJl
c3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRVRD
MV9SR0I4X09FUyA9IDB4OEQ2NDsKKworICAgIC8vIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9u
X3B2cnRjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQl9QVlJU
Q180QlBQVjFfSU1HID0gMHg4QzAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAyOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBW
MV9JTUcgPSAweDhDMDM7CisKKyAgICAvLyBHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCX0FNRCA9IDB4
OEM5MjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQkFf
RVhQTElDSVRfQUxQSEFfQU1EID0gMHg4QzkzOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EID0gMHg4N0VFOwor
CisgICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIgPSAweDkzQjA7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRf
S0hSID0gMHg5M0IxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUiA9IDB4OTNCMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIgPSAweDkzQjM7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSID0gMHg5M0I0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUiA9
IDB4OTNCNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9B
U1RDXzh4Nl9LSFIgPSAweDkzQjY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSID0gMHg5M0I3OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgPSAweDkzQjg7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiA9IDB4
OTNCOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDhfS0hSID0gMHg5M0JBOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSID0gMHg5M0JCOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSID0gMHg5M0JDOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSID0g
MHg5M0JEOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzR4NF9LSFIgPSAweDkzRDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIgPSAweDkzRDE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4
NV9LSFIgPSAweDkzRDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgPSAweDkzRDM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIgPSAweDkzRDQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4NV9LSFIgPSAweDkzRDU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIgPSAweDkzRDY7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIgPSAw
eDkzRDc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDVfS0hSID0gMHg5M0Q4OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiA9IDB4OTNEOTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
OF9LSFIgPSAweDkzREE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiA9IDB4OTNEQjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSID0gMHg5
M0RDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQ7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9yZ3RjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JF
RF9SR1RDMV9FWFQgPSAweDhEQkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUID0gMHg4REJDOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJEOworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVCA9IDB4OERCRTsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9NQVhfQU5JU09UUk9Q
WV9FWFQgPSAweDg0RkU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfVEVYVFVS
RV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7CisKKyAgICAvLyBHTF9BUkJfZHJhd19idWZm
ZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
TUFYX0RSQVdfQlVGRkVSU19FWFQgPSAweDg4MjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBEUkFXX0JVRkZFUjBfRVhUID0gMHg4ODI1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIxX0VYVCA9IDB4ODgyNjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIERSQVdfQlVGRkVSMl9FWFQgPSAweDg4Mjc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBEUkFXX0JVRkZFUjNfRVhUID0gMHg4ODI4OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gRFJBV19CVUZGRVI0X0VYVCA9IDB4ODgyOTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIERSQVdfQlVGRkVSNV9FWFQgPSAweDg4MkE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBEUkFXX0JVRkZFUjZfRVhUID0gMHg4ODJCOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gRFJBV19CVUZGRVI3X0VYVCA9IDB4ODgyQzsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIERSQVdfQlVGRkVSOF9FWFQgPSAweDg4MkQ7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjlfRVhUID0gMHg4ODJFOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMF9FWFQgPSAweDg4MkY7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjExX0VYVCA9IDB4ODgzMDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTJfRVhUID0gMHg4ODMxOworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxM19FWFQgPSAweDg4MzI7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE0X0VYVCA9IDB4ODgzMzsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTVfRVhUID0gMHg4ODM0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCA9IDB4
OENERjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQwX0VY
VCA9IDB4OENFMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQxX0VYVCA9IDB4OENFMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQyX0VYVCA9IDB4OENFMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TE9SX0FUVEFDSE1FTlQzX0VYVCA9IDB4OENFMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCA9IDB4OENFNDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ1X0VYVCA9IDB4OENFNTsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ2X0VYVCA9IDB4OENFNjsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ3X0VYVCA9IDB4OENFNzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ4X0VYVCA9IDB4OENF
ODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ5X0VYVCA9
IDB4OENFOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQx
MF9FWFQgPSAweDhDRUE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRB
Q0hNRU5UMTFfRVhUID0gMHg4Q0VCOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09M
T1JfQVRUQUNITUVOVDEyX0VYVCA9IDB4OENFQzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTE9SX0FUVEFDSE1FTlQxM19FWFQgPSAweDhDRUQ7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VFOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9IDB4OENFRjsKKworICAg
IC8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQorICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOworCisgICAgLy8gR0xfQU5H
TEVfcmVxdWVzdF9leHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJFUVVF
U1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7CisKICAgICAvLyBBdHRlbXB0IHRvIGVu
dW1lcmF0ZSBhbGwgcG9zc2libGUgbmF0aXZlIGltYWdlIGZvcm1hdHMgdG8KICAgICAvLyByZWR1
Y2UgdGhlIGFtb3VudCBvZiB0ZW1wb3JhcnkgYWxsb2NhdGlvbnMgZHVyaW5nIHRleHR1cmUKICAg
ICAvLyB1cGxvYWRpbmcuIFRoaXMgZW51bSBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIGl0IGlzIGFj
Y2Vzc2VkCkBAIC0xMjMzLDYgKzEzNzIsMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBt
dWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZz
ZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG11bHRpRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NH
THNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9m
ZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmKSA9IDA7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBtYXkgb25seSBiZSBjYWxs
ZWQgd2l0aCBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVybnMgdHJ1ZS4K
KyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9
IDA7CisKKyAgICAvLyBUYWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBmb3IgZXhhbXBsZSwg
IkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCisgICAgLy8gQ2hlY2tzIHRvIHNlZSB3
aGV0aGVyIHRoZSBnaXZlbiBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxlZCAoc2VlIGVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQpLgorICAgIC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCisg
ICAgdmlydHVhbCBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisK
KyAgICAvLyBHTF9BUkJfcm9idXN0bmVzcworICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVo
YXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcworICAgIC8vIHNwZWNpZmlj
YXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG11
c3Qgbm90IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcgdGhpcyBjYWxsLgorICAgIC8vIElm
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBhbiBlcnJvciwgaXQgc2hvdWxkIGNv
bnRpbnVlCisgICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVycm9yLiBSZXN0b3JpbmcgdGhlIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKKyAgICAvLyBleHRlcm5hbGx5LgorICAg
IHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOworCisgICAg
Ly8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCisgICAgdmlydHVhbCBTdHJpbmcg
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKKwor
ICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZmZXJzCisgICAgdmly
dHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9
IDA7CisKICAgICAvLyA9PT09PT09PT09IE90aGVyIGZ1bmN0aW9ucy4KICAgICBHQ0dMZmxvYXQg
Z2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOwogICAgIEdDR0xib29sZWFuIGdldEJvb2xlYW4oR0NH
TGVudW0gcG5hbWUpOwpAQCAtMTI0MywxMSArMTQwNyw2IEBAIHB1YmxpYzoKICAgICBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBt
X2F0dHJzOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQogCi0gICAgLy8g
U3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdo
IG5vdAotICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBz
dXBwb3J0ZWQgb24gdGhlCi0gICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVu
c2lvbnNHTDo6c3VwcG9ydHMoKSB0bwotICAgIC8vIGRldGVybWluZSB0aGlzLgotICAgIHZpcnR1
YWwgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRleHRWaXNpYmlsaXR5KGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmNwcAppbmRleCAyMzNiMGRmNzU2ZWNkZDRiYzkyZDkwYmFhZjAxNTNjYzZhNTk1
ZmY3Li44ZjVmZjFhZTc2MDBmNWRjOTAwOWQ4NDU1Y2NmZjkxNWJjYTFlNjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00Niw3OCArNDYsNyBAQCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoY29uc3QgR3JhcGhpYwogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZhdWx0OwogCi1FeHRlbnNp
b25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRFeHRlbnNpb25zKCkK
LXsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6aXNHTEVT
MkNvbXBsaWFudCgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICByZXR1cm4gY29u
dGV4dEF0dHJpYnV0ZXMoKS53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZl
cnNpb246OldlYkdMMjsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCgp
Ci17Ci0gICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCi0g
ICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKSB7Ci0gICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hh
bmdlZCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2VkKCk7
Ci0gICAgfQotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
LSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwotICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSkgewotICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUpOwotICAgICAgICBt
X2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKLSAgICB9Ci19CiAKLWJvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17
Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKLSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmluaXRpYWxp
emUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKLXsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJs
ZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKLSAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChleHRlbnNpb24pOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRl
bnNpb25zLnNwbGl0KCcgJykpCi0gICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChl
eHRlbnNpb24pOwotfQotCi0jaWYgIVVTRShBTkdMRSkKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OnJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHZvaWQqKQot
ewotfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9y
bWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9hdCopCi17Ci19Ci0K
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5Vbmlmb3JtaXZFWFQo
R0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopCi17Ci19Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmICFQTEFURk9STShDT0NPQSkKLSNlbmRpZgogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRleCA1ZTVjMDli
ODcyMDQzZWEwZmEyYTk2N2Y0ZjM5OTNiYWQ4MGE3OTQxLi43OGMxMDA3M2M5MDhlNDFkYmUwNGZk
NTA3YWY4MWQ0MGU4YzBjYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KFdFQkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zOSw0MiArMzgsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBwYXJ0cyB0aGF0
IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6CiAvLyAtIERyYXdpbmcg
YnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCiAvLyAtIENvbXBvc2l0aW5nIHN1cHBvcnQuCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6IHB1
YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNHTCB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6IHB1YmxpYyBHcmFw
aGljc0NvbnRleHRHTCB7CiBwdWJsaWM6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CiAgICAgflJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBPdGhlciBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCi0gICAgdXNpbmcgR3JhcGhpY3NDb250
ZXh0R0w6OmlzRW5hYmxlZDsKLSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5h
bDsKLSAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwotICAgIGJvb2wg
aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWFya0NvbnRleHRDaGFu
Z2VkKCkgZmluYWw7CiAKLSAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVycmlkZXMuCi0gICAg
dXNpbmcgRXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7Ci0gICAgYm9vbCBzdXBwb3J0cyhjb25zdCBT
dHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmlu
YWw7Ci0gICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0KLSNpZiAhVVNF
KEFOR0xFKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCwgR0NHTGludCwgR0NHTHNp
emVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMdm9pZCop
IGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NH
THNpemVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NH
THVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopIGZpbmFsOwotI2VuZGlmCi0KLXBy
b3RlY3RlZDoKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRl
bnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7Ci0gICAgdmlydHVh
bCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOwotCi1wcml2YXRlOgotICAgIC8vIEd1YXJk
ZWQgYnkgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKS4KLSAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFp
bGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5z
aW9uczsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNpb25zOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0
ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
ZDA0OWM1MTA5MjY2MTQ1ZGU5MTE3Nzk3MDQzZTk1ZWJiOTg3YTc5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQU5HTEUpCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLQotI2luY2x1
ZGUgIkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dM
QU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBTkdMRSogY29udGV4dCkKLSAgICA6IG1faW5pdGlhbGl6
ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi17
Ci19Ci0KLUV4dGVuc2lvbnNHTEFOR0xFOjp+RXh0ZW5zaW9uc0dMQU5HTEUoKSA9IGRlZmF1bHQ7
Ci0KLWJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICBpZiAoIW1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKSB7Ci0gICAgICAg
IGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOwotfQotCi12b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICAvLyBF
bmFibGUgc3VwcG9ydCBpbiBBTkdMRSAoaWYgbm90IGVuYWJsZWQgYWxyZWFkeSkuCi0gICAgaWYg
KG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJsZWRFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR0xfUmVxdWVzdEV4
dGVuc2lvbkFOR0xFKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBtX2VuYWJsZWRFeHRl
bnNpb25zLmFkZChuYW1lKTsKLQotICAgICAgICBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1fY29s
b3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpCi0gICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJG
bG9hdFJHQkEgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9j
b2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKQotICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVmZmVy
RmxvYXRSR0IgPSB0cnVlOwotICAgIH0KLX0KLQotYm9vbCBFeHRlbnNpb25zR0xBTkdMRTo6aXNF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSk7Ci19Ci0KLUdMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkKLXsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwotfQotCi1T
dHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGludCBzb3VyY2VM
ZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURF
Ul9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKLQotICAgIGlmICghc291cmNlTGVuZ3RoKQotICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxl
bmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVk
ZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0gMDsKLSAg
ICBHTF9HZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgs
ICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkpOwotICAgIGlmICghcmV0dXJuZWRMZW5ndGgp
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIC8vIHJldHVybmVkTGVuZ3RoIGRv
ZXMgbm90IGluY2x1ZGUgdGhlIG51bGwgdGVybWluYXRvci4KLSAgICBBU1NFUlQocmV0dXJuZWRM
ZW5ndGggPT0gc291cmNlTGVuZ3RoIC0gMSk7Ci0gICAgcmV0dXJuIFN0cmluZyhuYW1lLmRhdGEo
KSwgcmV0dXJuZWRMZW5ndGgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFs
aXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCi17Ci0gICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcg
PSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25z
U3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0
ZW5zaW9uKTsKLSAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xF
KSkpOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgn
ICcpKQotICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAg
ICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7Ci19Ci0KLWJvb2wgRXh0
ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsK
LSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKLXsK
LSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEdMX0RyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKLX0K
LQotU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRFeHRlbnNpb25zKCkKLXsKLSAgICByZXR1
cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9F
WFRFTlNJT05TKSkpOwotfQotCi1HQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdMRTo6YWRqdXN0V2Vi
R0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpCi17Ci0gICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9m
IFdFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCBmb3IgV2ViR0wgMS4wIC8gRVMgMi4wIHJlcXVpcmVz
IGEgc2l6ZWQKLSAgICAvLyBpbnRlcm5hbCBmb3JtYXQuIEFkanVzdCBpdCBpZiBuZWNlc3Nhcnkg
YXQgdGhpcyBsb3dlc3QgbGV2ZWwuCi0gICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpIHsKLSAgICAg
ICAgaWYgKG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSAmJiBmb3JtYXQgPT0gR0xfUkdCQSAm
JiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0JBKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkEz
MkY7Ci0gICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiAmJiBmb3JtYXQgPT0g
R0xfUkdCICYmIGludGVybmFsZm9ybWF0ID09IEdMX1JHQikKLSAgICAgICAgICAgIHJldHVybiBH
TF9SR0IzMkY7Ci0gICAgfQotICAgIHJldHVybiBpbnRlcm5hbGZvcm1hdDsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk3OGUy
ZjlmNjRiOWY2MTVjM2IzYTg1YzQzYTNjYTA1NGVkNzVjYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCi0KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOwot
Ci1jbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25zR0wgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBpbXBsZW1l
bnRhdGlvbnMuCi0gICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xBTkdMRSopOwotICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTEFOR0xFKCk7Ci0KLSAgICAvLyBF
eHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBHQ0dMaW50
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZHJhd0J1
ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKLQotICAgIFN0cmlu
ZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7Ci0KLSAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRzLgotICAgIEdDR0xl
bnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKLQotcHJpdmF0ZToKLSAgICBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyBnZXRFeHRl
bnNpb25zKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lv
bnMoKTsKLSAgICBib29sIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zOwotICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTdHJpbmc+
IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRF
eHRlbnNpb25zOwotCi0gICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS4KLSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKiBtX2NvbnRleHQ7Ci0KLSAgICAv
LyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2ludCByZW5kZXJhYmls
aXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCi0gICAgYm9vbCBtX3dlYmdsQ29sb3JC
dWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9h
dFJHQkEgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA0OGY3MzQyZjNlMDkwMWZlNDY3MmNhNWI1ZTAz
MjFlODQxNmE5NjZkLi5jNWM2YmZhNTc1ZTk0OTQ2NjEwMGUxNjUzMTgzMjgzYTA4YTBkYjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAj
aW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgpAQCAtNzEsNiArNzAsMzAgQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZy
b21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNl
bmRpZgogCisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW5pdGlhbGl6ZSgpCit7Cisg
ICAgaWYgKCFwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsKKyAgICBmb3IgKGF1
dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVuc2lvbnNTdHJpbmcg
PSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX1JF
UVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRl
bnNpb25zLmFkZChleHRlbnNpb24pOworICAgIHJldHVybiBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
K30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemVDb250
ZXh0KCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIHJldHVybiB0cnVlOworfQorCiBHQ0dM
ZW51bSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgp
CiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQpAQCAtMzU0LDcgKzM3Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsIEdDR0xlCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQog
ewogICAgIGlmICghbV9pc0ZvcldlYkdMMikKLSAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBzdGF0
aWNfY2FzdDxFeHRlbnNpb25zR0xBTkdMRSY+KGdldEV4dGVuc2lvbnMoKSkuYWRqdXN0V2ViR0wx
VGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUpOworICAg
ICAgICBpbnRlcm5hbGZvcm1hdCA9IGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChp
bnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQogICAgICAgICByZXR1cm47CiAgICAgR0xfVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKQEAgLTQyNSwxMyArNDQ4LDYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgp
CiAgICAgR0xfQ2xlYXJEZXB0aGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlcHRoKSk7CiB9CiAKLUV4
dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0RXh0ZW5zaW9ucygpCi17Ci0g
ICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uc0dMQU5HTEU+KHRoaXMpOwotICAgIHJldHVybiAqbV9leHRlbnNpb25zOwotfQot
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgcmVhZG5Q
aXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXpl
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsKQEAgLTQ4Mywx
MiArNDk5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHNJbXBs
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkCiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKQogewotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4
dGVuc2lvbnMoKTsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBvZiB2YXJp
b3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhlcmUuCiAg
ICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFsaXplIHRo
ZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbAogICAgIC8v
IHVzZSB0byB0dXJuIG9uIGZlYXR1cmUgZmxhZ3MuCi0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9y
dHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICBpZiAoc3VwcG9y
dHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgeworICAgICAgICBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgICAg
IG1faW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9pbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RF
UFRIX0NPTVBPTkVOVDE2OwpAQCAtNTA1LDE3ICs1MjAsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaWwKIAogICAgIGlmIChhdHRycy5hbnRpYWxpYXMpIHsKICAgICAgICAgLy8gRklYTUU6IG11
c3QgYWRqdXN0IHRoaXMgd2hlbiB1cGdyYWRpbmcgdG8gV2ViR0wgMi4wIC8gT3BlbkdMIEVTIDMu
MCBzdXBwb3J0LgotICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIikgfHwgIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xF
X2ZyYW1lYnVmZmVyX2JsaXQiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX3JnYjhf
cmdiYTgiKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpIHx8ICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJh
bWVidWZmZXJfYmxpdCIpIHx8ICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3JnYjhfcmdiYTgi
KSkgewogICAgICAgICAgICAgYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgICAgICBz
ZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlIik7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX2JsaXQiKTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgi
R0xfT0VTX3JnYjhfcmdiYTgiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgICAgICBlbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgICAg
ICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKICAgICAgICAg
Ly8gTmVlZGVkIGZvciBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1ZSBzdXBwb3J0IHdpdGhvdXQg
YW50aWFsaWFzaW5nLgotICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xF
X2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOwogICAgIH0KIH0KIApAQCAtMjg5MCw2ICsyOTA1LDY0
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMCiAgICAgR0xfTXVsdGlEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9pbnRlcnMuZGF0YSgpLCBpbnN0
YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOwogfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIC8v
IEVuYWJsZSBzdXBwb3J0IGluIEFOR0xFIChpZiBub3QgZW5hYmxlZCBhbHJlYWR5KS4KKyAgICBp
ZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgR0xfUmVxdWVzdEV4dGVuc2lvbkFO
R0xFKG5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFk
ZChuYW1lKTsKKworICAgICAgICBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVy
X2Zsb2F0X3JnYmEiX3MpCisgICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEg
PSB0cnVlOworICAgICAgICBlbHNlIGlmIChuYW1lID09ICJHTF9DSFJPTUlVTV9jb2xvcl9idWZm
ZXJfZmxvYXRfcmdiIl9zKQorICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0Ig
PSB0cnVlOworICAgIH0KK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVu
c2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKK30KKworR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpCit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJP
UjsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpbnQgc291
cmNlTGVuZ3RoID0gZ2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJD
RV9MRU5HVEhfQU5HTEUpOworCisgICAgaWYgKCFzb3VyY2VMZW5ndGgpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291cmNlTGVuZ3RoKTsg
Ly8gR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBpbmNsdWRlcyBudWxs
IHRlcm1pbmF0aW9uLgorICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdMX0dl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxlbmd0aCwgJnJldHVy
bmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CisgICAgaWYgKCFyZXR1cm5lZExlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgLy8gcmV0dXJuZWRMZW5ndGggZG9lcyBub3Qg
aW5jbHVkZSB0aGUgbnVsbCB0ZXJtaW5hdG9yLgorICAgIEFTU0VSVChyZXR1cm5lZExlbmd0aCA9
PSBzb3VyY2VMZW5ndGggLSAxKTsKKyAgICByZXR1cm4gU3RyaW5nKG5hbWUuZGF0YSgpLCByZXR1
cm5lZExlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR0xfRHJhd0J1ZmZlcnNFWFQo
YnVmcy5idWZTaXplLCBidWZzLmRhdGEpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OndhaXRBbmRVcGRhdGVPbGRlc3RGcmFtZSgpCiB7CiAgICAgc2l6ZV90IG9sZGVzdEZyYW1l
Q29tcGxldGlvbkZlbmNlID0gbV9vbGRlc3RGcmFtZUNvbXBsZXRpb25GZW5jZSsrICUgbWF4UGVu
ZGluZ0ZyYW1lczsKQEAgLTI5OTcsNiArMzA3MCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50KQogewogfQogCitH
Q0dMZW51bSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjphZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJu
YWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSkKK3sKKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV0VCR0xfY29sb3JfYnVm
ZmVyX2Zsb2F0IGZvciBXZWJHTCAxLjAgLyBFUyAyLjAgcmVxdWlyZXMgYSBzaXplZAorICAgIC8v
IGludGVybmFsIGZvcm1hdC4gQWRqdXN0IGl0IGlmIG5lY2Vzc2FyeSBhdCB0aGlzIGxvd2VzdCBs
ZXZlbC4KKyAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgeworICAgICAgICBpZiAobV93ZWJnbENv
bG9yQnVmZmVyRmxvYXRSR0JBICYmIGZvcm1hdCA9PSBHTF9SR0JBICYmIGludGVybmFsZm9ybWF0
ID09IEdMX1JHQkEpCisgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRjsKKyAgICAgICAgaWYg
KG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCICYmIGZvcm1hdCA9PSBHTF9SR0IgJiYgaW50ZXJu
YWxmb3JtYXQgPT0gR0xfUkdCKQorICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRjsKKyAgICB9
CisgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCAx
MDdlYzIzOGI3ODBmNDQ5MTYwZmY1ZjExOTc1YjFiMDQ0MGJiY2Q4Li40NGQxZWMzZjBkOWYzZTUx
MDgwNTY4ZTRkNDhiMzcxMmEzODc3YjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5o
CkBAIC01Myw3ICs1Myw2IEBAIHN0cnVjdCBnYm1fYm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEV4dGVuc2lvbnNHTDsKLWNsYXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogY2xhc3MgR0xD
b250ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlQnVmZmVyOwpAQCAtMzMyLDYg
KzMzMSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3Rh
bmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIG11bHRp
RHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMs
IEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywg
R0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdj
b3VudCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92
ZXJyaWRlOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CisKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUJ1ZmZl
cigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIoKSBmaW5h
bDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5hbDsKQEAgLTM0Niwx
MiArMzUyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9i
amVjdCkgZmluYWw7CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikg
ZmluYWw7CiAgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsK
LSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKICAgICB2b2lkIHNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFs
OwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
UGl4ZWxCdWZmZXIoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwogICAgIHZvaWQgcmVjeWNs
ZUNvbnRleHQoKTsKQEAgLTM2NiwxNSArMzcwLDIxIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90
ZWN0ZWQ6Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikK
LSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywg
Y29uc3QgUHJvY2Vzc0lkZW50aXR5Jik7Ci0jZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKLSNlbmRpZgorCiAgICAgLy8gQ2FsbGVk
IG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxs
IE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2lu
dHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAorICAgIC8vIEluaXRp
YWxpemVzIHRoZSBpbnN0YW5jZS4gUmV0dXJucyBmYWxzZSBpZiB0aGUgaW5zdGFuY2Ugc2hvdWxk
IG5vdCBiZSB1c2VkLgorICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworICAgIC8vIENhbGxlZCBmaXJz
dCBieSBpbml0aWFsaXplKCkuIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRvIGluc3RhbnRp
YXRlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiaXRzIG9mIEVHTENvbnRleHQuCisgICAgLy8gRklY
TUU6IEN1cnJlbnRseSBwbGF0Zm9ybXMgZG8gbm90IHNoYXJlIHRoZSBjb250ZXh0IGNyZWF0aW9u
LiBUaGV5IHNob3VsZC4KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCgpOworICAgIC8vIENhbGxlZCBsYXN0IGJ5IGluaXRpYWxpemUoKS4gU3ViY2xhc3NlcyBzaG91
bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgcGxhdGZvcm0gc3BlY2lmaWMgc3RhdGUgdGhhdCBk
ZXBlbmQgb24KKyAgICAvLyB0aGUgc2hhcmVkIHN0YXRlLgorICAgIHZpcnR1YWwgYm9vbCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKKwogICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3Mg
cmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcywKICAgICAvLyBpbiBwYXJ0aWN1
bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgog
ICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2Yg
dGhlIE9wZW5HTApAQCAtMzk1LDEzICs0MDUsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHJl
cGFyZVRleHR1cmVJbXBsKCk7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNz
YXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKICAgICB2b2lkIGF0dGFjaERlcHRoQW5k
U3RlbmNpbEJ1ZmZlcklmTmVlZGVkKEdDR0x1aW50IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotCi0gICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGFsbG9jYXRlQW5kQmlu
ZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7Ci0gICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CiAg
ICAgc3RhdGljIGJvb2wgbWFrZUN1cnJlbnQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3Bs
YXksIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wpOwogI2VuZGlmCisgICAgdmlydHVhbCBib29s
IHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpID0gMDsKKwogICAgIC8vIFJldHVybnMgZmFs
c2UgaWYgY29udGV4dCBzaG91bGQgYmUgbG9zdCBkdWUgdG8gdGltZW91dC4KICAgICBib29sIHdh
aXRBbmRVcGRhdGVPbGRlc3RGcmFtZSgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIApAQCAtNDEwLDYg
KzQxOCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUtub3du
VGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpOwogCisgICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIu
MCBjb250ZXh0cy4KKyAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNpb25zOworICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKyAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0
UkdCIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSB7IGZh
bHNlIH07CiAgICAgR0NHTHVpbnQgbV90ZXh0dXJlIHsgMCB9OwogICAgIEdDR0x1aW50IG1fZmJv
IHsgMCB9OwogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2lsQnVmZmVyIHsgMCB9OwpAQCAtNDM0
LDcgKzQ1MCw2IEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9vbGRlc3RGcmFtZUNvbXBsZXRp
b25GZW5jZSB7IDAgfTsKICAgICBTY29wZWRHTEZlbmNlIG1fZnJhbWVDb21wbGV0aW9uRmVuY2Vz
W21heFBlbmRpbmdGcmFtZXNdOwogICAgIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUgbV9zdGF0ZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMQU5HTEU+IG1fZXh0ZW5zaW9uczsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuCkBAIC00NDcsNyArNDYyLDYgQEAgcHJvdGVjdGVkOgogICAgIC8vIFdo
ZW4gcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRlZCB0byBkdXJp
bmcgZGlzcGxheSBwcmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlz
cGxheUJ1ZmZlckJhY2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB7IG51
bGxwdHIgfTsKLSAgICBQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwogI2VuZGlmCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIEdDR0x1aW50IG1fY29tcG9zaXRvclRl
eHR1cmUgeyAwIH07CkBAIC00ODYsNyArNTAwLDYgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+IG1fdGV4bWFwTGF5ZXI7CiAj
ZW5kaWYKIAotICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKICNpZiBVU0UoTklD
T1NJQSkKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6R0NHTEFOR0xFTGF5ZXI7CiAgICAgZnJp
ZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IGEwOGRhMGY0ZjEwZTRjM2U0YTlhNzFlZThmNTMyNWZhNjZlMDkxZmYuLjdiM2I0YTAxZjI2OTZj
MGQ5YjA2MTI4MDY0NjM4ZGY2OTIyYTFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
NDAsNyArNDAsNiBAQAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgotI2ltcG9ydCAiRXh0ZW5z
aW9uc0dMLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5oCmluZGV4IGM1NmU2OTUzNWU3MDk3ZmRkMjVkMmZjZTMwMmUxMDY4
ZTc2YzZlM2IuLmMzMWY1ZWZiZTJlYTgyMGRjNzBmZDUwZDU3YTI4NzFjYzM5NmY5MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKQEAgLTc5LDE3ICs3OSwyMyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBm
aW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCB1cGRhdGVDb250ZXh0T25EaXNwbGF5UmVjb25maWd1cmF0aW9u
KCk7CiAjZW5kaWYKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29hKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNv
dXJjZU93bmVyKTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgorICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplQ29u
dGV4dCgpIGZpbmFsOworICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkgZmluYWw7CiAgICAg
dm9pZCBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dMdWludCkgZmluYWw7CisgICAg
Ym9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSBmaW5hbDsKKyAgICBib29sIGFsbG9j
YXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9vbCBiaW5kRGlzcGxheUJ1
ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1
ZmZlcik7CiAKKyAgICBQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwogI2lmIEVOQUJM
RShWSURFTykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hPiBt
X2N2OwogI2VuZGlmCkBAIC0xMDAsNiArMTA2LDcgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+
IG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb247CiAjZW5kaWYKKwogICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQppbmRleCAwY2QwYTI0ZmRiNzJjMzdiY2QyNWMwMDBjNTQ2MmM2MWMyMDVmNzUxLi4z
NmU4ZjBmYjAyOTM3N2I0ZWZmZTQwNTM1MjM3ZTU4MjIyZmJmNzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFOR0xFVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJBTkdMRVV0aWxpdGllc0NvY29hLmgiCiAjaW1wb3J0ICJDVlV0aWxp
dGllcy5oIgotI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTE5NywyOSArMTk2LDE1
IEBAIHN0YXRpYyBib29sIG5lZWRzRUFHTE9uTWFjKCkKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TENvY29hPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYgYXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcikK
IHsKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoV1RGTW92ZShhdHRyaWJ1dGVzKSwgV1RGTW92ZShyZXNvdXJjZU93bmVyKSkpOwotICAgIGlm
ICghY29udGV4dC0+aXNWYWxpZCgpKQorICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmJiBjcmVhdGlvbkF0dHJpYnV0ZXMsIFByb2Nlc3NJZGVudGl0eSYmIHJlc291
cmNlT3duZXIpCi0gICAgOgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJ
VFlfVE9LRU4pCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3ZlKGNyZWF0aW9uQXR0
cmlidXRlcyksIHJlc291cmNlT3duZXIpCi0jZWxzZQotICAgIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEUoV1RGTW92ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQotI2VuZGlmCisgICAgOiBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSkKKyAgICAsIG1fcmVzb3Vy
Y2VPd25lcihXVEZNb3ZlKHJlc291cmNlT3duZXIpKQogewotICAgIGlmICghaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBpbml0aWFsaXplciBs
aXN0IG9uY2UgbV9yZXNvdXJjZU93bmVyIG1vdmVzIHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Ci0gICAgbV9yZXNvdXJjZU93bmVyID0gV1RGTW92ZShyZXNvdXJjZU93bmVyKTsKLQotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwot
ICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCAmJiBhdHRyaWJ1dGVzLmVmZmVjdGl2ZVBvd2Vy
UHJlZmVyZW5jZSgpID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVy
Zm9ybWFuY2UpCi0gICAgICAgIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24g
PSB0cnVlOwotI2VuZGlmCiB9CiAKIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6On5HcmFwaGljc0Nv
bnRleHRHTENvY29hKCkgPSBkZWZhdWx0OwpAQCAtMjM2LDM4ICsyMjEsMzkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTENvY29hOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKIAogLy8gRklYTUU6
IEJlbG93IGlzIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgbW92ZWQgdG8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSB0byBzaW1wbGlmeSB0aGUgYmFzZSBjbGFzcy4KIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCi1HcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBh
dHRycywgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQotI2Vsc2UKIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJzKQotI2VuZGlmCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRy
cykKIHsKLSAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMud2ViR0xWZXJzaW9uID09IEdyYXBoaWNz
Q29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7Ci0gICAgaWYgKGF0dHJzLnVzZU1ldGFsICYm
ICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0ZvcldlYkdMMikpIHsKLSAgICAgICAgYXR0cnMu
dXNlTWV0YWwgPSBmYWxzZTsKLSAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwor
fQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQoKQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29u
dGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBtX2lzRm9yV2ViR0wyID0gYXR0cmlidXRlcy53ZWJHTFZl
cnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMjsKKyAgICBpZiAo
YXR0cmlidXRlcy51c2VNZXRhbCAmJiAhcGxhdGZvcm1TdXBwb3J0c01ldGFsKG1faXNGb3JXZWJH
TDIpKSB7CisgICAgICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSBmYWxzZTsKKyAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFdFQlhS
KQotICAgIGlmIChhdHRycy54ckNvbXBhdGlibGUpIHsKKyAgICBpZiAoYXR0cmlidXRlcy54ckNv
bXBhdGlibGUpIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhhdCBh
bnkgY29ubmVjdGVkIGhlYWRzZXQgd2lsbCByZXF1aXJlIHRoZSBoaWdoLXBvd2VyIEdQVSwKICAg
ICAgICAgLy8gd2hpY2ggaXMgdGhlIHNhbWUgR1BVIHdlIG5lZWQgdGhpcyBjb250ZXh0IHRvIHVz
ZS4gSG93ZXZlciwgdGhpcyBpcyBub3QgZ3VhcmFudGVlZCwgYW5kCiAgICAgICAgIC8vIHRoZXJl
IGlzIGFsc28gdGhlIGNoYW5jZSB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBHUFVzLiBHaXZlbiB0
aGF0IHlvdSBjYW4gcmVxdWVzdCB0aGUKICAgICAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0wgYmVm
b3JlIGluaXRpYWxpemluZyB0aGUgV2ViWFIgc2Vzc2lvbiwgd2UnbGwgbmVlZCBzb21lIHdheSB0
bwogICAgICAgICAvLyBtaWdyYXRlIHRoZSBjb250ZXh0IHRvIHRoZSBhcHByb3ByaWF0ZSBHUFUg
d2hlbiB0aGUgY29kZSBoZXJlIGRvZXMgbm90IHdvcmsuCiAgICAgICAgIExPRyhXZWJHTCwgIldl
YlhSIGNvbXBhdGlibGUgY29udGV4dCByZXF1ZXN0ZWQuIFRoaXMgd2lsbCBhbHNvIHRyaWdnZXIg
YSByZXF1ZXN0IGZvciB0aGUgaGlnaC1wb3dlciBHUFUuIik7Ci0gICAgICAgIGF0dHJzLmZvcmNl
UmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IHRydWU7Ci0gICAgICAgIHNldENvbnRleHRB
dHRyaWJ1dGVzKGF0dHJzKTsKKyAgICAgICAgYXR0cmlidXRlcy5mb3JjZVJlcXVlc3RGb3JIaWdo
UGVyZm9ybWFuY2VHUFUgPSB0cnVlOworICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRy
aWJ1dGVzKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fZGlzcGxheU9iaiA9IGluaXRpYWxpemVF
R0xEaXNwbGF5KGF0dHJzKTsKKyAgICBtX2Rpc3BsYXlPYmogPSBpbml0aWFsaXplRUdMRGlzcGxh
eShhdHRyaWJ1dGVzKTsKICAgICBpZiAoIW1fZGlzcGxheU9iaikKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFhdHRy
cy51c2VNZXRhbCkgeworICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCkgewogICAgICAgICAv
LyBGb3IgT3BlbkdMLCBFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSBpcyB1c2VkLiBUaGUgY29u
dGV4dCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZQogICAgICAgICAvLyBkZWZhdWx0LCBsb3ctcG93
ZXIgZGV2aWNlLiBGb3IgaGlnaC1wZXJmb3JtYW5jZSBjb250ZXh0cywgd2UgcmVxdWVzdCB0aGUg
aGlnaC1wZXJmb3JtYW5jZQogICAgICAgICAvLyBHUFUgaW4gc2V0Q29udGV4dFZpc2liaWxpdHku
IFdoZW4gdGhlIHJlcXVlc3QgaXMgZnVsbGZpbGxlZCBieSB0aGUgc3lzdGVtLCB3ZSBnZXQgdGhl
CkBAIC0yNzUsMTEgKzI2MSwxMSBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0Nv
bnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgICAgICBj
b25zdCBjaGFyICpkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmluZyhtX2Rpc3BsYXlP
YmosIEVHTF9FWFRFTlNJT05TKTsKICAgICAgICAgYm9vbCBzdXBwb3J0c1Bvd2VyUHJlZmVyZW5j
ZSA9IHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNl
Iik7CiAgICAgICAgIGlmICghc3VwcG9ydHNQb3dlclByZWZlcmVuY2UpIHsKLSAgICAgICAgICAg
IGF0dHJzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IGZhbHNlOwotICAgICAg
ICAgICAgaWYgKGF0dHJzLnBvd2VyUHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlKSB7Ci0gICAgICAgICAgICAgICAgYXR0cnMucG93
ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQ7
CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQ
VSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID09
IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpIHsKKyAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBoaWNzQ29udGV4
dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
c2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOworICAgICAgICAgICAgc2V0Q29udGV4dEF0dHJp
YnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTI5OCwxNCAr
Mjg0LDE0IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgRUdMX0Nob29zZUNvbmZpZyht
X2Rpc3BsYXlPYmosIGNvbmZpZ0F0dHJpYnV0ZXMsICZtX2NvbmZpZ09iaiwgMSwgJm51bWJlckNv
bmZpZ3NSZXR1cm5lZCk7CiAgICAgaWYgKG51bWJlckNvbmZpZ3NSZXR1cm5lZCAhPSAxKSB7CiAg
ICAgICAgIExPRyhXZWJHTCwgIkVHTENvbmZpZyBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBMT0coV2Vi
R0wsICJHb3QgRUdMQ29uZmlnIik7CiAKICAgICBFR0xfQmluZEFQSShFR0xfT1BFTkdMX0VTX0FQ
SSk7CiAgICAgaWYgKEVHTF9HZXRFcnJvcigpICE9IEVHTF9TVUNDRVNTKSB7CiAgICAgICAgIExP
RyhXZWJHTCwgIlVuYWJsZSB0byBiaW5kIHRvIE9QRU5HTF9FU19BUEkiKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgVmVjdG9yPEVHTGludD4g
ZWdsQ29udGV4dEF0dHJpYnV0ZXM7CkBAIC0zMzMsMTMgKzMxOSwxMiBAQCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRycwogICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9C
SU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSk7CiAgICAgZWdsQ29udGV4dEF0dHJpYnV0
ZXMuYXBwZW5kKEVHTF9GQUxTRSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgSEFWRShUQVNL
X0lERU5USVRZX1RPS0VOKQorI2lmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICBhdXRv
IGRpc3BsYXlFeHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxheU9iaiwgRUdMX0VY
VEVOU0lPTlMpOwogICAgIGJvb2wgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0eSA9IHN0cnN0cihk
aXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9tZXRhbF9jcmVhdGVfY29udGV4dF9vd25lcnNo
aXBfaWRlbnRpdHkiKTsKLSAgICAvLyBGSVhNRTogVXNlIG1fcmVzb3VyY2VPd25lciBvbmNlIGl0
IG1vdmVzIHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EuCi0gICAgaWYgKGF0dHJzLnVzZU1ldGFs
ICYmIHJlc291cmNlT3duZXIgJiYgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0eSkgeworICAgIGlm
IChhdHRyaWJ1dGVzLnVzZU1ldGFsICYmIG1fcmVzb3VyY2VPd25lciAmJiBzdXBwb3J0c093bmVy
c2hpcElkZW50aXR5KSB7CiAgICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xf
Q09OVEVYVF9NRVRBTF9PV05FUlNISVBfSURFTlRJVFlfQU5HTEUpOwotICAgICAgICBlZ2xDb250
ZXh0QXR0cmlidXRlcy5hcHBlbmQocmVzb3VyY2VPd25lci50YXNrSWRUb2tlbigpKTsKKyAgICAg
ICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKG1fcmVzb3VyY2VPd25lci50YXNrSWRUb2tl
bigpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzQ4LDEwICszMzMsMTQgQEAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cnMKICAgICBtX2NvbnRleHRPYmogPSBFR0xfQ3JlYXRlQ29udGV4dChtX2Rpc3Bs
YXlPYmosIG1fY29uZmlnT2JqLCBFR0xfTk9fQ09OVEVYVCwgZWdsQ29udGV4dEF0dHJpYnV0ZXMu
ZGF0YSgpKTsKICAgICBpZiAobV9jb250ZXh0T2JqID09IEVHTF9OT19DT05URVhUIHx8ICFtYWtl
Q3VycmVudChtX2Rpc3BsYXlPYmosIG1fY29udGV4dE9iaikpIHsKICAgICAgICAgTE9HKFdlYkdM
LCAiRUdMQ29udGV4dCBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBMT0coV2ViR0wsICJHb3QgRUdMQ29u
dGV4dCIpOworICAgIHJldHVybiB0cnVlOworfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4
dEF0dHJpYnV0ZXMoKTsKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgR0xfRW5hYmxl
KEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKQEAg
LTM2MywzOCArMzUyLDM3IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoIW5lZWRzRUFHTE9uTWFjKCkp
IHsKICAgICAgICAgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAgICAgIGlm
ICghYXR0cnMudXNlTWV0YWwpCisgICAgICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCkKICAg
ICAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX3RleHR1cmVfcmVj
dGFuZ2xlIl9zKTsKICAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3VyZmFjZSBmcm9t
IGFuIElPU3VyZmFjZS4KICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhU
X3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICB9CiAjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNpZiBFTkFCTEUoV0VCWFIpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS54
ckNvbXBhdGlibGUpCisgICAgaWYgKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxlKQogICAgICAgICBy
ZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9PRVNfRUdMX2ltYWdlIl9zKTsKICNlbmRpZgog
ICAgIGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5k
KCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7Ci0gICAgRXh0ZW5zaW9uc0dM
JiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogcmVxdWlyZWRFeHRlbnNpb25zKSB7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0
cyhleHRlbnNpb24pKSB7CisgICAgICAgIGlmICghc3VwcG9ydHNFeHRlbnNpb24oZXh0ZW5zaW9u
KSkgewogICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24u
ICVzIiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgZXh0ZW5zaW9ucy5lbnN1
cmVFbmFibGVkKGV4dGVuc2lvbik7CisgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0
ZW5zaW9uKTsKICAgICB9Ci0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkudXNlTWV0YWwpIHsK
KyAgICBpZiAoYXR0cmlidXRlcy51c2VNZXRhbCkgewogICAgICAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFIHVzZXMgc3luYyBvYmplY3RzIHRvIHRocm90dGxlIGRpc3BsYXkgb24gTWV0YWwg
aW1wbGVtZW50YXRpb25zLgogICAgICAgICAvLyBPcGVuR0wgc3luYyBvYmplY3RzIGFyZSBub3Qg
c2lnbmFsaW5nIHVwb24gY29tcGxldGlvbiBvbiBDYXRhbGluYS1lcmEgZHJpdmVycywgc28KICAg
ICAgICAgLy8gT3BlbkdMIGNhbm5vdCB1c2UgdGhpcyBtZXRob2Qgb2YgdGhyb3R0bGluZy4gT3Bl
bkdMIGRyaXZlcnMgdHlwaWNhbGx5IGltcGxlbWVudAogICAgICAgICAvLyBzb21lIHNvcnQgb2Yg
aW50ZXJuYWwgdGhyb3R0bGluZy4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0FSQl9zeW5jIl9zKSkgeworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9z
eW5jIl9zKSkgewogICAgICAgICAgICAgbV91c2VGZW5jZVN5bmNGb3JEaXNwbGF5UmF0ZUxpbWl0
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQVJCX3N5
bmMiX3MpOworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQVJCX3N5bmMi
X3MpOwogICAgICAgICB9CiAgICAgfQogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwotICAgIGF0
dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmlu
ZyB2YWxpZGF0aW9uLgorICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBU
aGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKICAgICAvLyBDcmVhdGUg
dGhlIHRleHR1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1ZmZlci4KICAgICBH
TGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CkBAIC00
MTEsMTggKzM5OSwxOCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRH
TEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIEdMX0JpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIG1fc3RhdGUuYm91bmREcmF3RkJP
ID0gbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPSBtX2ZibzsKIAotICAgIGlmICghYXR0cnMuYW50aWFs
aWFzICYmIChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKSkKKyAgICBpZiAoIWF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkp
CiAgICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsK
IAogICAgIC8vIElmIG5lY2Vzc2FyeSwgY3JlYXRlIGFub3RoZXIgZnJhbWVidWZmZXIgZm9yIHRo
ZSBtdWx0aXNhbXBsZSByZXN1bHRzLgotICAgIGlmIChhdHRycy5hbnRpYWxpYXMpIHsKKyAgICBp
ZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMpIHsKICAgICAgICAgR0xfR2VuRnJhbWVidWZmZXJzKDEs
ICZtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgbV9zdGF0ZS5ib3VuZERyYXdGQk8g
PSBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87CiAgICAgICAgIEdMX0dl
blJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAgICAgIGlm
IChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKQorICAgICAgICBpZiAoYXR0cmlidXRlcy5z
dGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpCiAgICAgICAgICAgICBHTF9HZW5SZW5kZXJidWZm
ZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICB9IGVsc2UgaWYg
KGF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgIH0gZWxzZSBpZiAoYXR0cmlidXRl
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKICAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCBjcmVh
dGUgYW5vdGhlciB0ZXh0dXJlIHRvIGhhbmRsZSBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1ZSB3
aXRob3V0CiAgICAgICAgIC8vIGFudGlhbGlhc2luZy4KICAgICAgICAgR0xfR2VuVGV4dHVyZXMo
MSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVyZSk7CkBAIC00MzgsNyArNDI2LDExIEBA
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAKICAgICBHTF9DbGVhckNvbG9yKDAsIDAsIDAsIDAp
OwogCi0gICAgTE9HKFdlYkdMLCAiQ3JlYXRlZCBhIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgKCVw
KS4iLCB0aGlzKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFhdHRyaWJ1dGVzLnVzZU1l
dGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93ZXJQcmVmZXJlbmNlKCkgPT0gR3JhcGhpY3ND
b250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKKyAgICAgICAgbV9zd2l0
Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlvbiA9IHRydWU7CisjZW5kaWYKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdM
QU5HTEUoKQpAQCAtNDg1LDExICs0NzcsNiBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp+R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRSgpCiAgICAgTE9HKFdlYkdMLCAiRGVzdHJveWVkIGEgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRSAoJXApLiIsIHRoaXMpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3RleHR1cmU7Ci19Ci0K
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTU1MCw3ICs1MzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OnVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24oKQogfQog
I2VuZGlmCiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZm
ZXJCYWNraW5nKCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkuaXNFbXB0eSgpKTsKICAgICAvLyBSZXNldCB0aGUgY3VycmVudCBiYWNrYnVmZmVyIG5vdyBi
ZWZvcmUgYWxsb2NhdGluZyBhIG5ldyBvbmUgaW4gb3JkZXIgdG8gc2xpZ2h0bHkgcmVkdWNlIG1l
bW9yeSBwcmVzc3VyZS4KQEAgLTU2OCw3ICs1NTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgcmV0dXJuIGFsbG9jYXRl
QW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQorYm9vbCBHcmFw
aGljc0NvbnRleHRHTENvY29hOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygp
CiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7
CiAgICAgYXV0byBiYWNraW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1
ZmZlclNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwpAQCAtNTk4LDcgKzU4
NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6YWxsb2NhdGVBbmRCaW5kRGlzcGxh
eUJ1ZmZlckJhY2tpbmcoKQogICAgIHJldHVybiBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoV1RG
TW92ZShiYWNraW5nKSwgcGJ1ZmZlcik7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6YmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJh
Y2tpbmcsIHZvaWQqIHBidWZmZXIpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2
b2lkKiBwYnVmZmVyKQogewogICAgIEdDR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVm
ZmVyVGV4dHVyZVRhcmdldCgpOwogICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0
b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1Rhcmdl
dCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJF
X1JFQ1RBTkdMRV9BUkIpOwpAQCAtNjg5LDcgKzY3Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6ZGV0YWNoSU9TdXJmYWNlRnJvbVNoYXJlZFRleHR1cmUodm9pZCogaGFuZGxlKQog
fQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7
CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDdkMGNlMzZiNjBh
MGQ2OWE1OTIzYzI0MDBkMDNiYjdiYWQzODY0OTguLjBiYjEwNjViM2E2MTY2OWI5ODUwMTg1MzA0
NWE3MGI2ZmFhMWI1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXgK
ICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCku
aGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8g
Y29udGV4dCA9IGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pKTsKLSAgICBpZiAoIWNv
bnRleHQtPmlzVmFsaWQoKSkKKyAgICBpZiAoIWNvbnRleHQtPmluaXRpYWxpemUoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LmdldCgpKTsKICAgICByZXR1cm4gY29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNTFjYmU2YjdlMTNiODBhZjcx
MmUzZWZlNzZiNjI1MTU4MzQ5ZmY0YS4uNzNlMjQ4NDVjYjMzZTUwZDU0NTdhNjIwNjE4NDQ0MjY5
NTE3ZDY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAv
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgogICAg
IC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCBkOWYxNWY0NWJkZmI0ZTFiYmU4
ZDM5MzYzNWI2MGFhZDFkMmQ5MGE3Li5lNzMyYzFjZjkxYTNkODRmNjQzMmMwZjIyYzg2OGYzZDgw
NDRjNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIHN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgcGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0RXh0
ZW5zaW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmNwcAppbmRleCA3ZDUwMGFiYzBjZjFlZTU1MjY4MzExMmFmY2YyMjI0YWU2OTU3
MWJmLi4yMWU4MjlmYmQxMDFkZjZkNDY5MzE2ZjlkMjljZWQ4NmI0YWM5NjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKIH0KIAogdm9pZCBF
eHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjplbnN1
cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgU2hCdWlsdEluUmVzb3VyY2Vz
IEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CiAgICAgICAgIGlmICgh
QU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykgewogICAgICAgICAgICAgQU5HTEVSZXNv
dXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgICAgICBBTkdMRVJlc291cmNlcy5N
YXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9E
UkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZm
ZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19C
VUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNv
dXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCmluZGV4
IDI5YTBjNGQ4ZjVhOTI2YzcwOTUzNTQxYzBiMjYxM2ZkYTc1MmI0MjYuLjJjMzdmYWM5NjVjMDIx
NmRhMDVhYzVmYjhlYWFlYjY4M2Q0NGE3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmgKQEAgLTI2LDggKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJF
eHRlbnNpb25zR0wuaCIKLQorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC0z
NSwxNiArMzQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDsKIAotY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIDogcHVibGljIEV4
dGVuc2lvbnNHTCB7CitjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbigpOwogCi0gICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgYm9vbCBz
dXBwb3J0cyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlk
ZTsKKyAgICAvLyBNZXRob2RzIGZvcndhcmRlZCBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNF
bmFibGVkKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhU
KEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAvLyBHTF9PRVNfdmVy
dGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpID0gMDsKQEAgLTUyLDE4ICs1MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpID0gMDsK
IAotICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVy
cmlkZSA9IDA7Ci0KLSAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwg
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlYWRu
UGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lk
ICpkYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CiAKICAgICBib29sIGlzTlZJ
RElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQogICAgIGJvb2wgaXNBTUQoKSBjb25z
dCB7IHJldHVybiBtX2lzQU1EOyB9CkBAIC03OCw3ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBm
cmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7CiAgICAgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRleGVkR2V0U3RyaW5n
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDE1NDYyMzZmOGI2YmRiNTIyM2QwZWRlMzdhYjc0
ZjBlZDZmMTBiY2YuLjk5N2U3OWVlNWQ0YzE3ZTIxMjBiYjNkZjRlMDI1NTAyNjBhNGMzOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogCiAgICAg
Ly8gRm9yIEdMX0VYVF9yb2J1c3RuZXNzLCBjaGVjayB0aGF0IHRoZSBjb250ZXh0IHN1cHBvcnRz
IHJvYnVzdCBhY2Nlc3MuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIikKLSAg
ICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6OkNPTlRFWFRf
Uk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJVRTsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6Q09OVEVYVF9ST0JVU1RfQUNDRVNTKSA9PSBHTF9U
UlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgaW50IEV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKICAgICBpZiAobV9j
b250ZXh0UmVzZXRTdGF0dXMgIT0gR0xfTk9fRVJST1IpCiAgICAgICAgIHJldHVybiBtX2NvbnRl
eHRSZXNldFN0YXR1czsKICAgICBpZiAobV9nbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQpIHsK
LSAgICAgICAgaW50IHJlYXNvbkZvclJlc2V0ID0gVU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQjsK
KyAgICAgICAgaW50IHJlYXNvbkZvclJlc2V0ID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOS05PV05f
Q09OVEVYVF9SRVNFVF9BUkI7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICAgICAgcmVhc29uRm9yUmVzZXQgPSBtX2dsR2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0VYVCgpOwogICAgICAgICBpZiAocmVhc29uRm9yUmVzZXQgIT0gR0xfTk9fRVJST1Ip
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0
cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXYKICAgICBtX2dsVmVy
dGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKIH0KIAotYm9vbCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQorYm9v
bCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJh
eXMiKSB7CiAgICAgICAgIGF1dG8gbWFqb3JWZXJzaW9uID0gW10oKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oCmluZGV4IDlhNTgxYTAwMGRkMzcyZmYxZWNkZDkxZmY5OWRlYzk4YWQ4ZTM4
NTguLjliYjUyZjliYWFhY2I1NzE2YzRkMDJiOWI1YmY3OTFhNzhmNzUwZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5oCkBAIC03MSw2ICs3MSwxMiBAQCBjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDsKIAogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVMgOiBwdWJsaWMgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uIHsKIHB1YmxpYzoKKyAgICAvLyBHTF9JTUdfbXVsdGlzYW1wbGVk
X3JlbmRlcl90b190ZXh0dXJlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJC
VUZGRVJfU0FNUExFU19JTUcgPSAweDkxMzM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0lNRyA9IDB4OTEzNDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9TQU1QTEVTX0lNRyA9IDB4OTEzNTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfU0FNUExFU19JTUcgPSAweDkxMzY7CisK
ICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0aW9ucy4KICAgICBFeHRlbnNpb25zR0xPcGVu
R0xFUyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhlZEdldFN0cmluZyk7
CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMRVMoKTsKQEAgLTEwMSw3ICsxMDcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVycmlkZTsKIAog
cHJvdGVjdGVkOgotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIFN0cmluZyBnZXRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiAKICAgICBH
Q0dMZW51bSBtX2NvbnRleHRSZXNldFN0YXR1czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwCmluZGV4IGYzMGI1ZTFlNmVhOWQwMTU3NzRmODA2MGI5MTUzZjQ3ZTMwNjJlYWIu
LmJiZjBlODFlYjk4NTUyNWYzMjQ3NzEyOGU0NDM3MzMwNDlhOWM1NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzEyLDE4ICszMTIsMjAgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiAjZW5kaWYKIH0K
IAotI2lmIFBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNF
KE9QRU5HTF9FUykKK0V4dGVuc2lvbnNHTE9wZW5HTEVTJiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0RXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKLSNpZiBVU0Uo
T1BFTkdMX0VTKQotICAgICAgICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBH
TEVTMi4KKyAgICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KKyAg
ICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxF
eHRlbnNpb25zR0xPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIC8vIEZy
b20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11
c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKK30KKyNlbGlm
IFBMQVRGT1JNKEdUSykKK0V4dGVuc2lvbnNHTE9wZW5HTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMoKQoreworICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2Ug
dGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAg
ICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxF
eHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkg
Pj0gMzIwKTsKLSNlbmRpZgotICAgIH0KICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNl
bmRpZgpAQCAtMzUxLDEwICszNTMsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogewogICAg
IGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChhdHRycy5z
dGVuY2lsKSB7Ci0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChw
YWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNp
b24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgICAgICAgICAg
Ly8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVw
dGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKQEAgLTM2MiwxMSArMzYzLDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBh
Y2tlZERlcHRoU3RlbmNpCiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKICAg
ICB9CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiAhbV9pc0ZvcldlYkdMMikgewotICAgICAg
ICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlIikpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUiKSkgewogICAgICAgICAgICAgYXR0cnMuYW50aWFsaWFzID0gZmFs
c2U7CiAgICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKICAgICB9CiB9CiAKQEAgLTMw
NjksNiArMzA3MCwzNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtLCBHQ0dMU3BhbgogICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiB9CiAKK2Jvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKG5hbWUpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBnZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChu
YW1lKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNFeHRlbnNpb25FbmFi
bGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmlz
RW5hYmxlZChuYW1lKTsKK30KKworR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAgIHJldHVybiBnZXRFeHRlbnNpb25zKCkuZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmZmVycykKK3sK
KyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKGJ1ZmZlcnMpOworfQor
CitTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5z
aW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIpOworfQorCiBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCB1bnBhY2tBbGlnbm1lbnQpCiB7CiAgICAgQVNTRVJU
KHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFja0FsaWdubWVudCA9PSAyIHx8IHVucGFja0Fs
aWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVudCA9PSA4KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKaW5kZXggOTFmZWZlZjUxMmY2NTI4YmMzYTc3ODMxZWJlOWI2NDUxZDk3
NDU2Yy4uNTk3OTY4ZTBmZmU5Mjc4MzA4MDYxMzI5M2JmZjgwYWM4MDgyMGE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzLDEwICs0Myw5IEBAIGNsYXNzIEdDR0xM
YXllcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBFeHRlbnNpb25zR0w7
CiAjaWYgVVNFKE9QRU5HTF9FUykKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwotI2VsaWYg
VVNFKE9QRU5HTCkKKyNlbHNlCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7CiAjZW5kaWYKIGNs
YXNzIEhvc3RXaW5kb3c7CkBAIC0zNzAsNiArMzY5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG11
bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNp
emVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNl
dHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0
cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRy
YXdjb3VudCkgb3ZlcnJpZGU7CiAKKyAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKKyAgICBHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7CisgICAg
dm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwor
ICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CisKICAgICAvLyBIZWxwZXIgbWV0aG9kcy4KICAgICB2b2lkIGZvcmNlQ29udGV4
dExvc3QoKTsKICAgICB2b2lkIHJlY3ljbGVDb250ZXh0KCk7CkBAIC00MDUsMTEgKzQxMSwxMyBA
QCBwdWJsaWM6CiAKICAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9u
LW51bGwgb2JqZWN0LCB0aG91Z2ggbm90CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMg
bWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAgICAvLyBjdXJyZW50IGhhcmR3
YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCisgICAgLy8gY3VycmVu
dCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTE9wZW5HTHtFU306OnN1cHBvcnRzKCkg
dG8KICAgICAvLyBkZXRlcm1pbmUgdGhpcy4KLSAgICAvLyBVc2UgY292YXJpYW50IHJldHVybiB0
eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCi0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBn
ZXRFeHRlbnNpb25zKCkgZmluYWw7Ci0KKyNpZiBVU0UoT1BFTkdMX0VTKQorICAgIEV4dGVuc2lv
bnNHTE9wZW5HTEVTJiBnZXRFeHRlbnNpb25zKCk7CisjZWxzZQorICAgIEV4dGVuc2lvbnNHTE9w
ZW5HTCYgZ2V0RXh0ZW5zaW9ucygpOworI2VuZGlmCiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9y
VGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBw
cmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwpAQCAtNDIwLDcgKzQyOCw3IEBAIHByb3RlY3Rl
ZDoKICAgICBHQ0dMdWludCBtX3RleHR1cmUgeyAwIH07CiAKICAgICAvLyBDYWxsZWQgb25jZSBi
eSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdM
LgotICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBF
eHRlbnNpb25zR0wgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgorICAgIC8vIENhbGxlZCBv
bmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNpb25zR0xPcGVuR0wv
RXh0ZW5zaW9uR0xPcGVuR0xFUyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgYm9v
bCBtYWtlQ29udGV4dEN1cnJlbnQoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKICAgICAvLyBUYWtl
IGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJp
YnV0ZXMsCkBAIC01MTIsMTMgKzUyMCwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2hhZGVyTmFtZUhhc2g+IG5hbWVIYXNoTWFwRm9yU2hhZGVyczsKIAorICAgIGZyaWVu
ZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb247CiAjaWYgVVNFKE9QRU5HTF9FUykKICAg
ICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7Ci0gICAgZnJpZW5kIGNsYXNzIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dM
T3BlbkdMRVM+IG1fZXh0ZW5zaW9uczsKLSNlbGlmIFVTRShPUEVOR0wpCisjZWxzZQogICAgIGZy
aWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7Ci0gICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdM
PiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xCYXNlLmNwcAppbmRleCA2OGI2Y2QzZjUyNGJmNmEwOWVhZjdmZDY4NDhmYmFjMWRhNzMz
YWIzLi5jMzViMmYwZjE1ZDljZDA5YjliMjhiZTBiZjQ0Nzc4ODc0MzA1NzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMzQ1LDEwICszNDUsMTAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKICAgICAgICAgdHlwZSA9IEdMX0hBTEZfRkxPQVRf
QVJCOwogICAgIH0KIAotICAgIEFTU0VSVChmb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9B
TFBIQThfRVhUKTsKLSAgICBpZiAoZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9F
WFQpCisgICAgQVNTRVJUKGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQjhfQUxQSEE4
X0VYVCk7CisgICAgaWYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9F
WFQpCiAgICAgICAgIG9wZW5HTEZvcm1hdCA9IEdMX1JHQkE7Ci0gICAgZWxzZSBpZiAoZm9ybWF0
ID09IEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpCisgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdyYXBo
aWNzQ29udGV4dEdMOjpTUkdCX0VYVCkKICAgICAgICAgb3BlbkdMRm9ybWF0ID0gR0xfUkdCOwog
I2VuZGlmCiAKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQot
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0
ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRl
bnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21w
bGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXgg
Mzg2NDE5OGY3NGE1OTJiYTQyOWM2ZDBhOGJjNjFkZTgxYTM4ZjYwOS4uODNiOWI4NmM1MzI3MmZj
NTQxNTdjOTBmNDY2NWFmODExOThkYTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24n
dCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMg
bm90LgogICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1
dGVzLgotICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1
dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgZ2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICBib29sIHN1cHBvcnRQYWNr
ZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMu
ZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RSZXN0b3JlRkJP
ID0gZmFsc2U7CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDo6Z2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCAwKTsKICNlbmRpZgogCi0gICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMm
IGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xFUyY+KGdldEV4dGVu
c2lvbnMoKSk7CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7CiAgICAgaWYgKGV4dGVuc2lvbnMuaXNJbWFnaW5hdGlvbigpICYmIGF0dHJpYnV0
ZXMuYW50aWFsaWFzKSB7CiAgICAgICAgIEdMaW50IG1heFNhbXBsZUNvdW50OwotICAgICAgICA6
OmdsR2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfU0FNUExFU19JTUcsICZtYXhTYW1wbGVD
b3VudCk7IAorICAgICAgICA6OmdsR2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMT3BlbkdMRVM6Ok1B
WF9TQU1QTEVTX0lNRywgJm1heFNhbXBsZUNvdW50KTsgCiAgICAgICAgIEdMaW50IHNhbXBsZUNv
dW50ID0gc3RkOjptaW4oOCwgbWF4U2FtcGxlQ291bnQpOwogCiAgICAgICAgIGV4dGVuc2lvbnMu
ZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRyhHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCwgc2FtcGxlQ291bnQp
OwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRl
cygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFnZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAg
IGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFu
dGlhbGlhcyA9IGZhbHNlOwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVz
KTsKICAgICB9CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykK
LUV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4
dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9l
eHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4odGhpcywgaXNHTEVT
MkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggZTU0YWUzZjc5OWY4NTJl
MWVlN2E3MDYwN2M5MDdiZmMyYzQ1YWMxMi4uOTFlOGVhODAxNGI3YTk1ODkwMGI0ZjcxYzYwNDM3
MTk2NmMxNWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKIAog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgog
I2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMu
aCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3NTBhODRhZjYzODJjNTQxMzBjZjM2ZTg2ZDli
YzhjNzYwNGNmYmNiLi43NTI4YzBlOTdmN2U1NmI4NTc5YWFiNWFlY2Q2N2I5MmIwNWViNzFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAt
NDcsMTUgKzQ3LDggQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlmCiAKLSNpZiBV
U0UoQU5HTEUpCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLSNlbHNlCisjaWYgIVVT
RShBTkdMRSkKICNpbmNsdWRlIDxBTkdMRS9TaGFkZXJMYW5nLmg+Ci0jaWYgVVNFKE9QRU5HTF9F
UykKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xFUy5oIgotI2Vsc2UKLSNpbmNsdWRlICJF
eHRlbnNpb25zR0xPcGVuR0wuaCIKLSNlbmRpZgogI2VuZGlmCiAKICNpZiBVU0UoTklDT1NJQSkK
QEAgLTEwOCw3ICsxMDEsMTIgQEAgcHJpdmF0ZToKIAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcj4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1
dGVzKSkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyNpZiBVU0UoQU5HTEUpCisg
ICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
I2VuZGlmCisgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcjo6fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKQEAg
LTE0OCw3ICsxNDYsOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogCiAgICAgLy8gQ3JlYXRl
IHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvYmplY3QgZmlyc3QgaW4gb3JkZXIgdG8gZXN0
YWJsaXN0IGEgY3VycmVudCBjb250ZXh0IG9uIHRoaXMgdGhyZWFkLgogICAgIGF1dG8gY29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7Ci0KKyAgICBpZiAoIWNvbnRleHQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOwogI2lmIFVTRShMSUJFUE9YWSkgJiYgVVNFKE9QRU5HTF9FUykg
JiYgRU5BQkxFKFdFQkdMMikKICAgICAvLyBCYWlsIGlmIEdMRVMzIHdhcyByZXF1ZXN0ZWQgYnV0
IGNhbm5vdCBiZSBwcm92aWRlZC4KICAgICBpZiAoYXR0cmlidXRlcy53ZWJHTFZlcnNpb24gPT0g
R3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMiAmJiAhZXBveHlfaXNfZGVza3Rv
cF9nbCgpICYmIGVwb3h5X2dsX3ZlcnNpb24oKSA8IDMwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IDJkYjJlOGQ3ZDljZDdiOWNhYmI0YzljYTQx
NzI0M2YwZTdhMGI1MjIuLjkxZmE1NWJjZjg0ZDcxOTcwYmM1MGY4NDM3N2U1NWE0MGQ3ZjBhMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMVGUKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gY3JlYXRlKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyKCk7Ci0KKyAgICAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJCYXNlIG92ZXJyaWRlcy4KICAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5B
QkxFKFZJREVPKQpAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoQU5H
TEUpCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKKyAgICBib29s
IHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZv
ckRpc3BsYXkoKSBmaW5hbDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcAppbmRleCA2NmUzMmFh
MDMzM2Y3YjhhNmI1ZjQ4NzQyYTY4NTc5ZGVlZjcxY2U1Li5iZmNmNzIxZmY1YzFlNGZiNzVlNmJk
ODhlZDBmNzUzZjlkODNlYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUg
IkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
RXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1h
bmFnZXIuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogCkBAIC02Nyw2ICs2Niw4IEBAIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpCiAjZW5kaWYKICAgICBib29sIHN1Y2Nlc3MgPSBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAg
IHN1Y2Nlc3MgPSBpbml0aWFsaXplKCk7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNj
ZXNzKTsKIAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJpYnV0ZXMgPSBjb250
ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRp
b24uCkBAIC0yNjAsMTEgKzI2MSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcjo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKIHsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogfQogCi1ib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCitib29sIEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBjb25zdCBhdXRv
IHNpemUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNw
cAppbmRleCBkMjYxYTQwMjRjZjdlZjcxODdhMTBmNDc3ZWI1MzNlZjI0NmM4OGNhLi5hMzdmNGE1
OGM2ZTgwZDM2NjQ2MjNmYzc2ZDEwMGE5MzY5MzE1NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNw
cApAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCiAjaW5j
bHVkZSAiQml0bWFwVGV4dHVyZVBvb2wuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5j
bHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXgg
ZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uODk3MmMyMzk2MzlkYzNj
NTA1ZGQ4YmFmZjRhMzA3NGM2Zjk5MjQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBA
IC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
SW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHIKICAgICBpZiAobV9jb250
ZXh0KSB7CiAgICAgICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICAgICAgU3Ry
aW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6
RVhURU5TSU9OUyk7Ci0gICAgICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2Nv
bnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5H
TEUpOworICAgICAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5n
ZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUp
OwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpX
YXNDcmVhdGVkKHRydWUsIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCku
d2FrZVVwU2VtYXBob3JlKCksIGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykpOwog
ICAgIH0gZWxzZQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJUEM6OlNlbWFwaG9yZSB7IH0sICIiLCAiIikpOwpA
QCAtMTg4LDEwICsxODgsMTAgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXJy
b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGwKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYgZXh0ZW5z
aW9uKQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7Ci0gICAgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOworICAgIG1fY29u
dGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pOwogfQogCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICBhc3NlcnRJ
c0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFu
Z2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFi
YTI1NjI0ZGQxOWUzNmJiMTcuLmQ4Yjk4MjA3MTBiNzJkOWI0NDA4YjliYzkwNTc1YmFlMmE2MGQ4
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAi
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3RyZWFt
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTk0LDkgKzkzLDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFsOwogCiAgICAgLy8gTWVz
c2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCByZXNoYXBlKGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KTsKICAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYp
OwotICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKTsKKyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikg
PSAwOwogI2VsaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4
OThlMzAyYjIuLjk3NjgwYTg3YWIzYWE0YTA3M2YyMTkzM2M1ZmVjYjViMjI0ZGZlYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTM2LDcgKzM2LDcgQEAg
bWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0g
ewogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlm
CiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCi0gICAg
dm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorICAgIHZvaWQgTWFya0NvbnRleHRDaGFu
Z2VkKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQogICAgIHZv
aWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAg
dm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCmluZGV4IGQxYzMy
OTA1MTdkMjk2YzUxZTM1NmU4YjRlNTcwYzA2N2JiNzc1OGQuLjkzYmQ2NzcxNjhiYjQ0Yzk4MTM0
ZGM3ODk4YzkwM2UwZmJkMDNlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMzM3LDIwICsxMzM3LDIwIEBACiAgICAgewog
ICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OwogICAgICAgICBhc3NlcnRJc0N1cnJl
bnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAgICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBtX2NvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwogICAgIH0KICAgICB2b2lkIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIFN0cmlu
ZyByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhy
ZWFkKTsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5n
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAgIHJldHVyblZhbHVl
ID0gbV9jb250ZXh0LT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsKICAgICB9CiAgICAg
dm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiYmIGJ1ZnMp
CiAgICAgewogICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXpl
KCkpKTsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVyc0VYVChtYWtlR0NHTFNwYW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwgYnVmcy5zaXplKCkp
KTsKICAgICB9CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNT
aXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwCmluZGV4IDdhZTFlZTc2ZGM0YjA3YzQwM2Y2MGI4YWQxM2RhZDliODdi
ZGVkMGEuLjM4Yzk0YjNhOGI3N2YwMjE5ZjE2Y2QzMjA5OWVjY2RmYzc5MzBmMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDIsNyArNDIsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRT
dHJlYW1TaXplID0gMSA8PCAyMTsKIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJpYnV0ZXMpCisgICAgOiBHcmFwaGlj
c0NvbnRleHRHTChhdHRyaWJ1dGVzKQogICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsKQEAgLTU5LDMxICs1
OSw3MyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSgpCiAgICAgZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgpOwogfQogCi12
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRDb250ZXh0Vmlz
aWJpbGl0eShib29sKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOwotICAgIG1fY3VycmVudEhlaWdodCA9IGhl
aWdodDsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgaWYgKCFzZW5kUmVzdWx0
KQotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewotICAgIGlmIChpc0NvbnRleHRMb3N0
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNp
b24pKTsKLSAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwor
I2lmIEVOQUJMRShXRUJHTDIpCisgICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCkud2ViR0xW
ZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZSBjYWxs
ZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKSB7
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICAg
ICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1h
cmtDb250ZXh0Q2hhbmdlZCgpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCitib29sIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFp
bnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFt
ZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgbV9l
bmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKG5h
bWUpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0NvbnRleHRM
b3N0KCk7CisgICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWls
YWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKQorewor
ICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcp
KQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CisgICAgZm9y
IChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKKyAg
ICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWln
aHQpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpO
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSk7CisgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsK
KyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdo
dCkpOwogICAgIGlmICghc2VuZFJlc3VsdCkKICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDI5ZjAxOTg3MTk1
NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5NzM5NzEuLjU3M2Y3Y2I0YzBjOTVmNTQ1ZWY2ZTA2NTQ0
ODQ2ZjE3NDhjMzNhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
CkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eQogICAgIDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHJpdmF0ZSBHUFVQcm9jZXNzQ29u
bmVjdGlvbjo6Q2xpZW50Ci0gICAgLCBwdWJsaWMgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UgeworICAgICwgcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoKTsKQEAgLTU4LDExICs1OCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKLSAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCisgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0wgb3ZlcnJpZGVzLgogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
IGZpbmFsOwotICAgIHVzaW5nIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjppc0VuYWJsZWQ7Ci0gICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7Cisg
ICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHN5bnRoZXNpemVHTEVy
cm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKQEAgLTMyMSw5ICszMjQsNiBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAotICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KLSAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkg
ZmluYWw7Ci0KICAgICBib29sIGlzQ29udGV4dExvc3QoKSBjb25zdCB7IHJldHVybiAhbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbjsgfQogICAgIHZvaWQgbWFya0NvbnRleHRMb3N0KCk7CiAKQEAgLTM1
MCwxMSArMzUwLDE4IEBAIHByaXZhdGU6CiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNs
aWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQ
VVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CiAKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3Qg
U3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0
ZW5zaW9ucyk7CisgICAgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpOwogICAgIHZvaWQgZGlz
Y29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgpOwogICAgIHZvaWQgYWJhbmRvbkdwdVByb2Nlc3Mo
KTsKIAogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwog
ICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICAvLyBHdWFyZGVkIGJ5IHdh
aXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0
ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisK
KyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKICAgICBHQ0dMZW51bSBt
X2Vycm9yV2hlbkNvbnRleHRJc0xvc3QgPSBOT19FUlJPUjsKICAgICBJUEM6OlN0cmVhbUNsaWVu
dENvbm5lY3Rpb24gbV9zdHJlYW1Db25uZWN0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YjdlNDIyODM2MzViNzc2Mjk1OGFjZjFk
YjE4YjAwZDEzM2E0ODU5Li5hMTUzNDE0NjNmMDc5ZTMwM2Y3NjljZTVlZDFjNjRlY2Q1ZjNjNDYx
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxl
LmNvbT4KKworICAgICAgICBFeHRlbnNpb25zR0wgaXMgbm90IHVzZWZ1bCBjbGFzcywgaXQgc2hv
dWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNjQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSBtYW51YWxseSBpbXBsZW1lbnRlZCBmdW5jdGlvbnMuCisgICAgICAgICog
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCB0byBxdWVyeSBjYW1l
cmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApp
bmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi5jNjVkODc2YTRh
ZjIxMWNiZjczY2I3Mjk4NjQzMTA4MWI2MGY4OGY2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdl
YmdsCkBAIC00MSw3ICs0MSw2IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSB0eXBpbmcgaW1w
b3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWws
IEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIKIAogcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRo
KF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCi1leHRlbnNpb25zX2lu
cHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAi
Z3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgogCiBmdW5jdGlvbnNfaW5wdXRfZm5zID0gWwog
ICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUi
IC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCkBAIC05OCw3
ICs5Nyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50
ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9u
b3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVu
c2lvbikKLSAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisgICAgdm9pZCBNYXJr
Q29udGV4dENoYW5nZWQoKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJy
b3IpCiAgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMK
QEAgLTQyMCwxNCArNDE5LDEyIEBAIGNsYXNzIGNwcF9mdW5jKG9iamVjdCk6CiAgICAgbmFtZTog
c3RyCiAgICAgYXJnczogY3BwX2FyZ19saXN0CiAgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCi0g
ICAgaXNfZXh0ZW5zaW9uOiBib29sCiAgICAgb3ZlcmxvYWRfc3VmZml4OiBzdHIKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczog
Y3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0KToK
ICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0
dXJuX3R5cGUKICAgICAgICAgc2VsZi5hcmdzID0gYXJncwotICAgICAgICBzZWxmLmlzX2V4dGVu
c2lvbiA9IGlzX2V4dGVuc2lvbgogICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9ICIiCiAK
ICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTcxMSw3ICs3MDgsNiBAQCBjbGFzcyBjb250ZXh0
X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgogY2xhc3Mgd2Via2l0X2lw
Y19jcHBfaW1wbChvYmplY3QpOgogICAgIG5hbWU6IHN0cgogICAgIGFyZ3M6IGNwcF9hcmdfbGlz
dAotICAgIGlzX2V4dGVuc2lvbjogYm9vbAogICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0K
ICAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KICAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3Ry
XQpAQCAtNzIzLDcgKzcxOSw2IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToK
ICAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQogICAgICAgICBzZWxmLm92ZXJsb2Fk
X3N1ZmZpeCA9IGNwcF9mdW5jLm92ZXJsb2FkX3N1ZmZpeAogICAgICAgICBzZWxmLmFyZ3MgPSBj
cHBfYXJnX2xpc3QoW10pCi0gICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNf
ZXh0ZW5zaW9uCiAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxm
LmNhbGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCkBAIC03
MzgsMTIgKzczMywxMSBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBsKG9iamVjdCk6CiAKICAg
ICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgogICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWyAi
YXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsiIF0KLSAgICAgICAgZXh0ID0gImdldEV4
dGVuc2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKIAogICAgICAgICBpbl9l
eHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBycykKICAgICAgICAg
aXNfYXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKIAotICAgICAgICBjYWxsX2V4cHIg
PSBmIm1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIKKyAgICAgICAgY2Fs
bF9leHByID0gZiJtX2NvbnRleHQtPntzZWxmLm5hbWV9KHtpbl9leHByc30pIgogICAgICAgICBp
ZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoKICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10
cyArPSBbZiJ7Y2FsbF9leHByfTsiXQogICAgICAgICBlbHNlOgpAQCAtODc5LDggKzg3Myw4IEBA
IGRlZiBjcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgogICAg
IHJldHVybiBjcHBfYXJnX2xpc3QoW2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRl
eD1pKSBmb3IgaSwgZSBpbiBlbnVtZXJhdGUoYXJnc19zcGVjcyldKQogCiAKLWRlZiBjcmVhdGVf
Y3BwX2Z1bmMobmFtZTogc3RyLCByZXR1cm5fc3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0
cl0sIGlzX2V4dGVuc2lvbjogYm9vbCk6Ci0gICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwg
cmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2Fy
Z19saXN0KGFyZ3Nfc3BlY3MpLCBpc19leHRlbnNpb249aXNfZXh0ZW5zaW9uKQorZGVmIGNyZWF0
ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rb
c3RyXSk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2Nw
cF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3Mp
KQogCiAKIGRlZiByZWFkX2xpbmVzX3VudGlsKGxpbmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2gg
OiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5vbmUsIE5vbmVdOgpAQCAtODk2LDIwICs4OTAsNiBA
QCBkZWYgbWFpbigpOgogCiAgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRv
IHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgogCi0gICAgIyBGSVhNRTog
VW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRl
IHRoZSBpbXBsZW1lbnRhdGlvbgotICAgICMgd2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhl
ciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rpb24uCi0gICAgZXh0
ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9IHNldCgpCi0gICAgd2l0aCBvcGVuKGV4dGVu
c2lvbnNfaW5wdXRfZm4pIGFzIGY6Ci0gICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6
Ci0gICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4q
KVwpID0gMDsiLCBsaW5lKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICBmdW5j
ID0gY3JlYXRlX2NwcF9mdW5jKAotICAgICAgICAgICAgICAgICAgICBuYW1lPW1bMl0sCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCi0gICAgICAgICAgICAgICAgICAgIGFy
Z3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCi0gICAgICAgICAgICAgICAgICAg
IGlzX2V4dGVuc2lvbj1UcnVlLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBl
eHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0cihmdW5jKV0pCiAgICAgZnVuY3MgPSBbXQog
ICAgIHVuaW1wbGVtZW50ZWQgPSBbXQogICAgIGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5z
OgpAQCAtOTI2LDkgKzkwNiw3IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lPWZ1bmNfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1b
MV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3Nw
ZWNzKG1bM10pLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAog
ICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5z
aW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCiAgICAgICAgICAgICAgICAg
ICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmNzLmFwcGVuZChmdW5jKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgo=
</data>
<flag name="commit-queue"
          id="478499"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451690</attachid>
            <date>2022-02-11 07:10:01 -0800</date>
            <delta_ts>2022-02-14 01:19:28 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236490-20220211170958.patch</filename>
            <type>text/plain</type>
            <size>284486</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uNDA1NWY5MWUxZDUyMjliMThkN2Y4MjlhMjFkNDVj
NDEwNTIxOGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAyMi0wMi0xMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEV4dGVuc2lvbnNHTC4g
SXQgaXMgbm90IGEgdXNlZnVsIGNsYXNzLCBpdCBkb2VzIG5vdCBhYnN0cmFjdCBhbnl0aGluZy4K
KyAgICAgICAgSXQgaGFzIHNpbWlsYXIgZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1
YmNsYXNzLCBhbmQgbmVlZHMgYW5kIHVzZXMgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAg
ICAgICAgdW5kZXJuZWF0aC4KKyAgICAgICAgSXQgaXMgYSBwcm9ibGVtYXRpYyBjbGFzcyBhcyBp
dCBpcyBvYnRhaW5lZCB0aHJvdWdoIGEgdmlydHVhbCBmdW5jdGlvbiwgYnV0IHRoYXQKKyAgICAg
ICAgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZSBpcyBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MKKyAgICAgICAgaW5zdGFu
Y2UuCisgICAgICAgIEFsc28gdGhlIEV4dGVuc2lvbnNHTCB3aWxsIG5lY2Nlc3NhcmlseSBjYWxs
IGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5zdGFuY2UgYmVpbmcKKyAgICAg
ICAgY29uc3RydWN0ZWQuCisgICAgICAgIEN1cnJlbnQgZ2V0RXh0ZW5zaW9ucygpIHZpcnR1YWwg
ZnVuY3Rpb24gb3ZlcnJpZGUgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGdvCisgICAgICAgIHdoZXJl
IHRoZSBDKysgZGVmaW5lcyB0aGVtIGdvaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAg
IEN1cnJlbnQgY2FsbHMgYmFjayB0byB0aGUgR3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgaW5z
dGFuY2UgZHVyaW5nIGNvbnN0cnVjdGlvbiAqc2hvdWxkKgorICAgICAgICBhY2Nlc3Mgc3RhdGUg
dGhhdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBidXQgaXQgaXMgcXVpdGUgZXJyb3ItcHJvbmUg
YW5kIGhhcmQgdG8KKyAgICAgICAgYW5hbHl6ZS4KKworICAgICAgICBNb3ZlIEV4dGVuc2lvbnNH
TCBmdW5jdGlvbnMgdG8gR3JhcGhpY3NDb250ZXh0R0wuIE1ha2UgY2FsbC1zaXRlcyBjYWxsIHRo
ZSBjb250ZXh0IGluc3RlYWQgb2YgdGhlCisgICAgICAgIGV4dGVuc2lvbiBoZWxwZXIuIFJlbmFt
ZSB0aGUgZnVuY3Rpb25zIHdpdGggcGF0dGVybiAiaXNTdXBwb3J0ZWQiIC0+ICJpc0V4dGVuc2lv
blN1cHBvcnRlZCIuCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0RXh0ZW5z
aW9ucygpIHZpcnR1YWwgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICBGb3IgbGVnYWN5IGNvbnRl
eHRzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTIHBy
ZXNlcnZlIHRoZWlyCisgICAgICAgIEV4dGVuc2lvbkdMQ29tbW9uIHN1YmNsYXNzZXMuIEFjY2Vz
c2luZyBpdCBoYXBwZW5zIGZyb20gYSBub3JtYWwgZnVuY3Rpb24gZnJvbSBsZWdhY3kgY2FsbCBz
aXRlcworICAgICAgICB0aGF0IGtub3cgdGhhdCB0aGV5J3JlIGNhbGxpbmcgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuCisKKyAgICAgICAgRm9yIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUsIG1vdmUg
Y29udGV4dCBpbml0aWFsaXphdGlvbiBjb2RlIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUoKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjb25zdHJ1Y3Rvci4gVGhpcyB3YXkg
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGNhbGwgdmlydHVhbCBmdW5jdGlvbnMgYW5kIHRo
ZSBjYWxscworICAgICAgICBhcmUgZGVsaXZlcmVkIG5vcm1hbGx5IHRvIHRoZSBsYXN0IG92ZXJy
aWRlci4KKworICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBjYW4gbm93
IGJlIHJlbW92ZWQsIGFzIGl0IGlzIHVubmVlZGVkIGFueXdheSBhbmQgaXRzIGFkZGVkIHZpcnR1
YWwKKyAgICAgICAgZnVuY3Rpb25zIHdvdWxkIGNhdXNlIGluY29udmVuaWVudCBuYW1pbmcgZHVw
bGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRB
cnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1
ZmZlckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhURmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9h
dEJsZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OktIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJP
UmVuZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3Vw
cG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhh
bGZGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6
OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRl
clBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4Q29sb3JBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppc0V4dGVuc2lvbkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJv
dGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFnZSI+
IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTM1
Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZWJjMDFjOWZiNDA4YmQxNjZk
NTQ2OTBkZTU4NjgzZjlhNjUxZjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0w
Mi0xMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4
dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAg
ICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rpb25z
IHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBub3cg
YmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2Vk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKToKKyAgICAgICAgKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6
CisgICAgICAgIChkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRD
b250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIyLTAyLTEx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDU3YzRhYTliMWExOGNjZmE5YWIyODdlNGUwYjM3MGVlM2FkNTA5Yy4uMWQ2
ODAxNTBlYmY5YzExMTliYzk1ZTYxMTc3MGVlMzM1MzAyZDAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MDgsNyArMTkwOCw2IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICkKICAg
ICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDhhMDFlNTc4ZDhhMzUyN2U2ZmVlNDQyY2U5MDgxMWFm
NWJhZmFjMi4uNDI4OWIxM2FkZTgwM2YyZjJhOTQwOTVjMzg1OGNkZWMzNzM3NTFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xNDM1LDcgKzE0MzUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgKQEAgLTE1NTMsNyArMTU1Miw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMTU4MSw3ICsxNTc5LDYgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
SGVhZGVycy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggMjM5YTIyYmQxMDMwMjFkMTI3NTI2YTBmNDhjNzAxZDliNjc0MGUzNS4uNzNjZTJj
MjBiNjI5NmMxZjQ4ODlkNTllM2I4ZjdjYmNiYTVjNGYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0z
Myw2ICszMyw5IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCiAjaWYg
VVNFKE9QRU5HTF9FUykKICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xFUy5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjZWxzZQorI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTE9wZW5HTC5oIgogI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNl
bmRpZgpAQCAtMTc3LDcgKzE4MCw3IEBAIHZvaWQgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c3Rh
cnRGcmFtZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5CiAgICAgbV9v
cGFxdWVUZXh0dXJlID0gZGF0YS5vcGFxdWVUZXh0dXJlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykg
JiYgIVVTRShBTkdMRSkKLSAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxF
eHRlbnNpb25zR0xPcGVuR0xFUyY+KGdsLmdldEV4dGVuc2lvbnMoKSk7CisgICAgYXV0byYgZXh0
ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmPihnbCku
Z2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChtX2F0dHJpYnV0ZXMuYW50aWFsaWFzICYmIGV4dGVu
c2lvbnMuaXNJbWFnaW5hdGlvbigpKSB7CiAgICAgICAgIGV4dGVuc2lvbnMuZnJhbWVidWZmZXJU
ZXh0dXJlMkRNdWx0aXNhbXBsZUlNRyhHTDo6RlJBTUVCVUZGRVIsIEdMOjpDT0xPUl9BVFRBQ0hN
RU5UMCwgR0w6OlRFWFRVUkVfMkQsIG1fb3BhcXVlVGV4dHVyZSwgMCwgbV9zYW1wbGVDb3VudCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTI3MiwxMiArMjc1LDEyIEBAIGJvb2wgV2ViWFJPcGFxdWVG
cmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcigpCiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBs
YXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6
IEdMOjpERVBUSF9DT01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5D
SUxfSU5ERVg4OwogI2VsaWYgVVNFKE9QRU5HTF9FUykKLSAgICBhdXRvJiBleHRlbnNpb25zID0g
cmVpbnRlcnByZXRfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xFUyY+KGdsLmdldEV4dGVuc2lvbnMo
KSk7CisgICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wmPihnbCkuZ2V0RXh0ZW5zaW9ucygpOwogICAgIGJvb2wgcGxhdGZvcm1TdXBw
b3J0c1BhY2tlZERlcHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JTdGVuY2lsICYmIGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAgIGF1dG8gZGVwdGhG
b3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRf
U1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0
ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vsc2UKLSAgICBhdXRvJiBleHRlbnNpb25zID0gcmVp
bnRlcnByZXRfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mPihnbC5nZXRFeHRlbnNpb25z
KCkpOworICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3Vw
cG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25z
LnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRo
Rm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0
X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQg
PSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CkBAIC0yOTAsNyArMjkzLDcgQEAgYm9vbCBXZWJYUk9w
YXF1ZUZyYW1lYnVmZmVyOjpzZXR1cEZyYW1lYnVmZmVyKCkKICNpZiBVU0UoQU5HTEUpCiAgICAg
ICAgIGdsLmdldEludGVnZXJ2KEdMOjpNQVhfU0FNUExFUywgbWFrZUdDR0xTcGFuKCZtYXhTYW1w
bGVDb3VudCwgMSkpOwogI2Vsc2UKLSAgICAgICAgZ2wuZ2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dM
OjpNQVhfU0FNUExFUywgbWFrZUdDR0xTcGFuKCZtYXhTYW1wbGVDb3VudCwgMSkpOworICAgICAg
ICBnbC5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dM
U3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKICNlbmRpZgogICAgICAgICAvLyBDYXAgdGhlIG1h
eGl1bXVtIG11bHRpc2FtcGxlIGNvdW50IGF0IDQuIEFueSBtb3JlIHRoYW4gdGhpcyBpcyBsaWtl
bHkgb3ZlcmtpbGwgYW5kIHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlLgogICAgICAgICBtX3NhbXBs
ZUNvdW50ID0gc3RkOjptaW4oNCwgbWF4U2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAx
ZWRkNzE4MzhjZDI3ZDM3YzI5ZDc5ZjRhYjMzYThiZDc1ZTdhNThhLi44YzgwNWYyZjA3N2ZmZWNh
YjdjNTE1YTZhYzc3NDVmYjNlYzFjY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA3Myw3ICsyMDcz
LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEZvcm1hdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJh
bmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKLXBsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApp
bmRleCBmMWI3MzhlNTU2YWMzZDhiZDFlZDdhYWZhYjBjMjM4ZGRhOWQ3NDE5Li43YmQ1YTI0YjRh
NjFhYmEyMTBiZmI0NWFhOGNiNzMzMjMyMmY1YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
QEAgLTYxNSw2ICs2MTUsNSBAQCB0ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNh
dGlvbk92ZXJsYXkubW0KIC8vIHdpdGggZmlsZXMgdGhhdCB1c2UgdGhlIHN5c3RlbSBPcGVuR0wu
CiAKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcCBAbm8tdW5pZnkK
LXBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIEBuby11
bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBA
bm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlNjM3ZjNmZDYxMWVkMGExZjdiYTVjZWJiMDE2NWQ1NjQzYTNlZGE1Li5i
NDViZDBkOWZhMmQxYzU2ZDVkZjIwYjEyNmJhMmMzNTdhZjY1N2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTg3LDExICsy
MTg3LDggQEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRC
MDBCMTg2QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93
bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNEFCQ0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5oICovOyB9
OwogCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUEx
MEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBOTEyODBFOEJEMDA4
NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkU3MkY1
NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQzMjI5QzlGODQwMEYxRjYz
MiAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRFMjI5RENEMTAwMEIz
RTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLzsgfTsKIAkJNkU3MkY1NEYyMjlEQ0QxMzAwQjNFMTUx
IC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5
QU5HTEVTZXR0aW5nLmNwcCAqLzsgfTsKLQkJNkU3MkY1NTAyMjlEQ0QxNzAwQjNFMTUxIC8qIEV4
dGVuc2lvbnNHTEFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTI3RjI0NDIyOUM5RjhEMDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCAq
LzsgfTsKIAkJNkU3MkY1NTEyMjlEQ0QxQTAwQjNFMTUxIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGlu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4
NjMyMjlEQjk3MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5oICovOyB9OwogCQk2
RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAv
KiBSYXN0ZXJTaGFwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTZFOEFDREVEMjMzNDVDQkMwMDI0QUFGNSAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RThBQ0RFQjIzMzQ1Q0FGMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oICov
OyB9OwpAQCAtMjQxMiw3ICsyNDA5LDYgQEAKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcwMDNCMjc5
NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAyMyAvKiBD
VlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0I5MDQxNzAyNTUwMTE0MjAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Qjk1Q0ZFQjI3NTRGRjZFMDAwMDYw
Q0UgLyogR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5NUNGRTkyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNz
Q29udGV4dEdMU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3Qjk1Q0ZFRDI3NTRGRjdDMDAwMDYwQ0UgLyogR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5
NUNGRUMyNzU0RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkIzNEE0ODI1Mzc3
NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUyNTM3NzZDNjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA4NjksOCArMTA4NjUsNiBA
QAogCQk2RTI0MkIyOTIzMzU5M0Q3MDAyQ0FERDQgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMx
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyNDJCMkEyMzM1OTNEODAwMkNB
REQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUyN0YyNDMyMjlDOUY4NDAw
RjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEV4dGVuc2lvbnNHTEFOR0xFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNkUyN0YyNDQyMjlDOUY4RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnNHTEFOR0xFLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkUyOTA4NjMyMjlEQjk3MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlBTkdMRVNldHRpbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUzRkFEMzYxNDczM0Y0MDAwRTQyMzA2
IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDkwMiw3ICsxMDg5Niw2IEBACiAJCTZFNTM4OEUw
MjQ1OEFFMUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkU1Mzg4RTEyNDU4QUUxRDAwNzZBRTAzIC8qIFdlYkdMQ29sb3JCdWZmZXJGbG9h
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNkU1NzZCQzMyNEVCNTA5QzAwOTRENEFBIC8qIEpTSFRNTENhbnZhc0VsZW1l
bnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZF
NjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uc0dMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFN0NBMzBBMjVCNEQyOEEwMDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTV2ViR0xNdWx0aURyYXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkU3Q0EzMEIyNUI0RDMyODAwNEE5MTNFIC8qIEpTV2ViR0xNdWx0aURyYXcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTE11bHRpRHJhdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTUyNiw3ICsxMTUxOSw2IEBACiAJCTdCNzMx
MUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUQyNkYwQzEy
MzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVG
MjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5NUNGRTkyNzU0RkY2RTAw
MDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5n
ID0gNDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I5NUNGRUMyNzU0RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMQU5HTEUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBMTYyNTM0NUNC
MjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTU0Miw3ICsxMTUzNCw2IEBACiAJCTdCRERBMzFEMjc0RjlEQTUwMDM4NjU5RSAvKiBHcmFwaGlj
c0NvbnRleHRHTENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEz
NDkyNzVBMDEzMDAwMzg2NTlFIC8qIFByb2Nlc3NJZGVudGl0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcm9jZXNzSWRlbnRpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JEREEzNEIyNzVBMDEzMDAwMzg2NTlFIC8qIFByb2Nlc3NJZGVudGl0eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzSWRlbnRpdHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTgg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkZGNTlFRjI3NTc3MUU4MDA3NzNEMzkgLyogRGlzcGxheUNvbmZpZ3Vy
YXRpb25Nb25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBEaXNwbGF5
Q29uZmlndXJhdGlvbk1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JG
RjU5RjEyNzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5Q29uZmlndXJhdGlv
bk1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRDI0RkFE
MzYwMDA1QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXR0aW5ncy5jcHAuZXJiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQzOTUsOCArMjQzODYsNiBAQAogCQkJCTI3
RTNDODA2MjU3RjVFNkUwMEM5ODZBQiAvKiBBTkdMRUhlYWRlcnMuaCAqLywKIAkJCQk3QkNENDJE
ODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovLAogCQkJCTdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovLAotCQkJCTZFMjdGMjQzMjI5
QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgKi8sCi0JCQkJNkUyN0YyNDQy
MjlDOUY4RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmggKi8sCiAJCQkJNkUyN0YyNDIy
Mjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwICovLAogCQkJCTdC
OTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi8sCiAJ
CQkJNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAg
Ki8sCkBAIC0yODg3MCw3ICsyODg1OSw2IEBACiAJCQkJMEZCQjVGQzkyNjBFOUI0MzAwNTQ1NzJD
IC8qIERpc3BsYXlVcGRhdGUuY3BwICovLAogCQkJCTBGQkI1RkNCMjYwRTlCNDQwMDU0NTcyQyAv
KiBEaXNwbGF5VXBkYXRlLmggKi8sCiAJCQkJMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERy
YXdHbHlwaHNSZWNvcmRlci5oICovLAotCQkJCTZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBF
eHRlbnNpb25zR0wuaCAqLywKIAkJCQkyRTg4OENBOTI1RjZBNDExMDA1NzkxNEEgLyogRmxvYXRM
aW5lLmNwcCAqLywKIAkJCQkyRTg4OENBODI1RjZBNDExMDA1NzkxNEEgLyogRmxvYXRMaW5lLmgg
Ki8sCiAJCQkJQjI3NTM1M0EwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnQuY3BwICovLApA
QCAtMjkwNjUsOCArMjkwNTMsNiBAQAogCQkJCUNEMUY5QUZDMjZGRDM4Q0EwMDYxN0VCNiAvKiBQ
bGF0Zm9ybVZpZGVvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MuaCAqLywKIAkJCQlCQ0FCNDE3RjEz
RTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBE
OEFBRjMgLyogUmVnaW9uLmggKi8sCi0JCQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLywKLQkJCQk3QjkwNDE2RTI1NTAx
MTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLywKIAkJ
CQkwNzNBMTU1MTIxNzdBMzk4MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuY3BwICovLAog
CQkJCTA3M0ExNTUzMjE3N0EzOUEwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBsZS5oICovLAog
CQkJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8sCkBAIC0z
NDQ0MSw4ICszNDQyNyw2IEBACiAJCQkJMkQyOTM4NkIyMzVGNkI2OTAwQzdGM0IyIC8qIEV4Y2Vw
dGlvbkRldGFpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDE5NjMxMUQ2Q0FCNzYwMEZDN0U0
NyAvKiBFeGNlcHRpb25Pci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM3RkIzNDUxRjlFQTA2RDAw
RDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTZF
NjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovLAot
CQkJCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxl
U2hlZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyog
RVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzcyODY5NEYxNEY4ODgy
NTAwRjQ4NERDIC8qIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNjc2MSw3ICszNjc0NSw2IEBACiAJCQkJNTExN0YzMEUyNUU2MTAyMDAwMkE5RjFFIC8q
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICov
LAotCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVD
IC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQjIyRkNEN0M5
MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxl
LmggaW4gSGVhZGVycyAqLywKQEAgLTM4NjQ4LDcgKzM4NjMxLDYgQEAKIAkJCQkxQUJBNzZDQTEx
RDIwRTUwMDA0QzIwMUMgLyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDIyODMwMzIzQTg0NzA3MDAzNjRCN0UgLyogQ3Vyc29yTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNCRDU5NTkyMjgwRTkyNjAwMkIyMkFBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk2RTcyRjU0QzIyOURDRDBDMDBCM0UxNTEgLyogRXh0ZW5zaW9u
c0dMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFNkNCRkQxODdGMzk0OTAwRDQ2QkY1
IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTMwRjJGNjI0QUVB
NjBBMDBFMUQwQTAgLyogR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUxQTRCQjBBMTk1NEQ2MTYwMEZBNUMyRSAvKiBHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRB
cnJheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJh
eXMuY3BwCmluZGV4IDgyMjAzMzkxNWQwNGUzYjBjMjk2MmZiYjUyMzRlOTM0ZjkzYTcxMTcuLjg3
NTM3ZTJiYjkzZTRiNjk5OTc3MDBhZmZjMTg3ZjZjZjViYmVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKQEAgLTI4LDEw
ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkFOR0xFSW5zdGFuY2VkQXJy
YXlzLmgiCiAKLSNpZiBQTEFURk9STShHVEspIHx8IFVTRShBTkdMRSkgfHwgUExBVEZPUk0oV1BF
KQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgotI2VuZGlmCi0KICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICszOCw3IEBA
IEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
ICNpZiBVU0UoQU5HTEUpCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOwogI2VuZGlmCiB9CiAKQEAgLTUzLDEwICs0OSwxMCBA
QCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBBTkdMRUluc3RhbmNlZEFycmF5czo6Z2V0
TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEFOR0xFSW5zdGFuY2VkQXJyYXlzTmFtZTsKIH0KIAot
Ym9vbCBBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGNvbnRleHQpCitib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoR3Jh
cGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKSB8fCBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfaW5zdGFu
Y2VkX2FycmF5cyIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJ
bnN0YW5jZWRBcnJheXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFu
Y2VkQXJyYXlzLmgKaW5kZXggMzJlYjg5N2IxNmQ5MDlkMzk0YTEwYTc4NTFjMWUzMjY3NTRlYzkz
Ni4uNjljNDRkZDQ5MTNhZmUzZDVmMGViM2RmMzBhODE3YzM0YmZmMDg1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IGZp
bmFsOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIAog
ICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCk7CiAgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9h
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmNw
cAppbmRleCAwOWU1MGM0Y2JhZDNmNTk4YTMyMmQ5MDUxYzk4M2ZmYjBlN2IyNWU3Li43OTY1NjBi
ZDRjZTZhNTA5NjE2M2JlMTk0MDBiZWVlMjQ4MmYyZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmNwcApAQCAtMjgsNyArMjgsNiBA
QAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJFWFRDb2xvckJ1ZmZlckZsb2F0LmgiCiAK
LSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzcsMTAgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEVYVENvbG9yQnVmZmVyRmxvYXQpOwogRVhUQ29sb3JCdWZmZXJG
bG9hdDo6RVhUQ29sb3JCdWZmZXJGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29s
b3JfYnVmZmVyX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiX3MpOwogICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8yODMwCiAgICAg
Ly8gU3BlYyByZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9uIGltcGxpY2l0
bHkgaGVyZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2Js
ZW5kIl9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJGbG9hdDo6fkVYVENvbG9yQnVmZmVyRmxvYXQo
KSA9IGRlZmF1bHQ7CkBAIC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIEVYVENvbG9yQnVmZmVyRmxvYXQ6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBFWFRD
b2xvckJ1ZmZlckZsb2F0TmFtZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1ZmZlckZsb2F0OjpzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgRVhU
Q29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQog
ewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7CisgICAgcmV0dXJuIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiX3MpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKaW5kZXggZWIyOWZhMGU1NDkzYTI0ODExY2MxMDY4
NzM2M2ExZDg5Y2JkZmQ3Ni4uOTU0OGYwZjkzZjBlNDY3ZDZiOTJhYWVmZGM1OTUzZjQ4ZDUzODBk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJG
bG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxv
YXQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5h
bWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdy
YXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5j
cHAKaW5kZXggNzllMWNjMTlkMWViZjdlYzA3NDdlMzY1YjIwYmY0MWJjYzMzMjA0Zi4uMGVmZWQ4
M2FkNmE5MWYwNDQxYjIzZTQ3MTQyYWI5ODc3ODMzNDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcApAQCAtMjgs
NyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJFWFRDb2xvckJ1ZmZlckhh
bGZGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBA
QCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQpOwog
RVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0
KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVu
c3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCJfcyk7CisgICAgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRf
Y29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQogCiBFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dDo6fkVYVENvbG9yQnVmZmVySGFsZkZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNDgsMTAgKzQ3LDEw
IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXROYW1l
OwogfQogCi1ib29sIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoY29uc3QgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgRVhUQ29sb3JCdWZmZXJIYWxm
RmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1
cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMo
IkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpCi0gICAgICAgICYmIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfY29sb3JfYnVm
ZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaAppbmRleCAxMDc3OWVmNmMyYzljNDI2ZjNkNjUx
MTYxZThmNmQwZGRmMjNjZjc1Li42ZjRiYzQ4MWEzMDRmNjRkNDVkOTIyYjFiNzIzMTFmYzk4ZDlj
YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVm
ZmVySGFsZkZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmNwcAppbmRleCA4
ZWY2ODc5MzNhYWVjZjViOGQzM2NlMDIwNzg4MmMyYmRkNTc4OTYxLi5iZGQ4NWQwNzBkMDg3MTM5
NjNkYzE3YjE2NGEyZmJhZWU2MDcwMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRGbG9hdEJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRGbG9hdEJsZW5kLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkK
ICNpbmNsdWRlICJFWFRGbG9hdEJsZW5kLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zOCw3ICszNyw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRGbG9hdEJs
ZW5kKTsKIEVYVEZsb2F0QmxlbmQ6OkVYVEZsb2F0QmxlbmQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIEVY
VEZsb2F0QmxlbmQ6On5FWFRGbG9hdEJsZW5kKCkgPSBkZWZhdWx0OwpAQCAtNDgsOSArNDcsOSBA
QCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRGbG9hdEJsZW5kOjpnZXROYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gRVhURmxvYXRCbGVuZE5hbWU7CiB9CiAKLWJvb2wgRVhURmxvYXRC
bGVuZDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CisgICAgcmV0dXJuIGNvbnRl
eHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRGbG9hdEJsZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGbG9h
dEJsZW5kLmgKaW5kZXggMjJjMzAyYTMzMGE2MjIyMzVjZjY4NTI5M2NkOGMxNjg1NmE0NTdiZS4u
NDQ2YjlmZjM3MWRjMjkyYjhmZTYxODI5MzJkNThmNTY2NjA2NzkxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6
CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0
YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7Cisg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwCmluZGV4IDQ2M2E1ODczY2YzMDk2MzEy
ZDk3ZDYzMjdmNjFhZTgxZTQ3MWRkN2QuLjQ2Yzk2MGYxOTE2NGE3NWY2ODdjYTkyNmQ0ZjVmNjEx
ODMwMjVhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFC
TEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oIgotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
IApAQCAtMzgsMTIgKzM3LDEyIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRUZXh0
dXJlQ29tcHJlc3Npb25SR1RDKTsKIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAg
ICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fcmd0YyIpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkVEX1JHVEMxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQpOwotICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJf
RVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JF
RF9SR1RDMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CiB9CiAKIEVYVFRleHR1cmVDb21wcmVz
c2lvblJHVEM6On5FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKCkgPSBkZWZhdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZS5jcHAKaW5kZXggNTI3MTM4ZjMwZjc1ZmFkMDczOTg1OTRiMzMzYTdkZjljMTQyZDI4MC4uZTY2
YmI4MjQzYTczNzkyMWEwZDUzNTM3NWZlYzZjZGYzYjM5YWZmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuY3BwCkBA
IC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIktIUlBhcmFsbGVs
U2hhZGVyQ29tcGlsZS5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyAr
MzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoS0hSUGFyYWxsZWxTaGFkZXJDb21w
aWxlKTsKIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6S0hSUGFyYWxsZWxTaGFkZXJDb21waWxl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lv
bihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSJfcyk7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOwogfQogCiBLSFJQYXJhbGxlbFNo
YWRlckNvbXBpbGU6On5LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUoKSA9IGRlZmF1bHQ7CkBAIC00
OCw5ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEtIUlBhcmFsbGVsU2hh
ZGVyQ29tcGlsZTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEtIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZU5hbWU7CiB9CiAKLWJvb2wgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0
ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgS0hSUGFy
YWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQp
CiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLnN1cHBvcnRzKCJHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIHJl
dHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2Nv
bXBpbGUiX3MpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaAppbmRl
eCAxZmNmYzJiNThlZDlmYjRlNmQxMTc0MTg2MTQ3ZGYzYmRjMDI1M2E5Li44MzgwNGQ2ZGY5ZjI2
MzFkOWE3M2Q5NTA4ZWE3MTBmOWFjYjUxMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcAppbmRleCA3MWE4MWQwZDkzMDlkNjQ0ZWU0ODY4
YmRhYTIzZWQ4Nzg0YWY1MjFiLi42NTIyMGI3YWJjMDcxMzM1NjU2YmQ3ZmIzNTM2MmYzZTRhMjJm
NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJN
aXBtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1p
cG1hcC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAi
T0VTRkJPUmVuZGVyTWlwbWFwLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
OCw3ICszNyw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChPRVNGQk9SZW5kZXJNaXBt
YXApOwogT0VTRkJPUmVuZGVyTWlwbWFwOjpPRVNGQk9SZW5kZXJNaXBtYXAoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7
Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJl
RW5hYmxlZCgiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl9zKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19mYm9fcmVuZGVy
X21pcG1hcCJfcyk7CiB9CiAKIE9FU0ZCT1JlbmRlck1pcG1hcDo6fk9FU0ZCT1JlbmRlck1pcG1h
cCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lv
bk5hbWUgT0VTRkJPUmVuZGVyTWlwbWFwOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VT
RkJPUmVuZGVyTWlwbWFwTmFtZTsKIH0KIAotYm9vbCBPRVNGQk9SZW5kZXJNaXBtYXA6OnN1cHBv
cnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNG
Qk9SZW5kZXJNaXBtYXA6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsK
LSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX09FU19mYm9fcmVuZGVyX21pcG1hcCJfcyk7CisgICAgcmV0dXJuIGNvbnRl
eHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19mYm9fcmVuZGVyX21pcG1hcCJfcyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTRkJPUmVuZGVyTWlwbWFwLmgKaW5kZXggMzM5NmY5ZTFlMTE0ZTUxYWZjZGZkZDgzZjNlZDJl
YjY4MzNlNmRmMi4uMDJhNzI4Y2NlZTFmZWJlMDA2ZDJkOTZhNGQwODcwZDhhNGYyMDRjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmgKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0Nv
bnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKaW5kZXggZTkyYjJmZWZiZjA5NDY4
YmVjZGJkMWVmOGQ5ZGQyMTBkNWI4YzIwZi4uNWQxZTg5Njc3ZTYxMmMyOTdlNDYyOTExODQzNjcz
OGYzNTliOWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJl
RmxvYXQuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUg
Ik9FU1RleHR1cmVGbG9hdC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgs
MTIgKzM3LDEyIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChPRVNUZXh0dXJlRmxvYXQp
OwogT0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZl
cl9mbG9hdF9yZ2IiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1
ZmZlcl9mbG9hdF9yZ2IiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEi
X3MpOwogICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wvcHVsbC8y
ODMwCiAgICAgLy8gU3BlYyByZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVybmVkIG9u
IGltcGxpY2l0bHkgaGVyZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4
dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X2Zsb2F0X2JsZW5kIl9zKTsKIH0KIAogT0VTVGV4dHVyZUZsb2F0Ojp+T0VTVGV4dHVyZUZsb2F0
KCkgPSBkZWZhdWx0OwpAQCAtNTMsOSArNTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9u
TmFtZSBPRVNUZXh0dXJlRmxvYXQ6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBPRVNUZXh0
dXJlRmxvYXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVGbG9hdDo6c3VwcG9ydGVkKGNvbnN0
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIE9FU1RleHR1cmVGbG9h
dDo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5z
aW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKaW5kZXgg
OGE3Mjc0ZGRlY2E4ZjdkM2IyMzQ2NTZhYjNkZjVjN2Q4ZmZlZDA2Yy4uMTBlMTllYjcwYTdiYWQ5
M2VjNjk5YjA5YTZhNTc4OTI5ZjU3YzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0
ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUhhbGZGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFs
ZkZsb2F0LmNwcAppbmRleCA0MGI5ODk5NmY2N2FjMWU4YWI2NWNkNjY2ZDYzZDI3ZDM5ZjMxY2Vl
Li40ZWE4NjZkZWUyNGNjNWEwY2UxYTMwODFlZTk3MzljYjBlMGEzMDU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmNwcApAQCAtMjks
NyArMjksNiBAQAogCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUhhbGZGbG9hdC5oIgogCi0jaW5jbHVk
ZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksOSArMzgsOSBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoT0VTVGV4dHVyZUhhbGZGbG9hdCk7CiBPRVNUZXh0dXJlSGFsZkZsb2F0OjpPRVNU
ZXh0dXJlSGFsZkZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiAgICAgLy8gUmVuZGVy
YWJpbGl0eSBpcyBpbXBsaWNpdCB3aGVuIHRoaXMgZXh0ZW5zaW9uIGlzIGVuYWJsZWQuCi0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZm
ZXJfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIE9FU1RleHR1cmVIYWxmRmxvYXQ6On5PRVNUZXh0dXJl
SGFsZkZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSArNTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBPRVNUZXh0dXJlSGFsZkZsb2F0OjpnZXROYW1lKCkgY29uc3QKICAgICBy
ZXR1cm4gT0VTVGV4dHVyZUhhbGZGbG9hdE5hbWU7CiB9CiAKLWJvb2wgT0VTVGV4dHVyZUhhbGZG
bG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
Citib29sIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYg
Y29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpOworICAg
IHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCmluZGV4IGEzNTRmY2I3ZTM5YjUz
MGJmNDkzMzYxMjk2ODkxMzZlYTk2MjE2NjMuLmQ1MTk0NmFiYTQzOTA0ZjMwNmUxYTdkMDdjZjAw
YjlhZWJkZTUxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVIYWxmRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlSGFsZkZsb2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmpl
Y3QuY3BwCmluZGV4IDMwZDRiM2ZmMGNiZDI0ZjUzODA4NjMwYmNjNDMwNjdkOGNlOGYwNmQuLjRm
Mjg1YzVmNGMyZTAzMDFkYmY1NDc0MDNjZmYxMGNjODY5NGZmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKQEAgLTI4LDcg
KzI4LDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5o
IgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNWEz
ODc5NTdjMjYwNjYyMmRiNDZmNGJmNjA4OGJlMzMxMDYxYWJiYi4uNmQwYTg3Mjg1YTgwNjFjNTBl
NjY5MTZkNTIxNDRiZWM1ZjQ0NmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNp
bmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCi0jaW5jbHVkZSAi
RXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAt
MjQwLDEwICsyMzksMTAgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXpl
VmVydGV4QXJyYXlPYmplY3RzKCkKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlh
bGl6ZVNoYWRlckV4dGVuc2lvbnMoKQogewogICAgIC8vIEZJWE1FOiB0aGVzZSBhcmUgaW4gdGhl
IFdlYkdMIDIuMCBjb3JlIEFQSSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRp
dmVzIik7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX2RyYXdfYnVmZmVycyIpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKLSAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgIG1f
Y29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRp
dmVzIik7CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJh
d19idWZmZXJzIik7CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9F
WFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOwogfQogCiBib29sIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlQnVmZmVyVGFyZ2V0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NH
TGVudW0gdGFyZ2V0KQpAQCAtMjcxNSwyMCArMjcxNCwyMCBAQCBXZWJHTEV4dGVuc2lvbiogV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMi
LCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyJfcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0TGluZWFy
LCBtX29lc1RleHR1cmVGbG9hdExpbmVhciwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIsIGVu
YWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIl9zKSk7
CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNv
bnRleHQsICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVB
U1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRl
ZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKnRoaXMp
KTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRo
aXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
QywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykp
OwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1f
d2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0
YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0
Y19zcmdiIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMp
KTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2Fz
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsK
KyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
YXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsK
KyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMi
LCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7Cisg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRj
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIs
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCBtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9z
M3RjX3NyZ2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9j
b250ZXh0KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnUmVuZGVyZXJJbmZv
LCBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIiwg
dHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnU2hhZGVycywgbV93ZWJn
bERlYnVnU2hhZGVycywgIldFQkdMX2RlYnVnX3NoYWRlcnMiLCBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSk7
Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckZsb2F0LCBtX2V4dENvbG9y
QnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJGbG9h
dDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZm
ZXJfaGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMp
KTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVu
ZCwgIkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwot
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBh
cmFsbGVsU2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBh
cmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTERlYnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywgIldFQkdMX2Rl
YnVnX3NoYWRlcnMiLCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFu
c2xhdGVkX3NoYWRlcl9zb3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENv
bG9yQnVmZmVyRmxvYXQsIG1fZXh0Q29sb3JCdWZmZXJGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJf
ZmxvYXQiLCBFWFRDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29sb3JC
dWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVR
VUVTVEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwgIkVYVF9mbG9hdF9ibGVuZCIs
IEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21w
aWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21w
aWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2Vi
R0xNdWx0aURyYXcsIG1fd2ViZ2xNdWx0aURyYXcsICJXRUJHTF9tdWx0aV9kcmF3IiwgdHJ1ZSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0yNzQzLDQyICsyNzQyLDQxIEBAIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMoKQogICAgIGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBhdXRvJiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcyk7Ci0gICAgaWYgKGV4dGVuc2lvbnMuc3Vw
cG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpKQorICAgIGlmIChtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3Rj
Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YyJfcyk7Ci0gICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24o
IkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7Ci0gICAgaWYgKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyJfcyk7Ci0gICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiX3MpOwotICAg
IGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlm
IChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiX3MpOwotICAg
IGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBp
ZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiX3MpOwot
ICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsK
KyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9wdnJ0YyJfcyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9wdnJ0YyJfcyk7CiAgICAgfQotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIl9zKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiX3MpKQorICAgIGlmIChtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3Vy
Y2UiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIl9zKTsK
ICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIl9zKTsKLSAgICBp
ZiAoRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhUQ29s
b3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKLSAgICBpZiAoRVhUQ29sb3JCdWZmZXJI
YWxmRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9j
b2xvcl9idWZmZXJfaGFsZl9mbG9hdCJfcyk7Ci0gICAgaWYgKEVYVEZsb2F0QmxlbmQ6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKEVYVEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2Zsb2F0X2JsZW5kIl9zKTsKLSAgICBpZiAo
S0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChLSFJQ
YXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKLSAgICBpZiAoV2Vi
R0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMTXVsdGlEcmF3Ojpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX211bHRp
X2RyYXciX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3BwCmluZGV4IGE4MWE0OWMyY2E3
NjkzODA1ODYyMzRjMWYyMDllNDhlYTJjNmRjMGYuLjZjMGE5YmU1NjFkNzllNzBkOWYzNWQ1OGE5
NzA2YzY1NTY1MGQ4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29sb3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbmNsdWRlICJXZWJHTENvbG9yQnVmZmVyRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4
dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV2ViR0xDb2xvckJ1ZmZlckZsb2F0KTsKIFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2Vi
R0xDb2xvckJ1ZmZlckZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAg
ICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9y
X2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9y
Z2JhIl9zKTsKICAgICAvLyBPcHRpbWlzdGljYWxseSBlbmFibGUgUkdCIGZsb2F0aW5nLXBvaW50
IHJlbmRlciB0YXJnZXRzIGFsc28sIGlmIHBvc3NpYmxlLgotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2Nv
bG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0
X3JnYiJfcyk7CiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9XZWJHTC9w
dWxsLzI4MzAKICAgICAvLyBTcGVjIHJlcXVpcmVzIEVYVF9mbG9hdF9ibGVuZCB0byBiZSB0dXJu
ZWQgb24gaW1wbGljaXRseSBoZXJlLgotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6On5XZWJH
TENvbG9yQnVmZmVyRmxvYXQoKSA9IGRlZmF1bHQ7CkBAIC01MywxMCArNTIsMTAgQEAgV2ViR0xF
eHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpnZXROYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gV2ViR0xDb2xvckJ1ZmZlckZsb2F0TmFtZTsKIH0KIAotYm9vbCBX
ZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZChH
cmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zs
b2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3Mp
OworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQ0hST01J
VU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVm
ZmVyRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJG
bG9hdC5oCmluZGV4IDBkMmQwN2MyNTU5OWUwNGNjZWNhMDY2YTQ1OTY1MDVkMTAyZTE4NjQuLjk0
Y2RlZDZjZDYzNjdjMThkNjAwMmE2ZWFlYjIxNDAzMTMyMzllYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5oCkBAIC0zOSw3ICsz
OSw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcAppbmRleCA2
ZWFjYTFmMmEwMjUxNzZkYTQ1M2I1MDAxMjhhMzZmMTEzNmI4MTVkLi40ZmYwMjJlOWVkNTEyYTky
ZWRhMzEwMWNmMWMyNmMyZWU1YWY4Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBA
IC0zOSw0MSArMzgsNDEgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDKTsKIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAg
ICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQotICAgICwgbV9pc0hEUlN1cHBvcnRlZChjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiX3MpKQotICAgICwgbV9pc0xEUlN1cHBvcnRl
ZChjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygi
R0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiX3MpKQorICAgICwgbV9pc0hEUlN1
cHBvcnRlZChjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcykpCisgICAgLCBtX2lzTERSU3Vw
cG9ydGVkKGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKSkKIHsKLSAgICBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9LSFJf
dGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcyk7Ci0gICAgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19sZHIiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIiX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiX3MpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzR4NF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSKTsKLSAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfNXg1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIpOwotICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ182eDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUik7Ci0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzh4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfMTB4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUik7Ci0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsKLSAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181
eDRfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSKTsKKyAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ182eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSKTsKKyAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hS
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIp
OworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfMTJ4MTJfS0hSKTsKICAgICAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184
eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSKTsKLSAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ184eDhfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tI
Uik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDhfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTJfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9L
SFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUik7CisgICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzZ4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUik7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzh4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4
X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUik7CisgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9L
SFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBU1RDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMoKSA9IGRlZmF1bHQ7CkBAIC05
NSwxMCArOTQsMTAgQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6
OmdldFN1cHBvcnRlZFByb2ZpbGVzKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1
cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90
ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKQotICAgICAgICB8fCBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19sZHIiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcykKKyAgICAgICAg
fHwgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25f
YXN0Y19sZHIiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaApp
bmRleCAzMGVmZTNkODFjMWI5Yjk0NjMzOTczMWQzNzhkMmNjMTdhMzE1OWYwLi5mYTBlNWI5OWUz
ZTFmNDZjYjg1NTQwMjcyNjJlMDY1YmYxOGYxMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZFByb2ZpbGVzKCk7CiAKLSAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwor
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogcHJpdmF0ZToK
ICAgICBib29sIG1faXNIRFJTdXBwb3J0ZWQgOiAxOwogICAgIGJvb2wgbV9pc0xEUlN1cHBvcnRl
ZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEMuY3BwCmluZGV4IGM5ZTdiZTMwYzYzMTA1MDMwM2RmYmU2NmExMzNm
ZmQ0MjQ2ZWMyMjkuLmJjM2ViZTJkNWU3NTNiMTg5Y2E1NzJhNTRhOTFkNjJmOTE5ZGEyYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwx
MSArMzgsMTEgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xF
eHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdl
dEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVy
ZSIpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0Jf
QU1EKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQpOwotICAgIGNvbnRleHQu
YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19S
R0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQl9BTUQpOwor
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EKTsKKyAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FU
Q19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQygpID0gZGVmYXVsdDsKQEAgLTUzLDkg
KzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOworICAgIHJldHVybiBjb250
ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgKaW5kZXggZTBiZDI2NjEwOTQ0
MGZjYjMwN2M5M2IzNWM1NDMwYjFkZDk0ZDFmYS4uMTA1NjhhOWRkOTRjM2JlMjc3OGMzMjQ3ODlj
NGY4Zjc1NDRhYTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQygpOwogCi0g
ICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIAogICAgIEV4dGVu
c2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKaW5k
ZXggNGZlYWE1ZGQ4NzkxMjM1OTMxZjk4NTlmOTY3MGM0NjhhNWEzYmZhMy4uOTE1ZGIyYWUzZTQz
ZmRiNzk2ZjA2NTEwZDQzNzA3OTY2YjlmMzQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKQEAgLTI4LDcg
KzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKQEAgLTM5LDE4ICszOCwxOCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQyk7CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAg
ICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKTsKIAot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1IxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDKTsKLSAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRzExX0VB
Qyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzIpOwotICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1NSR0I4X0VUQzIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKLSAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUjExX0VB
Qyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRzExX0VBQyk7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0VUQzIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hf
QUxQSEExX0VUQzIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9FVEMyX0VBQyk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6On5XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDKCkgPSBkZWZhdWx0OwpAQCAtNjAsOSArNTksOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpnZXROYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQ05hbWU7CiB9CiAKLWJv
b2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBv
cnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2Nv
bXByZXNzZWRfdGV4dHVyZV9ldGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVu
c2lvbigiR0xfQU5HTEVfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDLmgKaW5kZXggNzQ2Nzc4Y2MyZGUwMjM5YjllZTJjNzUzZGIw
ZjY5MmUwNGQ4OTdkNC4uYzM4ODI5MTFhYjU5NmQ5ZjIxMDZhODE4MWU5ZWYyMGMyOGQwODE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAg
dmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQygpOwogCi0gICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcAppbmRleCBkOWE3Y2ZhYjY5
ZTc2ZWFlMzE3ZWMwYmNmNTY1NDk5NmNmMjQxNWVhLi5hZDFiZjJmYzk4MjQ4YmYxNzcwYTNiNjE5
MGIxNzA5MmY2MDgwOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAj
aWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgi
CiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzks
OSArMzgsOSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzEpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJH
TEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdC
OF90ZXh0dXJlIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOwogCi0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkVUQzFf
UkdCOF9PRVMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVMpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDMTo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKCkgPSBkZWZhdWx0OwpAQCAtNTEsOSAr
NTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDMTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxTmFtZTsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9y
dGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7
Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIHJl
dHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JH
QjhfdGV4dHVyZSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaApp
bmRleCAwNmZlMjdhYWIxNzgzZGJjMWIzYjAxZTFlZjQ5ODA5YmQzY2RiMjNjLi4wNDQ5ZjU3MDQ0
NjRjMjU2YmIzODNkNzc0YWZiYzllMzZmMTc5M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMx
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDMSgpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250
ZXh0R0wmKTsKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUFZSVEMuY3BwCmluZGV4IDFhMjBjMDdkMjczM2MxODBlNDVhZGZhNDNkYWY4
ZTg1MzZiNDQ1YmEuLjVhODQ5OWU5ZTRjZmNiOTE4OWFjZjRmOGJmNzcwYzhlOTU0YjQ0ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KIApAQCAtNDAsMTIgKzM5LDEyIEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMpOwogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2Nv
bXByZXNzaW9uX3B2cnRjIik7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7Ci0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCX1BWUlRDXzJCUFBWMV9JTUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyk7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180
QlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBW
MV9JTUcpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6On5XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMoKSA9IGRlZmF1bHQ7CkBAIC01NSw5ICs1NCw5IEBAIFdlYkdMRXh0ZW5z
aW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6Z2V0TmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQ05hbWU7CiB9CiAK
LWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9J
TUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oCmluZGV4IGE4NjY5ZjBlYjhkMDJm
MDg5ODAwY2YyYzI2NWI4MWM3YTVmM2NhNWQuLjMzNzJjMjlhYjI0ZTVjODkwZmEzMzdlYjBmOTQ5
ZWVmOWVmNWMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQygp
OwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
KTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
LmNwcAppbmRleCAwN2JhNGZhNWJlMTI1N2MzYzgxMjAzNzk4YzFmOTVmYTc3NDZhOWFmLi5mYTcw
ODExZTc1MzcwZTcyOGRlNDdjZGIxMGE5MTg2YTNhNTAyMDljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3Bw
CkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAg
LTQwLDE1ICszOSwxNSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICBleHRlbnNpb25z
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsKLSAgICBl
eHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0
MyIpOwotICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21w
cmVzc2lvbl9keHQ1Iik7CisgICAgYXV0byogZ2NnbCA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQxIik7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIik7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CiAKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUM19FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQ1X0VYVCk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjp+V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMoKSA9IGRlZmF1bHQ7CkBAIC01OCwxNiArNTcsMTUgQEAgV2Vi
R0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Omdl
dE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWU7
CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIGF1dG8m
IGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KTsKICNpZiBVU0UoQU5HTEUpCi0gICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQotICAgICAgICAmJiBleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQotICAgICAgICAmJiBleHRl
bnNpb25zLnN1cHBvcnRzKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSIpCisgICAgICAgICYmIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FO
R0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpCisgICAgICAgICYmIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogI2Vsc2UK
LSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fczN0YyIpCi0gICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCisgICAgICAgIHx8IGNvbnRleHQu
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuaAppbmRleCBhMzQ3M2Q4ZWVmYmQyMjJmMWIyNmNiMTI5ZDRk
NDQ3MmNjNDExNTA5Li4xZGJmNDVhNGMwZTI0M2IzYzYwMDAxNGY1NWY2ZjBkOGY1NDgwMzQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAg
ICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQygpOwogCi0gICAgc3RhdGljIGJv
b2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCmluZGV4
IDUwZDBiZDkwN2U4ZmRlZThmZDQxZDY1ZDIxYjhkMDBhMmZhZmY1NzcuLmY2NWY0MmFlMjJhYzcz
MTJlMTI4NGRmMWNjMjFmNGU2NjAxZjY2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcApA
QCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2lu
Y2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgogCkBAIC0zOSwxMyArMzgsMTEgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQik7CiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0I6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQihXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkK
IHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiKTsKLQotICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VY
VCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhB
X1MzVENfRFhUM19FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCk7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNU
Q19EWFQxX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQ
SEFfUzNUQ19EWFQ1X0VYVCk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQigpID0gZGVmYXVsdDsKQEAgLTU1LDEwICs1
Miw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQjo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDc1JHQk5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENz
UkdCOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiKTsKKyAgICByZXR1cm4g
Y29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
Y19zcmdiIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
LmgKaW5kZXggYzc5M2I5MTZkYjBlNjZjZjNlOWM2NzcwZjU2NjA3ZjMxOGZmNzQ2Yi4uNTlhNjYz
ZjE0ZDFmYjRiYzZjODU4Njc1ZjU1ZjQ4ZDdhN2VmZWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVh
bCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCmluZGV4IDZiMDQ5NTRhNGE1MjljZTg4MmYyYTY0YmIzZDg2
N2ZhODRjMzhjZjAuLmE2OWRhMjkwMzg0MTYxNjA4NzlkNzhiOGJmY2FlMDdkMGQ0NTc1YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAK
QEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCiAKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgiCiAjaW5jbHVkZSAiV2ViR0xTaGFkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgpAQCAtNDEsNyArNDAsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
V2ViR0xEZWJ1Z1NoYWRlcnMpOwogV2ViR0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJz
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lv
bihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIp
OworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIik7CiB9CiAKIFdlYkdMRGVidWdT
aGFkZXJzOjp+V2ViR0xEZWJ1Z1NoYWRlcnMoKSA9IGRlZmF1bHQ7CkBAIC01Nyw3ICs1Niw3IEBA
IFN0cmluZyBXZWJHTERlYnVnU2hhZGVyczo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZShXZWJH
TFNoYWRlciYgc2hhZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPnZhbGlkYXRlV2ViR0xPYmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCAm
c2hhZGVyKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fY29u
dGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX2NvbnRleHQt
PmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFk
ZXIub2JqZWN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggYTY5MTUzMjNh
ODQ5NDRlNTliYzE3MmQzZjViOTQzMzcyNjgxNDM3Ni4uOTE1NjNiY2FlMmYxMTg5MTI0Y2Y1Yzhm
MzZmZjMyYTkzZjU1ODBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xE
ZXB0aFRleHR1cmUuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDggKzM4
LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVwdGhUZXh0dXJlKTsKIFdl
YkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9PRVNfZGVwdGhfdGV4dHVyZSIpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7Cisg
ICAgYXV0byogZ2NnbCA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKKyAgICBnY2dsLT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpOworICAgIGdjZ2wt
PmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CiB9CiAKIFdl
YkdMRGVwdGhUZXh0dXJlOjp+V2ViR0xEZXB0aFRleHR1cmUoKSA9IGRlZmF1bHQ7CkBAIC01Miw5
ICs1Miw4IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRGVwdGhUZXh0dXJl
OjpnZXROYW1lKCkgY29uc3QKIAogYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdy
YXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9u
cyA9IGNvbnRleHQuZ2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNF
eHRlbnNpb24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
cmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZm
ZXJzLmNwcAppbmRleCAwZGMxN2VhOWJjMGNkYzc0ZDFlNjFjMWYwMjUzYzhlY2ViMzY4OTUzLi4w
NjcwYTQ3NjQyYmZiZmVjYmRlZjU2Mzc4YTJiZWI1YjE4Yzk1Y2JjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApAQCAtMjgsNyArMjgsNiBA
QAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJXZWJHTERyYXdCdWZmZXJzLmgiCiAKLSNp
bmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszNyw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChXZWJHTERyYXdCdWZmZXJzKTsKIFdlYkdMRHJhd0J1ZmZlcnM6OldlYkdM
RHJhd0J1ZmZlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwor
ICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX2RyYXdfYnVmZmVycyIpOwogfQogCiBXZWJHTERyYXdCdWZmZXJzOjp+V2ViR0xEcmF3
QnVmZmVycygpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4
dGVuc2lvbk5hbWUgV2ViR0xEcmF3QnVmZmVyczo6Z2V0TmFtZSgpIGNvbnN0CiBib29sIFdlYkdM
RHJhd0J1ZmZlcnM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogewogI2lmIFVTRShBTkdMRSkKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAg
ICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfRVhUX2RyYXdfYnVmZmVycyIpOwogI2Vsc2UKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiKQorICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9FWFRfZHJhd19idWZmZXJzIikKICAgICAgICAgJiYgc2F0aXNmaWVzV2ViR0xS
ZXF1aXJlbWVudHMoY29udGV4dCk7CiAjZW5kaWYKIH0KQEAgLTc1LDcgKzc0LDcgQEAgdm9pZCBX
ZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKGNvbnN0IFZlY3RvcjxHQ0dMZW51bT4m
IGJ1ZmZlcnMpCiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFja2J1ZmZlciBp
cyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVkIHRvIGNoYW5n
ZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgogICAgICAgICBHQ0dMZW51bSB2YWx1ZVsxXSB7
IGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0sgPyBHcmFwaGljc0NvbnRleHRHTDo6
Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSB9OwotICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVy
c0VYVCh2YWx1ZSk7CisgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJh
d0J1ZmZlcnNFWFQodmFsdWUpOwogICAgICAgICBtX2NvbnRleHQtPnNldEJhY2tEcmF3QnVmZmVy
KGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuID4gbV9jb250ZXh0LT5nZXRN
YXhEcmF3QnVmZmVycygpKSB7CkBAIC04Myw3ICs4Miw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVy
czo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAoR0NHTHNpemVpIGkgPSAw
OyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoYnVmc1tpXSAhPSBHcmFwaGljc0NvbnRl
eHRHTDo6Tk9ORSAmJiBidWZzW2ldICE9IEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDBf
RVhUICsgaSkgeworICAgICAgICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6
Ok5PTkUgJiYgYnVmc1tpXSAhPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDBf
RVhUICsgaSkgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnNXRUJHTCIs
ICJDT0xPUl9BVFRBQ0hNRU5UaV9FWFQgb3IgTk9ORSIpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KQEAgLTk4LDggKzk3LDggQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJz
OjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3
ZWIKICAgICBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCA9IHdlYmdsQ29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpOwogCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgd2UgbWFrZSBzdXJl
IEdMX0VYVF9kcmF3X2J1ZmZlcnMgaXMgc3VwcG9ydGVkLgotICAgIEdDR0xpbnQgbWF4RHJhd0J1
ZmZlcnMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0RSQVdfQlVGRkVS
U19FWFQpOwotICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50cyA9IGNvbnRleHQtPmdldElu
dGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKKyAgICBHQ0dM
aW50IG1heERyYXdCdWZmZXJzID0gY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRH
TDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOworICAgIEdDR0xpbnQgbWF4Q29sb3JBdHRhY2htZW50
cyA9IGNvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRB
Q0hNRU5UU19FWFQpOwogICAgIGlmIChtYXhEcmF3QnVmZmVycyA8IDQgfHwgbWF4Q29sb3JBdHRh
Y2htZW50cyA8IDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA3LDEwICsxMDYsMTAg
QEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAgICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIo
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBmYm8pOwogCiAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciBidWZmZXJbNF0gPSB7IDAsIDAsIDAsIDAgfTsgLy8gdGV4dHVyZXMgYXJlIHJlcXVp
cmVkIHRvIGJlIGluaXRpYWxpemVkIGZvciBvdGhlciBwb3J0cy4KLSAgICBib29sIHN1cHBvcnRz
RGVwdGggPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90
ZXh0dXJlIikKLSAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9BUkJfZGVwdGhfdGV4dHVyZSIpOwotICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAo
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0
ZW5jaWwiKQotICAgICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGggPSBj
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQorICAgICAg
ICB8fCBjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
KyAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5z
aW9uKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKQorICAgICAgICB8fCBjb250ZXh0LT5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOwogICAgIFBs
YXRmb3JtR0xPYmplY3QgZGVwdGhTdGVuY2lsID0gMDsKICAgICBpZiAoc3VwcG9ydHNEZXB0aFN0
ZW5jaWwpIHsKICAgICAgICAgZGVwdGhTdGVuY2lsID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApp
bmRleCA1MGJhY2Y1NjRmY2FmNjY2Zjg1N2JkNDkxNTYyNzk0MmNmYzUyMDczLi40OWZiMWRkZGY1
OGE4ZWRmYzAxYjQ4ZGE1ZGZmNDk3NzFmNzZlZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYg
RU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2Vi
R0xDb250ZXh0R3JvdXAuaCIKICNpbmNsdWRlICJXZWJHTERyYXdCdWZmZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgpAQCAtMjc5LDIxICsyNzgsMjEgQEAgc3Rh
dGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUoR0NHTGVudW0gYXR0YWNo
bWVudCkKIHsKICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1Jf
QVRUQUNITUVOVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5U
Ml9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQzX0VYVDoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDRfRVhUOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTE9SX0FUVEFDSE1FTlQ2X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRU
QUNITUVOVDdfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UOF9F
WFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ5X0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDExX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09MT1JfQVRUQUNITUVOVDEyX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRU
QUNITUVOVDEzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDE0
X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDE1X0VYVDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMV9FWFQ6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UNF9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09MT1JfQVRUQUNITUVOVDVfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTE9SX0FUVEFDSE1FTlQ2X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xP
Ul9BVFRBQ0hNRU5UN19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRU
QUNITUVOVDhfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQ5X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTBf
RVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMV9FWFQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEyX0VYVDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTNfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDE1X0VYVDoKICAgICAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOwogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkRFUFRIX0FUVEFDSE1FTlQ6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKQEAgLTM2Myw4ICszNjIsOCBAQCBzdGF0aWMgdW5zaWdu
ZWQgZ2V0Q2xlYXJCaXRzQnlGb3JtYXQoR0NHTGVudW0gZm9ybWF0KQogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlJHQkExNkk6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTMy
SToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBMzJVSToKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6U1JHQl9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhU
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQ7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQ
VEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9O
RU5UMjQ6CkBAIC02MzMsNyArNjMyLDcgQEAgR0NHTGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y2hl
Y2tTdGF0dXMoY29uc3QgY2hhcioqIHJlYXNvbikgY29uc3QKICAgICAgICAgR0NHTGVudW0gYXR0
YWNobWVudEZvcm1hdCA9IGF0dGFjaG1lbnQtPmdldEZvcm1hdCgpOwogCiAgICAgICAgIC8vIEF0
dGFjaGluZyBhbiBTUkdCX0VYVCBmb3JtYXQgYXR0YWNobWVudCB0byBhIGZyYW1lYnVmZmVyIGlz
IGludmFsaWQuCi0gICAgICAgIGlmIChhdHRhY2htZW50Rm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6
U1JHQl9FWFQpCisgICAgICAgIGlmIChhdHRhY2htZW50Rm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpTUkdCX0VYVCkKICAgICAgICAgICAgIGF0dGFjaG1lbnRGb3JtYXQgPSAwOwogCiAgICAg
ICAgIGlmICghYXR0YWNobWVudEZvcm1hdCkgewpAQCAtODMzLDE4ICs4MzIsMTggQEAgdm9pZCBX
ZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KGJvb2wgZm9yY2UpCiAgICAg
ICAgICAgICBpZiAoY29udGV4dCgpLT5pc1dlYkdMMigpKQogICAgICAgICAgICAgICAgIGNvbnRl
eHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+ZHJhd0J1ZmZlcnMobV9maWx0ZXJlZERyYXdCdWZm
ZXJzKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChtX2ZpbHRlcmVk
RHJhd0J1ZmZlcnMpOworICAgICAgICAgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0
R0woKS0+ZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJlZERyYXdCdWZmZXJzKTsKICAgICAgICAgfQog
ICAgIH0KIH0KIAogR0NHTGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6Z2V0RHJhd0J1ZmZlcihHQ0dM
ZW51bSBkcmF3QnVmZmVyKQogewotICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oZHJh
d0J1ZmZlciAtIEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVCk7CisgICAgaW50IGluZGV4
ID0gc3RhdGljX2Nhc3Q8aW50PihkcmF3QnVmZmVyIC0gR3JhcGhpY3NDb250ZXh0R0w6OkRSQVdf
QlVGRkVSMF9FWFQpOwogICAgIEFTU0VSVChpbmRleCA+PSAwKTsKICAgICBpZiAoaW5kZXggPCBz
dGF0aWNfY2FzdDxpbnQ+KG1fZHJhd0J1ZmZlcnMuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG1f
ZHJhd0J1ZmZlcnNbaW5kZXhdOwotICAgIGlmIChkcmF3QnVmZmVyID09IEV4dGVuc2lvbnNHTDo6
RFJBV19CVUZGRVIwX0VYVCkKKyAgICBpZiAoZHJhd0J1ZmZlciA9PSBHcmFwaGljc0NvbnRleHRH
TDo6RFJBV19CVUZGRVIwX0VYVCkKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpD
T0xPUl9BVFRBQ0hNRU5UMDsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKaW5kZXgg
NjRiMTVkNWZmODYxM2NmZDc4NGM3ZTMxZDAyMmQ1M2JkNjEzY2VmZS4uZjFjYzU2YzlkZmIxODg0
YjhiOGRlYWEyZWVmZTU4MjdmOTJmZWU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMTXVsdGlEcmF3LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJH
TCkKICNpbmNsdWRlICJXZWJHTE11bHRpRHJhdy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDMsOCArNDIsOCBAQCBzdGF0aWMgR0NHTFNwYW48Y29uc3QgaW50PiBtYWtlU3Bh
bldpdGhPZmZzZXQoV2ViR0xNdWx0aURyYXc6OkludDMyTGlzdCYgbGlzdCwgRwogV2ViR0xNdWx0
aURyYXc6OldlYkdMTXVsdGlEcmF3KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX211bHRp
X2RyYXciX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOworICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5H
TEVfbXVsdGlfZHJhdyJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1
cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0KIAog
V2ViR0xNdWx0aURyYXc6On5XZWJHTE11bHRpRHJhdygpID0gZGVmYXVsdDsKQEAgLTU0LDEwICs1
MywxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTE11bHRpRHJhdzo6Z2V0
TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMTXVsdGlEcmF3TmFtZTsKIH0KIAotYm9vbCBX
ZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCitib29sIFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKQotICAgICAg
ICAmJiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CisgICAgcmV0dXJuIGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX211bHRpX2RyYXciX3MpCisgICAgICAgICYmIGNvbnRl
eHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogfQog
CiB2b2lkIFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdBcnJheXNXRUJHTChHQ0dMZW51bSBtb2Rl
LCBJbnQzMkxpc3QgZmlyc3RzTGlzdCwgR0NHTHVpbnQgZmlyc3RzT2Zmc2V0LCBJbnQzMkxpc3Qg
Y291bnRzTGlzdCwgR0NHTHVpbnQgY291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKaW5kZXggNjU5Mjlm
NTFjYWI4YmY4OTI3YjdjOTBiZTk2YzE4ZTQ4MzE4MWQ3Ni4uNTBkNmRiODFhMmQ5NzQzODgwMGI0
ZTc5ZGEzMTJhMjAyMjI1MGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xNdWx0aURyYXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TE11bHRpRHJhdy5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5h
bWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIAogICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzV0VC
R0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3QsIEdDR0x1aW50IGZpcnN0c09m
ZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNvdW50c09mZnNldCwgR0NHTHNp
emVpIGRyYXdjb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGZhNTdiYjU0MDIzZTNmZjk5NjM0YjNhOTk5
MThlMDkzY2FhMmQ0YmIuLmM5NjBjMjYwZDA1N2EzZTM5ZDk5YzgxZDUzYmNlNDBiMjMyYzA0ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkVYVFRleHR1cmVDb21wcmVz
c2lvblJHVEMuaCIKICNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCIKICNp
bmNsdWRlICJFWFRzUkdCLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAi
SFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtMTUzLDEwICsxNTIsMTAgQEAgV2ViR0xFeHRl
bnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZyYWdEZXB0aCwgbV9leHRGcmFnRGVw
dGgsICJFWFRfZnJhZ19kZXB0aCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX2Zy
YWdfZGVwdGgiX3MpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhU
X3NoYWRlcl90ZXh0dXJlX2xvZCIpKSB7CiAgICAgICAgIGlmICghbV9leHRTaGFkZXJUZXh0dXJl
TE9EKSB7Ci0gICAgICAgICAgICBpZiAoIShtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpKSkKKyAgICAg
ICAgICAgIGlmICghKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9zaGFkZXJf
dGV4dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9z
aGFkZXJfdGV4dHVyZV9sb2QiX3MpKSkKICAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1
cmVMT0QgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0
dXJlX2xvZCJfcyk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAgICAgICAgICAgICBt
X2V4dFNoYWRlclRleHR1cmVMT0QgPSBhZG9wdFJlZihuZXcgRVhUU2hhZGVyVGV4dHVyZUxPRCgq
dGhpcykpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5h
YmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KQEAgLTE2NSwzMSArMTY0
LDMxIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfQogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhU
VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywg
IkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSk7CiAgICAgRU5BQkxFX0lG
X1JFUVVFU1RFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVDb21wcmVz
c2lvblJHVEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7Ci0gICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUsIG1fa2hyUGFyYWxsZWxT
aGFkZXJDb21waWxlLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIiwgS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVE
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNvbXBpbGUsICJL
SFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNTdGFuZGFy
ZERlcml2YXRpdmVzLCBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMsICJPRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0LCBt
X29lc1RleHR1cmVGbG9hdCwgIk9FU190ZXh0dXJlX2Zsb2F0IiwgT0VTVGV4dHVyZUZsb2F0Ojpz
dXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9h
dCwgbV9vZXNUZXh0dXJlRmxvYXQsICJPRVNfdGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9h
dDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1Rl
eHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zs
b2F0X2xpbmVhciJfcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUhhbGZG
bG9hdCwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0LCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIsIE9F
U1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFV
RVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdCwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0LCAiT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdCIsIE9FU1RleHR1cmVIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250
ZXh0KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFy
LCBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1ZlcnRleEFycmF5T2Jq
ZWN0LCBtX29lc1ZlcnRleEFycmF5T2JqZWN0LCAiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKSk7
CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNFbGVtZW50SW5kZXhVaW50LCBtX29lc0VsZW1l
bnRJbmRleFVpbnQsICJPRVNfZWxlbWVudF9pbmRleF91aW50IiwgZW5hYmxlU3VwcG9ydGVkRXh0
ZW5zaW9uKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Il9zKSk7CiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChPRVNGQk9SZW5kZXJNaXBtYXAsIG1fb2VzRkJPUmVuZGVyTWlwbWFwLCAiT0VTX2Zi
b19yZW5kZXJfbWlwbWFwIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTG9zZUNvbnRl
eHQsIG1fd2ViZ2xMb3NlQ29udGV4dCwgIldFQkdMX2xvc2VfY29udGV4dCIsIHRydWUpOwotICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMsIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZUFTVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyIsIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVf
SUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIiwgV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1
cmVFVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMSwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDMSwgIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6
OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQktJVF9X
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQkdM
X2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6
c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQywgIldFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9zM3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRl
ZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVENzUkdCLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9zM3RjX3NyZ2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6
OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFTVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFTVEMsICJXRUJHTF9jb21w
cmVzc2VkX3RleHR1cmVfYXN0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VCS0lUX1dFQkdMX2Nv
bXByZXNzZWRfdGV4dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDLCAiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCgqbV9j
b250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDMSwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDMSwgIldFQkdMX2NvbXByZXNzZWRfdGV4
dHVyZV9ldGMxIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqbV9jb250
ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNz
ZWRfdGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVk
KCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQywgIldFQkdMX2NvbXByZXNz
ZWRfdGV4dHVyZV9zM3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgq
bV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQ3NSR0IsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCAiV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JH
Qjo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
RGVwdGhUZXh0dXJlLCBtX3dlYmdsRGVwdGhUZXh0dXJlLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIs
IFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kcmF3X2J1ZmZlcnMiKSkgewogICAgICAg
ICBpZiAoIW1fd2ViZ2xEcmF3QnVmZmVycykgewogICAgICAgICAgICAgaWYgKCFzdXBwb3J0c0Ry
YXdCdWZmZXJzKCkpCiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbnVsbHB0
cjsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOworICAgICAg
ICAgICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdf
YnVmZmVycyJfcyk7CiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gYWRvcHRS
ZWYobmV3IFdlYkdMRHJhd0J1ZmZlcnMoKnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAg
ICAgICAgICB9CkBAIC0xOTgsMTAgKzE5NywxMCBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIH0KICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5
cyIpKSB7CiAgICAgICAgIGlmICghbV9hbmdsZUluc3RhbmNlZEFycmF5cykgewotICAgICAgICAg
ICAgaWYgKCFBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICAgICAg
ICAgIGlmICghQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAg
ICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOworICAgICAgICAgICAg
ICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2Vk
X2FycmF5cyJfcyk7CiAgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IGFk
b3B0UmVmKG5ldyBBTkdMRUluc3RhbmNlZEFycmF5cygqdGhpcykpOwogICAgICAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1l
KTsKICAgICAgICAgICAgIH0KQEAgLTIwOSwxMSArMjA4LDExIEBAIFdlYkdMRXh0ZW5zaW9uKiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgICAgIHJldHVybiBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzLmdldCgpOwogICAgIH0KICAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVidWdSZW5kZXJlckluZm8sIG1fd2ViZ2xEZWJ1Z1Jl
bmRlcmVySW5mbywgIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iLCB0cnVlKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVidWdTaGFkZXJzLCBtX3dlYmdsRGVidWdTaGFkZXJzLCAi
V0VCR0xfZGVidWdfc2hhZGVycyIsIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiX3MpKTsKLSAgICBFTkFCTEVfSUZf
UkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZs
b2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxv
YXQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhURmxvYXRC
bGVuZCwgbV9leHRGbG9hdEJsZW5kLCAiRVhUX2Zsb2F0X2JsZW5kIiwgRVhURmxvYXRCbGVuZDo6
c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbG9yQnVm
ZmVyRmxvYXQsIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0LCAiV0VCR0xfY29sb3JfYnVmZmVyX2Zs
b2F0IiwgV2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xf
bXVsdGlfZHJhdyIsIFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVidWdTaGFkZXJzLCBtX3dlYmdsRGVidWdTaGFkZXJzLCAi
V0VCR0xfZGVidWdfc2hhZGVycyIsIG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29sb3JCdWZmZXJIYWxmRmxvYXQsICJF
WFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3Vw
cG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0Qmxl
bmQsIG1fZXh0RmxvYXRCbGVuZCwgIkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbG9y
QnVmZmVyRmxvYXQsIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0LCAiV0VCR0xfY29sb3JfYnVmZmVy
X2Zsb2F0IiwgV2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xNdWx0aURyYXcsIG1fd2ViZ2xNdWx0aURyYXcs
ICJXRUJHTF9tdWx0aV9kcmF3IiwgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTIyNyw2OSArMjI2LDY5IEBAIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9y
dGVkRXh0ZW5zaW9ucygpCiAgICAgaWYgKG1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9ibGVuZF9taW5tYXgiX3MpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCJFWFRfYmxlbmRfbWlubWF4Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zUkdCIl9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3NSR0IiX3MpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJFWFRfc1JHQiJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfZnJhZ19kZXB0aCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiRVhUX2ZyYWdfZGVwdGgiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpKQorICAgIGlmIChtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcykpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykp
CisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zs
b2F0X2xpbmVhciJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0
X2xpbmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcykpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpOwotICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJfcykpCisg
ICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykpCisgICAgaWYgKG1fY29u
dGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpIHx8
IG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2Qi
X3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcyk7Ci0gICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qi
X3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdmVydGV4
X2FycmF5X29iamVjdCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0Il9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Il9zKSkKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgiT0VTX2VsZW1lbnRfaW5kZXhfdWludCJfcyk7Ci0gICAgaWYgKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAi
X3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfZmJvX3JlbmRlcl9t
aXBtYXAiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2xvc2VfY29udGV4dCJfcyk7Ci0g
ICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAg
IGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyJfcyk7
Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpCisg
ICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9h
dGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKnRo
aXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1fY29u
dGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9l
dGMiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0
aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqbV9j
b250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X2V0YzEiX3MpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRl
ZCgqdGhpcykpIHsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2Nv
bXByZXNzZWRfdGV4dHVyZV9wdnJ0YyJfcyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyJfcyk7CiAgICAgfQotICAgIGlmIChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiX3MpOwotICAgIGlmIChXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIl9zKTsK
ICAgICBpZiAoV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSJfcyk7CiAgICAgaWYgKHN1cHBv
cnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZHJhd19idWZm
ZXJzIl9zKTsKLSAgICBpZiAoQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCgqdGhpcykp
CisgICAgaWYgKEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgIGlm
IChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfY29sb3Jf
YnVmZmVyX2hhbGZfZmxvYXQiX3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQo
KnRoaXMpKQorICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYgKFdlYkdM
Q29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xDb2xvckJ1
ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Ci0gICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVy
Q29tcGlsZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21w
aWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9w
YXJhbGxlbF9zaGFkZXJfY29tcGlsZSIpOwotICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9y
dGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqbV9jb250ZXh0
KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbXVsdGlfZHJhdyJfcyk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMzMwLDcgKzMyOSw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdl
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxXZWJHTFRleHR1cmU+KG9i
amVjdCk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDoK
KyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElOR19FWFQ6CiAgICAgICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
ciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQiKTsKQEAg
LTM0MywxNiArMzQyLDE2IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdlCiAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZG
RVIpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX09CSkVDVF9OQU1FOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8
V2ViR0xSZW5kZXJidWZmZXI+KG9iamVjdCk7Ci0gICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogeworICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5H
X0VYVDogewogICAgICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKICAgICAgICAgICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9y
IHJlbmRlcmJ1ZmZlciBhdHRhY2htZW50Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+
IHJlbmRlckJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXIqPihvYmpl
Y3QuZ2V0KCkpOwogICAgICAgICAgICAgR0NHTGVudW0gcmVuZGVyQnVmZmVyRm9ybWF0ID0gcmVu
ZGVyQnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwotICAgICAgICAgICAgQVNTRVJUKHJlbmRl
ckJ1ZmZlckZvcm1hdCAhPSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUICYmIHJlbmRlckJ1ZmZlckZv
cm1hdCAhPSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUKTsKLSAgICAgICAgICAgIGlmIChy
ZW5kZXJCdWZmZXJGb3JtYXQgPT0gRXh0ZW5zaW9uc0dMOjpTUkdCOF9BTFBIQThfRVhUKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRXh0ZW5zaW9uc0dMOjpT
UkdCX0VYVCk7CisgICAgICAgICAgICBBU1NFUlQocmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBo
aWNzQ29udGV4dEdMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJGb3JtYXQgIT0gR3JhcGhpY3ND
b250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJCdWZmZXJG
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0I4X0FMUEhBOF9FWFQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRleHRHTDo6U1JH
Ql9FWFQpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGlj
c0NvbnRleHRHTDo6TElORUFSKTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMzY3
LDkgKzM2Niw5IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVm
ZmVycygpCiAgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9
IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhU
KTsKKyAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFw
aGljc0NvbnRleHRHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xv
ckF0dGFjaG1lbnRzKQotICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQt
PmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKKyAg
ICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBo
aWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9k
cmF3X2J1ZmZlcnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JV
RkZFUlMuCiAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JB
dHRhY2htZW50cyk7CiB9CkBAIC0zNzksNyArMzc4LDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3
QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2ht
ZW50cykKLSAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1f
bWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRl
eHRHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JB
dHRhY2htZW50czsKIH0KIApAQCAtNDU0LDkgKzQ1Myw5IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
Q0dMCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlVOQ19BREQ6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlVOQ19TVUJUUkFDVDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpGVU5DX1JFVkVSU0VfU1VCVFJBQ1Q6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6Ok1JTl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6Ok1BWF9FWFQ6Ci0gICAgICAgIGlmICgobW9kZSA9PSBF
eHRlbnNpb25zR0w6Ok1JTl9FWFQgfHwgbW9kZSA9PSBFeHRlbnNpb25zR0w6Ok1BWF9FWFQpICYm
ICFtX2V4dEJsZW5kTWluTWF4KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUlOX0VY
VDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRVhUOgorICAgICAgICBpZiAoKG1v
ZGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9FWFQgfHwgbW9kZSA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6TUFYX0VYVCkgJiYgIW1fZXh0QmxlbmRNaW5NYXgpIHsKICAgICAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFt
ZSwgImludmFsaWQgbW9kZSIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCmluZGV4IGI4YjVmYjY1YWNmNDEyZTkzMjI1MjQ1YTQxYTVkODE4MTU1
NWQ2ODEuLjYxMTQ2MDI3N2Y2Njc5YTQ5MWUwZjk4MzE3Nzk3MzAwN2ViYmRkYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCkBAIC00NCwxNCArNDQsMTIgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWMuaCIKICNpbmNsdWRlICJFWFRzUkdCLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCIKLSNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEltYWdlRWxlbWVudC5oIgpAQCAtMTQwLDYgKzEzOCwxNSBAQAogI2luY2x1ZGUgIk1lZGlh
U2FtcGxlLmgiCiAjZW5kaWYKIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaCIKKyNpZiBVU0UoT1BFTkdMX0VTKQorI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTE9wZW5HTEVTLmgiCisjZWxzZQorI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgor
I2VuZGlmCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSk7CkBAIC01NTUsMTIgKzU2Miwx
MiBAQCBzdGF0aWMgdWludDhfdCBnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1h
dCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0JB
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UkdCNTY1OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KENoYW5uZWxCaXRzOjpSR0IpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlJHQkE6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTQ6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6UkdCNV9BMToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9B
TFBIQV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCQSk7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTY6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UOgpAQCAtNjQzLDggKzY1MCw4IEBAIHN0
YXRpYyBib29sIHBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMCiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
R3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9TVEVOQ0lMLCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpOwogICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSDI0X1NU
RU5DSUw4LCBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0lOVF8yNF84KTsKICAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShHcmFwaGljc0NvbnRleHRHTDo6REVQVEgzMkZfU1RFTkNJTDgsIEdyYXBoaWNzQ29udGV4dEdM
OjpERVBUSF9TVEVOQ0lMLCBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfMzJfVU5TSUdORURfSU5U
XzI0XzhfUkVWKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25z
R0w6OlNSR0JfRVhULCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5z
aW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgR3Jh
cGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6
OlNSR0JfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhU
LCBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQsIEdyYXBoaWNzQ29udGV4dEdMOjpV
TlNJR05FRF9CWVRFKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtMTA5MSwxNyArMTA5OCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnNldHVwRmxhZ3MoKQogICAgIC8vIHR1cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAg
ICBtX2lzR0xFUzJDb21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAg
ICBpZiAobV9pc0dMRVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3Qg
PSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9u
cG90Iik7Ci0gICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4
dHVyZSIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRl
bnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0
ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2RlcHRoX3RleHR1cmUiKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShBTkdMRSkKICAg
ICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxzZQotICAgICAgICBtX2lzR0xF
UzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xf
QVJCX3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3Ry
aWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25f
cG93ZXJfb2ZfdHdvIik7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRl
ZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJH
TF9BTkdMRV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRo
X3RleHR1cmUiKTsKICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7Cisg
ICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfRVhUX3JvYnVzdG5lc3MiKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjphZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0z
MzAzLDkgKzMzMTAsOSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
YXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiAiV2ViR0wgMS4wIl9zdHI7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VklFV1BPUlQ6CiAgICAgICAgIHJldHVybiBn
ZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJ
VkFUSVZFX0hJTlRfT0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgaWYg
KG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcykKLSAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25l
ZEludFBhcmFtZXRlcihFeHRlbnNpb25zR0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJ
TlRfT0VTKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFw
aGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOwogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAi
Z2V0UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIE9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNl
IFdlYkdMRGVidWdSZW5kZXJlckluZm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgpAQCAtMzMz
NiwyNSArMzM0MywyNSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
YXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxl
ZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6TUFY
X1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09U
Uk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAo
bV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5z
aWduZWRJbnRQYXJhbWV0ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9Q
WV9FWFQpOworICAgICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdyYXBo
aWNzQ29udGV4dEdMOjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOwogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0UGFy
YW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogLy8gRVhUX2RyYXdfYnVm
ZmVycyBCRUdJTgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQ6IC8vIEVYVF9kcmF3X2J1ZmZlcnMgQkVHSU4KICAgICAgICAgaWYgKG1fd2ViZ2xE
cmF3QnVmZmVycyB8fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdldE1heENvbG9y
QXR0YWNobWVudHMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1l
LCBXRUJHTF9kcmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUOgogICAgICAgICBpZiAo
bV93ZWJnbERyYXdCdWZmZXJzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0
TWF4RHJhd0J1ZmZlcnMoKTsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBu
YW1lLCBXRUJHTF9kcmF3X2J1ZmZlcnMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgaWYgKChtX3dlYmdsRHJhd0J1ZmZlcnMgfHwg
aXNXZWJHTDIoKSkKLSAgICAgICAgICAgICYmIHBuYW1lID49IEV4dGVuc2lvbnNHTDo6RFJBV19C
VUZGRVIwX0VYVAotICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
RXh0ZW5zaW9uc0dMOjpEUkFXX0JVRkZFUjBfRVhUICsgZ2V0TWF4RHJhd0J1ZmZlcnMoKSkpIHsK
KyAgICAgICAgICAgICYmIHBuYW1lID49IEdyYXBoaWNzQ29udGV4dEdMOjpEUkFXX0JVRkZFUjBf
RVhUCisgICAgICAgICAgICAmJiBwbmFtZSA8IHN0YXRpY19jYXN0PEdDR0xlbnVtPihHcmFwaGlj
c0NvbnRleHRHTDo6RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7CiAg
ICAgICAgICAgICBHQ0dMaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkU7CiAgICAg
ICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgICAgICAgICAgdmFsdWUg
PSBtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0RHJhd0J1ZmZlcihwbmFtZSk7CkBAIC0zMzcyLDcg
KzMzNzksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFt
UGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgIC8vIENPTVBMRVRJT05fU1RB
VFVTX0tIUiBzaG91bGQgYWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IGlzIGxvc3Qs
IHNvIGFwcGxpY2F0aW9ucwogICAgIC8vIGRvbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBw
b2xsaW5nIGxvb3AuCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkgewotICAgICAg
ICBpZiAocG5hbWUgPT0gRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFIpCisgICAg
ICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hS
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KQEAgLTMzOTksNyArMzQwNiw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAgICAgICAg
ICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCi0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CiAgICAgICAgIGlmIChtX2toclBh
cmFsbGVsU2hhZGVyQ29tcGlsZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29s
PihtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0ub2JqZWN0KCksIHBuYW1lKSk7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJn
ZXRQcm9ncmFtUGFyYW1ldGVyIiwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBub3QgZW5h
YmxlZCIpOwpAQCAtMzUwMyw3ICszNTEwLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIsIEdDR0wKICAg
ICAvLyBDT01QTEVUSU9OX1NUQVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0
aGUgY29udGV4dCBpcyBsb3N0LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1
Y2sgaW4gYW4gaW5maW5pdGUgcG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpIHsKLSAgICAgICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElP
Tl9TVEFUVVNfS0hSKQorICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBMRVRJT05fU1RBVFVTX0tIUikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0zNTE3LDcgKzM1MjQsNyBAQCBXZWJHTEFueSBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXImIHNo
YWRlciwgR0NHTAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9jb250ZXh0LT5n
ZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTSEFERVJfVFlQRToKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLm9iamVjdCgpLCBwbmFtZSkpOwotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQYXJh
bGxlbFNoYWRlckNvbXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNo
YWRlclBhcmFtZXRlciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVuYWJsZWQi
KTsKQEAgLTM1ODYsNyArMzU5Myw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFRleFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuCiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1M6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1Q6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpKTsKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0
dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMK
ICAgICAgICAgaWYgKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQogICAgICAgICAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdl
dFRleFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMgbm90IGVuYWJsZWQiKTsKQEAgLTM3NDksNyArMzc1Niw3IEBAIFdlYkdM
QW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBw
cm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgIEdDR0xmbG9hdCB2YWx1ZVsxNl0gPSB7MH07CiAj
aWYgIVVTRShBTkdMRSkKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQot
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChw
cm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUp
OworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2Nv
bnRleHQuZ2V0KCkpLT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9i
amVjdCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dy
YW0ub2JqZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUsIGxlbmd0aCkpOwpAQCAt
Mzc2MSw3ICszNzY4LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgR0NHTGlu
dCB2YWx1ZVs0XSA9IHswfTsKICNpZiAhVVNFKEFOR0xFKQogICAgICAgICBpZiAobV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9m
KEdDR0xpbnQpLCB2YWx1ZSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9y
bWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2
YWx1ZSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRV
bmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VHQ0dMU3Bhbih2YWx1ZSwg
bGVuZ3RoKSk7CkBAIC0zNzgwLDcgKzM3ODcsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwog
ICAgICAgICBHQ0dMaW50IHZhbHVlWzRdID0gezB9OwogI2lmICFVU0UoQU5HTEUpCiAgICAgICAg
IGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRp
b24sIDQgKiBzaXplb2YoR0NHTGludCksIHZhbHVlKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0RXh0ZW5zaW9u
cygpLmdldG5Vbmlmb3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXpl
b2YoR0NHTGludCksIHZhbHVlKTsKICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICBt
X2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdD
R0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKQEAgLTM5NTksNyArMzk2Niw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUp
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CiAgICAg
ICAgIGlzVmFsaWQgPSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9k
ZXJpdmF0aXZlcywgb3IgY29yZSBpbiBXZWJHTCAyLjAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzLCBvciBjb3JlIGluIFdlYkdMIDIuMAogICAgICAgICBpZiAobV9vZXNTdGFu
ZGFyZERlcml2YXRpdmVzIHx8IGlzV2ViR0wyKCkpCiAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CkBAIC00NTY5LDcgKzQ1NzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aAogICAgIG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNwYW4oZGF0YSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSkpOwog
I2Vsc2UKICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgZGF0YSk7CisgICAgICAgIHN0YXRp
Y19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0RXh0
ZW5zaW9ucygpLnJlYWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgZGF0YSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvbnRl
eHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdD
R0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsKICNlbmRpZgpAQCAtNDYxMCw4ICs0
NjE3LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZW5kZXJidWZmZXJTdG9y
YWdlSW1wbChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpSR0I1X0ExOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQjU2NToKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0lOREVYODoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6U1JHQjhfQUxQSEE4X0VYVDoKLSAgICAgICAgaWYgKGludGVybmFsZm9ybWF0ID09IEV4
dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCAmJiAhbV9leHRzUkdCKSB7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6U1JHQjhfQUxQSEE4X0VYVDoKKyAgICAgICAgaWYgKGludGVybmFs
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThfRVhUICYmICFtX2V4dHNS
R0IpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDYyMiw3ICs0NjI5LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6REVQVEhfU1RFTkNJTDoKICAgICAgICAgaWYgKGlzRGVwdGhTdGVuY2lsU3VwcG9ydGVk
KCkpCi0gICAgICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBF
eHRlbnNpb25zR0w6OkRFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAg
ICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0
R0w6OkRFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBtX3JlbmRlcmJ1
ZmZlckJpbmRpbmctPnNldFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIG1fcmVuZGVyYnVm
ZmVyQmluZGluZy0+c2V0SXNWYWxpZChpc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCgpKTsKICAgICAg
ICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1h
dCk7CkBAIC01NjE2LDggKzU2MjMsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBI
QV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6U1JHQl9BTFBIQV9FWFQ6CiAgICAgICAgIGlmICghbV9leHRzUkdC
KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJzUkdCIHRleHR1cmUgZm9ybWF0cyBub3QgZW5hYmxl
ZCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc3NSw3ICs1NzgyLDcgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBl
KGNvbnN0IGNoYXIqIGZ1bmN0aW8KICAgICBJTlRFUk5BTF9GT1JNQVRfQ0FTRShERVBUSF9TVEVO
Q0lMICAgICAsIERFUFRIX1NURU5DSUwgICwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lO
VF8yNF84ICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgKTsK
ICAgICBJTlRFUk5BTF9GT1JNQVRfQ0FTRShERVBUSDI0X1NURU5DSUw4ICAsIERFUFRIX1NURU5D
SUwgICwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yNF84ICAgICAgICAgICAgICwg
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBJTlRFUk5BTF9GT1JNQVRf
Q0FTRShERVBUSDMyRl9TVEVOQ0lMOCAsIERFUFRIX1NURU5DSUwgICwgR3JhcGhpY3NDb250ZXh0
R0w6OkZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFViwgMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAg
ICAgICAgICAgICAgKTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQ6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CiAgICAgICAgIGlmIChmb3JtYXQgIT0gaW50
ZXJuYWxGb3JtYXQpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiZm9ybWF0IGFuZCBpbnRl
cm5hbGZvcm1hdCBtdXN0IG1hdGNoIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
Nzg1LDcgKzU3OTIsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
VGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpTUkdCX0FMUEhBX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FM
UEhBX0VYVDoKICAgICAgICAgaWYgKGZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkgewogICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFU
SU9OLCBmdW5jdGlvbk5hbWUsICJmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IG11c3QgbWF0Y2gi
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5NjgsNyArNTk3NSw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlf
RVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljCiAgICAgICAgIGlmICghbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sICJ0ZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIsIEVYVF90ZXh0
dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBub3QgZW5hYmxlZCIpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNjM4NSw3ICs2MzkyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjps
b3NlQ29udGV4dEltcGwoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TG9zdEMKICAgICAgICAg
YXV0byogY2FudmFzID0gaHRtbENhbnZhcygpOwogICAgICAgICBpZiAoY2FudmFzKSB7CiAgICAg
ICAgICAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGNhbnZhcy0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2Vi
R0xDb250ZXh0KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSk7CisgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZExv
c2VXZWJHTENvbnRleHQobV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC02ODk4LDE4ICs2OTA1LDE4IEBAIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hh
ciogZnVuY3RpCiAgICAgICAgIEJsb2NrUGFyYW1ldGVycyB7IDEyLCAxMCwga0FTVENCbG9ja1Np
emUgfSwKICAgICAgICAgQmxvY2tQYXJhbWV0ZXJzIHsgMTIsIDEyLCBrQVNUQ0Jsb2NrU2l6ZSB9
CiAgICAgfTsKLSAgICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0UkdCQSA9IEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjsKLSAgICBjb25zdCBHQ0dMZW51bSBB
U1RDRW51bVN0YXJ0U1JHQjggPSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfNHg0X0tIUjsKKyAgICBjb25zdCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0UkdCQSA9IEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOworICAgIGNvbnN0
IEdDR0xlbnVtIEFTVENFbnVtU3RhcnRTUkdCOCA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI7CiAKICAgICBjb25zdCBpbnQga0VBQ0FuZEVU
QzJCbG9ja1NpemUgPSA0OwogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RVRD
MV9SR0I4X09FUzogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpF
VEMxX1JHQjhfT0VTOiB7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKICAgICAg
ICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hl
aWdodCA9IDQ7CkBAIC02OTE4LDEyICs2OTI1LDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rp
CiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3du
ICoga0Jsb2NrU2l6ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FN
RDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQz
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQ
SEFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQ6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CiAgICAgICAg
ICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwpAQCAtNjkzMyw4ICs2OTQwLDggQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0
YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9j
a3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duICoga0Jsb2NrU2l6ZTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQ
UFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRC
UFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZS
VENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfUFZSVENfNEJQUFYxX0lNRzoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50IGtC
bG9ja1NpemUgPSA4OwogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gODsKQEAg
LTY5NDIsOCArNjk0OSw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBi
eXRlc1JlcXVpcmVkID0gKHN0ZDo6bWF4KHdpZHRoLCBrQmxvY2tXaWR0aCkgKiBzdGQ6Om1heCho
ZWlnaHQsIGtCbG9ja0hlaWdodCkgKiA0ICsgNykgLyBrQmxvY2tTaXplOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJU
Q18yQlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfMkJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
Ql9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBp
bnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSAx
NjsKQEAgLTY5NTEsNDQgKzY5NTgsNDQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAg
ICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgsIGtCbG9ja1dpZHRoKSAqIHN0
ZDo6bWF4KGhlaWdodCwga0Jsb2NrSGVpZ2h0KSAqIDIgKyA3KSAvIGtCbG9ja1NpemU7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzV4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9B
U1RDXzV4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzZ4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4
Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tI
UjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhf
S0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEw
eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9B
U1RDXzEweDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2FsY3Vs
YXRlQnl0ZXNGb3JBU1RDKHdpZHRoLCBoZWlnaHQsIEFTVENQYXJhbWV0ZXJzW2Zvcm1hdCAtIEFT
VENFbnVtU3RhcnRSR0JBXSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tI
UjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184
eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzR4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ181eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tI
UjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgogICAgICAgICBieXRlc1JlcXVpcmVk
ID0gY2FsY3VsYXRlQnl0ZXNGb3JBU1RDKHdpZHRoLCBoZWlnaHQsIEFTVENQYXJhbWV0ZXJzW2Zv
cm1hdCAtIEFTVENFbnVtU3RhcnRTUkdCOF0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9F
VEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X1BV
TkNIVEhST1VHSF9BTFBIQTFfRVRDMjogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfUjExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NJR05FRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
RVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hU
SFJPVUdIX0FMUEhBMV9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOiB7CiAgICAgICAgIENoZWNrZWRVaW50
MzIgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgPSAod2lkdGggKyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAt
IDEpIC8ga0VBQ0FuZEVUQzJCbG9ja1NpemU7CiAgICAgICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVk
ICo9IChoZWlnaHQgKyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0FuZEVUQzJCbG9j
a1NpemU7CiAgICAgICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IDg7CkBAIC02OTk5LDEwICs3
MDA2LDEwIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVz
c2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgIGJ5dGVzUmVxdWlyZWQg
PSBjaGVja2VkQnl0ZXNSZXF1aXJlZDsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU0lHTkVEX1JHMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQThfRVRDMl9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6IHsKICAgICAgICAgQ2hlY2tlZFVpbnQzMiBjaGVja2Vk
Qnl0ZXNSZXF1aXJlZCA9ICh3aWR0aCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFD
QW5kRVRDMkJsb2NrU2l6ZTsKICAgICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gKGhlaWdo
dCArIGtFQUNBbmRFVEMyQmxvY2tTaXplIC0gMSkgLyBrRUFDQW5kRVRDMkJsb2NrU2l6ZTsKICAg
ICAgICAgY2hlY2tlZEJ5dGVzUmVxdWlyZWQgKj0gMTY7CkBAIC03MDEzLDggKzcwMjAsOCBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNE
YXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVkID0gY2hlY2tlZEJ5
dGVzUmVxdWlyZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtC
bG9ja1NpemUgPSA4OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAg
ICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTcwMjMsOCArNzAzMCw4IEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEo
Y29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jv
c3MgKiBudW1CbG9ja3NEb3duICoga0Jsb2NrU2l6ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9F
WFQ6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9S
R1RDMl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURf
UkVEX0dSRUVOX1JHVEMyX0VYVDogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2
OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrSGVpZ2h0ID0gNDsKQEAgLTcwNDksMTQgKzcwNTYsMTQgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFy
KiBmdW5jdGkKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVz
c2VkVGV4RGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQpCiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7CiAgICAgICAgIGNvbnN0IEdDR0xzaXplaSBrQmxv
Y2tXaWR0aCA9IDQ7CiAgICAgICAgIGNvbnN0IEdDR0xzaXplaSBrQmxvY2tIZWlnaHQgPSA0Owog
ICAgICAgICBjb25zdCBHQ0dMaW50IG1heFRleHR1cmVTaXplID0gdGFyZ2V0ID8gbV9tYXhUZXh0
dXJlU2l6ZSA6IG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplOwpAQCAtNzA2OSw1NSArNzA3Niw1NSBA
QCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleERp
bWVuc2lvbnMoY29uc3QgY2hhciogZnVuYwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQ
UFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQ
UFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRC
UFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18y
QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BW
UlRDXzRCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JfUFZSVENfMkJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRzoKICAgICAgICAgLy8gSGVpZ2h0IGFuZCB3
aWR0aCBtdXN0IGJlIHBvd2VycyBvZiAyLgogICAgICAgICBpZiAoKHdpZHRoICYgKHdpZHRoIC0g
MSkpIHx8IChoZWlnaHQgJiAoaGVpZ2h0IC0gMSkpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFt
ZSwgIndpZHRoIG9yIGhlaWdodCBpbnZhbGlkIGZvciBsZXZlbCIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ184eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ184eDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9B
U1RDXzEweDhfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMHgxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzEyeDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
MTJ4MTJfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzR4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUjoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2
X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHgxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
RVRDMV9SR0I4X09FUzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SMTFfRUFD
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X1BV
TkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBf
S0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEy
eDEyX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzR4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfOHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzh4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEw
eDhfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJ
R05FRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0VU
QzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgogICAgICAgICAvLyBObyBoZWln
aHQgYW5kIHdpZHRoIHJlc3RyaWN0aW9ucyBvbiBBU1RDLCBFVEMxIG9yIEVUQzIuCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CkBAIC03MTMzLDE0ICs3MTQwLDE0IEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5z
aW9ucyhjb25zdCBjaGFyKiBmCiAgICAgfQogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6IHsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
RVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDVfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9TM1RD
X0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9B
TFBIQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7CiAgICAgICAgIGNvbnN0IGlu
dCBrQmxvY2tXaWR0aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0Owog
ICAgICAgICBpZiAoKHhvZmZzZXQgJSBrQmxvY2tXaWR0aCkgfHwgKHlvZmZzZXQgJSBrQmxvY2tI
ZWlnaHQpKSB7CkBAIC03MTU0LDEwICs3MTYxLDEwIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBm
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lv
bnMoZnVuY3Rpb25OYW1lLCB0YXJnZXQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpOwog
ICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYx
X0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYx
X0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBW
MV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQ
VjFfSU1HOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZS
VENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
Ql9QVlJUQ18yQlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOiB7CiAgICAgICAgIGlmICh4b2Zmc2V0IHx8
IHlvZmZzZXQpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBhbmQgeW9mZnNl
dCBtdXN0IGJlIHplcm8iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxNjksMTkg
KzcxNzYsMTkgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhTdWJEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGYKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyhmdW5jdGlvbk5hbWUsIHRhcmdl
dCwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CiAgICAgfQotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpFVEMxX1JHQjhfT0VTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFf
UkdCOF9PRVM6CiAgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgZm9yIEVUQzFfUkdCOF9PRVMgdGV4
dHVyZXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05F
RF9SMTFfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHMTFfRUFDOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1NSR0I4X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CiAg
ICAgICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfM0QpIHsKICAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgZnVuY3Rpb25OYW1lLCAibm90IHN1cHBvcnRlZCBvbiBURVhUVVJFXzNEIHRleHR1
cmVzIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03Njk4LDcgKzc3MDUsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAg
IGlmICghbV9yZXN0b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGNvbnRl
eHRMb3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpOworICAgIGludCBjb250ZXh0TG9zdFJlYXNvbiA9IG1fY29udGV4dC0+Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogCiAgICAgc3dpdGNoIChjb250ZXh0TG9zdFJlYXNv
bikgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOgpAQCAtNzcwNywxNSAr
NzcxNCwxNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNv
bnRleHQoKQogICAgICAgICAvLyBXRUJHTF9sb3NlX2NvbnRleHQgZXh0ZW5zaW9uIG1pZ2h0IGhh
dmUgYmVlbiB1c2VkIHRvIGZvcmNlCiAgICAgICAgIC8vIGEgbG9zdCBjb250ZXh0LgogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJC
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkdVSUxUWV9DT05URVhUX1JFU0VUX0FSQjoK
ICAgICAgICAgLy8gVGhlIHJlbmRlcmluZyBjb250ZXh0IGlzIG5vdCByZXN0b3JlZCBpZiB0aGlz
IGNvbnRleHQgd2FzCiAgICAgICAgIC8vIGd1aWx0eSBvZiBjYXVzaW5nIHRoZSBncmFwaGljcyBy
ZXNldC4KICAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV0FS
TklORzogV2ViR0wgY29udGVudCBvbiB0aGUgcGFnZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQg
dG8gcmVzZXQ7IG5vdCByZXN0b3JpbmcgdGhlIGNvbnRleHQiKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKICAgICAg
ICAgLy8gQWx3YXlzIGFsbG93IHRoZSBjb250ZXh0IHRvIGJlIHJlc3RvcmVkLgogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6VU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOgog
ICAgICAgICAvLyBXYXJuLiBJZGVhbGx5LCBwcm9tcHQgdGhlIHVzZXIgdGVsbGluZyB0aGVtIHRo
YXQgV2ViR0wKICAgICAgICAgLy8gY29udGVudCBvbiB0aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNl
ZCB0aGUgZ3JhcGhpY3MgY2FyZCB0bwogICAgICAgICAvLyByZXNldCBhbmQgYXNrIHRoZW0gd2hl
dGhlciB0aGV5IHdhbnQgdG8gY29udGludWUgcnVubmluZwpAQCAtNzg4Miw5ICs3ODg5LDkgQEAg
R0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhEcmF3QnVmZmVycygpCiAg
ICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlm
ICghbV9tYXhEcmF3QnVmZmVycykKLSAgICAgICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4
dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICAg
ICAgbV9tYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRl
eHRHTDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1l
bnRzKQotICAgICAgICBtX21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVn
ZXIoRXh0ZW5zaW9uc0dMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKKyAgICAgICAgbV9t
YXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4
dEdMOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUKTsKICAgICAvLyBXRUJHTF9kcmF3X2J1ZmZl
cnMgcmVxdWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCiAg
ICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50
cyk7CiB9CkBAIC03ODk0LDcgKzc5MDEsNyBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldE1heENvbG9yQXR0YWNobWVudHMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVm
ZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50
cykKLSAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2Vy
KEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1fbWF4
Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRH
TDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JBdHRh
Y2htZW50czsKIH0KIApAQCAtODAzOSwxMSArODA0NiwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdgogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbk5hbWVMaXRlcmFsKQogewogICAgIEFTU0VSVCht
X2NvbnRleHQpOwotICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKTsKICAgICBTdHJpbmcgZXh0ZW5zaW9uTmFtZSB7IGV4dGVuc2lvbk5hbWVMaXRlcmFsIH07
Ci0gICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKGV4dGVuc2lvbk5hbWUpKQorICAgIGlmICgh
bV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbihleHRlbnNpb25OYW1lKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb25OYW1lKTsK
KyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uTmFtZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKaW5kZXggNzJiOTY4OGU2Zjk1ZWZj
MmMwMDk5ZWViZDVkZWNkNDMzZWQ2OWFjZi4uZTEyMTE2ZDgwZTYwMzljN2NkODIzYjM5YzkxODVl
YzI3MDNjYThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1
ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCA3YTdhMWI1ZjI0YzU4YzA4OWMyMDlmMmVmMzAzNTMzMTM0NDYxNzc4Li43OTQzNWEzYWMyNDc1
NmY3ZjlkOTRhNTkyNmMyMDE2ZTkxMTY3MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtMzQxLDcgKzM0MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
V0VCR0wpCiAgICAgdmlydHVhbCBib29sIGFsbG93V2ViR0woYm9vbCBlbmFibGVkUGVyU2V0dGlu
Z3MpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQogICAgIC8vIEluZm9ybXMgdGhlIGVt
YmVkZGVyIHRoYXQgYSBXZWJHTCBjYW52YXMgaW5zaWRlIHRoaXMgZnJhbWUgcmVjZWl2ZWQgYSBs
b3N0IGNvbnRleHQKLSAgICAvLyBub3RpZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4gR0xfQVJCX3Jv
YnVzdG5lc3MgZ3VpbHQvaW5ub2NlbmNlIGNvZGUgKHNlZSBFeHRlbnNpb25zR0wuaCkuCisgICAg
Ly8gbm90aWZpY2F0aW9uIHdpdGggdGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lu
bm9jZW5jZSBjb2RlIChzZWUgR3JhcGhpY3NDb250ZXh0R0wuaCkuCiAgICAgdmlydHVhbCB2b2lk
IGRpZExvc2VXZWJHTENvbnRleHQoaW50KSB7IH0KICAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGlj
eSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQ
b2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQogICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5
IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJH
TExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTYwNzYzMDhjNThhMGJkNDU5MzliMGE3YmM1ZTYyNGQ1NjRlYjUxMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIK
LQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLS8vIFRoaXMgaXMgYSBiYXNlIGNsYXNzIGNvbnRhaW5pbmcgb25seSBwdXJlIHZpcnR1YWwg
ZnVuY3Rpb25zLgotLy8gSW1wbGVtZW50YXRpb25zIG11c3QgcHJvdmlkZSBhIHN1YmNsYXNzLgot
Ly8KLS8vIFRoZSBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBiZWxvdyBhbmQgaW4g
c3ViY2xhc3NlcywKLS8vIHBvc3NpYmx5IHBsYXRmb3JtLXNwZWNpZmljIG9uZXMuCi0vLwotLy8g
Q2FsbGluZyBhbnkgZXh0ZW5zaW9uIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJl
bnQgY29udGV4dAotLy8gbXVzdCBiZSBhIG5vLW9wOyBpbiBwYXJ0aWN1bGFyLCBpdCBtYXkgbm90
IGhhdmUgc2lkZSBlZmZlY3RzLiBJbgotLy8gdGhpcyBzaXR1YXRpb24sIGlmIHRoZSBmdW5jdGlv
biBoYXMgYSByZXR1cm4gdmFsdWUsIDAgaXMgcmV0dXJuZWQuCi1jbGFzcyBFeHRlbnNpb25zR0wg
ewotcHVibGljOgotICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTCgpID0gZGVmYXVsdDsKLQotICAg
IC8vIFN1cHBvcnRlZCBleHRlbnNpb25zOgotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfZm9ybWF0
X0JHUkE4ODg4Ci0gICAgLy8gICBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYQotICAgIC8vICAgR0xf
QVJCX3JvYnVzdG5lc3MKLSAgICAvLyAgIEdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28g
LyBHTF9PRVNfdGV4dHVyZV9ucG90Ci0gICAgLy8gICBHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5j
aWwgLyBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwKLSAgICAvLyAgIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQgLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIC8vICAg
R0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQotICAgIC8vICAgR0xfT0VTX3Rl
eHR1cmVfZmxvYXQKLSAgICAvLyAgIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhcgotICAgIC8v
ICAgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdAotICAgIC8vICAgR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdF9saW5lYXIKLSAgICAvLyAgIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwotICAg
IC8vICAgR0xfT0VTX3JnYjhfcmdiYTgKLSAgICAvLyAgIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0Ci0gICAgLy8gICBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Ci0gICAgLy8gICBHTF9BTkdM
RV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKLSAgICAvLyAgIEdMX0FSQl90ZXh0dXJlX3JlY3Rh
bmdsZSAob25seSB0aGUgc3Vic2V0IHJlcXVpcmVkIHRvCi0gICAgLy8gICAgIGltcGxlbWVudCBJ
T1N1cmZhY2UgYmluZGluZzsgaXQncyByZWNvbW1lbmRlZCB0byBzdXBwb3J0Ci0gICAgLy8gICAg
IHRoaXMgb25seSBvbiBNYWMgT1MgWCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIGNvZGUgZGVwZW5k
ZW50Ci0gICAgLy8gICAgIG9uIHRoaXMgZXh0ZW5zaW9uKQotICAgIC8vICAgR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fZHh0MQotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0YwotICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCi0gICAg
Ly8gICBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQotICAgIC8vICAgR0xfSU1H
X3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKLSAgICAvLyAgIEdMX0tIUl90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2FzdGNfaGRyCi0gICAgLy8gICBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2xkcgotICAgIC8vICAgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0gICAgLy8gICBH
TF9FWFRfZGVidWdfbWFya2VyCi0gICAgLy8gICBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhU
X2RyYXdfYnVmZmVycwotICAgIC8vICAgR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIC8v
ICAgR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLQotICAgIC8vIFRha2VzIGZ1bGwgbmFt
ZSBvZiBleHRlbnNpb247IGZvciBleGFtcGxlLAotICAgIC8vICJHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODgiLgotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSA9
IDA7Ci0KLSAgICAvLyBDZXJ0YWluIE9wZW5HTCBhbmQgV2ViR0wgaW1wbGVtZW50YXRpb25zIG1h
eSBzdXBwb3J0IGVuYWJsaW5nCi0gICAgLy8gZXh0ZW5zaW9ucyBsYXppbHkuIFRoaXMgbWV0aG9k
IG1heSBvbmx5IGJlIGNhbGxlZCB3aXRoCi0gICAgLy8gZXh0ZW5zaW9uIG5hbWVzIGZvciB3aGlj
aCBzdXBwb3J0cyByZXR1cm5zIHRydWUuCi0gICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgPSAwOwotCi0gICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lv
bjogZm9yIGV4YW1wbGUsICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgotICAgIC8v
IENoZWNrcyB0byBzZWUgd2hldGhlciB0aGUgZ2l2ZW4gZXh0ZW5zaW9uIGlzIGFjdHVhbGx5IGVu
YWJsZWQgKHNlZSBlbnN1cmVFbmFibGVkKS4KLSAgICAvLyBIYXMgbm8gb3RoZXIgc2lkZS1lZmZl
Y3RzLgotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgPSAwOwotCi0g
ICAgLy8gRVhUX3NSR0IgZm9ybWF0cwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JH
Ql9FWFQgPSAweDhDNDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0FMUEhB
X0VYVCA9IDB4OEM0MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFNSR0I4X0FMUEhB
OF9FWFQgPSAweDhDNDM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVCA9IDB4ODIxMDsKLQotICAgIC8vIEVYVF9i
bGVuZF9taW5tYXggZW51bXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1JTl9FWFQg
PSAweDgwMDc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRVhUID0gMHg4MDA4
OwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGVudW1zCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBCR1JBX0VYVCA9IDB4ODBFMTsKLQotICAgIC8vIEdMX0FS
Ql9yb2J1c3RuZXNzIGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBHVUlMVFlf
Q09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1NDsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIFVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTU7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT05URVhUX1JPQlVTVF9BQ0NFU1MgPSAweDkwRjM7Ci0K
LSAgICAvLyBHTF9FWFQvT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIGVudW1zCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBERVBUSDI0X1NURU5DSUw4ID0gMHg4OEYwOwotCi0gICAgLy8g
R0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBuYW1lcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gUkVBRF9GUkFNRUJVRkZFUiA9IDB4OENBODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIERSQVdfRlJBTUVCVUZGRVIgPSAweDhDQTk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQTY7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQUE7Ci0KLSAg
ICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBuYW1lcwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVMgPSAweDhDQUI7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExF
ID0gMHg4RDU2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1NBTVBMRVMgPSAw
eDhENTc7Ci0KLSAgICAvLyBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRU5ERVJCVUZGRVJfU0FNUExFU19JTUcgPSAw
eDkxMzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX01VTFRJU0FNUExFX0lNRyA9IDB4OTEzNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIE1BWF9TQU1QTEVTX0lNRyA9IDB4OTEzNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIFRFWFRVUkVfU0FNUExFU19JTUcgPSAweDkxMzY7Ci0KLSAgICAvLyBHTF9PRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQUdN
RU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTID0gMHg4QjhCOwotCi0gICAgLy8gR0xfT0VT
X3JnYjhfcmdiYTggbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJHQjhfT0VT
ID0gMHg4MDUxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCQThfT0VTID0gMHg4
MDU4OwotCi0gICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgbmFtZXMKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIFZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNTsK
LQotICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9
IDB4OTNBMDsKLQotICAgIC8vIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZQotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCID0gIDB4ODRGNTsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCID0g
MHg4NEY2OwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQotICAgIC8v
IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgPSAweDgzRjA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNG
MTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDNfRVhUID0gMHg4M0YyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQgPSAweDgzRjM7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjX3NyZ2IKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4QzRDOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgPSAweDhDNEQ7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQzX0VYVCA9IDB4OEM0RTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUID0gMHg4QzRGOwotCi0gICAgLy8gR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IEVUQzFfUkdCOF9PRVMgPSAweDhENjQ7Ci0KLSAgICAvLyBXRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfZXRjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1IxMV9FQUMg
PSAweDkyNzA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05F
RF9SMTFfRUFDID0gMHg5MjcxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SRzExX0VBQyA9IDB4OTI3MjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDID0gMHg5MjczOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0I4X0VUQzIgPSAweDkyNzQ7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0VUQzIgPSAweDkyNzU7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9F
VEMyID0gMHg5Mjc2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIgPSAweDkyNzc7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDID0gMHg5Mjc4OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMg
PSAweDkyNzk7Ci0KLSAgICAvLyBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lN
RyA9IDB4OEMwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
X1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMjsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4
QzAzOwotCi0gICAgLy8gR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQl9BTUQgPSAweDhDOTI7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FM
UEhBX0FNRCA9IDB4OEM5MzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCA9IDB4ODdFRTsKLQotICAgIC8vIEdM
X0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyCi0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSID0gMHg5M0IwOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiA9IDB4OTNC
MTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4
NV9LSFIgPSAweDkzQjI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VE
X1JHQkFfQVNUQ182eDVfS0hSID0gMHg5M0IzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiA9IDB4OTNCNDsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIgPSAweDkzQjU7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hS
ID0gMHg5M0I2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg4X0tIUiA9IDB4OTNCNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSID0gMHg5M0I4OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIgPSAweDkzQjk7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiA9
IDB4OTNCQTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9B
U1RDXzEweDEwX0tIUiA9IDB4OTNCQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiA9IDB4OTNCQzsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiA9IDB4OTNCRDsKLQot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q180eDRfS0hSID0gMHg5M0QwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSID0gMHg5M0QxOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSID0gMHg5
M0QyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ182eDVfS0hSID0gMHg5M0QzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSID0gMHg5M0Q0OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hS
ID0gMHg5M0Q1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ184eDZfS0hSID0gMHg5M0Q2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSID0gMHg5M0Q3OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MHg1X0tIUiA9IDB4OTNEODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIgPSAweDkzRDk7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSID0gMHg5
M0RBOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHgxMF9LSFIgPSAweDkzREI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNEQzsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4
MTJfS0hSID0gMHg5M0REOwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhU
ID0gMHg4REJCOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdO
RURfUkVEX1JHVEMxX0VYVCA9IDB4OERCQzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAw
eDhEQkU7Ci0KLSAgICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4
NEZFOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX1RFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUID0gMHg4NEZGOwotCi0gICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VY
VF9kcmF3X2J1ZmZlcnMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9EUkFXX0JV
RkZFUlNfRVhUID0gMHg4ODI0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19C
VUZGRVIwX0VYVCA9IDB4ODgyNTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
QlVGRkVSMV9FWFQgPSAweDg4MjY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjJfRVhUID0gMHg4ODI3OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJB
V19CVUZGRVIzX0VYVCA9IDB4ODgyODsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSNF9FWFQgPSAweDg4Mjk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBE
UkFXX0JVRkZFUjVfRVhUID0gMHg4ODJBOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVI2X0VYVCA9IDB4ODgyQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IERSQVdfQlVGRkVSN19FWFQgPSAweDg4MkM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjhfRVhUID0gMHg4ODJEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gRFJBV19CVUZGRVI5X0VYVCA9IDB4ODgyRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIERSQVdfQlVGRkVSMTBfRVhUID0gMHg4ODJGOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gRFJBV19CVUZGRVIxMV9FWFQgPSAweDg4MzA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBEUkFXX0JVRkZFUjEyX0VYVCA9IDB4ODgzMTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIERSQVdfQlVGRkVSMTNfRVhUID0gMHg4ODMyOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxNF9FWFQgPSAweDg4MzM7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE1X0VYVCA9IDB4ODgzNDsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgPSAweDhDREY7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMF9FWFQgPSAweDhDRTA7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMV9FWFQgPSAw
eDhDRTE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMl9F
WFQgPSAweDhDRTI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hN
RU5UM19FWFQgPSAweDhDRTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9B
VFRBQ0hNRU5UNF9FWFQgPSAweDhDRTQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UNV9FWFQgPSAweDhDRTU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UNl9FWFQgPSAweDhDRTY7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UN19FWFQgPSAweDhDRTc7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UOF9FWFQgPSAweDhDRTg7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UOV9FWFQgPSAweDhDRTk7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTBfRVhUID0gMHg4
Q0VBOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDExX0VY
VCA9IDB4OENFQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1F
TlQxMl9FWFQgPSAweDhDRUM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9B
VFRBQ0hNRU5UMTNfRVhUID0gMHg4Q0VEOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09MT1JfQVRUQUNITUVOVDE0X0VYVCA9IDB4OENFRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxNV9FWFQgPSAweDhDRUY7Ci0KLSAgICAvLyBHTF9LSFJf
cGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TVBMRVRJT05fU1RBVFVTX0tIUiA9IDB4OTFCMTsKLQotICAgIC8vIEdMX0FOR0xFX3JlcXVlc3Rf
ZXh0ZW5zaW9uCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSRVFVRVNUQUJMRV9FWFRF
TlNJT05TX0FOR0xFID0gMHg5M0E4OwotCi0gICAgLy8gV2ViR0wgZnVuY3Rpb25zLgotCi0gICAg
Ly8gR0xfQVJCX3JvYnVzdG5lc3MKLSAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2aW9y
IGRpZmZlcnMgZnJvbSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKLSAgICAvLyBzcGVjaWZpY2F0aW9u
IGluIHRoZSBmb2xsb3dpbmcgd2F5OgotICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IG5v
dCByZXNldCB0aGUgZXJyb3Igc3RhdGUgZHVyaW5nIHRoaXMgY2FsbC4KLSAgICAvLyBJZiBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3IsIGl0IHNob3VsZCBjb250aW51
ZQotICAgIC8vIHJldHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVzdG9yaW5nIHRoZSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCBpcyBoYW5kbGVkCi0gICAgLy8gZXh0ZXJuYWxseS4KLSAgICB2aXJ0
dWFsIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKLQotICAgIC8vIEdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQotICAgIHZpcnR1YWwgU3RyaW5nIGdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7Ci0KLSAgICAv
LyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwot
Ci0gICAgLy8gT3RoZXIgZnVuY3Rpb25zLgotI2lmICFVU0UoQU5HTEUpCi0gICAgLy8gRVhUIFJv
YnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIKLSAgICB2aXJ0dWFsIHZv
aWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9IDA7Ci0KLSNlbmRpZgotCi19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZDYwYzM3YTlmZmU1YzJjYmUwMzY2ZTI3
NmQ4NDg4NjY1YmQ2ZTIwYi4uYTE0MDkwYTdmOThkNGFmY2FlMzU4MGRkYzhlNzllNjE5MzQzZDk1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiRm9ybWF0Q29udmVydGVyLmgi
CiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC0zNzYsMTMg
KzM3NSwxMyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBh
cmFtZXRlcnMoR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bQogICAgICAgICBicmVhazsKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
UkdCX0lOVEVHRVI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUOgogICAgICAgICAqY29tcG9uZW50c1BlclBpeGVs
ID0gMzsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQToK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBX0lOVEVHRVI6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkJHUkFfRVhUOiAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6QkdSQV9FWFQ6IC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICAqY29tcG9u
ZW50c1BlclBpeGVsID0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmlu
ZGV4IGI1ZjVlY2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMuLjFjY2VlYjUzNzM1
MzhkNTM1MjNmNDlkY2UyYTA2ODJlNDdkZmM4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjc0LDYgKzY3NCwx
NDUgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9SRUNU
QU5HTEVfQVJCID0gMHg4NEY1OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVS
RV9CSU5ESU5HX1JFQ1RBTkdMRV9BUkIgPSAweDg0RjY7CiAKKyAgICAvLyBFWFRfc1JHQiBmb3Jt
YXRzCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0VYVCA9IDB4OEM0MDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFNSR0JfQUxQSEFfRVhUID0gMHg4QzQyOworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JHQjhfQUxQSEE4X0VYVCA9IDB4OEM0MzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1Jf
RU5DT0RJTkdfRVhUID0gMHg4MjEwOworCisgICAgLy8gRVhUX2JsZW5kX21pbm1heCBlbnVtcwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUlOX0VYVCA9IDB4ODAwNzsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9FWFQgPSAweDgwMDg7CisKKyAgICAvLyBHTF9FWFRf
dGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggZW51bXMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIEJHUkFfRVhUID0gMHg4MEUxOworCisgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MgZW51bXMK
KyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9
IDB4ODI1MzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIElOTk9DRU5UX0NPTlRFWFRf
UkVTRVRfQVJCID0gMHg4MjU0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVU5LTk9X
Tl9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1NTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTlRFWFRfUk9CVVNUX0FDQ0VTUyA9IDB4OTBGMzsKKworICAgIC8vIEdMX09FU19zdGFu
ZGFyZF9kZXJpdmF0aXZlcyBuYW1lcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJB
R01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMgPSAweDhCOEI7CisKKyAgICAvLyBHTF9P
RVNfcmdiOF9yZ2JhOCBuYW1lcworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCOF9P
RVMgPSAweDgwNTE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSR0JBOF9PRVMgPSAw
eDgwNTg7CisKKyAgICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhf
QU5HTEUgPSAweDkzQTA7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQx
CisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
ID0gMHg4M0YxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUM19FWFQgPSAweDgzRjI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNGMzsKKworICAgIC8vIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgPSAweDhDNEM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCA9IDB4
OEM0RDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUID0gMHg4QzRFOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQgPSAweDhDNEY7CisKKyAgICAvLyBH
TF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gRVRDMV9SR0I4X09FUyA9IDB4OEQ2NDsKKworICAgIC8vIEdMX0lNR190ZXh0dXJl
X2NvbXByZXNzaW9uX3B2cnRjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAwOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1H
ID0gMHg4QzAyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JB
X1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDM7CisKKyAgICAvLyBHTF9BTURfY29tcHJlc3NlZF9B
VENfdGV4dHVyZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENf
UkdCX0FNRCA9IDB4OEM5MjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EID0gMHg4QzkzOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1E
ID0gMHg4N0VFOworCisgICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIK
KyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9L
SFIgPSAweDkzQjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JH
QkFfQVNUQ181eDRfS0hSID0gMHg5M0IxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiA9IDB4OTNCMjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIgPSAweDkzQjM7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSID0g
MHg5M0I0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FT
VENfOHg1X0tIUiA9IDB4OTNCNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIgPSAweDkzQjY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSID0gMHg5M0I3OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgPSAweDkz
Qjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18x
MHg2X0tIUiA9IDB4OTNCOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSID0gMHg5M0JBOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSID0gMHg5M0JCOworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSID0gMHg5
M0JDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENf
MTJ4MTJfS0hSID0gMHg5M0JEOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIgPSAweDkzRDA7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIgPSAw
eDkzRDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzV4NV9LSFIgPSAweDkzRDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgPSAweDkzRDM7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9L
SFIgPSAweDkzRDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIgPSAweDkzRDU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIgPSAweDkzRDY7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
Xzh4OF9LSFIgPSAweDkzRDc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSID0gMHg5M0Q4OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiA9IDB4
OTNEOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4OF9LSFIgPSAweDkzREE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiA9IDB4OTNEQjsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4
MTBfS0hSID0gMHg5M0RDOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQ7CisKKyAgICAvLyBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUID0gMHg4REJDOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUID0g
MHg4REJEOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURf
UkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRTsKKworICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkY7CisKKyAgICAvLyBHTF9B
UkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gTUFYX0RSQVdfQlVGRkVSU19FWFQgPSAweDg4MjQ7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjBfRVhUID0gMHg4ODI1OworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxX0VYVCA9IDB4ODgyNjsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMl9FWFQgPSAweDg4Mjc7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjNfRVhUID0gMHg4ODI4OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI0X0VYVCA9IDB4ODgyOTsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNV9FWFQgPSAweDg4MkE7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjZfRVhUID0gMHg4ODJCOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI3X0VYVCA9IDB4ODgyQzsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSOF9FWFQgPSAweDg4MkQ7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjlfRVhUID0gMHg4ODJFOworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMF9FWFQgPSAweDg4MkY7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjExX0VYVCA9IDB4ODgzMDsK
KyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTJfRVhUID0gMHg4ODMx
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxM19FWFQgPSAweDg4
MzI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE0X0VYVCA9IDB4
ODgzMzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTVfRVhUID0g
MHg4ODM0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0NPTE9SX0FUVEFDSE1F
TlRTX0VYVCA9IDB4OENERjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FU
VEFDSE1FTlQwX0VYVCA9IDB4OENFMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENP
TE9SX0FUVEFDSE1FTlQxX0VYVCA9IDB4OENFMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTE9SX0FUVEFDSE1FTlQyX0VYVCA9IDB4OENFMjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQzX0VYVCA9IDB4OENFMzsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCA9IDB4OENFNDsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ1X0VYVCA9IDB4OENFNTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ2X0VYVCA9IDB4OENF
NjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ3X0VYVCA9
IDB4OENFNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQ4
X0VYVCA9IDB4OENFODsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFD
SE1FTlQ5X0VYVCA9IDB4OENFOTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9S
X0FUVEFDSE1FTlQxMF9FWFQgPSAweDhDRUE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT0xPUl9BVFRBQ0hNRU5UMTFfRVhUID0gMHg4Q0VCOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEyX0VYVCA9IDB4OENFQzsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxM19FWFQgPSAweDhDRUQ7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUID0gMHg4Q0VFOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9IDB4
OENFRjsKKworICAgIC8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQorICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUExFVElPTl9TVEFUVVNfS0hSID0gMHg5MUIxOworCisg
ICAgLy8gR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNpb24KKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIFJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgPSAweDkzQTg7CisKICAgICAvLyBB
dHRlbXB0IHRvIGVudW1lcmF0ZSBhbGwgcG9zc2libGUgbmF0aXZlIGltYWdlIGZvcm1hdHMgdG8K
ICAgICAvLyByZWR1Y2UgdGhlIGFtb3VudCBvZiB0ZW1wb3JhcnkgYWxsb2NhdGlvbnMgZHVyaW5n
IHRleHR1cmUKICAgICAvLyB1cGxvYWRpbmcuIFRoaXMgZW51bSBtdXN0IGJlIHB1YmxpYyBiZWNh
dXNlIGl0IGlzIGFjY2Vzc2VkCkBAIC0xMjMzLDYgKzEzNzIsMzEgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3Vu
dHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSA9IDA7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBtYXkg
b25seSBiZSBjYWxsZWQgd2l0aCBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJl
dHVybnMgdHJ1ZS4KKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBTdHJpbmcmKSA9IDA7CisKKyAgICAvLyBUYWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBm
b3IgZXhhbXBsZSwgIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCisgICAgLy8gQ2hl
Y2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBnaXZlbiBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxl
ZCAoc2VlIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpLgorICAgIC8vIEhhcyBubyBvdGhlciBzaWRl
LWVmZmVjdHMuCisgICAgdmlydHVhbCBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJp
bmcmKSA9IDA7CisKKyAgICAvLyBHTF9BUkJfcm9idXN0bmVzcworICAgIC8vIE5vdGU6IFRoaXMg
bWV0aG9kJ3MgYmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcworICAg
IC8vIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6CisgICAgLy8gVGhlIGltcGxl
bWVudGF0aW9uIG11c3Qgbm90IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcgdGhpcyBjYWxs
LgorICAgIC8vIElmIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBhbiBlcnJvciwg
aXQgc2hvdWxkIGNvbnRpbnVlCisgICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVycm9yLiBSZXN0
b3JpbmcgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKKyAgICAvLyBleHRl
cm5hbGx5LgorICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
PSAwOworCisgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCisgICAgdmly
dHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3QpID0gMDsKKworICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9FWFRfZHJhd19idWZm
ZXJzCisgICAgdmlydHVhbCB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPiBidWZzKSA9IDA7CisKICAgICAvLyA9PT09PT09PT09IE90aGVyIGZ1bmN0aW9ucy4KICAg
ICBHQ0dMZmxvYXQgZ2V0RmxvYXQoR0NHTGVudW0gcG5hbWUpOwogICAgIEdDR0xib29sZWFuIGdl
dEJvb2xlYW4oR0NHTGVudW0gcG5hbWUpOwpAQCAtMTI0MywxMSArMTQwNyw2IEBAIHB1YmxpYzoK
ICAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25z
dCB7IHJldHVybiBtX2F0dHJzOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsg
fQogCi0gICAgLy8gU3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9i
amVjdCwgdGhvdWdoIG5vdAotICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNl
c3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCi0gICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVz
dCBjYWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bwotICAgIC8vIGRldGVybWluZSB0aGlz
LgotICAgIHZpcnR1YWwgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCAyMzNiMGRmNzU2ZWNkZDRiYzkyZDkwYmFh
ZjAxNTNjYzZhNTk1ZmY3Li44ZjVmZjFhZTc2MDBmNWRjOTAwOWQ4NDU1Y2NmZjkxNWJjYTFlNjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC00Niw3OCAr
NDYsNyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpYwogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgPSBkZWZhdWx0
OwogCi1FeHRlbnNpb25zR0wmIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRF
eHRlbnNpb25zKCkKLXsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2U6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAg
ICByZXR1cm4gY29udGV4dEF0dHJpYnV0ZXMoKS53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250
ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMjsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Om1hcmtDb250
ZXh0Q2hhbmdlZCgpCi17Ci0gICAgLy8gRklYTUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRo
aXMgc3RhdGUuCi0gICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKSB7Ci0gICAgICAgIG5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRl
eHRDaGFuZ2VkKCk7Ci0gICAgfQotfQotCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKTsKLSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0
cmluZyYgbmFtZSkKLXsKLSAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwotICAgIGlmIChtX3Jl
cXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAhbV9lbmFibGVkRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKG5hbWUp
OwotICAgICAgICBtX2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKLSAgICB9Ci19CiAKLWJv
b2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZChjb25zdCBTdHJp
bmcmIG5hbWUpCi17Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKLSAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKLXsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lv
biA6IGF2YWlsYWJsZUV4dGVuc2lvbnMuc3BsaXQoJyAnKSkKLSAgICAgICAgbV9hdmFpbGFibGVF
eHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVx
dWVzdGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCi0gICAgICAgIG1fcmVxdWVzdGFibGVFeHRl
bnNpb25zLmFkZChleHRlbnNpb24pOwotfQotCi0jaWYgIVVTRShBTkdMRSkKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQsIEdDR0xp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwg
R0NHTHZvaWQqKQotewotfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
OjpnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xmbG9h
dCopCi17Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmdldG5V
bmlmb3JtaXZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopCi17Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmICFQTEFURk9STShDT0NPQSkK
LSNlbmRpZgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApp
bmRleCA1ZTVjMDliODcyMDQzZWEwZmEyYTk2N2Y0ZjM5OTNiYWQ4MGE3OTQxLi43OGMxMDA3M2M5
MDhlNDFkYmUwNGZkNTA3YWY4MWQ0MGU4YzBjYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0z
OSw0MiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhpcyBpbXBsZW1lbnRzIHRo
ZSBwYXJ0cyB0aGF0IGFyZSB1c2luZyBXZWJDb3JlIGludGVybmFsIGZ1bmN0aW9uYWxpdHk6CiAv
LyAtIERyYXdpbmcgYnVmZmVyIHRyYWNraW5nIG1hbmFnZW1lbnQuCiAvLyAtIENvbXBvc2l0aW5n
IHN1cHBvcnQuCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCwgcHVibGljIEV4dGVuc2lvbnNHTCB7
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSA6
IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTCB7CiBwdWJsaWM6CiAgICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CiAg
ICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKCkgb3ZlcnJpZGU7CiAKLSAgICAv
LyBPdGhlciBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCi0gICAgdXNpbmcg
R3JhcGhpY3NDb250ZXh0R0w6OmlzRW5hYmxlZDsKLSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVu
c2lvbnMoKSBmaW5hbDsKLSAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFs
OwotICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgbWFy
a0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CiAKLSAgICAvLyBPdGhlciBFeHRlbnNpb25HTCBvdmVy
cmlkZXMuCi0gICAgdXNpbmcgRXh0ZW5zaW9uc0dMOjppc0VuYWJsZWQ7Ci0gICAgYm9vbCBzdXBw
b3J0cyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3Qg
U3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7
Ci0KLSNpZiAhVVNFKEFOR0xFKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGludCwgR0NH
TGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVp
LCBHQ0dMdm9pZCopIGZpbmFsOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwg
R0NHTGludCwgR0NHTHNpemVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlm
b3JtaXZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopIGZpbmFsOwot
I2VuZGlmCi0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBh
dmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7
Ci0gICAgdmlydHVhbCB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOwotCi1wcml2YXRlOgot
ICAgIC8vIEd1YXJkZWQgYnkgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKS4KLSAgICBIYXNoU2V0PFN0
cmluZz4gbV9hdmFpbGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVl
c3RhYmxlRXh0ZW5zaW9uczsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2VuYWJsZWRFeHRlbnNp
b25zOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjZDA0OWM1MTA5MjY2MTQ1ZGU5MTE3Nzk3MDQzZTk1ZWJiOTg3YTc5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYg
RU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUu
aCIKLQotI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMQU5HTEUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FeHRlbnNpb25zR0xBTkdMRTo6
RXh0ZW5zaW9uc0dMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBTkdMRSogY29udGV4dCkKLSAgICA6
IG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKQotICAgICwgbV9jb250ZXh0
KGNvbnRleHQpCi17Ci19Ci0KLUV4dGVuc2lvbnNHTEFOR0xFOjp+RXh0ZW5zaW9uc0dMQU5HTEUo
KSA9IGRlZmF1bHQ7Ci0KLWJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzKGNvbnN0IFN0
cmluZyYgbmFtZSkKLXsKLSAgICBpZiAoIW1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25z
KSB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lv
bnMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cHBvcnRzRXh0ZW5zaW9uKG5hbWUpOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICAvLyBFbmFibGUgc3VwcG9ydCBpbiBBTkdMRSAoaWYgbm90IGVuYWJsZWQgYWxyZWFk
eSkuCi0gICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYmICFt
X2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
R0xfUmVxdWVzdEV4dGVuc2lvbkFOR0xFKG5hbWUuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBt
X2VuYWJsZWRFeHRlbnNpb25zLmFkZChuYW1lKTsKLQotICAgICAgICBpZiAobmFtZSA9PSAiR0xf
Q0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpCi0gICAgICAgICAgICBtX3dlYmds
Q29sb3JCdWZmZXJGbG9hdFJHQkEgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChuYW1lID09ICJH
TF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKQotICAgICAgICAgICAgbV93ZWJn
bENvbG9yQnVmZmVyRmxvYXRSR0IgPSB0cnVlOwotICAgIH0KLX0KLQotYm9vbCBFeHRlbnNpb25z
R0xBTkdMRTo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSk7Ci19Ci0KLUdMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCkKLXsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VS
Uk9SOwotfQotCi1TdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKLXsKLSAgICBpZiAoIW1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAg
IGludCBzb3VyY2VMZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFO
U0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKLQotICAgIGlmICghc291cmNlTGVu
Z3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8R0xjaGFyPiBu
YW1lKHNvdXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhf
QU5HTEUgaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBHQ0dMaW50IHJldHVybmVkTGVu
Z3RoID0gMDsKLSAgICBHTF9HZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLCBz
b3VyY2VMZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkpOwotICAgIGlmICghcmV0
dXJuZWRMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIC8vIHJldHVy
bmVkTGVuZ3RoIGRvZXMgbm90IGluY2x1ZGUgdGhlIG51bGwgdGVybWluYXRvci4KLSAgICBBU1NF
UlQocmV0dXJuZWRMZW5ndGggPT0gc291cmNlTGVuZ3RoIC0gMSk7Ci0gICAgcmV0dXJuIFN0cmlu
ZyhuYW1lLmRhdGEoKSwgcmV0dXJuZWRMZW5ndGgpOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCi17Ci0gICAgU3RyaW5nIGV4dGVu
c2lvbnNTdHJpbmcgPSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCi0gICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRF
TlNJT05TX0FOR0xFKSkpOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0
cmluZy5zcGxpdCgnICcpKQotICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0
ZW5zaW9uKTsKLSAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7Ci19
Ci0KLWJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5h
bWUpIHx8IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykKLXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEdMX0RyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVm
cy5kYXRhKTsKLX0KLQotU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRFeHRlbnNpb25zKCkK
LXsKLSAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dl
dFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOwotfQotCi1HQ0dMZW51bSBFeHRlbnNpb25zR0xBTkdM
RTo6YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpCi17Ci0gICAgLy8gVGhlIGltcGxl
bWVudGF0aW9uIG9mIFdFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCBmb3IgV2ViR0wgMS4wIC8gRVMg
Mi4wIHJlcXVpcmVzIGEgc2l6ZWQKLSAgICAvLyBpbnRlcm5hbCBmb3JtYXQuIEFkanVzdCBpdCBp
ZiBuZWNlc3NhcnkgYXQgdGhpcyBsb3dlc3QgbGV2ZWwuCi0gICAgaWYgKHR5cGUgPT0gR0xfRkxP
QVQpIHsKLSAgICAgICAgaWYgKG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSAmJiBmb3JtYXQg
PT0gR0xfUkdCQSAmJiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0JBKQotICAgICAgICAgICAgcmV0
dXJuIEdMX1JHQkEzMkY7Ci0gICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiAm
JiBmb3JtYXQgPT0gR0xfUkdCICYmIGludGVybmFsZm9ybWF0ID09IEdMX1JHQikKLSAgICAgICAg
ICAgIHJldHVybiBHTF9SR0IzMkY7Ci0gICAgfQotICAgIHJldHVybiBpbnRlcm5hbGZvcm1hdDsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKSAm
JiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzk3OGUyZjlmNjRiOWY2MTVjM2IzYTg1YzQzYTNjYTA1NGVkNzVjYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCi0KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOwotCi1jbGFzcyBFeHRlbnNpb25zR0xBTkdMRSA6IHB1YmxpYyBFeHRlbnNpb25z
R0wgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIC8vIFRoaXMg
Y2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRSBpbXBsZW1lbnRhdGlvbnMuCi0gICAgZXhwbGljaXQgRXh0ZW5zaW9uc0dMQU5HTEUoR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRSopOwotICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTEFOR0xFKCk7
Ci0KLSAgICAvLyBFeHRlbnNpb25zR0wgbWV0aG9kcy4KLSAgICBib29sIHN1cHBvcnRzKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKLQotICAg
IHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsK
LQotICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBPbmx5IGZvciBub24tV2ViR0wgMi4wIGNvbnRleHRz
LgotICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsKLQotcHJp
dmF0ZToKLSAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwotICAgIFN0
cmluZyBnZXRFeHRlbnNpb25zKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWls
YWJsZUV4dGVuc2lvbnMoKTsKLSAgICBib29sIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNp
b25zOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7Ci0gICAgSGFz
aFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX2VuYWJsZWRFeHRlbnNpb25zOwotCi0gICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS4KLSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKiBtX2NvbnRl
eHQ7Ci0KLSAgICAvLyBXaGV0aGVyIHRoZSBXZWJHTCAxLjAtcmVsYXRlZCBmbG9hdGluZy1wb2lu
dCByZW5kZXJhYmlsaXR5IGV4dGVuc2lvbnMgaGF2ZSBiZWVuIGVuYWJsZWQuCi0gICAgYm9vbCBt
X3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdFJHQkEgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA0OGY3MzQyZjNlMDkwMWZl
NDY3MmNhNWI1ZTAzMjFlODQxNmE5NjZkLi5jNWM2YmZhNTc1ZTk0OTQ2NjEwMGUxNjUzMTgzMjgz
YTA4YTBkYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogCiAjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQU5HTEVVdGls
aXRpZXMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtNzEsNiArNzAsMzAgQEAgc3RhdGljIHZvaWQgd2lwZUFs
cGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXgKIH0KICNlbmRpZgogCisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW5pdGlh
bGl6ZSgpCit7CisgICAgaWYgKCFwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsK
KyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkK
KyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIGV4dGVu
c2lvbnNTdHJpbmcgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0
U3RyaW5nKEdMX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZm9yIChhdXRv
JiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgIG1fcmVx
dWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOworICAgIHJldHVybiBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUlu
aXRpYWxpemVDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIHJldHVybiB0cnVl
OworfQorCiBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkcmF3aW5nQnVmZmVyVGV4
dHVyZVRhcmdldCgpCiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQpAQCAtMzU0LDcgKzM3Nyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdD
R0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9p
ZD4gcGl4ZWxzKQogewogICAgIGlmICghbV9pc0ZvcldlYkdMMikKLSAgICAgICAgaW50ZXJuYWxm
b3JtYXQgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zR0xBTkdMRSY+KGdldEV4dGVuc2lvbnMoKSku
YWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0LCBmb3JtYXQs
IHR5cGUpOworICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IGFkanVzdFdlYkdMMVRleHR1cmVJbnRl
cm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAgICAgR0xfVGV4SW1hZ2UyRFJvYnVz
dEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKQEAgLTQyNSwx
MyArNDQ4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpjbGVhckRlcHRoKEdDR0xj
bGFtcGYgZGVwdGgpCiAgICAgR0xfQ2xlYXJEZXB0aGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlcHRo
KSk7CiB9CiAKLUV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0RXh0ZW5z
aW9ucygpCi17Ci0gICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMQU5HTEU+KHRoaXMpOwotICAgIHJldHVybiAqbV9leHRl
bnNpb25zOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7
CiAgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
ZGF0YS5idWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNl
KTsKQEAgLTQ4MywxMiArNDk5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVh
ZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkCiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciog
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewotICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5z
aW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVj
dG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0
aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBp
bml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCog
d2lsbAogICAgIC8vIHVzZSB0byB0dXJuIG9uIGZlYXR1cmUgZmxhZ3MuCi0gICAgaWYgKGV4dGVu
c2lvbnMuc3VwcG9ydHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICBl
eHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewor
ICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bik7CiAgICAgICAgIG1faW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NU
RU5DSUw4X09FUzsKICAgICB9IGVsc2UKICAgICAgICAgbV9pbnRlcm5hbERlcHRoU3RlbmNpbEZv
cm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDE2OwpAQCAtNTA1LDE3ICs1MjAsMTcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBw
YWNrZWREZXB0aFN0ZW5jaWwKIAogICAgIGlmIChhdHRycy5hbnRpYWxpYXMpIHsKICAgICAgICAg
Ly8gRklYTUU6IG11c3QgYWRqdXN0IHRoaXMgd2hlbiB1cGdyYWRpbmcgdG8gV2ViR0wgMi4wIC8g
T3BlbkdMIEVTIDMuMCBzdXBwb3J0LgotICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikgfHwgIWV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygi
R0xfT0VTX3JnYjhfcmdiYTgiKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpIHx8ICFzdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpIHx8ICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X3JnYjhfcmdiYTgiKSkgewogICAgICAgICAgICAgYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CiAg
ICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIik7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQo
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5z
dXJlRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAg
ICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Iik7
CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIp
IHsKICAgICAgICAgLy8gTmVlZGVkIGZvciBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1ZSBzdXBw
b3J0IHdpdGhvdXQgYW50aWFsaWFzaW5nLgotICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJs
ZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpOwogICAgIH0KIH0KIApAQCAtMjg5
MCw2ICsyOTA1LDY0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMCiAgICAgR0xfTXVsdGlEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9pbnRlcnMu
ZGF0YSgpLCBpbnN0YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOwogfQogCitib29sIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1f
cmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIC8vIEVuYWJsZSBzdXBwb3J0IGluIEFOR0xFIChpZiBub3QgZW5hYmxlZCBhbHJl
YWR5KS4KKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYg
IW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgR0xfUmVxdWVz
dEV4dGVuc2lvbkFOR0xFKG5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBtX2VuYWJsZWRF
eHRlbnNpb25zLmFkZChuYW1lKTsKKworICAgICAgICBpZiAobmFtZSA9PSAiR0xfQ0hST01JVU1f
Y29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpCisgICAgICAgICAgICBtX3dlYmdsQ29sb3JCdWZm
ZXJGbG9hdFJHQkEgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChuYW1lID09ICJHTF9DSFJPTUlV
TV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKQorICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVm
ZmVyRmxvYXRSR0IgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjppc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0ZW5z
aW9ucy5jb250YWlucyhuYW1lKTsKK30KKworR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dEdMOjpOT19FUlJPUjsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBpbnQgc291cmNlTGVuZ3RoID0gZ2V0U2hhZGVyaShzaGFkZXIsIEdMX1RSQU5TTEFURURf
U0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUpOworCisgICAgaWYgKCFzb3VyY2VMZW5ndGgpCisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUoc291
cmNlTGVuZ3RoKTsgLy8gR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSBp
bmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgorICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAw
OworICAgIEdMX0dldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIsIHNvdXJjZUxl
bmd0aCwgJnJldHVybmVkTGVuZ3RoLCBuYW1lLmRhdGEoKSk7CisgICAgaWYgKCFyZXR1cm5lZExl
bmd0aCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgLy8gcmV0dXJuZWRMZW5n
dGggZG9lcyBub3QgaW5jbHVkZSB0aGUgbnVsbCB0ZXJtaW5hdG9yLgorICAgIEFTU0VSVChyZXR1
cm5lZExlbmd0aCA9PSBzb3VyY2VMZW5ndGggLSAxKTsKKyAgICByZXR1cm4gU3RyaW5nKG5hbWUu
ZGF0YSgpLCByZXR1cm5lZExlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCit7CisgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR0xfRHJh
d0J1ZmZlcnNFWFQoYnVmcy5idWZTaXplLCBidWZzLmRhdGEpOworfQorCiBib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OndhaXRBbmRVcGRhdGVPbGRlc3RGcmFtZSgpCiB7CiAgICAgc2l6ZV90
IG9sZGVzdEZyYW1lQ29tcGxldGlvbkZlbmNlID0gbV9vbGRlc3RGcmFtZUNvbXBsZXRpb25GZW5j
ZSsrICUgbWF4UGVuZGluZ0ZyYW1lczsKQEAgLTI5OTcsNiArMzA3MCwxOSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50
KQogewogfQogCitHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjphZGp1c3RXZWJHTDFU
ZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSkKK3sKKyAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV0VC
R0xfY29sb3JfYnVmZmVyX2Zsb2F0IGZvciBXZWJHTCAxLjAgLyBFUyAyLjAgcmVxdWlyZXMgYSBz
aXplZAorICAgIC8vIGludGVybmFsIGZvcm1hdC4gQWRqdXN0IGl0IGlmIG5lY2Vzc2FyeSBhdCB0
aGlzIGxvd2VzdCBsZXZlbC4KKyAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkgeworICAgICAgICBp
ZiAobV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBICYmIGZvcm1hdCA9PSBHTF9SR0JBICYmIGlu
dGVybmFsZm9ybWF0ID09IEdMX1JHQkEpCisgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTMyRjsK
KyAgICAgICAgaWYgKG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCICYmIGZvcm1hdCA9PSBHTF9S
R0IgJiYgaW50ZXJuYWxmb3JtYXQgPT0gR0xfUkdCKQorICAgICAgICAgICAgcmV0dXJuIEdMX1JH
QjMyRjsKKyAgICB9CisgICAgcmV0dXJuIGludGVybmFsZm9ybWF0OworfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuaAppbmRleCAxMDdlYzIzOGI3ODBmNDQ5MTYwZmY1ZjExOTc1YjFiMDQ0MGJiY2Q4Li40NGQx
ZWMzZjBkOWYzZTUxMDgwNTY4ZTRkNDhiMzcxMmEzODc3YjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5oCkBAIC01Myw3ICs1Myw2IEBAIHN0cnVjdCBnYm1fYm87CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVuc2lvbnNHTDsKLWNsYXNzIEV4dGVuc2lvbnNHTEFOR0xF
OwogY2xhc3MgR0xDb250ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlQnVmZmVy
OwpAQCAtMzMyLDYgKzMzMSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJz
dHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKICAg
ICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NH
THNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBH
Q0dMZW51bT4pIG92ZXJyaWRlOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisKICAgICBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZUJ1ZmZlcigpIGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlRnJhbWVi
dWZmZXIoKSBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVByb2dyYW0oKSBmaW5h
bDsKQEAgLTM0NiwxMiArMzUyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVRleHR1cmUo
UGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dM
ZW51bSBlcnJvcikgZmluYWw7CiAgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKSBmaW5hbDsKLSAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKICAg
ICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciYpIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZUZv
ckRpc3BsYXkoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwogICAg
IHZvaWQgcmVjeWNsZUNvbnRleHQoKTsKQEAgLTM2NiwxNSArMzcwLDIxIEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcm90ZWN0ZWQ6Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoVEFTS19JREVO
VElUWV9UT0tFTikKLSAgICBHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcywgY29uc3QgUHJvY2Vzc0lkZW50aXR5Jik7Ci0jZWxzZQogICAgIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKLSNlbmRpZgorCiAg
ICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZl
bnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1Ymxp
YyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5H
TC4KICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAor
ICAgIC8vIEluaXRpYWxpemVzIHRoZSBpbnN0YW5jZS4gUmV0dXJucyBmYWxzZSBpZiB0aGUgaW5z
dGFuY2Ugc2hvdWxkIG5vdCBiZSB1c2VkLgorICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworICAgIC8v
IENhbGxlZCBmaXJzdCBieSBpbml0aWFsaXplKCkuIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRl
IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiaXRzIG9mIEVHTENvbnRleHQu
CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSBwbGF0Zm9ybXMgZG8gbm90IHNoYXJlIHRoZSBjb250
ZXh0IGNyZWF0aW9uLiBUaGV5IHNob3VsZC4KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1Jbml0
aWFsaXplQ29udGV4dCgpOworICAgIC8vIENhbGxlZCBsYXN0IGJ5IGluaXRpYWxpemUoKS4gU3Vi
Y2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdG8gaW5zdGFudGlhdGUgcGxhdGZvcm0gc3BlY2lmaWMg
c3RhdGUgdGhhdCBkZXBlbmQgb24KKyAgICAvLyB0aGUgc2hhcmVkIHN0YXRlLgorICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKwogICAgIC8vIFRha2UgaW50byBhY2NvdW50
IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcywKICAgICAv
LyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGlj
aCBjb3VsZCBvcgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBh
YmlsaXRpZXMgb2YgdGhlIE9wZW5HTApAQCAtMzk1LDEzICs0MDUsMTEgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgcHJlcGFyZVRleHR1cmVJbXBsKCk7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlzYW1w
bGluZ0lmTmVjZXNzYXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKICAgICB2b2lkIGF0
dGFjaERlcHRoQW5kU3RlbmNpbEJ1ZmZlcklmTmVlZGVkKEdDR0x1aW50IGludGVybmFsRGVwdGhT
dGVuY2lsRm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotCi0gICAgYm9vbCByZXNoYXBl
RGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGFs
bG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7Ci0gICAgYm9vbCBiaW5kRGlzcGxh
eUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCog
cGJ1ZmZlcik7CiAgICAgc3RhdGljIGJvb2wgbWFrZUN1cnJlbnQoUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTERpc3BsYXksIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wpOwogI2VuZGlmCisgICAg
dmlydHVhbCBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpID0gMDsKKwogICAgIC8v
IFJldHVybnMgZmFsc2UgaWYgY29udGV4dCBzaG91bGQgYmUgbG9zdCBkdWUgdG8gdGltZW91dC4K
ICAgICBib29sIHdhaXRBbmRVcGRhdGVPbGRlc3RGcmFtZSgpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
IApAQCAtNDEwLDYgKzQxOCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52
YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpOwogCisgICAgLy8gT25seSBmb3Ig
bm9uLVdlYkdMIDIuMCBjb250ZXh0cy4KKyAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJl
SW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNp
b25zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKKyAgICBI
YXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKKyAgICBib29sIG1fd2ViZ2xDb2xv
ckJ1ZmZlckZsb2F0UkdCIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZs
b2F0UkdCQSB7IGZhbHNlIH07CiAgICAgR0NHTHVpbnQgbV90ZXh0dXJlIHsgMCB9OwogICAgIEdD
R0x1aW50IG1fZmJvIHsgMCB9OwogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2lsQnVmZmVyIHsg
MCB9OwpAQCAtNDM0LDcgKzQ1MCw2IEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9vbGRlc3RG
cmFtZUNvbXBsZXRpb25GZW5jZSB7IDAgfTsKICAgICBTY29wZWRHTEZlbmNlIG1fZnJhbWVDb21w
bGV0aW9uRmVuY2VzW21heFBlbmRpbmdGcmFtZXNdOwogICAgIEdyYXBoaWNzQ29udGV4dEdMU3Rh
dGUgbV9zdGF0ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMQU5HTEU+IG1fZXh0
ZW5zaW9uczsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNl
IHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EuCkBAIC00NDcsNyArNDYyLDYgQEAgcHJvdGVjdGVk
OgogICAgIC8vIFdoZW4gcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxp
dHRlZCB0byBkdXJpbmcgZGlzcGxheSBwcmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IG1fZGlzcGxheUJ1ZmZlckJhY2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVy
UGJ1ZmZlciB7IG51bGxwdHIgfTsKLSAgICBQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVy
OwogI2VuZGlmCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIEdDR0x1aW50IG1f
Y29tcG9zaXRvclRleHR1cmUgeyAwIH07CkBAIC00ODYsNyArNTAwLDYgQEAgcHJvdGVjdGVkOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+IG1fdGV4
bWFwTGF5ZXI7CiAjZW5kaWYKIAotICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRTsK
ICNpZiBVU0UoTklDT1NJQSkKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6R0NHTEFOR0xFTGF5
ZXI7CiAgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xMYXllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCmluZGV4IGEwOGRhMGY0ZjEwZTRjM2U0YTlhNzFlZThmNTMyNWZhNjZlMDkxZmYuLjdi
M2I0YTAxZjI2OTZjMGQ5YjA2MTI4MDY0NjM4ZGY2OTIyYTFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQpAQCAtNDAsNyArNDAsNiBAQAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCiAjaW1w
b3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgotI2lt
cG9ydCAiRXh0ZW5zaW9uc0dMLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCmluZGV4IGM1NmU2OTUzNWU3MDk3ZmRkMjVk
MmZjZTMwMmUxMDY4ZTc2YzZlM2IuLmMzMWY1ZWZiZTJlYTgyMGRjNzBmZDUwZDU3YTI4NzFjYzM5
NmY5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKQEAgLTc5LDE3ICs3OSwyMyBA
QCBwdWJsaWM6CiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJp
bGl0eShib29sKSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgb3ZlcnJpZGU7
CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCB1cGRhdGVDb250ZXh0T25EaXNwbGF5UmVj
b25maWd1cmF0aW9uKCk7CiAjZW5kaWYKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRH
TENvY29hKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRl
bnRpdHkmJiByZXNvdXJjZU93bmVyKTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgorICAgIGJvb2wgcGxhdGZvcm1J
bml0aWFsaXplQ29udGV4dCgpIGZpbmFsOworICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkg
ZmluYWw7CiAgICAgdm9pZCBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dMdWludCkg
ZmluYWw7CisgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSBmaW5hbDsKKyAg
ICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisgICAgYm9vbCBi
aW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2lu
Zywgdm9pZCogcGJ1ZmZlcik7CiAKKyAgICBQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVy
OwogI2lmIEVOQUJMRShWSURFTykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0
R0xDVkNvY29hPiBtX2N2OwogI2VuZGlmCkBAIC0xMDAsNiArMTA2LDcgQEAgcHJvdGVjdGVkOgog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRp
b25TZXNzaW9uVlQ+IG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb247CiAjZW5kaWYKKwogICAg
IGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAwY2QwYTI0ZmRiNzJjMzdiY2QyNWMwMDBjNTQ2MmM2
MWMyMDVmNzUxLi4zNmU4ZjBmYjAyOTM3N2I0ZWZmZTQwNTM1MjM3ZTU4MjIyZmJmNzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQg
IkFOR0xFVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJBTkdMRVV0aWxpdGllc0NvY29hLmgiCiAjaW1w
b3J0ICJDVlV0aWxpdGllcy5oIgotI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTE5
NywyOSArMTk2LDE1IEBAIHN0YXRpYyBib29sIG5lZWRzRUFHTE9uTWFjKCkKIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTENvY29hPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcywgUHJvY2Vzc0lkZW50aXR5JiYgcmVz
b3VyY2VPd25lcikKIHsKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSwgV1RGTW92ZShyZXNvdXJjZU93bmVy
KSkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQorICAgIGlmICghY29udGV4dC0+aW5p
dGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY29udGV4dDsK
IH0KIAogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBjcmVhdGlvbkF0dHJpYnV0ZXMsIFByb2Nlc3NJZGVu
dGl0eSYmIHJlc291cmNlT3duZXIpCi0gICAgOgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZF
KFRBU0tfSURFTlRJVFlfVE9LRU4pCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3Zl
KGNyZWF0aW9uQXR0cmlidXRlcyksIHJlc291cmNlT3duZXIpCi0jZWxzZQotICAgIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEUoV1RGTW92ZShjcmVhdGlvbkF0dHJpYnV0ZXMpKQotI2VuZGlmCisgICAg
OiBHcmFwaGljc0NvbnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSkKKyAg
ICAsIG1fcmVzb3VyY2VPd25lcihXVEZNb3ZlKHJlc291cmNlT3duZXIpKQogewotICAgIGlmICgh
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBp
bml0aWFsaXplciBsaXN0IG9uY2UgbV9yZXNvdXJjZU93bmVyIG1vdmVzIHRvIEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuCi0gICAgbV9yZXNvdXJjZU93bmVyID0gV1RGTW92ZShyZXNvdXJjZU93bmVy
KTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwotICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCAmJiBhdHRyaWJ1dGVzLmVm
ZmVjdGl2ZVBvd2VyUHJlZmVyZW5jZSgpID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJl
bmNlOjpIaWdoUGVyZm9ybWFuY2UpCi0gICAgICAgIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNv
bmZpZ3VyYXRpb24gPSB0cnVlOwotI2VuZGlmCiB9CiAKIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
On5HcmFwaGljc0NvbnRleHRHTENvY29hKCkgPSBkZWZhdWx0OwpAQCAtMjM2LDM4ICsyMjEsMzkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkK
IAogLy8gRklYTUU6IEJlbG93IGlzIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgbW92ZWQg
dG8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYSB0byBzaW1wbGlmeSB0aGUgYmFzZSBjbGFzcy4KIAot
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCi1HcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyBhdHRycywgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQot
I2Vsc2UKIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzKQotI2VuZGlmCiAgICAgOiBHcmFwaGljc0Nv
bnRleHRHTChhdHRycykKIHsKLSAgICBtX2lzRm9yV2ViR0wyID0gYXR0cnMud2ViR0xWZXJzaW9u
ID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7Ci0gICAgaWYgKGF0dHJz
LnVzZU1ldGFsICYmICFwbGF0Zm9ybVN1cHBvcnRzTWV0YWwobV9pc0ZvcldlYkdMMikpIHsKLSAg
ICAgICAgYXR0cnMudXNlTWV0YWwgPSBmYWxzZTsKLSAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0
ZXMoYXR0cnMpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtSW5p
dGlhbGl6ZUNvbnRleHQoKQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRy
aWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBtX2lzRm9yV2ViR0wyID0gYXR0cmli
dXRlcy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdM
MjsKKyAgICBpZiAoYXR0cmlidXRlcy51c2VNZXRhbCAmJiAhcGxhdGZvcm1TdXBwb3J0c01ldGFs
KG1faXNGb3JXZWJHTDIpKSB7CisgICAgICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSBmYWxzZTsK
KyAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYg
RU5BQkxFKFdFQlhSKQotICAgIGlmIChhdHRycy54ckNvbXBhdGlibGUpIHsKKyAgICBpZiAoYXR0
cmlidXRlcy54ckNvbXBhdGlibGUpIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgYWxtb3N0IGNl
cnRhaW4gdGhhdCBhbnkgY29ubmVjdGVkIGhlYWRzZXQgd2lsbCByZXF1aXJlIHRoZSBoaWdoLXBv
d2VyIEdQVSwKICAgICAgICAgLy8gd2hpY2ggaXMgdGhlIHNhbWUgR1BVIHdlIG5lZWQgdGhpcyBj
b250ZXh0IHRvIHVzZS4gSG93ZXZlciwgdGhpcyBpcyBub3QgZ3VhcmFudGVlZCwgYW5kCiAgICAg
ICAgIC8vIHRoZXJlIGlzIGFsc28gdGhlIGNoYW5jZSB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBH
UFVzLiBHaXZlbiB0aGF0IHlvdSBjYW4gcmVxdWVzdCB0aGUKICAgICAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0wgYmVmb3JlIGluaXRpYWxpemluZyB0aGUgV2ViWFIgc2Vzc2lvbiwgd2UnbGwgbmVl
ZCBzb21lIHdheSB0bwogICAgICAgICAvLyBtaWdyYXRlIHRoZSBjb250ZXh0IHRvIHRoZSBhcHBy
b3ByaWF0ZSBHUFUgd2hlbiB0aGUgY29kZSBoZXJlIGRvZXMgbm90IHdvcmsuCiAgICAgICAgIExP
RyhXZWJHTCwgIldlYlhSIGNvbXBhdGlibGUgY29udGV4dCByZXF1ZXN0ZWQuIFRoaXMgd2lsbCBh
bHNvIHRyaWdnZXIgYSByZXF1ZXN0IGZvciB0aGUgaGlnaC1wb3dlciBHUFUuIik7Ci0gICAgICAg
IGF0dHJzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IHRydWU7Ci0gICAgICAg
IHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKKyAgICAgICAgYXR0cmlidXRlcy5mb3JjZVJl
cXVlc3RGb3JIaWdoUGVyZm9ybWFuY2VHUFUgPSB0cnVlOworICAgICAgICBzZXRDb250ZXh0QXR0
cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fZGlzcGxheU9iaiA9
IGluaXRpYWxpemVFR0xEaXNwbGF5KGF0dHJzKTsKKyAgICBtX2Rpc3BsYXlPYmogPSBpbml0aWFs
aXplRUdMRGlzcGxheShhdHRyaWJ1dGVzKTsKICAgICBpZiAoIW1fZGlzcGxheU9iaikKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgaWYgKCFhdHRycy51c2VNZXRhbCkgeworICAgIGlmICghYXR0cmlidXRlcy51c2VNZXRhbCkg
ewogICAgICAgICAvLyBGb3IgT3BlbkdMLCBFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSBpcyB1
c2VkLiBUaGUgY29udGV4dCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZQogICAgICAgICAvLyBkZWZh
dWx0LCBsb3ctcG93ZXIgZGV2aWNlLiBGb3IgaGlnaC1wZXJmb3JtYW5jZSBjb250ZXh0cywgd2Ug
cmVxdWVzdCB0aGUgaGlnaC1wZXJmb3JtYW5jZQogICAgICAgICAvLyBHUFUgaW4gc2V0Q29udGV4
dFZpc2liaWxpdHkuIFdoZW4gdGhlIHJlcXVlc3QgaXMgZnVsbGZpbGxlZCBieSB0aGUgc3lzdGVt
LCB3ZSBnZXQgdGhlCkBAIC0yNzUsMTEgKzI2MSwxMSBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRy
cwogICAgICAgICBjb25zdCBjaGFyICpkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmlu
ZyhtX2Rpc3BsYXlPYmosIEVHTF9FWFRFTlNJT05TKTsKICAgICAgICAgYm9vbCBzdXBwb3J0c1Bv
d2VyUHJlZmVyZW5jZSA9IHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9wb3dl
cl9wcmVmZXJlbmNlIik7CiAgICAgICAgIGlmICghc3VwcG9ydHNQb3dlclByZWZlcmVuY2UpIHsK
LSAgICAgICAgICAgIGF0dHJzLmZvcmNlUmVxdWVzdEZvckhpZ2hQZXJmb3JtYW5jZUdQVSA9IGZh
bHNlOwotICAgICAgICAgICAgaWYgKGF0dHJzLnBvd2VyUHJlZmVyZW5jZSA9PSBHcmFwaGljc0Nv
bnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlKSB7Ci0gICAgICAgICAgICAg
ICAgYXR0cnMucG93ZXJQcmVmZXJlbmNlID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2U6OkRlZmF1bHQ7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLmZvcmNlUmVxdWVzdEZvckhpZ2hQ
ZXJmb3JtYW5jZUdQVSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMucG93ZXJQ
cmVmZXJlbmNlID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9y
bWFuY2UpIHsKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IEdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0OwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOworICAgICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYK
QEAgLTI5OCwxNCArMjg0LDE0IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29u
dGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgRUdMX0No
b29zZUNvbmZpZyhtX2Rpc3BsYXlPYmosIGNvbmZpZ0F0dHJpYnV0ZXMsICZtX2NvbmZpZ09iaiwg
MSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCk7CiAgICAgaWYgKG51bWJlckNvbmZpZ3NSZXR1cm5l
ZCAhPSAxKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkVHTENvbmZpZyBJbml0aWFsaXphdGlvbiBm
YWlsZWQuIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBMT0coV2ViR0wsICJHb3QgRUdMQ29uZmlnIik7CiAKICAgICBFR0xfQmluZEFQSShFR0xf
T1BFTkdMX0VTX0FQSSk7CiAgICAgaWYgKEVHTF9HZXRFcnJvcigpICE9IEVHTF9TVUNDRVNTKSB7
CiAgICAgICAgIExPRyhXZWJHTCwgIlVuYWJsZSB0byBiaW5kIHRvIE9QRU5HTF9FU19BUEkiKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgVmVj
dG9yPEVHTGludD4gZWdsQ29udGV4dEF0dHJpYnV0ZXM7CkBAIC0zMzMsMTMgKzMxOSwxMiBAQCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChF
R0xfQ09OVEVYVF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSk7CiAgICAgZWdsQ29u
dGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9GQUxTRSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkg
JiYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQorI2lmIEhBVkUoVEFTS19JREVOVElUWV9UT0tF
TikKICAgICBhdXRvIGRpc3BsYXlFeHRlbnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKG1fZGlzcGxh
eU9iaiwgRUdMX0VYVEVOU0lPTlMpOwogICAgIGJvb2wgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0
eSA9IHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9tZXRhbF9jcmVhdGVfY29u
dGV4dF9vd25lcnNoaXBfaWRlbnRpdHkiKTsKLSAgICAvLyBGSVhNRTogVXNlIG1fcmVzb3VyY2VP
d25lciBvbmNlIGl0IG1vdmVzIHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EuCi0gICAgaWYgKGF0
dHJzLnVzZU1ldGFsICYmIHJlc291cmNlT3duZXIgJiYgc3VwcG9ydHNPd25lcnNoaXBJZGVudGl0
eSkgeworICAgIGlmIChhdHRyaWJ1dGVzLnVzZU1ldGFsICYmIG1fcmVzb3VyY2VPd25lciAmJiBz
dXBwb3J0c093bmVyc2hpcElkZW50aXR5KSB7CiAgICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVz
LmFwcGVuZChFR0xfQ09OVEVYVF9NRVRBTF9PV05FUlNISVBfSURFTlRJVFlfQU5HTEUpOwotICAg
ICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQocmVzb3VyY2VPd25lci50YXNrSWRUb2tl
bigpKTsKKyAgICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKG1fcmVzb3VyY2VPd25l
ci50YXNrSWRUb2tlbigpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzQ4LDEwICszMzMsMTQgQEAg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMKICAgICBtX2NvbnRleHRPYmogPSBFR0xfQ3JlYXRlQ29u
dGV4dChtX2Rpc3BsYXlPYmosIG1fY29uZmlnT2JqLCBFR0xfTk9fQ09OVEVYVCwgZWdsQ29udGV4
dEF0dHJpYnV0ZXMuZGF0YSgpKTsKICAgICBpZiAobV9jb250ZXh0T2JqID09IEVHTF9OT19DT05U
RVhUIHx8ICFtYWtlQ3VycmVudChtX2Rpc3BsYXlPYmosIG1fY29udGV4dE9iaikpIHsKICAgICAg
ICAgTE9HKFdlYkdMLCAiRUdMQ29udGV4dCBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBMT0coV2ViR0ws
ICJHb3QgRUdMQ29udGV4dCIpOworICAgIHJldHVybiB0cnVlOworfQogCitib29sIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgYXV0byBhdHRyaWJ1
dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAg
ICAgR0xfRW5hYmxlKEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9J
TkRFWCk7CiAKQEAgLTM2MywzOCArMzUyLDM3IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Okdy
YXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAj
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoIW5lZWRz
RUFHTE9uTWFjKCkpIHsKICAgICAgICAgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMu
Ci0gICAgICAgIGlmICghYXR0cnMudXNlTWV0YWwpCisgICAgICAgIGlmICghYXR0cmlidXRlcy51
c2VNZXRhbCkKICAgICAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xF
X3RleHR1cmVfcmVjdGFuZ2xlIl9zKTsKICAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wg
c3VyZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFw
cGVuZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICB9CiAjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNpZiBFTkFCTEUoV0VC
WFIpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICBpZiAoY29udGV4dEF0
dHJpYnV0ZXMoKS54ckNvbXBhdGlibGUpCisgICAgaWYgKGF0dHJpYnV0ZXMueHJDb21wYXRpYmxl
KQogICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9PRVNfRUdMX2ltYWdlIl9z
KTsKICNlbmRpZgogICAgIGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICByZXF1aXJlZEV4dGVu
c2lvbnMuYXBwZW5kKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7Ci0gICAg
RXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogcmVxdWlyZWRFeHRlbnNpb25zKSB7Ci0gICAgICAgIGlmICghZXh0ZW5z
aW9ucy5zdXBwb3J0cyhleHRlbnNpb24pKSB7CisgICAgICAgIGlmICghc3VwcG9ydHNFeHRlbnNp
b24oZXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJl
ZCBleHRlbnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgZXh0
ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7CisgICAgICAgIGVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoZXh0ZW5zaW9uKTsKICAgICB9Ci0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCku
dXNlTWV0YWwpIHsKKyAgICBpZiAoYXR0cmlidXRlcy51c2VNZXRhbCkgewogICAgICAgICAvLyBH
cmFwaGljc0NvbnRleHRHTEFOR0xFIHVzZXMgc3luYyBvYmplY3RzIHRvIHRocm90dGxlIGRpc3Bs
YXkgb24gTWV0YWwgaW1wbGVtZW50YXRpb25zLgogICAgICAgICAvLyBPcGVuR0wgc3luYyBvYmpl
Y3RzIGFyZSBub3Qgc2lnbmFsaW5nIHVwb24gY29tcGxldGlvbiBvbiBDYXRhbGluYS1lcmEgZHJp
dmVycywgc28KICAgICAgICAgLy8gT3BlbkdMIGNhbm5vdCB1c2UgdGhpcyBtZXRob2Qgb2YgdGhy
b3R0bGluZy4gT3BlbkdMIGRyaXZlcnMgdHlwaWNhbGx5IGltcGxlbWVudAogICAgICAgICAvLyBz
b21lIHNvcnQgb2YgaW50ZXJuYWwgdGhyb3R0bGluZy4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0FSQl9zeW5jIl9zKSkgeworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0FSQl9zeW5jIl9zKSkgewogICAgICAgICAgICAgbV91c2VGZW5jZVN5bmNGb3JEaXNw
bGF5UmF0ZUxpbWl0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxl
ZCgiR0xfQVJCX3N5bmMiX3MpOworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfQVJCX3N5bmMiX3MpOwogICAgICAgICB9CiAgICAgfQogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwotICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBj
aGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgorICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmli
dXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKICAg
ICAvLyBDcmVhdGUgdGhlIHRleHR1cmUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1
ZmZlci4KICAgICBHTGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFy
Z2V0KCk7CkBAIC00MTEsMTggKzM5OSwxOCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFw
aGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAg
IEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIG1fc3RhdGUu
Ym91bmREcmF3RkJPID0gbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPSBtX2ZibzsKIAotICAgIGlmICgh
YXR0cnMuYW50aWFsaWFzICYmIChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKSkKKyAgICBp
ZiAoIWF0dHJpYnV0ZXMuYW50aWFsaWFzICYmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmli
dXRlcy5kZXB0aCkpCiAgICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVu
Y2lsQnVmZmVyKTsKIAogICAgIC8vIElmIG5lY2Vzc2FyeSwgY3JlYXRlIGFub3RoZXIgZnJhbWVi
dWZmZXIgZm9yIHRoZSBtdWx0aXNhbXBsZSByZXN1bHRzLgotICAgIGlmIChhdHRycy5hbnRpYWxp
YXMpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMpIHsKICAgICAgICAgR0xfR2VuRnJh
bWVidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgR0xfQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgbV9zdGF0ZS5i
b3VuZERyYXdGQk8gPSBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87CiAg
ICAgICAgIEdMX0dlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7
Ci0gICAgICAgIGlmIChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKQorICAgICAgICBpZiAo
YXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpCiAgICAgICAgICAgICBHTF9H
ZW5SZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAg
ICB9IGVsc2UgaWYgKGF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgeworICAgIH0gZWxzZSBp
ZiAoYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKICAgICAgICAgLy8gSWYgbmVj
ZXNzYXJ5LCBjcmVhdGUgYW5vdGhlciB0ZXh0dXJlIHRvIGhhbmRsZSBwcmVzZXJ2ZURyYXdpbmdC
dWZmZXI6dHJ1ZSB3aXRob3V0CiAgICAgICAgIC8vIGFudGlhbGlhc2luZy4KICAgICAgICAgR0xf
R2VuVGV4dHVyZXMoMSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVyZSk7CkBAIC00Mzgs
NyArNDI2LDExIEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAKICAgICBHTF9DbGVhckNvbG9y
KDAsIDAsIDAsIDApOwogCi0gICAgTE9HKFdlYkdMLCAiQ3JlYXRlZCBhIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEUgKCVwKS4iLCB0aGlzKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFhdHRy
aWJ1dGVzLnVzZU1ldGFsICYmIGF0dHJpYnV0ZXMuZWZmZWN0aXZlUG93ZXJQcmVmZXJlbmNlKCkg
PT0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkKKyAg
ICAgICAgbV9zd2l0Y2hlc0dQVU9uRGlzcGxheVJlY29uZmlndXJhdGlvbiA9IHRydWU7CisjZW5k
aWYKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6fkdyYXBo
aWNzQ29udGV4dEdMQU5HTEUoKQpAQCAtNDg1LDExICs0NzcsNiBAQCBHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCiAgICAgTE9HKFdlYkdMLCAiRGVzdHJv
eWVkIGEgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSAoJXApLiIsIHRoaXMpOwogfQogCi1ib29sIEdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3Rl
eHR1cmU7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJy
ZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTU1MCw3ICs1MzcsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnVwZGF0ZUNvbnRleHRPbkRpc3BsYXlSZWNvbmZpZ3Vy
YXRpb24oKQogfQogI2VuZGlmCiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFw
ZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKICAgICAvLyBSZXNldCB0aGUgY3VycmVudCBiYWNr
YnVmZmVyIG5vdyBiZWZvcmUgYWxsb2NhdGluZyBhIG5ldyBvbmUgaW4gb3JkZXIgdG8gc2xpZ2h0
bHkgcmVkdWNlIG1lbW9yeSBwcmVzc3VyZS4KQEAgLTU2OCw3ICs1NTUsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgcmV0
dXJuIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiB9CiAKLWJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmco
KQorYm9vbCBHcmFwaGljc0NvbnRleHRHTENvY29hOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVm
ZmVyQmFja2luZygpCiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
LmlzRW1wdHkoKSk7CiAgICAgYXV0byBiYWNraW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50
ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwpA
QCAtNTk4LDcgKzU4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6YWxsb2NhdGVB
bmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogICAgIHJldHVybiBiaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoV1RGTW92ZShiYWNraW5nKSwgcGJ1ZmZlcik7CiB9CiAKLWJvb2wgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6YmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIpCitib29sIEdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OmJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKQogewogICAgIEdDR0xlbnVtIHRleHR1cmVUYXJnZXQg
PSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJl
QmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9y
RHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdl
dCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOwpAQCAtNjg5LDcgKzY3Niw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6ZGV0YWNoSU9TdXJmYWNlRnJvbVNoYXJlZFRleHR1cmUodm9p
ZCogaGFuZGxlKQogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJl
cGFyZUZvckRpc3BsYXkoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiB7CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4
IDdkMGNlMzZiNjBhMGQ2OWE1OTIzYzI0MDBkMDNiYjdiYWQzODY0OTguLjBiYjEwNjViM2E2MTY2
OWI5ODUwMTg1MzA0NWE3MGI2ZmFhMWI1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3Jh
cGhpY3NDb250ZXgKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pKTsK
LSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKKyAgICBpZiAoIWNvbnRleHQtPmluaXRpYWxp
emUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkQ29udGV4dChjb250ZXh0LmdldCgpKTsKICAg
ICByZXR1cm4gY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNTFjYmU2
YjdlMTNiODBhZjcxMmUzZWZlNzZiNjI1MTU4MzQ5ZmY0YS4uNzNlMjQ4NDVjYjMzZTUwZDU0NTdh
NjIwNjE4NDQ0MjY5NTE3ZDY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAgLTEw
MSw3ICsxMDEsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAjZW5kaWYKIH0KIAotYm9vbCBFeHRlbnNpb25zR0xP
cGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgRXh0ZW5z
aW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2lu
ZyBvdGhlcgogICAgIC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVm
ZmVyX2JsaXQgYW5kIEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCBkOWYxNWY0
NWJkZmI0ZTFiYmU4ZDM5MzYzNWI2MGFhZDFkMmQ5MGE3Li5lNzMyYzFjZjkxYTNkODRmNjQzMmMw
ZjIyYzg2OGYzZDgwNDRjNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wg
cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBT
dHJpbmcgZ2V0RXh0ZW5zaW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA3ZDUwMGFiYzBjZjFlZTU1MjY4MzExMmFm
Y2YyMjI0YWU2OTU3MWJmLi4yMWU4MjlmYmQxMDFkZjZkNDY5MzE2ZjlkMjljZWQ4NmI0YWM5NjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0cyhjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3Nv
dXJjZSIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzdXBwb3J0c0V4dGVu
c2lvbihuYW1lKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsK
IH0KIAogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQoY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjplbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CiAg
ICAgICAgIGlmICghQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykgewogICAgICAgICAg
ICAgQU5HTEVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgICAgICBBTkdM
RVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNp
b25zR0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICAgICAgICAgIEFOR0xFUmVzb3VyY2Vz
Lk1heERyYXdCdWZmZXJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdM
OjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CiAgICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJj
ZXMoQU5HTEVSZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09ICJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5oCmluZGV4IDI5YTBjNGQ4ZjVhOTI2YzcwOTUzNTQxYzBiMjYxM2ZkYTc1MmI0MjYuLjJj
MzdmYWM5NjVjMDIxNmRhMDVhYzVmYjhlYWFlYjY4M2Q0NGE3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTI2LDggKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKLQorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCkBAIC0zNSwxNiArMzQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIAotY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
IDogcHVibGljIEV4dGVuc2lvbnNHTCB7CitjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbigpOwogCi0gICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMu
Ci0gICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGVu
c3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VuYWJsZWQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSBvdmVycmlkZTsKKyAgICAvLyBNZXRob2RzIGZvcndhcmRlZCBmcm9tIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgaW50IGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSA9IDA7CiAKICAgICAv
LyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpID0gMDsKQEAgLTUyLDE4ICs1MywxNCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmpl
Y3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xP
YmplY3QpID0gMDsKIAotICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+KSBvdmVycmlkZSA9IDA7Ci0KLSAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCB2b2lk
IGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNv
dW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291
bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBFWFQgUm9idXN0bmVz
cyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAgdm9pZCByZWFkblBpeGVs
c0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0s
IGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAq
cGFyYW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CiAKICAg
ICBib29sIGlzTlZJRElBKCkgY29uc3QgeyByZXR1cm4gbV9pc05WSURJQTsgfQogICAgIGJvb2wg
aXNBTUQoKSBjb25zdCB7IHJldHVybiBtX2lzQU1EOyB9CkBAIC03OCw3ICs3NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7CiAgICAgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgYm9vbCB1c2VJbmRl
eGVkR2V0U3RyaW5nKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25z
dCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtU3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEV4dGVuc2lvbnMo
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDE1NDYyMzZmOGI2YmRiNTIy
M2QwZWRlMzdhYjc0ZjBlZDZmMTBiY2YuLjk5N2U3OWVlNWQ0YzE3ZTIxMjBiYjNkZjRlMDI1NTAy
NjBhNGMzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQogCiAgICAgLy8gRm9yIEdMX0VYVF9yb2J1c3RuZXNzLCBjaGVjayB0aGF0IHRoZSBjb250
ZXh0IHN1cHBvcnRzIHJvYnVzdCBhY2Nlc3MuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1
c3RuZXNzIikKLSAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25z
R0w6OkNPTlRFWFRfUk9CVVNUX0FDQ0VTUykgPT0gR0xfVFJVRTsKKyAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRHTDo6Q09OVEVYVF9ST0JVU1RfQUND
RVNTKSA9PSBHTF9UUlVFOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzQsNyArMTc0LDcg
QEAgaW50IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkK
ICAgICBpZiAobV9jb250ZXh0UmVzZXRTdGF0dXMgIT0gR0xfTk9fRVJST1IpCiAgICAgICAgIHJl
dHVybiBtX2NvbnRleHRSZXNldFN0YXR1czsKICAgICBpZiAobV9nbEdldEdyYXBoaWNzUmVzZXRT
dGF0dXNFWFQpIHsKLSAgICAgICAgaW50IHJlYXNvbkZvclJlc2V0ID0gVU5LTk9XTl9DT05URVhU
X1JFU0VUX0FSQjsKKyAgICAgICAgaW50IHJlYXNvbkZvclJlc2V0ID0gR3JhcGhpY3NDb250ZXh0
R0w6OlVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkI7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICAgICAgcmVhc29uRm9yUmVzZXQgPSBtX2dsR2V0
R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgpOwogICAgICAgICBpZiAocmVhc29uRm9yUmVzZXQgIT0g
R0xfTk9fRVJST1IpCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXYK
ICAgICBtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKIH0KIAot
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBuYW1lKQorYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVu
c2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2lu
c3RhbmNlZF9hcnJheXMiKSB7CiAgICAgICAgIGF1dG8gbWFqb3JWZXJzaW9uID0gW10oKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDlhNTgxYTAwMGRkMzcyZmYxZWNkZDkxZmY5
OWRlYzk4YWQ4ZTM4NTguLjliYjUyZjliYWFhY2I1NzE2YzRkMDJiOWI1YmY3OTFhNzhmNzUwZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03MSw2ICs3MSwxMiBAQCBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIAogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVMgOiBw
dWJsaWMgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uIHsKIHB1YmxpYzoKKyAgICAvLyBHTF9JTUdf
bXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBSRU5ERVJCVUZGRVJfU0FNUExFU19JTUcgPSAweDkxMzM7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0lNRyA9IDB4
OTEzNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9TQU1QTEVTX0lNRyA9IDB4
OTEzNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfU0FNUExFU19JTUcg
PSAweDkxMzY7CisKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFudGlh
dGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0aW9ucy4KICAgICBFeHRl
bnNpb25zR0xPcGVuR0xFUyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5kZXhl
ZEdldFN0cmluZyk7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMRVMoKTsKQEAgLTEw
MSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBv
dmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBnZXRFeHRlbnNpb25zKCkgb3ZlcnJp
ZGU7CiAKICAgICBHQ0dMZW51bSBtX2NvbnRleHRSZXNldFN0YXR1czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGYzMGI1ZTFlNmVhOWQwMTU3NzRmODA2MGI5MTUz
ZjQ3ZTMwNjJlYWIuLmJiZjBlODFlYjk4NTUyNWYzMjQ3NzEyOGU0NDM3MzMwNDlhOWM1NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzEyLDE4ICszMTIsMjAg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0
CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
biYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQorI2lmIFBMQVRGT1JN
KEdUSykgJiYgVVNFKE9QRU5HTF9FUykKK0V4dGVuc2lvbnNHTE9wZW5HTEVTJiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKCFtX2V4dGVuc2lvbnMp
IHsKLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2
YWlsYWJsZSBvbiBHTEVTMi4KKyAgICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBv
biBHTEVTMi4KKyAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0g
bWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKLSNlbHNlCi0g
ICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwgYW5k
IHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAgICByZXR1cm4gKm1fZXh0ZW5zaW9u
czsKK30KKyNlbGlmIFBMQVRGT1JNKEdUSykKK0V4dGVuc2lvbnNHTE9wZW5HTCYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQoreworICAgIC8vIEZyb20gT3BlbkdMIDMu
MiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0
U3RyaW5naS4KKyAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0g
bWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgp
LT52ZXJzaW9uKCkgPj0gMzIwKTsKLSNlbmRpZgotICAgIH0KICAgICByZXR1cm4gKm1fZXh0ZW5z
aW9uczsKIH0KICNlbmRpZgpAQCAtMzUxLDEwICszNTMsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAg
IGlmIChhdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5z
dXJlRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBpZiAoc3Vw
cG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgeworICAgICAgICAg
ICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwog
ICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAg
ICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKQEAgLTM2MiwxMSArMzYzLDEx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNv
bnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpCiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVz
KGF0dHJzKTsKICAgICB9CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiAhbV9pc0ZvcldlYkdM
MikgewotICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIikpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigiR0xf
QU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkgewogICAgICAgICAgICAgYXR0cnMuYW50
aWFsaWFzID0gZmFsc2U7CiAgICAgICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKICAgICB9
CiB9CiAKQEAgLTMwNjksNiArMzA3MCwzNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtLCBHQ0dMU3BhbgogICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7
CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjplbnN1cmVFeHRlbnNp
b25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBnZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZChuYW1lKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNF
eHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0RXh0
ZW5zaW9ucygpLmlzRW5hYmxlZChuYW1lKTsKK30KKworR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAgIHJldHVybiBnZXRFeHRl
bnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4g
YnVmZmVycykKK3sKKyAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKGJ1
ZmZlcnMpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKK3sKKyAgICByZXR1
cm4gZ2V0RXh0ZW5zaW9ucygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIp
OworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VT
YWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCB1bnBhY2tBbGlnbm1lbnQpCiB7
CiAgICAgQVNTRVJUKHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFja0FsaWdubWVudCA9PSAy
IHx8IHVucGFja0FsaWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVudCA9PSA4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggOTFmZWZlZjUxMmY2NTI4YmMzYTc3ODMx
ZWJlOWI2NDUxZDk3NDU2Yy4uNTk3OTY4ZTBmZmU5Mjc4MzA4MDYxMzI5M2JmZjgwYWM4MDgyMGE2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzLDEwICs0Myw5IEBA
IGNsYXNzIEdDR0xMYXllcjsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBF
eHRlbnNpb25zR0w7CiAjaWYgVVNFKE9QRU5HTF9FUykKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5H
TEVTOwotI2VsaWYgVVNFKE9QRU5HTCkKKyNlbHNlCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7
CiAjZW5kaWYKIGNsYXNzIEhvc3RXaW5kb3c7CkBAIC0zNzAsNiArMzY5LDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywg
R0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAKKyAgICBib29sIHN1cHBvcnRzRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyAgICBHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4p
IG92ZXJyaWRlOworICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iamVjdCkgZmluYWw7CisKICAgICAvLyBIZWxwZXIgbWV0aG9kcy4KICAgICB2b2lk
IGZvcmNlQ29udGV4dExvc3QoKTsKICAgICB2b2lkIHJlY3ljbGVDb250ZXh0KCk7CkBAIC00MDUs
MTEgKzQxMSwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBS
ZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90CiAgICAgLy8gYWxsIG1ldGhvZHMg
aXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAgICAvLyBj
dXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCisg
ICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTE9wZW5HTHtFU306
OnN1cHBvcnRzKCkgdG8KICAgICAvLyBkZXRlcm1pbmUgdGhpcy4KLSAgICAvLyBVc2UgY292YXJp
YW50IHJldHVybiB0eXBlIGZvciBPUEVOR0wvT1BFTkdMX0VTCi0gICAgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7Ci0KKyNpZiBVU0UoT1BFTkdMX0VTKQor
ICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVTJiBnZXRFeHRlbnNpb25zKCk7CisjZWxzZQorICAgIEV4
dGVuc2lvbnNHTE9wZW5HTCYgZ2V0RXh0ZW5zaW9ucygpOworI2VuZGlmCiAgICAgdm9pZCBzaW11
bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwpAQCAtNDIwLDcgKzQyOCw3
IEBAIHByb3RlY3RlZDoKICAgICBHQ0dMdWludCBtX3RleHR1cmUgeyAwIH07CiAKICAgICAvLyBD
YWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5
IGNhbGwgT3BlbkdMLgotICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5
IHBvaW50cyBvZiBFeHRlbnNpb25zR0wgdGhhdCBldmVudHVhbGx5IGNhbGwgT3BlbkdMLgorICAg
IC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyBvZiBFeHRlbnNp
b25zR0xPcGVuR0wvRXh0ZW5zaW9uR0xPcGVuR0xFUyB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVu
R0wuCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAK
ICAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNy
ZWF0aW9uIGF0dHJpYnV0ZXMsCkBAIC01MTIsMTMgKzUyMCwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZGVyTmFtZUhhc2g+IG5hbWVIYXNoTWFwRm9yU2hhZGVyczsK
IAorICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb247CiAjaWYgVVNFKE9Q
RU5HTF9FUykKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMRVM7Ci0gICAgZnJp
ZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXh0ZW5zaW9uc0dMT3BlbkdMRVM+IG1fZXh0ZW5zaW9uczsKLSNlbGlmIFVTRShPUEVOR0wpCisj
ZWxzZQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7Ci0gICAgZnJpZW5kIGNs
YXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5z
aW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCA2OGI2Y2QzZjUyNGJmNmEwOWVhZjdmZDY4
NDhmYmFjMWRhNzMzYWIzLi5jMzViMmYwZjE1ZDljZDA5YjliMjhiZTBiZjQ0Nzc4ODc0MzA1NzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMzQ1
LDEwICszNDUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKICAgICAgICAgdHlwZSA9IEdM
X0hBTEZfRkxPQVRfQVJCOwogICAgIH0KIAotICAgIEFTU0VSVChmb3JtYXQgIT0gRXh0ZW5zaW9u
c0dMOjpTUkdCOF9BTFBIQThfRVhUKTsKLSAgICBpZiAoZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6
U1JHQl9BTFBIQV9FWFQpCisgICAgQVNTRVJUKGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6
U1JHQjhfQUxQSEE4X0VYVCk7CisgICAgaWYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
U1JHQl9BTFBIQV9FWFQpCiAgICAgICAgIG9wZW5HTEZvcm1hdCA9IEdMX1JHQkE7Ci0gICAgZWxz
ZSBpZiAoZm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQpCisgICAgZWxzZSBpZiAoZm9y
bWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVCkKICAgICAgICAgb3BlbkdMRm9ybWF0
ID0gR0xfUkdCOwogI2VuZGlmCiAKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB9CiAKICNpZiAhUExB
VEZPUk0oR1RLKQotRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRlbnNpb25zR0xPcGVuR0wmIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAg
ICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0w+KHRoaXMs
IGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAKaW5kZXggMzg2NDE5OGY3NGE1OTJiYTQyOWM2ZDBhOGJjNjFkZTgxYTM4ZjYwOS4uODNi
OWI4NmM1MzI3MmZjNTQxNTdjOTBmNDY2NWFmODExOThkYTRmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAg
ICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBh
bmQgZGVwdGggaXMgbm90LgogICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFs
aWRhdGVBdHRyaWJ1dGVzLgotICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZl
ciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgZ2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICBib29s
IHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8
IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwiKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11
c3RSZXN0b3JlRkJPID0gZmFsc2U7CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDo6
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKICNlbmRpZgogCi0gICAgRXh0ZW5zaW9u
c0dMT3BlbkdMRVMmIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zR0xPcGVuR0xF
UyY+KGdldEV4dGVuc2lvbnMoKSk7CisgICAgRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIGV4dGVuc2lv
bnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKGV4dGVuc2lvbnMuaXNJbWFnaW5hdGlvbigp
ICYmIGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7CiAgICAgICAgIEdMaW50IG1heFNhbXBsZUNvdW50
OwotICAgICAgICA6OmdsR2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dMOjpNQVhfU0FNUExFU19JTUcs
ICZtYXhTYW1wbGVDb3VudCk7IAorICAgICAgICA6OmdsR2V0SW50ZWdlcnYoRXh0ZW5zaW9uc0dM
T3BlbkdMRVM6Ok1BWF9TQU1QTEVTX0lNRywgJm1heFNhbXBsZUNvdW50KTsgCiAgICAgICAgIEdM
aW50IHNhbXBsZUNvdW50ID0gc3RkOjptaW4oOCwgbWF4U2FtcGxlQ291bnQpOwogCiAgICAgICAg
IGV4dGVuc2lvbnMuZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRyhHTF9GUkFNRUJV
RkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCwg
c2FtcGxlQ291bnQpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250
ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFnZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1
cmUiKSkgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgewogICAgICAgICBh
dHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRl
cyhhdHRyaWJ1dGVzKTsKICAgICB9CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBM
QVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMRVMmIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykK
ICAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zR0xPcGVuR0xFUz4o
dGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggZTU0
YWUzZjc5OWY4NTJlMWVlN2E3MDYwN2M5MDdiZmMyYzQ1YWMxMi4uOTFlOGVhODAxNGI3YTk1ODkw
MGI0ZjcxYzYwNDM3MTk2NmMxNWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTI0LDcg
KzI0LDYgQEAKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIAotI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJMZW5n
dGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3NTBhODRhZjYzODJjNTQx
MzBjZjM2ZTg2ZDliYzhjNzYwNGNmYmNiLi43NTI4YzBlOTdmN2U1NmI4NTc5YWFiNWFlY2Q2N2I5
MmIwNWViNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcApAQCAtNDcsMTUgKzQ3LDggQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2Vu
ZGlmCiAKLSNpZiBVU0UoQU5HTEUpCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLSNl
bHNlCisjaWYgIVVTRShBTkdMRSkKICNpbmNsdWRlIDxBTkdMRS9TaGFkZXJMYW5nLmg+Ci0jaWYg
VVNFKE9QRU5HTF9FUykKLSNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xFUy5oIgotI2Vsc2UK
LSNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0wuaCIKLSNlbmRpZgogI2VuZGlmCiAKICNpZiBV
U0UoTklDT1NJQSkKQEAgLTEwOCw3ICsxMDEsMTIgQEAgcHJpdmF0ZToKIAogUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
OjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV1RG
TW92ZShhdHRyaWJ1dGVzKSkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyNpZiBV
U0UoQU5HTEUpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworI2VuZGlmCisgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpID0g
ZGVmYXVsdDsKQEAgLTE0OCw3ICsxNDYsOCBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogCiAg
ICAgLy8gQ3JlYXRlIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvYmplY3QgZmlyc3QgaW4g
b3JkZXIgdG8gZXN0YWJsaXN0IGEgY3VycmVudCBjb250ZXh0IG9uIHRoaXMgdGhyZWFkLgogICAg
IGF1dG8gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7Ci0KKyAgICBpZiAoIWNv
bnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogI2lmIFVTRShMSUJFUE9YWSkgJiYgVVNF
KE9QRU5HTF9FUykgJiYgRU5BQkxFKFdFQkdMMikKICAgICAvLyBCYWlsIGlmIEdMRVMzIHdhcyBy
ZXF1ZXN0ZWQgYnV0IGNhbm5vdCBiZSBwcm92aWRlZC4KICAgICBpZiAoYXR0cmlidXRlcy53ZWJH
TFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246OldlYkdMMiAmJiAhZXBv
eHlfaXNfZGVza3RvcF9nbCgpICYmIGVwb3h5X2dsX3ZlcnNpb24oKSA8IDMwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IDJkYjJlOGQ3ZDljZDdi
OWNhYmI0YzljYTQxNzI0M2YwZTdhMGI1MjIuLjkxZmE1NWJjZjg0ZDcxOTcwYmM1MGY4NDM3N2U1
NWE0MGQ3ZjBhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMVGUKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gY3JlYXRl
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKICAgICB+R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7Ci0KKyAgICAKICAgICAvLyBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KICAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmlu
YWw7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAjZW5kaWYK
ICNpZiBVU0UoQU5HTEUpCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5h
bDsKKyAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApp
bmRleCA2NmUzMmFhMDMzM2Y3YjhhNmI1ZjQ4NzQyYTY4NTc5ZGVlZjcxY2U1Li5iZmNmNzIxZmY1
YzFlNGZiNzVlNmJkODhlZDBmNzUzZjlkODNlYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAK
IAogI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogCkBAIC02Nyw2
ICs2Niw4IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpCiAjZW5kaWYKICAgICBib29sIHN1Y2Nl
c3MgPSBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1
Y2Nlc3MpOworICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplKCk7CisgICAgQVNTRVJUX1VOVVNFRChz
dWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJp
YnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVy
aW5nIHZhbGlkYXRpb24uCkBAIC0yNjAsMTEgKzI2MSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlcjo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKIHsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogfQogCi1i
b29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygp
Citib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cmVzaGFwZURpc3BsYXlCdWZm
ZXJCYWNraW5nKCkKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICAg
ICBjb25zdCBhdXRvIHNpemUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcAppbmRleCBkMjYxYTQwMjRjZjdlZjcxODdhMTBmNDc3ZWI1MzNlZjI0NmM4
OGNhLi5hMzdmNGE1OGM2ZTgwZDM2NjQ2MjNmYzc2ZDEwMGE5MzY5MzE1NjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcApAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVy
ZUdMLmgiCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVyZVBvb2wuaCIKLSNpbmNsdWRlICJFeHRlbnNp
b25zR0wuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRR
dWFkLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHAKaW5kZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uODk3
MmMyMzk2MzlkYzNjNTA1ZGQ4YmFmZjRhMzA3NGM2Zjk5MjQ3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6d29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHIKICAg
ICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsK
ICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGlj
c0NvbnRleHRHTDo6RVhURU5TSU9OUyk7Ci0gICAgICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVu
c2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VY
VEVOU0lPTlNfQU5HTEUpOworICAgICAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0g
bV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpXYXNDcmVhdGVkKHRydWUsIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFt
V29ya1F1ZXVlKCkud2FrZVVwU2VtYXBob3JlKCksIGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0
ZW5zaW9ucykpOwogICAgIH0gZWxzZQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJUEM6OlNlbWFwaG9yZSB7IH0s
ICIiLCAiIikpOwpAQCAtMTg4LDEwICsxODgsMTAgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Z2V0RXJyb3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGwK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3Ry
aW5nJiYgZXh0ZW5zaW9uKQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7
Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZChleHRlbnNpb24p
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pOwogfQog
Ci12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQo
KQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsK
ICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+bWFy
a0NvbnRleHRDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3
ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLmQ4Yjk4MjA3MTBiNzJkOWI0NDA4YjliYzkw
NTc1YmFlMmE2MGQ4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zNSw3ICszNSw2IEBA
CiAjaW5jbHVkZSAiU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTk0LDkgKzkzLDkgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpIGZpbmFsOwog
CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCByZXNoYXBlKGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKICAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoU3RyaW5nJiYpOwotICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAg
dm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICB2b2lkIHJlc2hhcGUoaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRS
aWdodCYmKT4mJikgPSAwOwogI2VsaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEw
M2NlYjM3YTBjMjk4OThlMzAyYjIuLjk3NjgwYTg3YWIzYWE0YTA3M2YyMTkzM2M1ZmVjYjViMjI0
ZGZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTM2
LDcgKzM2LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291
bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJv
bm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRl
bnNpb24pCi0gICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorICAgIHZvaWQgTWFy
a0NvbnRleHRDaGFuZ2VkKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVy
cm9yKQogICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNo
cm9ub3VzCiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
CmluZGV4IGQxYzMyOTA1MTdkMjk2YzUxZTM1NmU4YjRlNTcwYzA2N2JiNzc1OGQuLjkzYmQ2Nzcx
NjhiYjQ0Yzk4MTM0ZGM3ODk4YzkwM2UwZmJkMDNlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dl
bmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMzM3LDIwICsxMzM3LDIw
IEBACiAgICAgewogICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OwogICAgICAgICBh
c3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwotICAgICAgICByZXR1cm5WYWx1ZSA9IG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOwogICAgIH0KICAgICB2
b2lkIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAg
ICAgICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50
KG1fc3RyZWFtVGhyZWFkKTsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCk7CisgICAgICAg
IHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
YXJnMCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmV0dXJuVmFsdWUpKTsK
ICAgICB9CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PiYmIGJ1ZnMpCiAgICAgewogICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJl
YWQpOwotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVCht
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgp
KSwgYnVmcy5zaXplKCkpKTsKKyAgICAgICAgbV9jb250ZXh0LT5kcmF3QnVmZmVyc0VYVChtYWtl
R0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMZW51bSo+KGJ1ZnMuZGF0YSgpKSwg
YnVmcy5zaXplKCkpKTsKICAgICB9CiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQz
Ml90IHRhcmdldCwgdWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50
NjRfdCBwYXJhbXNTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDdhZTFlZTc2ZGM0YjA3YzQwM2Y2MGI4
YWQxM2RhZDliODdiZGVkMGEuLjM4Yzk0YjNhOGI3N2YwMjE5ZjE2Y2QzMjA5OWVjY2RmYzc5MzBm
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDIs
NyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlv
biYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJpYnV0ZXMpCisg
ICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzKQogICAgICwgbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24o
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsK
QEAgLTU5LDMxICs1OSw3MyBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiAgICAgZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRl
ZCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
ZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOwotICAgIG1fY3VycmVu
dEhlaWdodCA9IGhlaWdodDsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgaWYg
KCFzZW5kUmVzdWx0KQotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCitib29sIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewotICAgIGlmIChp
c0NvbnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChleHRlbnNpb24pKTsKLSAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgIG1hcmtDb250
ZXh0TG9zdCgpOworI2lmIEVOQUJMRShXRUJHTDIpCisgICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1
dGVzKCkud2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJH
TDI7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCit7CisgICAgLy8gRklY
TUU6IFRoZSBjYWxsZXIgc2hvdWxkIHRyYWNrIHRoaXMgc3RhdGUuCisgICAgaWYgKG1fbGF5ZXJD
b21wb3NpdGVkKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5n
ZWQoKTsKKyAgICAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Ok1hcmtDb250ZXh0Q2hhbmdlZCgpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgfQogfQogCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCitib29s
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOworICAgIHJldHVybiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9yZXF1ZXN0YWJsZUV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
d2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICBpZiAobV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkpIHsK
KyAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7CisgICAgICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNp
b25FbmFibGVkKG5hbWUpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
bWFya0NvbnRleHRMb3N0KCk7CisgICAgfQorfQorCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
d2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7Cit9
CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBT
dHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRl
bnNpb25zKQoreworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYXZhaWxhYmxlRXh0ZW5zaW9u
cy5zcGxpdCgnICcpKQorICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lv
bik7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMuc3Bs
aXQoJyAnKSkKKyAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7
Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSk7CisgICAgbV9jdXJyZW50V2lk
dGggPSB3aWR0aDsKKyAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUo
d2lkdGgsIGhlaWdodCkpOwogICAgIGlmICghc2VuZFJlc3VsdCkKICAgICAgICAgbWFya0NvbnRl
eHRMb3N0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4
IDI5ZjAxOTg3MTk1NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5NzM5NzEuLjU3M2Y3Y2I0YzBjOTVm
NTQ1ZWY2ZTA2NTQ0ODQ2ZjE3NDhjMzNhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC01MCw3ICs1
MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eQogICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHJpdmF0ZSBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgLCBwdWJsaWMgV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgeworICAgICwgcHVibGljIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgflJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkoKTsKQEAgLTU4LDExICs1OCwxNCBAQCBwdWJsaWM6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKLSAgICAvLyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCisgICAgLy8gV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIGZpbmFsOwotICAgIHVzaW5nIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQ7Ci0gICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFi
bGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU1hcmtD
b250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9v
bCkgZmluYWw7CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHN5
bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKQEAgLTMyMSw5ICszMjQsNiBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShH
UFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAotICAgIC8vIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIG92ZXJyaWRlcy4KLSAgICB2b2lkIHdhaXRVbnRpbElu
aXRpYWxpemVkKCkgZmluYWw7Ci0KICAgICBib29sIGlzQ29udGV4dExvc3QoKSBjb25zdCB7IHJl
dHVybiAhbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsgfQogICAgIHZvaWQgbWFya0NvbnRleHRMb3N0
KCk7CiAKQEAgLTM1MCwxMSArMzUwLDE4IEBAIHByaXZhdGU6CiAgICAgLy8gR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlv
bkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CiAKKyAgICB2b2lkIGluaXRp
YWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpOwog
ICAgIHZvaWQgZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgpOwogICAgIHZvaWQgYWJhbmRv
bkdwdVByb2Nlc3MoKTsKIAogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uOwogICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICAvLyBH
dWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCisgICAgSGFzaFNldDxTdHJpbmc+IG1f
YXZhaWxhYmxlRXh0ZW5zaW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4
dGVuc2lvbnM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKICAg
ICBHQ0dMZW51bSBtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3QgPSBOT19FUlJPUjsKICAgICBJUEM6
OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gbV9zdHJlYW1Db25uZWN0aW9uOwogfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YjdlNDIyODM2MzVi
Nzc2Mjk1OGFjZjFkYjE4YjAwZDEzM2E0ODU5Li5hMTUzNDE0NjNmMDc5ZTMwM2Y3NjljZTVlZDFj
NjRlY2Q1ZjNjNDYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbnNpb25zR0wgaXMgbm90IHVzZWZ1bCBj
bGFzcywgaXQgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBtYW51YWxseSBpbXBsZW1lbnRlZCBmdW5jdGlvbnMu
CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIyLTAyLTExICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCB0
byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgx
Li5jNjVkODc2YTRhZjIxMWNiZjczY2I3Mjk4NjQzMTA4MWI2MGY4OGY2IDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsCkBAIC00MSw3ICs0MSw2IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogZnJv
bSB0eXBpbmcgaW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBDYWxsYWJsZSwgVHVwbGUsIFNl
dCwgT3B0aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50ZXIKIAogcm9vdF9kaXIgPSAo
cGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8gIi4uIikucmVzb2x2ZSgpCi1l
eHRlbnNpb25zX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNlIiAvICJXZWJDb3JlIiAvICJw
bGF0Zm9ybSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5oIgogCiBmdW5jdGlvbnNfaW5w
dXRfZm5zID0gWwogICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAiV2ViS2l0IiAvICJXZWJQcm9j
ZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmgiCkBAIC05OCw3ICs5Nyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+
ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
U3RyaW5nIGV4dGVuc2lvbikKLSAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisg
ICAgdm9pZCBNYXJrQ29udGV4dENoYW5nZWQoKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3Io
dWludDMyX3QgZXJyb3IpCiAgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5W
YWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkg
U3luY2hyb25vdXMKQEAgLTQyMCwxNCArNDE5LDEyIEBAIGNsYXNzIGNwcF9mdW5jKG9iamVjdCk6
CiAgICAgbmFtZTogc3RyCiAgICAgYXJnczogY3BwX2FyZ19saXN0CiAgICAgcmV0dXJuX3R5cGU6
IGNwcF90eXBlCi0gICAgaXNfZXh0ZW5zaW9uOiBib29sCiAgICAgb3ZlcmxvYWRfc3VmZml4OiBz
dHIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBf
dHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246IGJvb2wpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3Bw
X2FyZ19saXN0KToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLnJldHVy
bl90eXBlID0gcmV0dXJuX3R5cGUKICAgICAgICAgc2VsZi5hcmdzID0gYXJncwotICAgICAgICBz
ZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgogICAgICAgICBzZWxmLm92ZXJsb2FkX3N1
ZmZpeCA9ICIiCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTcxMSw3ICs3MDgsNiBAQCBj
bGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVyYXRvcihvYmplY3QpOgogY2xh
c3Mgd2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgogICAgIG5hbWU6IHN0cgogICAgIGFyZ3M6
IGNwcF9hcmdfbGlzdAotICAgIGlzX2V4dGVuc2lvbjogYm9vbAogICAgIHByZV9jYWxsX3N0bXRz
OiBMaXN0W3N0cl0KICAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0KICAgICBwb3N0X2NhbGxfc3Rt
dHM6IExpc3Rbc3RyXQpAQCAtNzIzLDcgKzcxOSw2IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX2lt
cGwob2JqZWN0KToKICAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1bmMubmFtZQogICAgICAgICBz
ZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNwcF9mdW5jLm92ZXJsb2FkX3N1ZmZpeAogICAgICAgICBz
ZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3QoW10pCi0gICAgICAgIHNlbGYuaXNfZXh0ZW5zaW9uID0g
Y3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCiAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgPSBbXQog
ICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10
cyA9IFtdCkBAIC03MzgsMTIgKzczMywxMSBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9pbXBsKG9i
amVjdCk6CiAKICAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgogICAgICAgICBzZWxmLmNhbGxf
c3RtdHMgKz0gWyAiYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsiIF0KLSAgICAgICAg
ZXh0ID0gImdldEV4dGVuc2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0ZW5zaW9uIGVsc2UgIiIKIAog
ICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9yIGUgaW4gc2VsZi5pbl9leHBy
cykKICAgICAgICAgaXNfYXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhwcnMpID09IDAKIAotICAgICAg
ICBjYWxsX2V4cHIgPSBmIm1fY29udGV4dC0+e2V4dH17c2VsZi5uYW1lfSh7aW5fZXhwcnN9KSIK
KyAgICAgICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntzZWxmLm5hbWV9KHtpbl9leHByc30p
IgogICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhwcjoKICAgICAgICAgICAgIHNl
bGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQogICAgICAgICBlbHNlOgpAQCAtODc5
LDggKzg3Myw4IEBAIGRlZiBjcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3M6IEl0ZXJhYmxl
W3N0cl0pOgogICAgIHJldHVybiBjcHBfYXJnX2xpc3QoW2NyZWF0ZV9jcHBfYXJnKGFyZ19zcGVj
PWUsIGFyZ19pbmRleD1pKSBmb3IgaSwgZSBpbiBlbnVtZXJhdGUoYXJnc19zcGVjcyldKQogCiAK
LWRlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3RyLCByZXR1cm5fc3BlYzogc3RyLCBhcmdzX3Nw
ZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVuc2lvbjogYm9vbCk6Ci0gICAgcmV0dXJuIGNwcF9mdW5j
KG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1j
cmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpLCBpc19leHRlbnNpb249aXNfZXh0ZW5zaW9u
KQorZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVybl9zcGVjOiBzdHIsIGFyZ3Nf
c3BlY3M6IExpc3Rbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJu
X3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0
KGFyZ3Nfc3BlY3MpKQogCiAKIGRlZiByZWFkX2xpbmVzX3VudGlsKGxpbmVzIDogSXRlcmFibGVb
c3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5vbmUsIE5vbmVdOgpAQCAtODk2
LDIwICs4OTAsNiBAQCBkZWYgbWFpbigpOgogCiAgICAgIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2Yg
ZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNzLgogCi0g
ICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMgcmVtb3ZlZCwgd2UgbmVlZCB0
byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgotICAgICMgd2l0aCB0aGUgZGlzdGluY3Rp
b24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBhbiBleHRlbnNpb24gZnVuY3Rp
b24uCi0gICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3RyXSA9IHNldCgpCi0gICAgd2l0
aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6Ci0gICAgICAgIGZvciBsaW5lIGluIGYu
cmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICBtID0gcmUubWF0Y2gociIuKnZpcnR1YWwgKFxTKylc
cysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAg
ICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAotICAgICAgICAgICAgICAgICAgICBuYW1l
PW1bMl0sCi0gICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCi0gICAgICAgICAg
ICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3BlY3MobVszXSksCi0gICAgICAg
ICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAotICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUoW3N0cihmdW5jKV0pCiAgICAg
ZnVuY3MgPSBbXQogICAgIHVuaW1wbGVtZW50ZWQgPSBbXQogICAgIGZvciBmbiBpbiBmdW5jdGlv
bnNfaW5wdXRfZm5zOgpAQCAtOTI2LDkgKzkwNiw3IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybl9zcGVjPW1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX3NwZWNzPWNwcF9z
cGxpdF9hcmdzX3NwZWNzKG1bM10pLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXh0ZW5z
aW9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGZ1
bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lvbl9zaWduYXR1cmVzCiAgICAg
ICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQoKToKICAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451873</attachid>
            <date>2022-02-14 01:19:34 -0800</date>
            <delta_ts>2022-02-14 23:35:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236490-20220214111932.patch</filename>
            <type>text/plain</type>
            <size>286206</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2M2ZlYmNiMjA0NzZj
MzNkOGQ4ZGVhN2QxMzg3YTM5Zjg4ZGI2NC4uMzhmN2MxZmYxYWE0MDk4OTEyMDA0ZDdjODI0YzJl
MTAzZmNhZDgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0OCBAQAorMjAyMi0wMi0xNCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuc2lvbnNH
TCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIFJlbW92ZSBFeHRlbnNpb25zR0wuIEl0
IGlzIG5vdCBhIHVzZWZ1bCBjbGFzcywgaXQgZG9lcyBub3QgYWJzdHJhY3QgYW55dGhpbmcuCisg
ICAgICAgIEl0IGhhcyBzaW1pbGFyIGZ1bmN0aW9ucyB0byBHcmFwaGljc0NvbnRleHRHTCBzdWJj
bGFzcywgYW5kIG5lZWRzIGFuZCB1c2VzIEdyYXBoaWNzQ29udGV4dEdMIHN1YmNsYXNzCisgICAg
ICAgIHVuZGVybmVhdGguCisgICAgICAgIEl0IGlzIGEgcHJvYmxlbWF0aWMgY2xhc3MgYXMgaXQg
aXMgb2J0YWluZWQgdGhyb3VnaCBhIHZpcnR1YWwgZnVuY3Rpb24sIGJ1dCB0aGF0CisgICAgICAg
IHZpcnR1YWwgZnVuY3Rpb24gb3ZlcnJpZGUgaXMgYmVpbmcgY2FsbGVkIGR1cmluZyBjb25zdHJ1
Y3Rpb24gb2YgdGhlIEdyYXBoaWNzQ29udGV4dEdMIHN1YmNsYXNzCisgICAgICAgIGluc3RhbmNl
LgorICAgICAgICBBbHNvIHRoZSBFeHRlbnNpb25zR0wgd2lsbCBuZWNjZXNzYXJpbHkgY2FsbCBi
YWNrIHRvIEdyYXBoaWNzQ29udGV4dEdMIHN1YmNsYXNzIGluc3RhbmNlIGJlaW5nCisgICAgICAg
IGNvbnN0cnVjdGVkLgorICAgICAgICBDdXJyZW50IGdldEV4dGVuc2lvbnMoKSB2aXJ0dWFsIGZ1
bmN0aW9uIG92ZXJyaWRlIGNhbGxzIGFyZSBleHBlY3RlZCB0byBnbworICAgICAgICB3aGVyZSB0
aGUgQysrIGRlZmluZXMgdGhlbSBnb2luZyBkdXJpbmcgY29uc3RydWN0aW9uLgorICAgICAgICBD
dXJyZW50IGNhbGxzIGJhY2sgdG8gdGhlIEdyYXBoaWNzQ29udGV4dEdMIHN1YmNsYXNzIGluc3Rh
bmNlIGR1cmluZyBjb25zdHJ1Y3Rpb24gKnNob3VsZCoKKyAgICAgICAgYWNjZXNzIHN0YXRlIHRo
YXQgaXMgYWxyZWFkeSBpbml0aWFsaXplZCwgYnV0IGl0IGlzIHF1aXRlIGVycm9yLXByb25lIGFu
ZCBoYXJkIHRvCisgICAgICAgIGFuYWx5emUuCisKKyAgICAgICAgTW92ZSBFeHRlbnNpb25zR0wg
ZnVuY3Rpb25zIHRvIEdyYXBoaWNzQ29udGV4dEdMLiBNYWtlIGNhbGwtc2l0ZXMgY2FsbCB0aGUg
Y29udGV4dCBpbnN0ZWFkIG9mIHRoZQorICAgICAgICBleHRlbnNpb24gaGVscGVyLiBSZW5hbWUg
dGhlIGZ1bmN0aW9ucyB3aXRoIHBhdHRlcm4gImlzU3VwcG9ydGVkIiAtPiAiaXNFeHRlbnNpb25T
dXBwb3J0ZWQiLgorICAgICAgICBSZW1vdmUgR3JhcGhpY3NDb250ZXh0R0w6OmdldEV4dGVuc2lv
bnMoKSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwuCisKKyAgICAgICAgRm9yIGxlZ2FjeSBjb250ZXh0
cyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUyBwcmVz
ZXJ2ZSB0aGVpcgorICAgICAgICBFeHRlbnNpb25HTENvbW1vbiBzdWJjbGFzc2VzLiBBY2Nlc3Np
bmcgaXQgaGFwcGVucyBmcm9tIGEgbm9ybWFsIGZ1bmN0aW9uIGZyb20gbGVnYWN5IGNhbGwgc2l0
ZXMKKyAgICAgICAgdGhhdCBrbm93IHRoYXQgdGhleSdyZSBjYWxsaW5nIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLgorCisgICAgICAgIEZvciBHcmFwaGljc0NvbnRleHRHTEFOR0xFLCBtb3ZlIGNv
bnRleHQgaW5pdGlhbGl6YXRpb24gY29kZSB0byBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbml0
aWFsaXplKCkKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgY29uc3RydWN0b3IuIFRoaXMgd2F5IHRo
ZSBpbml0aWFsaXphdGlvbiBjb2RlIGNhbiBjYWxsIHZpcnR1YWwgZnVuY3Rpb25zIGFuZCB0aGUg
Y2FsbHMKKyAgICAgICAgYXJlIGRlbGl2ZXJlZCBub3JtYWxseSB0byB0aGUgbGFzdCBvdmVycmlk
ZXIuCisKKyAgICAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgY2FuIG5vdyBi
ZSByZW1vdmVkLCBhcyBpdCBpcyB1bm5lZWRlZCBhbnl3YXkgYW5kIGl0cyBhZGRlZCB2aXJ0dWFs
CisgICAgICAgIGZ1bmN0aW9ucyB3b3VsZCBjYXVzZSBpbmNvbnZlbmllbnQgbmFtaW5nIGR1cGxp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rvci4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OnN0YXJ0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJ
bnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJh
eXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFu
Y2VkQXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5zdGFu
Y2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1ZmZl
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRl
ZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhU
RmxvYXRCbGVuZDo6RVhURmxvYXRCbGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpFWFRGbG9hdEJs
ZW5kOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVDb21w
cmVzc2lvblJHVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29t
cGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OktI
UlBhcmFsbGVsU2hhZGVyQ29tcGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpLSFJQYXJhbGxlbFNo
YWRlckNvbXBpbGU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvS0hSUGFyYWxs
ZWxTaGFkZXJDb21waWxlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlw
bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJPUmVu
ZGVyTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0ZCT1JlbmRlck1pcG1hcDo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6T0VT
VGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1
cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZG
bG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZlckZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFTVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1
cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVENzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1
ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVm
ZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OmRy
YXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6c2F0
aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJh
bWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xlYXJCaXRzQnlBdHRhY2htZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11
bHRpRHJhdzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRpRHJh
dy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24pOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpw
b3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpoaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnJlYWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVuZGVyYnVmZmVyU3RvcmFnZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldE1heENvbG9yQXR0YWNobWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2ls
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnN1cHBvcnRzRXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6aXNFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmRyYXdCdWZmZXJz
RVhUKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmFkanVzdFdl
YkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6R3JhcGhp
Y3NDb250ZXh0R0xDb2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlc2hhcGVEaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjphbGxv
Y2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENvY29hOjpiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpzdXBwb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0xDb21tb246OmVuc3VyZUVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4
dGVuc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzRXh0ZW5zaW9uRW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2Uy
RCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5z
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHA6CisKIDIwMjItMDItMTEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJl
dWJvdGVsbGEuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIGFuIDxpbnB1dCB0eXBlPSJpbWFn
ZSI+IHdpbGwgc3VibWl0IHRoZSBmb3JtIHdpdGggbnVsbCBzdWJtaXR0ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MTM1Yjk2MjdlODllM2MyMmE4ZmQwY2NhMzE2NGI4OWUxYjk5OWU1Mi4uZDk2YWUxMTA1MWNlN2Rj
NDcyY2I2MzBhZjlkYTEzMWE3YTI4YjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAy
Mi0wMi0xNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAg
IEV4dGVuc2lvbnNHTCBpcyBub3QgdXNlZnVsIGNsYXNzLCBpdCBzaG91bGQgYmUgcmVtb3ZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDkwCisK
KyAgICAgICAgTW92ZSB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgZnVuY3Rp
b25zIHRvCisgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBUaGUgLi5CYXNlIGNhbiBu
b3cgYmUgcmVtb3ZlZAorICAgICAgICBhcyBFeHRlbnNpb25HTCBpcyByZW1vdmVkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1hcmtDb250ZXh0Q2hhbmdl
ZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOgorICAgICAgICAoZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQik6CisgICAgICAgIChnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUp
OgorICAgICAgICAoZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0
Q29udGV4dFZpc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc0dMRVMyQ29tcGxpYW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3VwcG9ydHNFeHRlbnNpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVF
eHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKwogMjAyMi0wMi0x
MSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBv
cnQgdG8gcXVlcnkgY2FtZXJhIGFuZCBtaWNyb3Bob25lIHBlcm1pc3Npb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDQ1N2M0YWE5YjFhMThjY2ZhOWFiMjg3ZTRlMGIzNzBlZTNhZDUwOWMuLjFk
NjgwMTUwZWJmOWMxMTE5YmM5NWU2MTE3NzBlZTMzNTMwMmQwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xOTA4LDcgKzE5MDgsNiBAQCBpZiAoRU5BQkxFX1dFQkdMKQogICAgICAgICApCiAg
ICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuY3BwCi0gICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCiAgICAgICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwCiAgICAgICAg
ICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDA4YTAxZTU3OGQ4YTM1MjdlNmZlZTQ0MmNlOTA4MTFh
ZjViYWZhYzIuLjQyODliMTNhZGU4MDNmMmYyYTk0MDk1YzM4NThjZGVjMzczNzUxYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTQzNSw3ICsxNDM1LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UG9pbnQzRC5oCkBAIC0xNTUzLDcgKzE1NTIsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1WaWRlb1Ry
YWNrQ29uZmlndXJhdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1WaWRlb1Ry
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAot
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9SZW5kZXJpbmdNb2RlLmgKQEAgLTE1ODEsNyArMTU3OSw2IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdM
RUhlYWRlcnMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKLSAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCiAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIu
Y3BwCmluZGV4IDIzOWEyMmJkMTAzMDIxZDEyNzUyNmEwZjQ4YzcwMWQ5YjY3NDBlMzUuLjczY2Uy
YzIwYjYyOTZjMWY0ODg5ZDU5ZTNiOGY3Y2JjYmE1YzRmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcApAQCAt
MzMsNiArMzMsOSBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIgogI2lm
IFVTRShPUEVOR0xfRVMpCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2Vsc2UKKyNpbmNsdWRlICJFeHRlbnNp
b25zR0xPcGVuR0wuaCIKICNlbmRpZgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAj
ZW5kaWYKQEAgLTE3Nyw3ICsxODAsNyBAQCB2b2lkIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnN0
YXJ0RnJhbWUoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheQogICAgIG1f
b3BhcXVlVGV4dHVyZSA9IGRhdGEub3BhcXVlVGV4dHVyZTsKIAogI2lmIFVTRShPUEVOR0xfRVMp
ICYmICFVU0UoQU5HTEUpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
RXh0ZW5zaW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25zKCkpOworICAgIGF1dG8mIGV4
dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wp
LmdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAobV9hdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBleHRl
bnNpb25zLmlzSW1hZ2luYXRpb24oKSkgewogICAgICAgICBleHRlbnNpb25zLmZyYW1lYnVmZmVy
VGV4dHVyZTJETXVsdGlzYW1wbGVJTUcoR0w6OkZSQU1FQlVGRkVSLCBHTDo6Q09MT1JfQVRUQUNI
TUVOVDAsIEdMOjpURVhUVVJFXzJELCBtX29wYXF1ZVRleHR1cmUsIDAsIG1fc2FtcGxlQ291bnQp
OwogICAgICAgICByZXR1cm47CkBAIC0yNzIsMTIgKzI3NSwxMiBAQCBib29sIFdlYlhST3BhcXVl
RnJhbWVidWZmZXI6OnNldHVwRnJhbWVidWZmZXIoKQogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBw
bGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDgg
OiBHTDo6REVQVEhfQ09NUE9ORU5UOwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVO
Q0lMX0lOREVYODsKICNlbGlmIFVTRShPUEVOR0xfRVMpCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdMRVMmPihnbC5nZXRFeHRlbnNpb25z
KCkpOworICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsKICAgICBib29sIHBsYXRmb3JtU3Vw
cG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25z
LnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKICAgICBhdXRvIGRlcHRo
Rm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0
X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1h
dCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbHNlCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJj4oZ2wuZ2V0RXh0ZW5zaW9u
cygpKTsKKyAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7CiAgICAgYm9vbCBwbGF0Zm9ybVN1
cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9u
cy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgYXV0byBkZXB0
aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgy
NF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9DT01QT05FTlQ7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0
ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5UOwpAQCAtMjkwLDcgKzI5Myw3IEBAIGJvb2wgV2ViWFJP
cGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcigpCiAjaWYgVVNFKEFOR0xFKQogICAg
ICAgICBnbC5nZXRJbnRlZ2VydihHTDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2Ft
cGxlQ291bnQsIDEpKTsKICNlbHNlCi0gICAgICAgIGdsLmdldEludGVnZXJ2KEV4dGVuc2lvbnNH
TDo6TUFYX1NBTVBMRVMsIG1ha2VHQ0dMU3BhbigmbWF4U2FtcGxlQ291bnQsIDEpKTsKKyAgICAg
ICAgZ2wuZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9TQU1QTEVTLCBtYWtlR0NH
TFNwYW4oJm1heFNhbXBsZUNvdW50LCAxKSk7CiAjZW5kaWYKICAgICAgICAgLy8gQ2FwIHRoZSBt
YXhpdW11bSBtdWx0aXNhbXBsZSBjb3VudCBhdCA0LiBBbnkgbW9yZSB0aGFuIHRoaXMgaXMgbGlr
ZWx5IG92ZXJraWxsIGFuZCB3aWxsIGltcGFjdCBwZXJmb3JtYW5jZS4KICAgICAgICAgbV9zYW1w
bGVDb3VudCA9IHN0ZDo6bWluKDQsIG1heFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
MWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0YWIzM2E4YmQ3NWU3YTU4YS4uOGM4MDVmMmYwNzdmZmVj
YWI3YzUxNWE2YWM3NzQ1ZmIzZWMxY2NmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwNzMsNyArMjA3
Myw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVS
YW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCi1wbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggZjFiNzM4ZTU1NmFjM2Q4YmQxZWQ3YWFmYWIwYzIzOGRkYTlkNzQxOS4uN2JkNWEyNGI0
YTYxYWJhMjEwYmZiNDVhYThjYjczMzIzMjJmNWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC02MTUsNiArNjE1LDUgQEAgdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmlj
YXRpb25PdmVybGF5Lm1tCiAvLyB3aXRoIGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdM
LgogCiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5
Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8t
dW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAg
QG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZTYzN2YzZmQ2MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4u
YjQ1YmQwZDlmYTJkMWM1NmQ1ZGYyMGIxMjZiYTJjMzU3YWY2NTdkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NywxMSAr
MjE4Nyw4IEBACiAJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEFueS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0
QjAwQjE4NkM4IC8qIFdlYkdMQW55LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkU0QUJDRDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25v
d25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTRBQkNEMzEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCAqLzsg
fTsKIAkJNkU0RTkxQUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFB
MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkU2N0QyQTkxMjgwRThCRDAw
ODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZFNzJG
NTRDMjI5RENEMEMwMEIzRTE1MSAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2
MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovOyB9OwogCQk2RTcyRjU0RTIyOURDRDEwMDBC
M0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRGMjI5RENEMTMwMEIzRTE1
MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyOTA4NjEyMjlEQjk1MDAwMDk4NkUyIC8qIFRlbXBvcmFy
eUFOR0xFU2V0dGluZy5jcHAgKi87IH07Ci0JCTZFNzJGNTUwMjI5RENEMTcwMEIzRTE1MSAvKiBF
eHRlbnNpb25zR0xBTkdMRS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkUyN0YyNDQyMjlDOUY4RDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmgg
Ki87IH07CiAJCTZFNzJGNTUxMjI5RENEMUEwMEIzRTE1MSAvKiBUZW1wb3JhcnlBTkdMRVNldHRp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjkw
ODYzMjI5REI5NzAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLzsgfTsKIAkJ
NkU4NEU5RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjgg
LyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2RThBQ0RFRDIzMzQ1Q0JDMDAyNEFBRjUgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkU4QUNERUIyMzM0NUNBRjAwMjRBQUY1IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCAq
LzsgfTsKQEAgLTI0MTIsNyArMjQwOSw2IEBACiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8q
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyog
Q1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdCOTA0MTcwMjU1MDExNDIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5NUNGRUIyNzU0RkY2RTAwMDA2
MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGlj
c0NvbnRleHRHTFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I5NUNGRUQyNzU0RkY3QzAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3
NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYw
MDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwODY5LDggKzEwODY1LDYg
QEAKIAkJNkUyNDJCMjkyMzM1OTNENzAwMkNBREQ0IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRD
MS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjQyQjJBMjMzNTkzRDgwMDJD
QURENCAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkUyN0YyNDIyMjk4Q0U0QjAwRjFGNjMyIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFMjdGMjQzMjI5QzlGODQw
MEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zR0xBTkdMRS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyog
VGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5QU5HTEVTZXR0aW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMw
NiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA5MDIsNyArMTA4OTYsNiBAQAogCQk2RTUzODhF
MDI0NThBRTFEMDA3NkFFMDMgLyogV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZmZXJGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFNTM4OEUxMjQ1OEFFMUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxv
YXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFNTc2QkMzMjRFQjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRN
TENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2
RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RTdDQTMwQTI1QjREMjhBMDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYkdMTXVsdGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFN0NBMzBCMjVCNEQzMjgwMDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xNdWx0aURyYXcuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RTg0RTlERTE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1MjYsNyArMTE1MTksNiBAQAogCQk3Qjcz
MTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMx
MjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVF
RjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTVDRkU5Mjc1NEZGNkUw
MDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGlu
ZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCOTVDRkVDMjc1NEZGN0MwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVD
QjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBTkdMRVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTE1NDIsNyArMTE1MzQsNiBAQAogCQk3QkREQTMxRDI3NEY5REE1MDAzODY1OUUgLyogR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTENvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERB
MzQ5Mjc1QTAxMzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCRERBMzRCMjc1QTAxMzAwMDM4NjU5RSAvKiBQcm9jZXNzSWRlbnRpdHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0lkZW50aXR5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1RDk4
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0JGRjU5RUYyNzU3NzFFODAwNzczRDM5IC8qIERpc3BsYXlDb25maWd1
cmF0aW9uTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGlzcGxh
eUNvbmZpZ3VyYXRpb25Nb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
RkY1OUYxMjc1NzcxRTgwMDc3M0QzOSAvKiBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUNvbmZpZ3VyYXRp
b25Nb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZB
RDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Mzk1LDggKzI0Mzg2LDYgQEAKIAkJCQky
N0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIgLyogQU5HTEVIZWFkZXJzLmggKi8sCiAJCQkJN0JDRDQy
RDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLywKLQkJCQk2RTI3RjI0MzIy
OUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovLAotCQkJCTZFMjdGMjQ0
MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQy
MjI5OENFNEIwMEYxRjYzMiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKIAkJCQk3
Qjk1Q0ZFQzI3NTRGRjdDMDAwMDYwQ0UgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oICovLAog
CQkJCTZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3Bw
ICovLApAQCAtMjg4NzAsNyArMjg4NTksNiBAQAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcy
QyAvKiBEaXNwbGF5VXBkYXRlLmNwcCAqLywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMg
LyogRGlzcGxheVVwZGF0ZS5oICovLAogCQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBE
cmF3R2x5cGhzUmVjb3JkZXIuaCAqLywKLQkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyog
RXh0ZW5zaW9uc0dMLmggKi8sCiAJCQkJMkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0
TGluZS5jcHAgKi8sCiAJCQkJMkU4ODhDQTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5o
ICovLAogCQkJCUIyNzUzNTNBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywK
QEAgLTI5MDY1LDggKzI5MDUzLDYgQEAKIAkJCQlDRDFGOUFGQzI2RkQzOENBMDA2MTdFQjYgLyog
UGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzLmggKi8sCiAJCQkJQkNBQjQxN0Yx
M0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCiAJCQkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovLAotCQkJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAgKi8sCi0JCQkJN0I5MDQxNkUyNTUw
MTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8sCiAJ
CQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywK
IAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywK
IAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAt
MzQ0NDEsOCArMzQ0MjcsNiBAQAogCQkJCTJEMjkzODZCMjM1RjZCNjkwMEM3RjNCMiAvKiBFeGNl
cHRpb25EZXRhaWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdF
NDcgLyogRXhjZXB0aW9uT3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzN0ZCMzQ1MUY5RUEwNkQw
MEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2
RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywK
LQkJCQk2RTcyRjU1MDIyOURDRDE3MDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHls
ZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8q
IEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4
MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICov
LApAQCAtMzY3NjEsNyArMzY3NDUsNiBAQAogCQkJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYxRSAv
KiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUx
OTkyMDdENjM0RDAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDZCOTUxOUEyMDdENjM1NDAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAq
LywKLQkJCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkU5MjJGQ0Q3QzAwMDEyMDRF
QyAvKiBSZW1vdGVQbGF5YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUIyMkZDRDdD
OTAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3M0ExNTU0MjE3N0E0MjYwMEVBMDhGMiAvKiBSZW1vdGVWaWRlb1NhbXBs
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODY0OCw3ICszODYzMSw2IEBACiAJCQkJMUFCQTc2Q0Ex
MUQyMEU1MDAwNEMyMDFDIC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQyMjgzMDMyM0E4NDcwNzAwMzY0QjdFIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTVDQkQ1OTU5MjI4MEU5MjYwMDJCMjJBQSAvKiBDdXN0b21IZWFkZXJGaWVsZHMuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNkU3MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lv
bnNHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJG
NSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMEYyRjYyNEFF
QTYwQTAwRTFEMEEwIC8qIEdhbWVDb250cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MUE0QkIwQTE5NTRENjE2MDBGQTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2Vk
QXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJy
YXlzLmNwcAppbmRleCA4MjIwMzM5MTVkMDRlM2IwYzI5NjJmYmI1MjM0ZTkzNGY5M2E3MTE3Li44
NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZmYzE4N2Y2Y2Y1YmJlYWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0yOCwx
MCArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJBTkdMRUluc3RhbmNlZEFy
cmF5cy5oIgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKFdQ
RSkKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNyArMzgsNyBA
QCBBTkdMRUluc3RhbmNlZEFycmF5czo6QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7
CiAjaWYgVVNFKEFOR0xFKQotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKICNlbmRpZgogfQogCkBAIC01MywxMCArNDksMTAg
QEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6Omdl
dE5hbWUoKSBjb25zdAogICAgIHJldHVybiBBTkdMRUluc3RhbmNlZEFycmF5c05hbWU7CiB9CiAK
LWJvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQorYm9vbCBBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdy
YXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlz
Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xF
SW5zdGFuY2VkQXJyYXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3Rh
bmNlZEFycmF5cy5oCmluZGV4IDMyZWI4OTdiMTZkOTA5ZDM5NGExMGE3ODUxYzFlMzI2NzU0ZWM5
MzYuLjY5YzQ0ZGQ0OTEzYWZlM2Q1ZjBlYjNkZjMwYTgxN2MzNGJmZjA4NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaApAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBm
aW5hbDsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAK
ICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpOwogICAgIHZvaWQg
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50
LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxv
YXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5j
cHAKaW5kZXggMDllNTBjNGNiYWQzZjU5OGEzMjJkOTA1MWM5ODNmZmIwZTdiMjVlNy4uNzk2NTYw
YmQ0Y2U2YTUwOTYxNjNiZTE5NDAwYmVlZTI0ODJmMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTAgKzM3LDEwIEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChFWFRDb2xvckJ1ZmZlckZsb2F0KTsKIEVYVENvbG9yQnVmZmVy
RmxvYXQ6OkVYVENvbG9yQnVmZmVyRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFw
aGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsKICAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAg
IC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNp
dGx5IGhlcmUuCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25z
KCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mbG9hdF9i
bGVuZCJfcyk7CiB9CiAKIEVYVENvbG9yQnVmZmVyRmxvYXQ6On5FWFRDb2xvckJ1ZmZlckZsb2F0
KCkgPSBkZWZhdWx0OwpAQCAtNTEsOSArNTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9u
TmFtZSBFWFRDb2xvckJ1ZmZlckZsb2F0OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gRVhU
Q29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3Vw
cG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVY
VENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkK
IHsKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiX3MpOworICAgIHJldHVybiBj
b250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il9zKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUQ29sb3JCdWZmZXJGbG9hdC5oCmluZGV4IGViMjlmYTBlNTQ5M2EyNDgxMWNjMTA2
ODczNjNhMWQ4OWNiZGZkNzYuLjk1NDhmMGY5M2YwZTQ2N2Q2YjkyYWFlZmRjNTk1M2Y0OGQ1Mzgw
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVy
RmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZs
b2F0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXRO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3Qg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChH
cmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQu
Y3BwCmluZGV4IDc5ZTFjYzE5ZDFlYmY3ZWMwNzQ3ZTM2NWIyMGJmNDFiY2MzMzIwNGYuLjBlZmVk
ODNhZDZhOTFmMDQ0MWIyM2U0NzE0MmFiOTg3NzgzMzQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTI4
LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJI
YWxmRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM3LDcg
QEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KTsK
IEVYVENvbG9yQnVmZmVySGFsZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOworICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJIYWxmRmxv
YXQ6On5FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTQ4LDEwICs0Nywx
MCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBFWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVYVENvbG9yQnVmZmVySGFsZkZsb2F0TmFt
ZTsKIH0KIAotYm9vbCBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKGNvbnN0IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEVYVENvbG9yQnVmZmVySGFs
ZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0
dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKQotICAgICAgICAmJiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2NvbG9yX2J1
ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmgKaW5kZXggMTA3NzllZjZjMmM5YzQyNmYzZDY1
MTE2MWU4ZjZkMGRkZjIzY2Y3NS4uNmY0YmM0ODFhMzA0ZjY0ZDQ1ZDkyMmIxYjcyMzExZmM5OGQ5
Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZm
ZXJIYWxmRmxvYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9y
dGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKaW5kZXgg
OGVmNjg3OTMzYWFlY2Y1YjhkMzNjZTAyMDc4ODJjMmJkZDU3ODk2MS4uYmRkODVkMDcwZDA4NzEz
OTYzZGMxN2IxNjRhMmZiYWVlNjA3MDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhURmxvYXRCbGVuZC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wp
CiAjaW5jbHVkZSAiRVhURmxvYXRCbGVuZC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhURmxvYXRC
bGVuZCk7CiBFWFRGbG9hdEJsZW5kOjpFWFRGbG9hdEJsZW5kKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0VYVF9mbG9hdF9ibGVuZCJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogCiBF
WFRGbG9hdEJsZW5kOjp+RVhURmxvYXRCbGVuZCgpID0gZGVmYXVsdDsKQEAgLTQ4LDkgKzQ3LDkg
QEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgRVhURmxvYXRCbGVuZDo6Z2V0TmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIEVYVEZsb2F0QmxlbmROYW1lOwogfQogCi1ib29sIEVYVEZsb2F0
QmxlbmQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQorYm9vbCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOworICAgIHJldHVybiBjb250
ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwogfQogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhURmxvYXRCbGVuZC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURmxv
YXRCbGVuZC5oCmluZGV4IDIyYzMwMmEzMzBhNjIyMjM1Y2Y2ODUyOTNjZDhjMTY4NTZhNDU3YmUu
LjQ0NmI5ZmYzNzFkYzI5MmI4ZmU2MTgyOTMyZDU4ZjU2NjYwNjc5MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwor
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAppbmRleCA0NjNhNTg3M2NmMzA5NjMx
MmQ5N2Q2MzI3ZjYxYWU4MWU0NzFkZDdkLi40NmM5NjBmMTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYx
MTgzMDI1YWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0
dXJlQ29tcHJlc3Npb25SR1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5B
QkxFKFdFQkdMKQogI2luY2x1ZGUgIkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKLSNpbmNs
dWRlICJFeHRlbnNpb25zR0wuaCIKIAogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKQEAgLTM4LDEyICszNywxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4
dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0
dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAg
ICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3JndGMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKIAot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JFRF9SR1RDMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKLSAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMy
X0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0Nv
bnRleHRHTDo6Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9S
RURfUkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOwogfQogCiBFWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDOjp+RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9LSFJQYXJhbGxlbFNoYWRlckNvbXBp
bGUuY3BwCmluZGV4IDUyNzEzOGYzMGY3NWZhZDA3Mzk4NTk0YjMzM2E3ZGY5YzE0MmQyODAuLmU2
NmJiODI0M2E3Mzc5MjFhMGQ1MzUzNzVmZWM2Y2RmM2IzOWFmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmNwcApA
QCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJLSFJQYXJhbGxl
bFNoYWRlckNvbXBpbGUuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcg
KzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEtIUlBhcmFsbGVsU2hhZGVyQ29t
cGlsZSk7CiBLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OktIUlBhcmFsbGVsU2hhZGVyQ29tcGls
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3Mp
OworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKIH0KIAogS0hSUGFyYWxsZWxT
aGFkZXJDb21waWxlOjp+S0hSUGFyYWxsZWxTaGFkZXJDb21waWxlKCkgPSBkZWZhdWx0OwpAQCAt
NDgsOSArNDcsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBLSFJQYXJhbGxlbFNo
YWRlckNvbXBpbGU6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGVOYW1lOwogfQogCi1ib29sIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9y
dGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIEtIUlBh
cmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5zdXBwb3J0cygiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlIl9zKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0tIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKaW5k
ZXggMWZjZmMyYjU4ZWQ5ZmI0ZTZkMTE3NDE4NjE0N2RmM2JkYzAyNTNhOS4uODM4MDRkNmRmOWYy
NjMxZDlhNzNkOTUwOGVhNzEwZjlhY2I1MTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLmgKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTRkJPUmVuZGVyTWlwbWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5jcHAKaW5kZXggNzFhODFkMGQ5MzA5ZDY0NGVlNDg2
OGJkYWEyM2VkODc4NGFmNTIxYi4uNjUyMjBiN2FiYzA3MTMzNTY1NmJkN2ZiMzUzNjJmM2U0YTIy
ZjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRkJPUmVuZGVy
TWlwbWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNGQk9SZW5kZXJN
aXBtYXAuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUg
Ik9FU0ZCT1JlbmRlck1pcG1hcC5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT0VTRkJPUmVuZGVyTWlw
bWFwKTsKIE9FU0ZCT1JlbmRlck1pcG1hcDo6T0VTRkJPUmVuZGVyTWlwbWFwKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQog
ewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19mYm9fcmVuZGVyX21pcG1hcCJfcyk7CisgICAgY29udGV4dC5ncmFw
aGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRl
cl9taXBtYXAiX3MpOwogfQogCiBPRVNGQk9SZW5kZXJNaXBtYXA6On5PRVNGQk9SZW5kZXJNaXBt
YXAoKSA9IGRlZmF1bHQ7CkBAIC00OCw5ICs0Nyw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNp
b25OYW1lIE9FU0ZCT1JlbmRlck1pcG1hcDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIE9F
U0ZCT1JlbmRlck1pcG1hcE5hbWU7CiB9CiAKLWJvb2wgT0VTRkJPUmVuZGVyTWlwbWFwOjpzdXBw
b3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgT0VT
RkJPUmVuZGVyTWlwbWFwOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7
Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOworICAgIHJldHVybiBjb250
ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiX3MpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNGQk9SZW5kZXJNaXBtYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU0ZCT1JlbmRlck1pcG1hcC5oCmluZGV4IDMzOTZmOWUxZTExNGU1MWFmY2RmZGQ4M2YzZWQy
ZWI2ODMzZTZkZjIuLjAyYTcyOGNjZWUxZmViZTAwNmQyZDk2YTRkMDg3MGQ4YTRmMjA0YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0ZCT1JlbmRlck1pcG1hcC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCmluZGV4IGU5MmIyZmVmYmYwOTQ2
OGJlY2RiZDFlZjhkOWRkMjEwZDViOGMyMGYuLjVkMWU4OTY3N2U2MTJjMjk3ZTQ2MjkxMTg0MzY3
MzhmMzU5YjlkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUZsb2F0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRl
ICJPRVNUZXh0dXJlRmxvYXQuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4
LDEyICszNywxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT0VTVGV4dHVyZUZsb2F0
KTsKIE9FU1RleHR1cmVGbG9hdDo6T0VTVGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZm
ZXJfZmxvYXRfcmdiIl9zKTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4
dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRf
cmdiYSJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNp
b25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9i
dWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2Jh
Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwv
MjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBv
biBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF9mbG9hdF9ibGVuZCJfcyk7CiB9CiAKIE9FU1RleHR1cmVGbG9hdDo6fk9FU1RleHR1cmVGbG9h
dCgpID0gZGVmYXVsdDsKQEAgLTUzLDkgKzUyLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lv
bk5hbWUgT0VTVGV4dHVyZUZsb2F0OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gT0VTVGV4
dHVyZUZsb2F0TmFtZTsKIH0KIAotYm9vbCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZChjb25z
dCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBPRVNUZXh0dXJlRmxv
YXQ6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4g
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdM
X09FU190ZXh0dXJlX2Zsb2F0Il9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVu
c2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxv
YXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4
IDhhNzI3NGRkZWNhOGY3ZDNiMjM0NjU2YWIzZGY1YzdkOGZmZWQwNmMuLjEwZTE5ZWI3MGE3YmFk
OTNlYzY5OWIwOWE2YTU3ODkyOWY1N2M4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4
dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhh
bGZGbG9hdC5jcHAKaW5kZXggNDBiOTg5OTZmNjdhYzFlOGFiNjVjZDY2NmQ2M2QyN2QzOWYzMWNl
ZS4uNGVhODY2ZGVlMjRjYzVhMGNlMWEzMDgxZWU5NzM5Y2IwZTBhMzA1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIk9FU1RleHR1cmVIYWxmRmxvYXQuaCIKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKE9FU1RleHR1cmVIYWxmRmxvYXQpOwogT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VT
VGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAg
IDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpOwogICAgIC8vIFJlbmRl
cmFiaWxpdHkgaXMgaW1wbGljaXQgd2hlbiB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCJfcyk7CisgICAgY29udGV4dC5ncmFw
aGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVm
ZmVyX2hhbGZfZmxvYXQiX3MpOwogfQogCiBPRVNUZXh0dXJlSGFsZkZsb2F0Ojp+T0VTVGV4dHVy
ZUhhbGZGbG9hdCgpID0gZGVmYXVsdDsKQEAgLTUxLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgT0VTVGV4dHVyZUhhbGZGbG9hdDo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIE9FU1RleHR1cmVIYWxmRmxvYXROYW1lOwogfQogCi1ib29sIE9FU1RleHR1cmVIYWxm
RmxvYXQ6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQorYm9vbCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaAppbmRleCBhMzU0ZmNiN2UzOWI1
MzBiZjQ5MzM2MTI5Njg5MTM2ZWE5NjIxNjYzLi5kNTE5NDZhYmE0MzkwNGYzMDZlMWE3ZDA3Y2Yw
MGI5YWViZGU1MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUhhbGZGbG9hdC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9y
dGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2Jq
ZWN0LmNwcAppbmRleCAzMGQ0YjNmZjBjYmQyNGY1MzgwODYzMGJjYzQzMDY3ZDhjZThmMDZkLi40
ZjI4NWM1ZjRjMmUwMzAxZGJmNTQ3NDAzY2ZmMTBjYzg2OTRmZjMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wu
aCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDVh
Mzg3OTU3YzI2MDY2MjJkYjQ2ZjRiZjYwODhiZTMzMTA2MWFiYmIuLjZkMGE4NzI4NWE4MDYxYzUw
ZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAj
aW5jbHVkZSAiRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVYVFRleHR1
cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgotI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAg
LTI0MCwxMCArMjM5LDEwIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6
ZVZlcnRleEFycmF5T2JqZWN0cygpCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRp
YWxpemVTaGFkZXJFeHRlbnNpb25zKCkKIHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRo
ZSBXZWJHTCAyLjAgY29yZSBBUEkgYW5kIHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyIpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBt
X2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyIpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Ry
YXdfYnVmZmVycyIpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKIH0KIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRhcmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIHRhcmdldCkKQEAgLTI3MTUsMjAgKzI3MTQsMjAgQEAgV2ViR0xFeHRlbnNpb24qIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0
VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVh
ciwgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykp
OwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VD
b250ZXh0LCAiV0VCR0xfbG9zZV9jb250ZXh0IiwgdHJ1ZSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
QVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFTVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLCAiV0VC
S0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2Nv
bXByZXNzZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0
ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90
ZXh0dXJlX2V0YzEiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCp0aGlz
KSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMs
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9wdnJ0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0
aGlzKSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0
dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMp
KTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3Mz
dGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3Mz
dGNfc3JnYiIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKCp0aGlz
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQywg
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVNUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9h
c3RjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7
CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVBVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X2F0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7
CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLCBtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVFVEMsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiwg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLCBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVFVEMxLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiLCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRj
IiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOwor
ICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCBtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0
YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsK
KyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLCBtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMi
LCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
czN0Y19zcmdiIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKm1f
Y29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1JlbmRlcmVySW5m
bywgbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIs
IHRydWUpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2Vi
Z2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykp
OwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJGbG9hdCwgbV9leHRDb2xv
ckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIsIEVYVENvbG9yQnVmZmVyRmxv
YXQ6OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JC
dWZmZXJIYWxmRmxvYXQsIG1fZXh0Q29sb3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVm
ZmVyX2hhbGZfZmxvYXQiLCBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlz
KSk7Ci0gICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0Qmxl
bmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsK
LSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQ
YXJhbGxlbFNoYWRlckNvbXBpbGUsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQ
YXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xEZWJ1Z1NoYWRlcnMsIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMsICJXRUJHTF9k
ZWJ1Z19zaGFkZXJzIiwgbV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJh
bnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRD
b2xvckJ1ZmZlckZsb2F0LCBtX2V4dENvbG9yQnVmZmVyRmxvYXQsICJFWFRfY29sb3JfYnVmZmVy
X2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKKyAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9y
QnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JC
dWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQi
LCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29t
cGlsZSwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29t
cGlsZTo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIHRydWUp
OwogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMjc0Myw0MiArMjc0Miw0MSBAQCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0
ZWRFeHRlbnNpb25zKCkKICAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4
dHVyZV9mbG9hdF9saW5lYXIiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5z
aW9uKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1
cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3Jn
dGMiX3MpOwotICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwotICAgIGlmIChXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3MpOwotICAgIGlmIChX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIl9zKTsKLSAg
ICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBp
ZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKLSAg
ICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgqdGhpcykpCisgICAg
aWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIl9zKTsK
LSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7
CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfcHZydGMiX3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfcHZydGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7CiAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250ZXh0Il9zKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSkKKyAgICBpZiAobV9j
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291
cmNlIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyJfcyk7
CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7Ci0gICAg
aWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEVYVENv
bG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7Ci0gICAgaWYgKEVYVENvbG9yQnVmZmVy
SGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRf
Y29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiX3MpOwotICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBw
b3J0ZWQoKnRoaXMpKQorICAgIGlmIChFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9mbG9hdF9ibGVuZCJfcyk7Ci0gICAgaWYg
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoS0hS
UGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSJfcyk7Ci0gICAgaWYgKFdl
YkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJHTE11bHRpRHJhdzo6
c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0
aV9kcmF3Il9zKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcAppbmRleCBhODFhNDljMmNh
NzY5MzgwNTg2MjM0YzFmMjA5ZTQ4ZWEyYzZkYzBmLi42YzBhOWJlNTYxZDc5ZTcwZDlmMzVkNThh
OTcwNmM2NTU2NTBkODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbG9yQnVmZmVyRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29sb3JCdWZmZXJGbG9hdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmgiCiAKLSNpbmNsdWRlICJF
eHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMiArMzcsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdlYkdMQ29sb3JCdWZmZXJGbG9hdCk7CiBXZWJHTENvbG9yQnVmZmVyRmxvYXQ6Oldl
YkdMQ29sb3JCdWZmZXJGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xv
cl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRf
cmdiYSJfcyk7CiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgZW5hYmxlIFJHQiBmbG9hdGluZy1wb2lu
dCByZW5kZXIgdGFyZ2V0cyBhbHNvLCBpZiBwb3NzaWJsZS4KLSAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9j
b2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9h
dF9yZ2IiX3MpOwogICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wv
cHVsbC8yODMwCiAgICAgLy8gU3BlYyByZXF1aXJlcyBFWFRfZmxvYXRfYmxlbmQgdG8gYmUgdHVy
bmVkIG9uIGltcGxpY2l0bHkgaGVyZS4KLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiX3MpOwor
ICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKIH0KIAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2Vi
R0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZhdWx0OwpAQCAtNTMsMTAgKzUyLDEwIEBAIFdlYkdM
RXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6Z2V0TmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29sb3JCdWZmZXJGbG9hdE5hbWU7CiB9CiAKLWJvb2wg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQo
R3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdCJfcykKLSAgICAgICAgJiYgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9z
KTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVf
ZmxvYXQiX3MpCisgICAgICAgICYmIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0NIUk9N
SVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1
ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVy
RmxvYXQuaAppbmRleCAwZDJkMDdjMjU1OTllMDRjY2VjYTA2NmE0NTk2NTA1ZDEwMmUxODY0Li45
NGNkZWQ2Y2Q2MzY3YzE4ZDYwMDJhNmVhZWIyMTQwMzEzMjM5ZWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXgg
NmVhY2ExZjJhMDI1MTc2ZGE0NTNiNTAwMTI4YTM2ZjExMzZiODE1ZC4uNGZmMDIyZTllZDUxMmE5
MmVkYTMxMDFjZjFjMjZjMmVlNWFmODM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpA
QCAtMzksNDEgKzM4LDQxIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVNUQyk7CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKLSAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tI
Ul90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKSkKLSAgICAsIG1faXNMRFJTdXBwb3J0
ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMo
IkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKSkKKyAgICAsIG1faXNIRFJT
dXBwb3J0ZWQoY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiX3MpKQorICAgICwgbV9pc0xEUlN1
cHBvcnRlZChjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciJfcykpCiB7Ci0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfaGRyIl9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKIAot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzV4NV9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKLSAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfNng2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOwotICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ184eDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7Ci0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOwotICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENf
NXg0X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfNng1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUik7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tI
Uik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4NV9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ18xMHg4X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hS
KTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9B
U1RDXzEyeDEyX0tIUik7CiAgICAgCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7
Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfNXg1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUik7Ci0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
OHg1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUik7Ci0gICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfOHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9L
SFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ18xMHg4X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hS
KTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIpOwotICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEyeDEyX0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRf
S0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIpOworICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ182eDVfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIpOwor
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUik7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ184eDZfS0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4
OF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIpOworICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4OF9LSFIpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBf
S0hSKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUik7CisgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpAQCAt
OTUsMTAgKzk0LDEwIEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RD
OjpnZXRTdXBwb3J0ZWRQcm9maWxlcygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDOjpz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9LSFJf
dGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcykKLSAgICAgICAgfHwgY29udGV4dC5ncmFw
aGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiX3MpCisgICAgICAg
IHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfbGRyIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgK
aW5kZXggMzBlZmUzZDgxYzFiOWI5NDYzMzk3MzFkMzc4ZDJjYzE3YTMxNTlmMC4uZmEwZTViOTll
M2UxZjQ2Y2I4NTU0MDI3MjYyZTA2NWJmMThmMTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRQcm9maWxlcygpOwogCi0gICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
KyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lzSERSU3VwcG9ydGVkIDogMTsKICAgICBib29sIG1faXNMRFJTdXBwb3J0
ZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmNwcAppbmRleCBjOWU3YmUzMGM2MzEwNTAzMDNkZmJlNjZhMTMz
ZmZkNDI0NmVjMjI5Li5iYzNlYmUyZDVlNzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzks
MTEgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdM
RXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1
cmUiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIik7CiAKLSAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENfUkdC
X0FNRCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EKTsKLSAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9BVENf
UkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9B
VENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKSA9IGRlZmF1bHQ7CkBAIC01Myw5
ICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDTmFtZTsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0
ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewot
ICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29u
dGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oCmluZGV4IGUwYmQyNjYxMDk0
NDBmY2IzMDdjOTNiMzVjNTQzMGIxZGQ5NGQxZmEuLjEwNTY4YTlkZDk0YzNiZTI3NzhjMzI0Nzg5
YzRmOGY3NTQ0YWE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAot
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7Cisg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRl
bnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmlu
ZGV4IDRmZWFhNWRkODc5MTIzNTkzMWY5ODU5Zjk2NzBjNDY4YTVhM2JmYTMuLjkxNWRiMmFlM2U0
M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5ZjM0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogCkBAIC0zOSwxOCArMzgsMTggQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVz
c2VkX3RleHR1cmVfZXRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1
cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CiAK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SMTFfRUFDKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQyk7Ci0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkcxMV9F
QUMpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7Ci0g
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyKTsKLSAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMy
X0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9F
QUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUMp
OworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
Mik7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfRVRDMl9FQUMpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjp+V2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQygpID0gZGVmYXVsdDsKQEAgLTYwLDkgKzU5LDkgQEAgV2ViR0xFeHRl
bnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVENOYW1lOwogfQogCi1i
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBw
b3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9j
b21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oCmluZGV4IDc0Njc3OGNjMmRlMDIzOWI5ZWUyYzc1M2Ri
MGY2OTJlMDRkODk3ZDQuLmMzODgyOTExYWI1OTZkOWYyMTA2YTgxODFlOWVmMjBjMjhkMDgxNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAg
IHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMoKTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZDlhN2NmYWI2
OWU3NmVhZTMxN2VjMGJjZjU2NTQ5OTZjZjI0MTVlYS4uYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYx
OTBiMTcwOTJmNjA4MDliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcApAQCAtMjgsNyArMjgsNiBAQAog
I2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5o
IgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM5
LDkgKzM4LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JH
QjhfdGV4dHVyZSIpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMx
X1JHQjhfT0VTKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpFVEMxX1JHQjhfT0VTKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzE6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSgpID0gZGVmYXVsdDsKQEAgLTUxLDkg
KzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzE6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDMU5hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBv
cnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQog
ewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9S
R0I4X3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgK
aW5kZXggMDZmZTI3YWFiMTc4M2RiYzFiM2IwMWUxZWY0OTgwOWJkM2NkYjIzYy4uMDQ0OWY1NzA0
NDY0YzI1NmJiMzgzZDc3NGFmYmM5ZTM2ZjE3OTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRD
MShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQzEoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJik7CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLmNwcAppbmRleCAxYTIwYzA3ZDI3MzNjMTgwZTQ1YWRmYTQzZGFm
OGU4NTM2YjQ0NWJhLi41YTg0OTllOWU0Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAj
aW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQwLDEyICszOSwxMiBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFw
aGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9j
b21wcmVzc2lvbl9wdnJ0YyIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENf
NEJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQ
VjFfSU1HKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDKCkgPSBkZWZhdWx0OwpAQCAtNTUsOSArNTQsOSBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUo
KSBjb25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVENOYW1lOwogfQog
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xf
SU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaAppbmRleCBhODY2OWYwZWI4ZDAy
ZjA4OTgwMGNmMmMyNjViODFjN2E1ZjNjYTVkLi4zMzcyYzI5YWIyNGU1Yzg5MGZhMzM3ZWIwZjk0
OWVlZjllZjVjMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMo
KTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Jik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAgICAg
RXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qy5jcHAKaW5kZXggMDdiYTRmYTViZTEyNTdjM2M4MTIwMzc5OGMxZjk1ZmE3NzQ2YTlhZi4uZmE3
MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBhOTE4NmEzYTUwMjA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNw
cApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBA
IC00MCwxNSArMzksMTUgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAg
IDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgZXh0ZW5zaW9u
cy5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAg
ZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4
dDMiKTsKLSAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0NSIpOworICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0MSIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwogCi0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDNfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFf
RVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9FWFQpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDKCkgPSBkZWZhdWx0OwpAQCAtNTgsMTYgKzU3LDE1IEBAIFdl
YkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpn
ZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1l
OwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBhdXRv
JiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25z
KCk7CiAjaWYgVVNFKEFOR0xFKQotICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgJiYgZXh0
ZW5zaW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDEiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9B
TkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKICNlbHNl
Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3MzdGMiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBjb250ZXh0
LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmgKaW5kZXggYTM0NzNkOGVlZmJkMjIyZjFiMjZjYjEyOWQ0
ZDQ0NzJjYzQxMTUwOS4uMWRiZjQ1YTRjMGUyNDNiM2M2MDAwMTRmNTVmNmYwZDhmNTQ4MDM0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAg
ICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJv
b2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdl
dE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRl
eCA1MGQwYmQ5MDdlOGZkZWU4ZmQ0MWQ2NWQyMWI4ZDAwYTJmYWZmNTc3Li5mNjVmNDJhZTIyYWM3
MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNp
bmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KIApAQCAtMzksMTMgKzM4LDExIEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IpOwogV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVENzUkdCOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQp
CiB7Ci0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpOwotICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3Rl
eHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIik7Ci0KLSAgICBjb250ZXh0LmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9F
WFQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDNfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX1Mz
VENfRFhUMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FM
UEhBX1MzVENfRFhUNV9FWFQpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6
On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IoKSA9IGRlZmF1bHQ7CkBAIC01NSwxMCAr
NTIsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0JOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
c1JHQjo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitib29s
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJiBjb250ZXh0KQogewotICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJu
IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3Mz
dGNfc3JnYiIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JH
Qi5oCmluZGV4IGM3OTNiOTE2ZGIwZTY2Y2YzZTljNjc3MGY1NjYwN2YzMThmZjc0NmIuLjU5YTY2
M2YxNGQxZmI0YmM2Yzg1ODY3NWY1NWY0OGQ3YTdlZmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JH
Qi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1
YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQigpOwogCi0gICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVidWdTaGFkZXJzLmNwcAppbmRleCA2YjA0OTU0YTRhNTI5Y2U4ODJmMmE2NGJiM2Q4
NjdmYTg0YzM4Y2YwLi5hNjlkYTI5MDM4NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3Bw
CkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oIgogI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KQEAgLTQxLDcgKzQwLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KFdlYkdMRGVidWdTaGFkZXJzKTsKIFdlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVy
cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2Ui
KTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpOwogfQogCiBXZWJHTERlYnVn
U2hhZGVyczo6fldlYkdMRGVidWdTaGFkZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTcsNyArNTYsNyBA
QCBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2Vi
R0xTaGFkZXImIHNoYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9j
b250ZXh0LT52YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwg
JnNoYWRlcikpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX2Nv
bnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0
LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hh
ZGVyLm9iamVjdCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IGE2OTE1MzIz
YTg0OTQ0ZTU5YmMxNzJkM2Y1Yjk0MzM3MjY4MTQzNzYuLjkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4
ZjM2ZmYzMmE5M2Y1NTgwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkdM
RGVwdGhUZXh0dXJlLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICsz
OCw5IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTERlcHRoVGV4dHVyZSk7CiBX
ZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29u
dGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwor
ICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgZ2NnbC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBnY2ds
LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCiBX
ZWJHTERlcHRoVGV4dHVyZTo6fldlYkdMRGVwdGhUZXh0dXJlKCkgPSBkZWZhdWx0OwpAQCAtNTIs
OSArNTIsOCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVy
ZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChH
cmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVuc2lv
bnMgPSBjb250ZXh0LmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVm
ZmVycy5jcHAKaW5kZXggMGRjMTdlYTliYzBjZGM3NGQxZTYxYzFmMDI1M2M4ZWNlYjM2ODk1My4u
MDY3MGE0NzY0MmJmYmZlY2JkZWY1NjM3OGEyYmViNWIxOGM5NWNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJH
TERyYXdCdWZmZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsK
KyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKIH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJh
d0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBAIC01MSw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIFdlYkdMRHJhd0J1ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJH
TERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0
R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24o
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZm
ZXJzIikKKyAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVmZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdM
UmVxdWlyZW1lbnRzKGNvbnRleHQpOwogI2VuZGlmCiB9CkBAIC03NSw3ICs3NCw3IEBAIHZvaWQg
V2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+
JiBidWZmZXJzKQogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIg
aXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFu
Z2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWVbMV0g
eyBidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLID8gR3JhcGhpY3NDb250ZXh0R0w6
OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgfTsKLSAgICAgICAg
bV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZl
cnNFWFQodmFsdWUpOworICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmRy
YXdCdWZmZXJzRVhUKHZhbHVlKTsKICAgICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZl
cihidWZzWzBdKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0
TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtODMsNyArODIsNyBAQCB2b2lkIFdlYkdMRHJhd0J1ZmZl
cnM6OmRyYXdCdWZmZXJzV0VCR0woY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0g
MDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250
ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAhPSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQw
X0VYVCArIGkpIHsKKyAgICAgICAgICAgIGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dEdM
OjpOT05FICYmIGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQw
X0VYVCArIGkpIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wi
LCAiQ09MT1JfQVRUQUNITUVOVGlfRVhUIG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CkBAIC05OCw4ICs5Nyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVy
czo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
d2ViCiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKTsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3Vy
ZSBHTF9FWFRfZHJhd19idWZmZXJzIGlzIHN1cHBvcnRlZC4KLSAgICBHQ0dMaW50IG1heERyYXdC
dWZmZXJzID0gY29udGV4dC0+Z2V0SW50ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9EUkFXX0JVRkZF
UlNfRVhUKTsKLSAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVudHMgPSBjb250ZXh0LT5nZXRJ
bnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgR0NH
TGludCBtYXhEcmF3QnVmZmVycyA9IGNvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0
R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKKyAgICBHQ0dMaW50IG1heENvbG9yQXR0YWNobWVu
dHMgPSBjb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRU
QUNITUVOVFNfRVhUKTsKICAgICBpZiAobWF4RHJhd0J1ZmZlcnMgPCA0IHx8IG1heENvbG9yQXR0
YWNobWVudHMgPCA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywxMCArMTA2LDEw
IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgYnVmZmVyWzRdID0geyAwLCAwLCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1
aXJlZCB0byBiZSBpbml0aWFsaXplZCBmb3Igb3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0
c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpCi0gICAgICAgIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygi
R0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKLSAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0g
KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikKLSAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0g
Y29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAg
ICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7
CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoU3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVu
c2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKKyAgICAgICAgfHwgY29udGV4dC0+
c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKICAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3RlbmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGhT
dGVuY2lsKSB7CiAgICAgICAgIGRlcHRoU3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAK
aW5kZXggNTBiYWNmNTY0ZmNhZjY2NmY4NTdiZDQ5MTU2Mjc5NDJjZmM1MjA3My4uNDlmYjFkZGRm
NThhOGVkZmMwMWI0OGRhNWRmZjQ5NzcxZjc2ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
IEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIldl
YkdMQ29udGV4dEdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViR0xEcmF3QnVmZmVycy5oIgogI2luY2x1
ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKQEAgLTI3OSwyMSArMjc4LDIxIEBAIHN0
YXRpYyB1bnNpZ25lZCBnZXRDbGVhckJpdHNCeUF0dGFjaG1lbnRUeXBlKEdDR0xlbnVtIGF0dGFj
aG1lbnQpCiB7CiAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9S
X0FUVEFDSE1FTlQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVO
VDJfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FU
VEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09MT1JfQVRUQUNITUVOVDhf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FU
VEFDSE1FTlQxM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQx
NF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDRfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQ1X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQVRUQUNITUVOVDdfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FU
VEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hN
RU5UOV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEw
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhU
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6CiAgICAgICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJVDsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpERVBUSF9BVFRBQ0hNRU5UOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX0JVRkZFUl9CSVQ7CkBAIC0zNjMsOCArMzYyLDggQEAgc3RhdGljIHVuc2ln
bmVkIGdldENsZWFyQml0c0J5Rm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpSR0JBMTZJOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEz
Mkk6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQTMyVUk6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OlNSR0JfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VY
VDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VYVDoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRF
UFRIX0NPTVBPTkVOVDE2OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBP
TkVOVDI0OgpAQCAtNjMzLDcgKzYzMiw3IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNo
ZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiByZWFzb24pIGNvbnN0CiAgICAgICAgIEdDR0xlbnVtIGF0
dGFjaG1lbnRGb3JtYXQgPSBhdHRhY2htZW50LT5nZXRGb3JtYXQoKTsKIAogICAgICAgICAvLyBB
dHRhY2hpbmcgYW4gU1JHQl9FWFQgZm9ybWF0IGF0dGFjaG1lbnQgdG8gYSBmcmFtZWJ1ZmZlciBp
cyBpbnZhbGlkLgotICAgICAgICBpZiAoYXR0YWNobWVudEZvcm1hdCA9PSBFeHRlbnNpb25zR0w6
OlNSR0JfRVhUKQorICAgICAgICBpZiAoYXR0YWNobWVudEZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6U1JHQl9FWFQpCiAgICAgICAgICAgICBhdHRhY2htZW50Rm9ybWF0ID0gMDsKIAogICAg
ICAgICBpZiAoIWF0dGFjaG1lbnRGb3JtYXQpIHsKQEAgLTgzMywxOCArODMyLDE4IEBAIHZvaWQg
V2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2FyeShib29sIGZvcmNlKQogICAg
ICAgICAgICAgaWYgKGNvbnRleHQoKS0+aXNXZWJHTDIoKSkKICAgICAgICAgICAgICAgICBjb250
ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmRyYXdCdWZmZXJzKG1fZmlsdGVyZWREcmF3QnVm
ZmVycyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dCgpLT5ncmFw
aGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQobV9maWx0ZXJl
ZERyYXdCdWZmZXJzKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4
dEdMKCktPmRyYXdCdWZmZXJzRVhUKG1fZmlsdGVyZWREcmF3QnVmZmVycyk7CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoR0NH
TGVudW0gZHJhd0J1ZmZlcikKIHsKLSAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGRy
YXdCdWZmZXIgLSBFeHRlbnNpb25zR0w6OkRSQVdfQlVGRkVSMF9FWFQpOworICAgIGludCBpbmRl
eCA9IHN0YXRpY19jYXN0PGludD4oZHJhd0J1ZmZlciAtIEdyYXBoaWNzQ29udGV4dEdMOjpEUkFX
X0JVRkZFUjBfRVhUKTsKICAgICBBU1NFUlQoaW5kZXggPj0gMCk7CiAgICAgaWYgKGluZGV4IDwg
c3RhdGljX2Nhc3Q8aW50PihtX2RyYXdCdWZmZXJzLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBt
X2RyYXdCdWZmZXJzW2luZGV4XTsKLSAgICBpZiAoZHJhd0J1ZmZlciA9PSBFeHRlbnNpb25zR0w6
OkRSQVdfQlVGRkVSMF9FWFQpCisgICAgaWYgKGRyYXdCdWZmZXIgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OkRSQVdfQlVGRkVSMF9FWFQpCiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6
Q09MT1JfQVRUQUNITUVOVDA7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCmluZGV4
IDY0YjE1ZDVmZjg2MTNjZmQ3ODRjN2UzMWQwMjJkNTNiZDYxM2NlZmUuLmYxY2M1NmM5ZGZiMTg4
NGI4YjhkZWFhMmVlZmU1ODI3ZjkyZmVlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoV0VC
R0wpCiAjaW5jbHVkZSAiV2ViR0xNdWx0aURyYXcuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQzLDggKzQyLDggQEAgc3RhdGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNw
YW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlEcmF3OjpJbnQzMkxpc3QmIGxpc3QsIEcKIFdlYkdMTXVs
dGlEcmF3OjpXZWJHTE11bHRpRHJhdyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9tdWx0
aV9kcmF3Il9zKTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FO
R0xFX211bHRpX2RyYXciX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiB9CiAK
IFdlYkdMTXVsdGlEcmF3Ojp+V2ViR0xNdWx0aURyYXcoKSA9IGRlZmF1bHQ7CkBAIC01NCwxMCAr
NTMsMTAgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6Omdl
dE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJHTE11bHRpRHJhd05hbWU7CiB9CiAKLWJvb2wg
V2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQorYm9vbCBXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKLSAgICAg
ICAgJiYgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOworICAgIHJldHVybiBjb250ZXh0LnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBjb250
ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKIH0K
IAogdm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3QXJyYXlzV0VCR0woR0NHTGVudW0gbW9k
ZSwgSW50MzJMaXN0IGZpcnN0c0xpc3QsIEdDR0x1aW50IGZpcnN0c09mZnNldCwgSW50MzJMaXN0
IGNvdW50c0xpc3QsIEdDR0x1aW50IGNvdW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5oCmluZGV4IDY1OTI5
ZjUxY2FiOGJmODkyN2I3YzkwYmU5NmMxOGU0ODMxODFkNzYuLjUwZDZkYjgxYTJkOTc0Mzg4MDBi
NGU3OWRhMzEyYTIwMjIyNTBkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMTXVsdGlEcmF3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xNdWx0aURyYXcuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBFeHRlbnNpb25O
YW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c1dF
QkdMKEdDR0xlbnVtIG1vZGUsIEludDMyTGlzdCBmaXJzdHNMaXN0LCBHQ0dMdWludCBmaXJzdHNP
ZmZzZXQsIEludDMyTGlzdCBjb3VudHNMaXN0LCBHQ0dMdWludCBjb3VudHNPZmZzZXQsIEdDR0xz
aXplaSBkcmF3Y291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBmYTU3YmI1NDAyM2UzZmY5OTYzNGIzYTk5
OTE4ZTA5M2NhYTJkNGJiLi5jOTYwYzI2MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAj
aW5jbHVkZSAiRVhUc1JHQi5oIgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUg
IkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTE1MywxMCArMTUyLDEwIEBAIFdlYkdMRXh0
ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGcmFnRGVwdGgsIG1fZXh0RnJhZ0Rl
cHRoLCAiRVhUX2ZyYWdfZGVwdGgiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX0VYVF9m
cmFnX2RlcHRoIl9zKSk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiKSkgewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVy
ZUxPRCkgewotICAgICAgICAgICAgaWYgKCEobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpIHx8IG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCisgICAg
ICAgICAgICBpZiAoIShtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJf
c2hhZGVyX3RleHR1cmVfbG9kIl9zKSkpCiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0
dXJlTE9EID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgICAgICAgICAgICAg
bV9leHRTaGFkZXJUZXh0dXJlTE9EID0gYWRvcHRSZWYobmV3IEVYVFNoYWRlclRleHR1cmVMT0Qo
KnRoaXMpKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVu
YWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0xNjUsMzEgKzE2
NCwzMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIH0KICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMs
ICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVOQUJMRV9J
Rl9SRVFVRVNURUQoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDLCAiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBvcnRl
ZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwotICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVs
U2hhZGVyQ29tcGlsZSwgIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVs
U2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGUsIG1fa2hyUGFyYWxsZWxTaGFkZXJDb21waWxlLCAi
S0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIiwgS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTU3RhbmRh
cmREZXJpdmF0aXZlcywgbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLCAiT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiX3MpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdCwg
bV9vZXNUZXh0dXJlRmxvYXQsICJPRVNfdGV4dHVyZV9mbG9hdCIsIE9FU1RleHR1cmVGbG9hdDo6
c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxv
YXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAiT0VTX3RleHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxv
YXQ6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNU
ZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVf
ZmxvYXRfbGluZWFyIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIiX3MpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVIYWxm
RmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCBP
RVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVR
VUVTVEVEKE9FU1RleHR1cmVIYWxmRmxvYXQsIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCwgIk9FU190
ZXh0dXJlX2hhbGZfZmxvYXQiLCBPRVNUZXh0dXJlSGFsZkZsb2F0OjpzdXBwb3J0ZWQoKm1fY29u
dGV4dCkpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
ciwgbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxv
YXRfbGluZWFyIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNWZXJ0ZXhBcnJheU9i
amVjdCwgbV9vZXNWZXJ0ZXhBcnJheU9iamVjdCwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iiwg
ZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcykp
OwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTRWxlbWVudEluZGV4VWludCwgbV9vZXNFbGVt
ZW50SW5kZXhVaW50LCAiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIsIGVuYWJsZVN1cHBvcnRlZEV4
dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCJfcykpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoT0VTRkJPUmVuZGVyTWlwbWFwLCBtX29lc0ZCT1JlbmRlck1pcG1hcCwgIk9FU19m
Ym9fcmVuZGVyX21pcG1hcCIsIGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfT0VTX2Zib19y
ZW5kZXJfbWlwbWFwIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTExvc2VDb250
ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQsICJXRUJHTF9sb3NlX2NvbnRleHQiLCB0cnVlKTsKLSAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLCBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5BQkxF
X0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLCBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVBVEMsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIsIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0
dXJlRVRDLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIsIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEM6OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJX
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMx
OjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJLSVRf
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDOjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQywgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMsICJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21w
cmVzc2VkX3RleHR1cmVfczN0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQiwgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IsICJXRUJHTF9jb21w
cmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
OjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDLCAiV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX2FzdGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9y
dGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQywgIldFQktJVF9XRUJHTF9j
b21wcmVzc2VkX3RleHR1cmVfYXRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9y
dGVkKCptX2NvbnRleHQpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVFVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQywgIldFQkdMX2NvbXByZXNz
ZWRfdGV4dHVyZV9ldGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoKm1f
Y29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQzEsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUVUQzEsICJXRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfZXRjMSIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1fY29u
dGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQywgIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRl
ZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLCAiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX3B2cnRjIiwgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMsIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMsICJXRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfczN0YyIsIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQo
Km1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVENzUkdCLCBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQiwgIldFQkdMX2Nv
bXByZXNzZWRfdGV4dHVyZV9zM3RjX3NyZ2IiLCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NS
R0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJH
TERlcHRoVGV4dHVyZSwgbV93ZWJnbERlcHRoVGV4dHVyZSwgIldFQkdMX2RlcHRoX3RleHR1cmUi
LCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZHJhd19idWZmZXJzIikpIHsKICAgICAg
ICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZlcnMpIHsKICAgICAgICAgICAgIGlmICghc3VwcG9ydHNE
cmF3QnVmZmVycygpKQogICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxw
dHI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICAg
ICAgICAgICAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3
X2J1ZmZlcnMiX3MpOwogICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IGFkb3B0
UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJzKCp0aGlzKSk7CiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAg
ICAgICAgICAgfQpAQCAtMTk4LDEwICsxOTcsMTAgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJh
eXMiKSkgewogICAgICAgICBpZiAoIW1fYW5nbGVJbnN0YW5jZWRBcnJheXMpIHsKLSAgICAgICAg
ICAgIGlmICghQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgICAg
ICAgICBpZiAoIUFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAg
ICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKKyAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNl
ZF9hcnJheXMiX3MpOwogICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBh
ZG9wdFJlZihuZXcgQU5HTEVJbnN0YW5jZWRBcnJheXMoKnRoaXMpKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0yMDksMTEgKzIwOCwxMSBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgICAgICByZXR1cm4gbV9hbmdsZUluc3RhbmNlZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAg
RU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnUmVuZGVyZXJJbmZvLCBtX3dlYmdsRGVidWdS
ZW5kZXJlckluZm8sICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIiwgdHJ1ZSk7Ci0gICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywg
IldFQkdMX2RlYnVnX3NoYWRlcnMiLCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIl9zKSk7Ci0gICAgRU5BQkxFX0lG
X1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgbV9leHRDb2xvckJ1ZmZlckhhbGZG
bG9hdCwgIkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIsIEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKLSAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVEZsb2F0
QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwgIkVYVF9mbG9hdF9ibGVuZCIsIEVYVEZsb2F0QmxlbmQ6
OnN1cHBvcnRlZCgqdGhpcykpOwotICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xvckJ1
ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZlcl9m
bG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7Ci0gICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTE11bHRpRHJhdywgbV93ZWJnbE11bHRpRHJhdywgIldFQkdM
X211bHRpX2RyYXciLCBXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCp0aGlzKSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTERlYnVnU2hhZGVycywgbV93ZWJnbERlYnVnU2hhZGVycywg
IldFQkdMX2RlYnVnX3NoYWRlcnMiLCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9B
TkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiX3MpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAi
RVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1
cHBvcnRlZCgqbV9jb250ZXh0KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRGbG9hdEJs
ZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpz
dXBwb3J0ZWQoKm1fY29udGV4dCkpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xDb2xv
ckJ1ZmZlckZsb2F0LCBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdCwgIldFQkdMX2NvbG9yX2J1ZmZl
cl9mbG9hdCIsIFdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKTsK
KyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3
LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yMjcsNjkgKzIyNiw2OSBAQCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBv
cnRlZEV4dGVuc2lvbnMoKQogICAgIGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX0VYVF9ibGVuZF9taW5tYXgiX3MpKQorICAgIGlmIChtX2NvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiRVhUX2JsZW5kX21pbm1heCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfc1JHQiJfcykpCisgICAgaWYgKG1fY29udGV4
dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9zUkdCIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3NSR0IiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpKQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9FWFRfZnJhZ19kZXB0aCJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIkVYVF9mcmFnX2RlcHRoIl9zKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKSkKKyAgICBpZiAobV9jb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3Mp
KQorICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRf
bGluZWFyIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJP
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpKQor
ICAgIGlmIChtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZh
dGl2ZXMiX3MpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygi
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpKQorICAgIGlmIChtX2Nv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8
fCBtX2NvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9k
Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7
Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKLSAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0
Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3QiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2Fy
cmF5X29iamVjdCJfcyk7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCJfcykpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIk9FU19lbGVtZW50X2luZGV4X3VpbnQiX3MpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFw
Il9zKSkKKyAgICBpZiAobV9jb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Zib19y
ZW5kZXJfbWlwbWFwIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX2Zib19yZW5kZXJf
bWlwbWFwIl9zKTsKICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiX3MpOwot
ICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAg
ICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiX3Mp
OwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQor
ICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
YXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCp0
aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKCptX2Nv
bnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
ZXRjIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZCgq
dGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoKm1f
Y29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVy
ZV9ldGMxIl9zKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0
ZWQoKnRoaXMpKSB7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9y
dGVkKCptX2NvbnRleHQpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9j
b21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiX3MpOwogICAgIH0KLSAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIl9zKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgIGlmIChXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNfc3JnYiJfcyk7
CiAgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlcHRoX3RleHR1cmUiX3MpOwogICAgIGlmIChzdXBw
b3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdfYnVm
ZmVycyJfcyk7Ci0gICAgaWYgKEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMp
KQorICAgIGlmIChBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICBp
ZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0
ZWRfc2hhZGVyX3NvdXJjZSJfcykpCisgICAgaWYgKG1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcykpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2RlYnVnX3NoYWRlcnMiX3MpOwogICAgIHJlc3VsdC5hcHBlbmQoIldF
QkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iX3MpOwotICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdDo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICBpZiAoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6
OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9y
X2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKLSAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVk
KCp0aGlzKSkKKyAgICBpZiAoRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfZmxvYXRfYmxlbmQiX3MpOwotICAgIGlmIChXZWJH
TENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMQ29sb3JC
dWZmZXJGbG9hdDo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQiX3MpOwotICAgIGlmIChLSFJQYXJhbGxlbFNoYWRl
ckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhpcykpCisgICAgaWYgKEtIUlBhcmFsbGVsU2hhZGVyQ29t
cGlsZTo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJf
cGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiKTsKLSAgICBpZiAoV2ViR0xNdWx0aURyYXc6OnN1cHBv
cnRlZCgqdGhpcykpCisgICAgaWYgKFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKm1fY29udGV4
dCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX211bHRpX2RyYXciX3MpOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTMzMCw3ICszMjksNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJn
ZQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihv
YmplY3QpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6
CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
Q09MT1JfRU5DT0RJTkdfRVhUOgogICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSBmb3IgdGV4dHVyZSBhdHRhY2htZW50Iik7CkBA
IC0zNDMsMTYgKzM0MiwxNiBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVG
RkVSKTsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9PQkpFQ1RfTkFNRToKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0
PFdlYkdMUmVuZGVyYnVmZmVyPihvYmplY3QpOwotICAgICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQ6IHsKKyAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElO
R19FWFQ6IHsKICAgICAgICAgICAgIGlmICghbV9leHRzUkdCKSB7CiAgICAgICAgICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZv
ciByZW5kZXJidWZmZXIgYXR0YWNobWVudCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVy
PiByZW5kZXJCdWZmZXIgPSByZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyKj4ob2Jq
ZWN0LmdldCgpKTsKICAgICAgICAgICAgIEdDR0xlbnVtIHJlbmRlckJ1ZmZlckZvcm1hdCA9IHJl
bmRlckJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZW5k
ZXJCdWZmZXJGb3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCAmJiByZW5kZXJCdWZmZXJG
b3JtYXQgIT0gRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCk7Ci0gICAgICAgICAgICBpZiAo
cmVuZGVyQnVmZmVyRm9ybWF0ID09IEV4dGVuc2lvbnNHTDo6U1JHQjhfQUxQSEE4X0VYVCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEV4dGVuc2lvbnNHTDo6
U1JHQl9FWFQpOworICAgICAgICAgICAgQVNTRVJUKHJlbmRlckJ1ZmZlckZvcm1hdCAhPSBHcmFw
aGljc0NvbnRleHRHTDo6U1JHQl9FWFQgJiYgcmVuZGVyQnVmZmVyRm9ybWF0ICE9IEdyYXBoaWNz
Q29udGV4dEdMOjpTUkdCX0FMUEhBX0VYVCk7CisgICAgICAgICAgICBpZiAocmVuZGVyQnVmZmVy
Rm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQThfRVhUKQorICAgICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlNS
R0JfRVhUKTsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhp
Y3NDb250ZXh0R0w6OkxJTkVBUik7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTM2
Nyw5ICszNjYsOSBAQCBHQ0dMaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJhd0J1
ZmZlcnMoKQogICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4g
MDsKICAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMg
PSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VY
VCk7CisgICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3Jh
cGhpY3NDb250ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29s
b3JBdHRhY2htZW50cykKLSAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0
LT5nZXRJbnRlZ2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7Cisg
ICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFw
aGljc0NvbnRleHRHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xf
ZHJhd19idWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19C
VUZGRVJTLgogICAgIHJldHVybiBzdGQ6Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9y
QXR0YWNobWVudHMpOwogfQpAQCAtMzc5LDcgKzM3OCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJh
d0J1ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNo
bWVudHMpCi0gICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50
ZWdlcihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBt
X21heENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250
ZXh0R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9y
QXR0YWNobWVudHM7CiB9CiAKQEAgLTQ1NCw5ICs0NTMsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0NHTAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZVTkNfQUREOgogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkZVTkNfU1VCVFJBQ1Q6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6RlVOQ19SRVZFUlNFX1NVQlRSQUNUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNSU5fRVhU
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNQVhfRVhUOgotICAgICAgICBpZiAoKG1vZGUgPT0g
RXh0ZW5zaW9uc0dMOjpNSU5fRVhUIHx8IG1vZGUgPT0gRXh0ZW5zaW9uc0dMOjpNQVhfRVhUKSAm
JiAhbV9leHRCbGVuZE1pbk1heCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9F
WFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFYX0VYVDoKKyAgICAgICAgaWYgKCht
b2RlID09IEdyYXBoaWNzQ29udGV4dEdMOjpNSU5fRVhUIHx8IG1vZGUgPT0gR3JhcGhpY3NDb250
ZXh0R0w6Ok1BWF9FWFQpICYmICFtX2V4dEJsZW5kTWluTWF4KSB7CiAgICAgICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5h
bWUsICJpbnZhbGlkIG1vZGUiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAppbmRleCBiOGI1ZmI2NWFjZjQxMmU5MzIyNTI0NWE0MWE1ZDgxODE1
NTVkNjgxLi42MTE0NjAyNzdmNjY3OWE0OTFlMGY5ODMxNzc5NzMwMDdlYmJkZGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcApAQCAtNDQsMTQgKzQ0LDEyIEBACiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgiCi0jaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTE0MCw2ICsxMzgsMTUgQEAKICNpbmNsdWRlICJNZWRp
YVNhbXBsZS5oIgogI2VuZGlmCiAKKyNpZiAhVVNFKEFOR0xFKQorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgiCisjaWYgVVNFKE9QRU5HTF9FUykKKyNpbmNsdWRlICJFeHRlbnNp
b25zR0xPcGVuR0xFUy5oIgorI2Vsc2UKKyNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0wuaCIK
KyNlbmRpZgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOwpAQCAtNTU1LDEyICs1NjIs
MTIgQEAgc3RhdGljIHVpbnQ4X3QgZ2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChHQ0dMZW51bSBmb3Jt
YXQpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdC
QSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlJHQjU2NToKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQ6CiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50OF90PihDaGFubmVsQml0czo6UkdCKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpSR0JBOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE0OgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlJHQjVfQTE6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0Jf
QUxQSEFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4oQ2hhbm5lbEJpdHM6OlJHQkEpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDE2OgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0NPTVBPTkVOVDoKQEAgLTY0Myw4ICs2NTAsOCBAQCBz
dGF0aWMgYm9vbCBwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdChHQ0dMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0NHTAogICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMLCBHcmFwaGljc0NvbnRleHRHTDo6REVQ
VEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yNF84KTsKICAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShHcmFwaGljc0NvbnRleHRHTDo6REVQVEgyNF9T
VEVOQ0lMOCwgR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1NURU5DSUwsIEdyYXBoaWNzQ29udGV4
dEdMOjpVTlNJR05FRF9JTlRfMjRfOCk7CiAgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIMzJGX1NURU5DSUw4LCBHcmFwaGljc0NvbnRleHRH
TDo6REVQVEhfU1RFTkNJTCwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUXzMyX1VOU0lHTkVEX0lO
VF8yNF84X1JFVik7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9u
c0dMOjpTUkdCX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6
OlVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVu
c2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQsIEdyYXBoaWNzQ29udGV4dEdM
OjpTUkdCX0VYVCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VY
VCwgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhULCBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdORURfQllURSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KQEAgLTEwOTEsMTcgKzEwOTgsMTcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpzZXR1cEZsYWdzKCkKICAgICAvLyB0dXJuaW5nIGl0IG9mZiBjYXVzZXMgcHJvYmxlbXMuCiAg
ICAgbV9pc0dMRVMyQ29tcGxpYW50ID0gbV9jb250ZXh0LT5pc0dMRVMyQ29tcGxpYW50KCk7CiAg
ICAgaWYgKG1faXNHTEVTMkNvbXBsaWFudCkgewotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0
ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVf
bnBvdCIpOwotICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSB8
fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3Rl
eHR1cmUiKTsKKyAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmlzRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfbnBvdCIpOworICAgICAgICBtX2lzRGVwdGhT
dGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJH
TF9BTkdMRV9kZXB0aF90ZXh0dXJlIik7CiAgICAgfSBlbHNlIHsKICNpZiBVU0UoQU5HTEUpCiAg
ICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSB0cnVlOwogI2Vsc2UKLSAgICAgICAgbV9pc0dM
RVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdM
X0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKTsKKyAgICAgICAgbV9pc0dMRVMyTlBPVFN0
cmljdCA9ICFtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVfbm9u
X3Bvd2VyX29mX3R3byIpOwogI2VuZGlmCi0gICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9wYWNrZWRf
ZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgi
R0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9y
dGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9wYWNrZWRfZGVwdGhf
c3RlbmNpbCIpIHx8IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIik7CiAgICAgfQotICAgIG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkID0gbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9FWFRfcm9idXN0bmVzcyIpOwor
ICAgIG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0NHTGVudW0gZm9ybWF0KQpAQCAt
MzMwMyw5ICszMzEwLDkgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogICAgICAgICByZXR1cm4gIldlYkdMIDEuMCJfc3Ry
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlZJRVdQT1JUOgogICAgICAgICByZXR1cm4g
Z2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcihwbmFtZSk7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTOiAvLyBPRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVJfREVS
SVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCiAgICAgICAgIGlm
IChtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWdu
ZWRJbnRQYXJhbWV0ZXIoRXh0ZW5zaW9uc0dMOjpGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9I
SU5UX09FUyk7CisgICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIoR3Jh
cGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwg
ImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBPRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY2Fz
ZSBXZWJHTERlYnVnUmVuZGVyZXJJbmZvOjpVTk1BU0tFRF9SRU5ERVJFUl9XRUJHTDoKQEAgLTMz
MzYsMjUgKzMzNDMsMjUgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogICAgICAgICB9CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0ZXIiLCAi
aW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qgbm90IGVuYWJs
ZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6Ok1B
WF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljCisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgaWYg
KG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKQotICAgICAgICAgICAgcmV0dXJuIGdldFVu
c2lnbmVkSW50UGFyYW1ldGVyKEV4dGVuc2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHcmFw
aGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKTsKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBh
cmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQ6IC8vIEVYVF9kcmF3X2J1
ZmZlcnMgQkVHSU4KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfQ09MT1JfQVRUQUNI
TUVOVFNfRVhUOiAvLyBFWFRfZHJhd19idWZmZXJzIEJFR0lOCiAgICAgICAgIGlmIChtX3dlYmds
RHJhd0J1ZmZlcnMgfHwgaXNXZWJHTDIoKSkKICAgICAgICAgICAgIHJldHVybiBnZXRNYXhDb2xv
ckF0dGFjaG1lbnRzKCk7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFt
ZSwgV0VCR0xfZHJhd19idWZmZXJzIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfRFJBV19CVUZGRVJTX0VYVDoKICAgICAgICAgaWYg
KG1fd2ViZ2xEcmF3QnVmZmVycyB8fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgcmV0dXJuIGdl
dE1heERyYXdCdWZmZXJzKCk7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIg
bmFtZSwgV0VCR0xfZHJhd19idWZmZXJzIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGlmICgobV93ZWJnbERyYXdCdWZmZXJzIHx8
IGlzV2ViR0wyKCkpCi0gICAgICAgICAgICAmJiBwbmFtZSA+PSBFeHRlbnNpb25zR0w6OkRSQVdf
QlVGRkVSMF9FWFQKLSAgICAgICAgICAgICYmIHBuYW1lIDwgc3RhdGljX2Nhc3Q8R0NHTGVudW0+
KEV4dGVuc2lvbnNHTDo6RFJBV19CVUZGRVIwX0VYVCArIGdldE1heERyYXdCdWZmZXJzKCkpKSB7
CisgICAgICAgICAgICAmJiBwbmFtZSA+PSBHcmFwaGljc0NvbnRleHRHTDo6RFJBV19CVUZGRVIw
X0VYVAorICAgICAgICAgICAgJiYgcG5hbWUgPCBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oR3JhcGhp
Y3NDb250ZXh0R0w6OkRSQVdfQlVGRkVSMF9FWFQgKyBnZXRNYXhEcmF3QnVmZmVycygpKSkgewog
ICAgICAgICAgICAgR0NHTGludCB2YWx1ZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpOT05FOwogICAg
ICAgICAgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKQogICAgICAgICAgICAgICAgIHZhbHVl
ID0gbV9mcmFtZWJ1ZmZlckJpbmRpbmctPmdldERyYXdCdWZmZXIocG5hbWUpOwpAQCAtMzM3Miw3
ICszMzc5LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3Jh
bVBhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICAgICAvLyBDT01QTEVUSU9OX1NU
QVRVU19LSFIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBpcyBsb3N0
LCBzbyBhcHBsaWNhdGlvbnMKICAgICAvLyBkb24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5maW5pdGUg
cG9sbGluZyBsb29wLgogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpIHsKLSAgICAg
ICAgaWYgKHBuYW1lID09IEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSKQorICAg
ICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RBVFVTX0tI
UikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC0zMzk5LDcgKzM0MDYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAjZW5kaWYgLy8gVVNFKEFOR0xFKQotICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QTEVUSU9OX1NUQVRVU19LSFI6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSOgogICAgICAgICBpZiAobV9raHJQ
YXJhbGxlbFNoYWRlckNvbXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9jb250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSkpOwogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAi
Z2V0UHJvZ3JhbVBhcmFtZXRlciIsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgbm90IGVu
YWJsZWQiKTsKQEAgLTM1MDMsNyArMzUxMCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciYgc2hhZGVyLCBHQ0dMCiAg
ICAgLy8gQ09NUExFVElPTl9TVEFUVVNfS0hSIHNob3VsZCBhbHdheXMgcmV0dXJuIHRydWUgaWYg
dGhlIGNvbnRleHQgaXMgbG9zdCwgc28gYXBwbGljYXRpb25zCiAgICAgLy8gZG9uJ3QgZ2V0IHN0
dWNrIGluIGFuIGluZmluaXRlIHBvbGxpbmcgbG9vcC4KICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKSB7Ci0gICAgICAgIGlmIChwbmFtZSA9PSBFeHRlbnNpb25zR0w6OkNPTVBMRVRJ
T05fU1RBVFVTX0tIUikKKyAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QTEVUSU9OX1NUQVRVU19LSFIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMzUxNyw3ICszNTI0LDcgQEAgV2ViR0xBbnkgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyJiBz
aGFkZXIsIEdDR0wKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fY29udGV4dC0+
Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6U0hBREVSX1RZUEU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlci5vYmplY3QoKSwgcG5hbWUpKTsKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUExFVElPTl9TVEFUVVNfS0hSOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBMRVRJT05fU1RBVFVTX0tIUjoKICAgICAgICAgaWYgKG1fa2hyUGFy
YWxsZWxTaGFkZXJDb21waWxlKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+
KG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIHBuYW1lKSk7CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRT
aGFkZXJQYXJhbWV0ZXIiLCAiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIG5vdCBlbmFibGVk
Iik7CkBAIC0zNTg2LDcgKzM1OTMsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRUZXhQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JBUF9TOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfV1JBUF9UOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSk7Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFX01BWF9BTklTT1RST1BZX0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
CiAgICAgICAgIGlmIChtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykKICAgICAgICAgICAg
IHJldHVybiBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJn
ZXRUZXhQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIG5vdCBlbmFibGVkIik7CkBAIC0zNzQ5LDcgKzM3NTYsNyBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYg
cHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICBHQ0dMZmxvYXQgdmFsdWVbMTZdID0gezB9Owog
I2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkK
LSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtZnZFWFQo
cHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdDR0xmbG9hdCksIHZhbHVl
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9j
b250ZXh0LmdldCgpKS0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtZnZFWFQocHJvZ3JhbS5v
YmplY3QoKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdDR0xmbG9hdCksIHZhbHVlKTsKICAgICAg
ICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9n
cmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgbWFrZUdDR0xTcGFuKHZhbHVlLCBsZW5ndGgpKTsKQEAg
LTM3NjEsNyArMzc2OCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgIEdDR0xp
bnQgdmFsdWVbNF0gPSB7MH07CiAjaWYgIVVTRShBTkdMRSkKICAgICAgICAgaWYgKG1faXNSb2J1
c3RuZXNzRVhUU3VwcG9ydGVkKQotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZ2V0blVuaWZvcm1pdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgNCAqIHNpemVv
ZihHQ0dMaW50KSwgdmFsdWUpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZv
cm1pdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQ0dMaW50KSwg
dmFsdWUpOwogICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCBtYWtlR0NHTFNwYW4odmFsdWUs
IGxlbmd0aCkpOwpAQCAtMzc4MCw3ICszNzg3LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcK
ICAgICAgICAgR0NHTGludCB2YWx1ZVs0XSA9IHswfTsKICNpZiAhVVNFKEFOR0xFKQogICAgICAg
ICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0
aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldEV4dGVuc2lv
bnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6
ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIG1ha2VH
Q0dMU3Bhbih2YWx1ZSwgbGVuZ3RoKSk7CkBAIC0zOTU5LDcgKzM5NjYsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2Rl
KQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkdFTkVSQVRFX01JUE1BUF9ISU5UOgogICAg
ICAgICBpc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTOiAvLyBPRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMsIG9yIGNvcmUgaW4gV2ViR0wgMi4wCisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcywgb3IgY29yZSBpbiBXZWJHTCAyLjAKICAgICAgICAgaWYgKG1fb2VzU3Rh
bmRhcmREZXJpdmF0aXZlcyB8fCBpc1dlYkdMMigpKQogICAgICAgICAgICAgaXNWYWxpZCA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNDU2OSw3ICs0NTc2LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgKICAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsK
ICNlbHNlCiAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQotICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOworICAgICAgICBzdGF0
aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldEV4
dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAgIGVsc2UKICAgICAgICAgbV9jb250
ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VH
Q0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZW5kaWYKQEAgLTQ2MTAsOCAr
NDYxNyw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVuZGVyYnVmZmVyU3Rv
cmFnZUltcGwoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCNV9BMToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSR0I1NjU6CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9JTkRFWDg6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OlNSR0I4X0FMUEhBOF9FWFQ6Ci0gICAgICAgIGlmIChpbnRlcm5hbGZvcm1hdCA9PSBF
eHRlbnNpb25zR0w6OlNSR0I4X0FMUEhBOF9FWFQgJiYgIW1fZXh0c1JHQikgeworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlNSR0I4X0FMUEhBOF9FWFQ6CisgICAgICAgIGlmIChpbnRlcm5h
bGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQjhfQUxQSEE4X0VYVCAmJiAhbV9leHRz
UkdCKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGludGVybmFsZm9ybWF0Iik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ2MjIsNyArNDYyOSw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVuZGVyYnVmZmVyU3RvcmFnZUltcGwoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUw6CiAgICAgICAgIGlmIChpc0RlcHRoU3RlbmNpbFN1cHBvcnRl
ZCgpKQotICAgICAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwg
RXh0ZW5zaW9uc0dMOjpERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIEdyYXBoaWNzQ29udGV4
dEdMOjpERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgbV9yZW5kZXJi
dWZmZXJCaW5kaW5nLT5zZXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBtX3JlbmRlcmJ1
ZmZlckJpbmRpbmctPnNldElzVmFsaWQoaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSk7CiAgICAg
ICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+c2V0SW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3Jt
YXQpOwpAQCAtNTYxNiw4ICs1NjIzLDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW8KICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQ
SEFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfQUxQSEFfRVhUOgogICAgICAgICBpZiAoIW1fZXh0c1JH
QikgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAic1JHQiB0ZXh0dXJlIGZvcm1hdHMgbm90IGVuYWJs
ZWQiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU3NzUsNyArNTc4Miw3IEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlw
ZShjb25zdCBjaGFyKiBmdW5jdGlvCiAgICAgSU5URVJOQUxfRk9STUFUX0NBU0UoREVQVEhfU1RF
TkNJTCAgICAgLCBERVBUSF9TVEVOQ0lMICAsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9J
TlRfMjRfOCAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwg
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICk7
CiAgICAgSU5URVJOQUxfRk9STUFUX0NBU0UoREVQVEgyNF9TVEVOQ0lMOCAgLCBERVBUSF9TVEVO
Q0lMICAsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlRfMjRfOCAgICAgICAgICAgICAs
IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAsIDAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSU5URVJOQUxfRk9STUFU
X0NBU0UoREVQVEgzMkZfU1RFTkNJTDggLCBERVBUSF9TVEVOQ0lMICAsIEdyYXBoaWNzQ29udGV4
dEdMOjpGTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYsIDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIDAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlNSR0JfRVhUOgogICAgICAgICBpZiAoZm9ybWF0ICE9IGlu
dGVybmFsRm9ybWF0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImZvcm1hdCBhbmQgaW50
ZXJuYWxmb3JtYXQgbXVzdCBtYXRjaCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NTc4NSw3ICs1NzkyLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW8KICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6U1JHQl9BTFBIQV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9B
TFBIQV9FWFQ6CiAgICAgICAgIGlmIChmb3JtYXQgIT0gaW50ZXJuYWxGb3JtYXQpIHsKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJB
VElPTiwgZnVuY3Rpb25OYW1lLCAiZm9ybWF0IGFuZCBpbnRlcm5hbGZvcm1hdCBtdXN0IG1hdGNo
Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTY4LDcgKzU5NzUsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpURVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVDogLy8gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9FTlVNLCAidGV4UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyLCBFWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMgbm90IGVuYWJsZWQiKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTYzODUsNyArNjM5Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bG9zZUNvbnRleHRJbXBsKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3RDCiAgICAgICAg
IGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKICAgICAgICAgaWYgKGNhbnZhcykgewogICAg
ICAgICAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBjYW52YXMtPmRvY3VtZW50KCkuZnJh
bWUoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdl
YkdMQ29udGV4dChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkpOworICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRM
b3NlV2ViR0xDb250ZXh0KG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNjg5OCwxOCArNjkwNSwxOCBAQCBib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNo
YXIqIGZ1bmN0aQogICAgICAgICBCbG9ja1BhcmFtZXRlcnMgeyAxMiwgMTAsIGtBU1RDQmxvY2tT
aXplIH0sCiAgICAgICAgIEJsb2NrUGFyYW1ldGVycyB7IDEyLCAxMiwga0FTVENCbG9ja1NpemUg
fQogICAgIH07Ci0gICAgY29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFJHQkEgPSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFI7Ci0gICAgY29uc3QgR0NHTGVudW0g
QVNUQ0VudW1TdGFydFNSR0I4ID0gRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzR4NF9LSFI7CisgICAgY29uc3QgR0NHTGVudW0gQVNUQ0VudW1TdGFydFJHQkEgPSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjsKKyAgICBjb25z
dCBHQ0dMZW51bSBBU1RDRW51bVN0YXJ0U1JHQjggPSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOwogCiAgICAgY29uc3QgaW50IGtFQUNBbmRF
VEMyQmxvY2tTaXplID0gNDsKIAogICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQl9BTUQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkVU
QzFfUkdCOF9PRVM6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfQVRDX1JHQl9BTUQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
RVRDMV9SR0I4X09FUzogewogICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CiAgICAg
ICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CiAgICAgICAgIGNvbnN0IGludCBrQmxvY2tI
ZWlnaHQgPSA0OwpAQCAtNjkxOCwxMiArNjkyNSwxMiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0
aQogICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93
biAqIGtCbG9ja1NpemU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9B
TUQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FM
UEhBX1MzVENfRFhUM19FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQ6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EOgog
ICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OwogICAgICAg
ICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKQEAgLTY5MzMsOCArNjk0MCw4IEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0Rh
dGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxv
Y2tzQWNyb3NzICogbnVtQmxvY2tzRG93biAqIGtCbG9ja1NpemU7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRC
UFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180
QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BW
UlRDXzRCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX1BWUlRDXzRCUFBWMV9JTUc6CiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBr
QmxvY2tTaXplID0gODsKICAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDg7CkBA
IC02OTQyLDggKzY5NDksOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICAgICAg
Ynl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1heCh3aWR0aCwga0Jsb2NrV2lkdGgpICogc3RkOjptYXgo
aGVpZ2h0LCBrQmxvY2tIZWlnaHQpICogNCArIDcpIC8ga0Jsb2NrU2l6ZTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JfUFZS
VENfMkJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BW
UlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JfUFZSVENfMkJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRzoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3Qg
aW50IGtCbG9ja1NpemUgPSA4OwogICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0g
MTY7CkBAIC02OTUxLDQ0ICs2OTU4LDQ0IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3RpCiAgICAg
ICAgICAgICBieXRlc1JlcXVpcmVkID0gKHN0ZDo6bWF4KHdpZHRoLCBrQmxvY2tXaWR0aCkgKiBz
dGQ6Om1heChoZWlnaHQsIGtCbG9ja0hlaWdodCkgKiAyICsgNykgLyBrQmxvY2tTaXplOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ180eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ181eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ181eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q182eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182
eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVf
S0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hS
OgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoKLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9L
SFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18x
MHg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMHg2X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHgxMF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfMTJ4MTBfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUjoKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNhbGN1
bGF0ZUJ5dGVzRm9yQVNUQyh3aWR0aCwgaGVpZ2h0LCBBU1RDUGFyYW1ldGVyc1tmb3JtYXQgLSBB
U1RDRW51bVN0YXJ0UkdCQV0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9L
SFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
OHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ184eDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzh4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjoKLSAgICBj
YXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q180eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfNXg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9L
SFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ184eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfOHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEweDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoKICAgICAgICAgYnl0ZXNSZXF1aXJl
ZCA9IGNhbGN1bGF0ZUJ5dGVzRm9yQVNUQyh3aWR0aCwgaGVpZ2h0LCBBU1RDUGFyYW1ldGVyc1tm
b3JtYXQgLSBBU1RDRW51bVN0YXJ0U1JHQjhdKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
eHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUjExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
RVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VH
SF9BTFBIQTFfRVRDMjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9Q
VU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1IxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TSUdORURfUjExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1JHQjhfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4
X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjogewogICAgICAgICBDaGVja2VkVWlu
dDMyIGNoZWNrZWRCeXRlc1JlcXVpcmVkID0gKHdpZHRoICsga0VBQ0FuZEVUQzJCbG9ja1NpemUg
LSAxKSAvIGtFQUNBbmRFVEMyQmxvY2tTaXplOwogICAgICAgICBjaGVja2VkQnl0ZXNSZXF1aXJl
ZCAqPSAoaGVpZ2h0ICsga0VBQ0FuZEVUQzJCbG9ja1NpemUgLSAxKSAvIGtFQUNBbmRFVEMyQmxv
Y2tTaXplOwogICAgICAgICBjaGVja2VkQnl0ZXNSZXF1aXJlZCAqPSA4OwpAQCAtNjk5OSwxMCAr
NzAwNiwxMCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVk
ID0gY2hlY2tlZEJ5dGVzUmVxdWlyZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQThfRVRDMl9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NJR05FRF9SRzExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOiB7CiAgICAgICAgIENoZWNrZWRVaW50MzIgY2hlY2tl
ZEJ5dGVzUmVxdWlyZWQgPSAod2lkdGggKyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VB
Q0FuZEVUQzJCbG9ja1NpemU7CiAgICAgICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IChoZWln
aHQgKyBrRUFDQW5kRVRDMkJsb2NrU2l6ZSAtIDEpIC8ga0VBQ0FuZEVUQzJCbG9ja1NpemU7CiAg
ICAgICAgIGNoZWNrZWRCeXRlc1JlcXVpcmVkICo9IDE2OwpAQCAtNzAxMyw4ICs3MDIwLDggQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5j
RGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRC
eXRlc1JlcXVpcmVkOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOiB7CiAgICAgICAgIGNvbnN0IGludCBr
QmxvY2tTaXplID0gODsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAg
ICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CkBAIC03MDIzLDggKzcwMzAsOCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tzQWNy
b3NzICogbnVtQmxvY2tzRG93biAqIGtCbG9ja1NpemU7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUOgot
ICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJf
RVhUOiB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5f
UkdUQzJfRVhUOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQ6IHsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSAx
NjsKICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKICAgICAgICAgY29uc3QgaW50
IGtCbG9ja0hlaWdodCA9IDQ7CkBAIC03MDQ5LDE0ICs3MDU2LDE0IEBAIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hh
ciogZnVuY3RpCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleERpbWVuc2lvbnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0KQogewogICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQxX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQ
SEFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDogewogICAgICAgICBjb25zdCBHQ0dMc2l6ZWkga0Js
b2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBHQ0dMc2l6ZWkga0Jsb2NrSGVpZ2h0ID0gNDsK
ICAgICAgICAgY29uc3QgR0NHTGludCBtYXhUZXh0dXJlU2l6ZSA9IHRhcmdldCA/IG1fbWF4VGV4
dHVyZVNpemUgOiBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZTsKQEAgLTcwNjksNTUgKzcwNzYsNTUg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhE
aW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1bmMKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRC
UFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJC
UFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180
QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENf
MkJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9Q
VlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCX1BWUlRDXzJCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6CiAgICAgICAgIC8vIEhlaWdodCBhbmQg
d2lkdGggbXVzdCBiZSBwb3dlcnMgb2YgMi4KICAgICAgICAgaWYgKCh3aWR0aCAmICh3aWR0aCAt
IDEpKSB8fCAoaGVpZ2h0ICYgKGhlaWdodCAtIDEpKSkgewogICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5h
bWUsICJ3aWR0aCBvciBoZWlnaHQgaW52YWxpZCBmb3IgbGV2ZWwiKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfOHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
R0JBX0FTVENfMTB4NV9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDZfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg4X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RD
XzEyeDEyX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ180eDRfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6
Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
Nl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfMTB4OF9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4MTBfS0hSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6
OkVUQzFfUkdCOF9PRVM6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUjExX0VB
QzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKLSAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoKLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6Ci0gICAgY2FzZSBFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9Q
VU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hS
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEw
X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18x
MngxMl9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ180eDRfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tI
UjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4NV9LSFI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ184eDZfS0hSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MHg4X0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpFVEMxX1JHQjhfT0VTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfUjExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1NJR05FRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfUkcxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9T
SUdORURfUkcxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0I4X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9F
VEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NF
RF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzoKICAgICAgICAgLy8gTm8gaGVp
Z2h0IGFuZCB3aWR0aCByZXN0cmljdGlvbnMgb24gQVNUQywgRVRDMSBvciBFVEMyLgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpAQCAtNzEzMywxNCArNzE0MCwxNCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVu
c2lvbnMoY29uc3QgY2hhciogZgogICAgIH0KIAogICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2Ug
RXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOiB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQz
X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNU
Q19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDogewogICAgICAgICBjb25zdCBp
bnQga0Jsb2NrV2lkdGggPSA0OwogICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsK
ICAgICAgICAgaWYgKCh4b2Zmc2V0ICUga0Jsb2NrV2lkdGgpIHx8ICh5b2Zmc2V0ICUga0Jsb2Nr
SGVpZ2h0KSkgewpAQCAtNzE1NCwxMCArNzE2MSwxMCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoY29uc3QgY2hhciog
ZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNp
b25zKGZ1bmN0aW9uTmFtZSwgdGFyZ2V0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0KTsK
ICAgICB9Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBW
MV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBW
MV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQ
VjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQ
UFYxX0lNRzogeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BW
UlRDXzRCUFBWMV9JTUc6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JfUFZSVENfMkJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRzogewogICAgICAgICBpZiAoeG9mZnNldCB8
fCB5b2Zmc2V0KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgInhvZmZzZXQgYW5kIHlvZmZz
ZXQgbXVzdCBiZSB6ZXJvIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MTY5LDE5
ICs3MTc2LDE5IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21w
cmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmCiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoZnVuY3Rpb25OYW1lLCB0YXJn
ZXQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpOwogICAgIH0KLSAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6RVRDMV9SR0I4X09FUzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpFVEMx
X1JHQjhfT0VTOgogICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkIGZvciBFVEMxX1JHQjhfT0VTIHRl
eHR1cmVzLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUjExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdO
RURfUjExX0VBQzoKLSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQzoK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6Ci0gICAg
Y2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCOF9FVEMyOgotICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgY2FzZSBFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgotICAgIGNh
c2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogeworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUjExX0VBQzoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkNPTVBSRVNTRURfUkcxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9SR0I4X0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9TUkdCOF9FVEMyOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNT
RURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzogewog
ICAgICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzNEKSB7CiAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9P
UEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm5vdCBzdXBwb3J0ZWQgb24gVEVYVFVSRV8zRCB0ZXh0
dXJlcyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzY5OCw3ICs3NzA1LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkKICAg
ICBpZiAoIW1fcmVzdG9yZUFsbG93ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBjb250
ZXh0TG9zdFJlYXNvbiA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKTsKKyAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQtPmdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKIAogICAgIHN3aXRjaCAoY29udGV4dExvc3RSZWFz
b24pIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjoKQEAgLTc3MDcsMTUg
Kzc3MTQsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVD
b250ZXh0KCkKICAgICAgICAgLy8gV0VCR0xfbG9zZV9jb250ZXh0IGV4dGVuc2lvbiBtaWdodCBo
YXZlIGJlZW4gdXNlZCB0byBmb3JjZQogICAgICAgICAvLyBhIGxvc3QgY29udGV4dC4KICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OkdVSUxUWV9DT05URVhUX1JFU0VUX0FS
QjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkI6
CiAgICAgICAgIC8vIFRoZSByZW5kZXJpbmcgY29udGV4dCBpcyBub3QgcmVzdG9yZWQgaWYgdGhp
cyBjb250ZXh0IHdhcwogICAgICAgICAvLyBndWlsdHkgb2YgY2F1c2luZyB0aGUgZ3JhcGhpY3Mg
cmVzZXQuCiAgICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldB
Uk5JTkc6IFdlYkdMIGNvbnRlbnQgb24gdGhlIHBhZ2UgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJk
IHRvIHJlc2V0OyBub3QgcmVzdG9yaW5nIHRoZSBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEV4dGVuc2lvbnNHTDo6SU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkI6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6SU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAg
ICAgIC8vIEFsd2F5cyBhbGxvdyB0aGUgY29udGV4dCB0byBiZSByZXN0b3JlZC4KICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zR0w6OlVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkI6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5LTk9XTl9DT05URVhUX1JFU0VUX0FSQjoK
ICAgICAgICAgLy8gV2Fybi4gSWRlYWxseSwgcHJvbXB0IHRoZSB1c2VyIHRlbGxpbmcgdGhlbSB0
aGF0IFdlYkdMCiAgICAgICAgIC8vIGNvbnRlbnQgb24gdGhlIHBhZ2UgbWlnaHQgaGF2ZSBjYXVz
ZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8KICAgICAgICAgLy8gcmVzZXQgYW5kIGFzayB0aGVtIHdo
ZXRoZXIgdGhleSB3YW50IHRvIGNvbnRpbnVlIHJ1bm5pbmcKQEAgLTc4ODIsOSArNzg4OSw5IEBA
IEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQog
ICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBp
ZiAoIW1fbWF4RHJhd0J1ZmZlcnMpCi0gICAgICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRl
eHQtPmdldEludGVnZXIoRXh0ZW5zaW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAg
ICAgIG1fbWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250
ZXh0R0w6Ok1BWF9EUkFXX0JVRkZFUlNfRVhUKTsKICAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2ht
ZW50cykKLSAgICAgICAgbV9tYXhDb2xvckF0dGFjaG1lbnRzID0gbV9jb250ZXh0LT5nZXRJbnRl
Z2VyKEV4dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CisgICAgICAgIG1f
bWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRl
eHRHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCk7CiAgICAgLy8gV0VCR0xfZHJhd19idWZm
ZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyA+PSBNQVhfRFJBV19CVUZGRVJTLgog
ICAgIHJldHVybiBzdGQ6Om1pbihtX21heERyYXdCdWZmZXJzLCBtX21heENvbG9yQXR0YWNobWVu
dHMpOwogfQpAQCAtNzg5NCw3ICs3OTAxLDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICBpZiAoIXN1cHBvcnRzRHJhd0J1
ZmZlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVu
dHMpCi0gICAgICAgIG1fbWF4Q29sb3JBdHRhY2htZW50cyA9IG1fY29udGV4dC0+Z2V0SW50ZWdl
cihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOworICAgICAgICBtX21h
eENvbG9yQXR0YWNobWVudHMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0
R0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0
YWNobWVudHM7CiB9CiAKQEAgLTgwMzksMTEgKzgwNDYsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXYKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlU3VwcG9ydGVkRXh0
ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25OYW1lTGl0ZXJhbCkKIHsKICAgICBBU1NFUlQo
bV9jb250ZXh0KTsKLSAgICBhdXRvJiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCk7CiAgICAgU3RyaW5nIGV4dGVuc2lvbk5hbWUgeyBleHRlbnNpb25OYW1lTGl0ZXJhbCB9
OwotICAgIGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0cyhleHRlbnNpb25OYW1lKSkKKyAgICBpZiAo
IW1fY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oZXh0ZW5zaW9uTmFtZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9uTmFtZSk7
CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbk5hbWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCmluZGV4IDcyYjk2ODhlNmY5NWVm
YzJjMDA5OWVlYmQ1ZGVjZDQzM2VkNjlhY2YuLmUxMjExNmQ4MGU2MDM5YzdjZDgyM2IzOWM5MTg1
ZWMyNzAzY2E4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNs
dWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAKLSNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggN2E3YTFiNWYyNGM1OGMwODljMjA5ZjJlZjMwMzUzMzEzNDQ2MTc3OC4uNzk0MzVhM2FjMjQ3
NTZmN2Y5ZDk0YTU5MjZjMjAxNmU5MTE2NzIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM0MSw3ICszNDEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd1dlYkdMKGJvb2wgZW5hYmxlZFBlclNldHRp
bmdzKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KICAgICAvLyBJbmZvcm1zIHRoZSBl
bWJlZGRlciB0aGF0IGEgV2ViR0wgY2FudmFzIGluc2lkZSB0aGlzIGZyYW1lIHJlY2VpdmVkIGEg
bG9zdCBjb250ZXh0Ci0gICAgLy8gbm90aWZpY2F0aW9uIHdpdGggdGhlIGdpdmVuIEdMX0FSQl9y
b2J1c3RuZXNzIGd1aWx0L2lubm9jZW5jZSBjb2RlIChzZWUgRXh0ZW5zaW9uc0dMLmgpLgorICAg
IC8vIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9p
bm5vY2VuY2UgY29kZSAoc2VlIEdyYXBoaWNzQ29udGV4dEdMLmgpLgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRMb3NlV2ViR0xDb250ZXh0KGludCkgeyB9CiAgICAgdmlydHVhbCBXZWJHTExvYWRQb2xp
Y3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gV2ViR0xMb2Fk
UG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247IH0KICAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGlj
eSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gV2Vi
R0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU2MDc2MzA4YzU4YTBiZDQ1OTM5YjBhN2JjNWU2MjRkNTY0ZWI1MTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMDEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBUaGlzIGlzIGEgYmFzZSBjbGFzcyBjb250YWluaW5nIG9ubHkgcHVyZSB2aXJ0dWFs
IGZ1bmN0aW9ucy4KLS8vIEltcGxlbWVudGF0aW9ucyBtdXN0IHByb3ZpZGUgYSBzdWJjbGFzcy4K
LS8vCi0vLyBUaGUgc3VwcG9ydGVkIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQgYmVsb3cgYW5kIGlu
IHN1YmNsYXNzZXMsCi0vLyBwb3NzaWJseSBwbGF0Zm9ybS1zcGVjaWZpYyBvbmVzLgotLy8KLS8v
IENhbGxpbmcgYW55IGV4dGVuc2lvbiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJy
ZW50IGNvbnRleHQKLS8vIG11c3QgYmUgYSBuby1vcDsgaW4gcGFydGljdWxhciwgaXQgbWF5IG5v
dCBoYXZlIHNpZGUgZWZmZWN0cy4gSW4KLS8vIHRoaXMgc2l0dWF0aW9uLCBpZiB0aGUgZnVuY3Rp
b24gaGFzIGEgcmV0dXJuIHZhbHVlLCAwIGlzIHJldHVybmVkLgotY2xhc3MgRXh0ZW5zaW9uc0dM
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0woKSA9IGRlZmF1bHQ7Ci0KLSAg
ICAvLyBTdXBwb3J0ZWQgZXh0ZW5zaW9uczoKLSAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2Zvcm1h
dF9CR1JBODg4OAotICAgIC8vICAgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKLSAgICAvLyAgIEdM
X0FSQl9yb2J1c3RuZXNzCi0gICAgLy8gICBHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdv
IC8gR0xfT0VTX3RleHR1cmVfbnBvdAotICAgIC8vICAgR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIC8gR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsCi0gICAgLy8gICBHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9ibGl0IC8gR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICAvLyAg
IEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKLSAgICAvLyAgIEdMX09FU190
ZXh0dXJlX2Zsb2F0Ci0gICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIKLSAgICAv
LyAgIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQKLSAgICAvLyAgIEdMX09FU190ZXh0dXJlX2hh
bGZfZmxvYXRfbGluZWFyCi0gICAgLy8gICBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKLSAg
ICAvLyAgIEdMX09FU19yZ2I4X3JnYmE4Ci0gICAgLy8gICBHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdAotICAgIC8vICAgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludAotICAgIC8vICAgR0xfQU5H
TEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCi0gICAgLy8gICBHTF9BUkJfdGV4dHVyZV9yZWN0
YW5nbGUgKG9ubHkgdGhlIHN1YnNldCByZXF1aXJlZCB0bwotICAgIC8vICAgICBpbXBsZW1lbnQg
SU9TdXJmYWNlIGJpbmRpbmc7IGl0J3MgcmVjb21tZW5kZWQgdG8gc3VwcG9ydAotICAgIC8vICAg
ICB0aGlzIG9ubHkgb24gTWFjIE9TIFggdG8gbGltaXQgdGhlIGFtb3VudCBvZiBjb2RlIGRlcGVu
ZGVudAotICAgIC8vICAgICBvbiB0aGlzIGV4dGVuc2lvbikKLSAgICAvLyAgIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDEKLSAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X3MzdGMKLSAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgotICAg
IC8vICAgR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKLSAgICAvLyAgIEdMX0lN
R190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjCi0gICAgLy8gICBHTF9LSFJfdGV4dHVyZV9jb21w
cmVzc2lvbl9hc3RjX2hkcgotICAgIC8vICAgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19sZHIKLSAgICAvLyAgIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwotICAgIC8vICAg
R0xfRVhUX2RlYnVnX21hcmtlcgotICAgIC8vICAgR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VY
VF9kcmF3X2J1ZmZlcnMKLSAgICAvLyAgIEdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMKLSAgICAv
LyAgIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0KLSAgICAvLyBUYWtlcyBmdWxsIG5h
bWUgb2YgZXh0ZW5zaW9uOyBmb3IgZXhhbXBsZSwKLSAgICAvLyAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4Ii4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikg
PSAwOwotCi0gICAgLy8gQ2VydGFpbiBPcGVuR0wgYW5kIFdlYkdMIGltcGxlbWVudGF0aW9ucyBt
YXkgc3VwcG9ydCBlbmFibGluZwotICAgIC8vIGV4dGVuc2lvbnMgbGF6aWx5LiBUaGlzIG1ldGhv
ZCBtYXkgb25seSBiZSBjYWxsZWQgd2l0aAotICAgIC8vIGV4dGVuc2lvbiBuYW1lcyBmb3Igd2hp
Y2ggc3VwcG9ydHMgcmV0dXJucyB0cnVlLgotICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFbmFibGVk
KGNvbnN0IFN0cmluZyYpID0gMDsKLQotICAgIC8vIFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNp
b246IGZvciBleGFtcGxlLCAiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ii4KLSAgICAv
LyBDaGVja3MgdG8gc2VlIHdoZXRoZXIgdGhlIGdpdmVuIGV4dGVuc2lvbiBpcyBhY3R1YWxseSBl
bmFibGVkIChzZWUgZW5zdXJlRW5hYmxlZCkuCi0gICAgLy8gSGFzIG5vIG90aGVyIHNpZGUtZWZm
ZWN0cy4KLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKLQot
ICAgIC8vIEVYVF9zUkdCIGZvcm1hdHMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFNS
R0JfRVhUID0gMHg4QzQwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JHQl9BTFBI
QV9FWFQgPSAweDhDNDI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCOF9BTFBI
QThfRVhUID0gMHg4QzQzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQgPSAweDgyMTA7Ci0KLSAgICAvLyBFWFRf
YmxlbmRfbWlubWF4IGVudW1zCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNSU5fRVhU
ID0gMHg4MDA3OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gTUFYX0VYVCA9IDB4ODAw
ODsKLQotICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBlbnVtcwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQkdSQV9FWFQgPSAweDgwRTE7Ci0KLSAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcyBlbnVtcwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gR1VJTFRZ
X0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjUzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gSU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTQ7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjU1OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09OVEVYVF9ST0JVU1RfQUNDRVNTID0gMHg5MEYzOwot
Ci0gICAgLy8gR0xfRVhUL09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCBlbnVtcwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gREVQVEgyNF9TVEVOQ0lMOCA9IDB4ODhGMDsKLQotICAgIC8v
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgbmFtZXMKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIFJFQURfRlJBTUVCVUZGRVIgPSAweDhDQTg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBEUkFXX0ZSQU1FQlVGRkVSID0gMHg4Q0E5OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HID0gMHg4Q0E2OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HID0gMHg4Q0FBOwotCi0g
ICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgbmFtZXMKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIFJFTkRFUkJVRkZFUl9TQU1QTEVTID0gMHg4Q0FCOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBM
RSA9IDB4OEQ1NjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9TQU1QTEVTID0g
MHg4RDU3OwotCi0gICAgLy8gR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVNfSU1HID0g
MHg5MTMzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9NVUxUSVNBTVBMRV9JTUcgPSAweDkxMzQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBNQVhfU0FNUExFU19JTUcgPSAweDkxMzU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBURVhUVVJFX1NBTVBMRVNfSU1HID0gMHg5MTM2OwotCi0gICAgLy8gR0xfT0VTX3N0YW5k
YXJkX2Rlcml2YXRpdmVzIG5hbWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFH
TUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyA9IDB4OEI4QjsKLQotICAgIC8vIEdMX09F
U19yZ2I4X3JnYmE4IG5hbWVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBSR0I4X09F
UyA9IDB4ODA1MTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJHQkE4X09FUyA9IDB4
ODA1ODsKLQotICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IG5hbWVzCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBWRVJURVhfQVJSQVlfQklORElOR19PRVMgPSAweDg1QjU7
Ci0KLSAgICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIFRSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUg
PSAweDkzQTA7Ci0KLSAgICAvLyBHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfUkVDVEFOR0xFX0FSQiA9ICAweDg0RjU7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX0JJTkRJTkdfUkVDVEFOR0xFX0FSQiA9
IDB4ODRGNjsKLQotICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKLSAgICAv
LyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCi0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4M0YwOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgPSAweDgz
RjE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0VYVCA9IDB4ODNGMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfRVhUID0gMHg4M0YzOwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fczN0Y19zcmdiCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCA9IDB4OEM0QzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUID0gMHg4QzREOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENf
RFhUM19FWFQgPSAweDhDNEU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCA9IDB4OEM0RjsKLQotICAgIC8vIEdMX09FU19j
b21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBFVEMxX1JHQjhfT0VTID0gMHg4RDY0OwotCi0gICAgLy8gV0VCR0xfY29tcHJlc3NlZF90ZXh0
dXJlX2V0YwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SMTFfRUFD
ID0gMHg5MjcwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TSUdO
RURfUjExX0VBQyA9IDB4OTI3MTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfUkcxMV9FQUMgPSAweDkyNzI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyA9IDB4OTI3MzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfUkdCOF9FVEMyID0gMHg5Mjc0OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9FVEMyID0gMHg5Mjc1OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
RVRDMiA9IDB4OTI3NjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURf
U1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyID0gMHg5Mjc3OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyA9IDB4OTI3ODsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFD
ID0gMHg5Mjc5OwotCi0gICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9J
TUcgPSAweDhDMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JH
Ql9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDI7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyA9IDB4
OEMwMzsKLQotICAgIC8vIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX0FUQ19SR0JfQU1EID0gMHg4QzkyOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9B
TFBIQV9BTUQgPSAweDhDOTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQgPSAweDg3RUU7Ci0KLSAgICAvLyBH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkcgotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiA9IDB4OTNCMDsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIgPSAweDkz
QjE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ181
eDVfS0hSID0gMHg5M0IyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NF
RF9SR0JBX0FTVENfNng1X0tIUiA9IDB4OTNCMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIgPSAweDkzQjQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSID0gMHg5M0I1Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tI
UiA9IDB4OTNCNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9BU1RDXzh4OF9LSFIgPSAweDkzQjc7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUiA9IDB4OTNCODsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSID0gMHg5M0I5OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIg
PSAweDkzQkE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHgxMF9LSFIgPSAweDkzQkI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIgPSAweDkzQkM7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIgPSAweDkzQkQ7Ci0K
LSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNHg0X0tIUiA9IDB4OTNEMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUiA9IDB4OTNEMTsKLSAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiA9IDB4
OTNEMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNng1X0tIUiA9IDB4OTNEMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiA9IDB4OTNENDsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tI
UiA9IDB4OTNENTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfOHg2X0tIUiA9IDB4OTNENjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiA9IDB4OTNENzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4NV9LSFIgPSAweDkzRDg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSID0gMHg5M0Q5OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiA9IDB4
OTNEQTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4MTBfS0hSID0gMHg5M0RCOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIgPSAweDkzREM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEy
eDEyX0tIUiA9IDB4OTNERDsKLQotICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3Jn
dGMKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkVEX1JHVEMxX0VY
VCA9IDB4OERCQjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lH
TkVEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUID0g
MHg4REJFOwotCi0gICAgLy8gR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0gICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4
ODRGRTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9URVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVCA9IDB4ODRGRjsKLQotICAgIC8vIEdMX0FSQl9kcmF3X2J1ZmZlcnMgLyBHTF9F
WFRfZHJhd19idWZmZXJzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRFJBV19C
VUZGRVJTX0VYVCA9IDB4ODgyNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdf
QlVGRkVSMF9FWFQgPSAweDg4MjU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFX
X0JVRkZFUjFfRVhUID0gMHg4ODI2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJB
V19CVUZGRVIyX0VYVCA9IDB4ODgyNzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERS
QVdfQlVGRkVSM19FWFQgPSAweDg4Mjg7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBE
UkFXX0JVRkZFUjRfRVhUID0gMHg4ODI5OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
RFJBV19CVUZGRVI1X0VYVCA9IDB4ODgyQTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IERSQVdfQlVGRkVSNl9FWFQgPSAweDg4MkI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51
bSBEUkFXX0JVRkZFUjdfRVhUID0gMHg4ODJDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gRFJBV19CVUZGRVI4X0VYVCA9IDB4ODgyRDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIERSQVdfQlVGRkVSOV9FWFQgPSAweDg4MkU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBEUkFXX0JVRkZFUjEwX0VYVCA9IDB4ODgyRjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIERSQVdfQlVGRkVSMTFfRVhUID0gMHg4ODMwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gRFJBV19CVUZGRVIxMl9FWFQgPSAweDg4MzE7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBEUkFXX0JVRkZFUjEzX0VYVCA9IDB4ODgzMjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTRfRVhUID0gMHg4ODMzOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxNV9FWFQgPSAweDg4MzQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUID0gMHg4Q0RGOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDBfRVhUID0gMHg4Q0Uw
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDFfRVhUID0g
MHg4Q0UxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDJf
RVhUID0gMHg4Q0UyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNI
TUVOVDNfRVhUID0gMHg4Q0UzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1Jf
QVRUQUNITUVOVDRfRVhUID0gMHg4Q0U0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09MT1JfQVRUQUNITUVOVDVfRVhUID0gMHg4Q0U1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gQ09MT1JfQVRUQUNITUVOVDZfRVhUID0gMHg4Q0U2OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDdfRVhUID0gMHg4Q0U3OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDhfRVhUID0gMHg4Q0U4OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDlfRVhUID0gMHg4Q0U5Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDEwX0VYVCA9IDB4
OENFQTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMV9F
WFQgPSAweDhDRUI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hN
RU5UMTJfRVhUID0gMHg4Q0VDOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1Jf
QVRUQUNITUVOVDEzX0VYVCA9IDB4OENFRDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTE9SX0FUVEFDSE1FTlQxNF9FWFQgPSAweDhDRUU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTVfRVhUID0gMHg4Q0VGOwotCi0gICAgLy8gR0xfS0hS
X3BhcmFsbGVsX3NoYWRlcl9jb21waWxlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T01QTEVUSU9OX1NUQVRVU19LSFIgPSAweDkxQjE7Ci0KLSAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0
X2V4dGVuc2lvbgotICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkVRVUVTVEFCTEVfRVhU
RU5TSU9OU19BTkdMRSA9IDB4OTNBODsKLQotICAgIC8vIFdlYkdMIGZ1bmN0aW9ucy4KLQotICAg
IC8vIEdMX0FSQl9yb2J1c3RuZXNzCi0gICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlv
ciBkaWZmZXJzIGZyb20gdGhlIEdMX0FSQl9yb2J1c3RuZXNzCi0gICAgLy8gc3BlY2lmaWNhdGlv
biBpbiB0aGUgZm9sbG93aW5nIHdheToKLSAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gbXVzdCBu
b3QgcmVzZXQgdGhlIGVycm9yIHN0YXRlIGR1cmluZyB0aGlzIGNhbGwuCi0gICAgLy8gSWYgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQiByZXR1cm5zIGFuIGVycm9yLCBpdCBzaG91bGQgY29udGlu
dWUKLSAgICAvLyByZXR1cm5pbmcgdGhlIHNhbWUgZXJyb3IuIFJlc3RvcmluZyB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wgaXMgaGFuZGxlZAotICAgIC8vIGV4dGVybmFsbHkuCi0gICAgdmly
dHVhbCBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7Ci0KLSAgICAvLyBH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwotCi0gICAg
Ly8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpID0gMDsK
LQotICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KLSNpZiAhVVNFKEFOR0xFKQotICAgIC8vIEVYVCBS
b2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCCi0gICAgdmlydHVhbCB2
b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5V
bmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5V
bmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotCi0jZW5kaWYKLQotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGQ2MGMzN2E5ZmZlNWMyY2JlMDM2NmUy
NzZkODQ4ODY2NWJkNmUyMGIuLmExNDA5MGE3Zjk4ZDRhZmNhZTM1ODBkZGM4ZTc5ZTYxOTM0M2Q5
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkK
IAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5o
IgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZS5oIgpAQCAtMzc2LDEz
ICszNzUsMTMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQ
YXJhbWV0ZXJzKEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OlJHQl9JTlRFR0VSOgotICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVDoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0VYVDoKICAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhl
bCA9IDM7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE6
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQV9JTlRFR0VSOgotICAgIGNhc2UgRXh0
ZW5zaW9uc0dMOjpCR1JBX0VYVDogLy8gR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ci0g
ICAgY2FzZSBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhUOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OkJHUkFfRVhUOiAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCX0FMUEhBX0VYVDoKICAgICAgICAgKmNvbXBv
bmVudHNQZXJQaXhlbCA9IDQ7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApp
bmRleCBiNWY1ZWNkMzgxY2E5MGEyN2Q4ZDJhYjUyZDNlZmIyNTJiZWQxYjZjLi4xY2NlZWI1Mzcz
NTM4ZDUzNTIzZjQ5ZGNlMmEwNjgyZTQ3ZGZjOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTY3NCw2ICs2NzQs
MTQ1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVfUkVD
VEFOR0xFX0FSQiA9IDB4ODRGNTsKICAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRV
UkVfQklORElOR19SRUNUQU5HTEVfQVJCID0gMHg4NEY2OwogCisgICAgLy8gRVhUX3NSR0IgZm9y
bWF0cworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gU1JHQl9FWFQgPSAweDhDNDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTUkdCX0FMUEhBX0VYVCA9IDB4OEM0MjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFNSR0I4X0FMUEhBOF9FWFQgPSAweDhDNDM7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9S
X0VOQ09ESU5HX0VYVCA9IDB4ODIxMDsKKworICAgIC8vIEVYVF9ibGVuZF9taW5tYXggZW51bXMK
KyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1JTl9FWFQgPSAweDgwMDc7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfRVhUID0gMHg4MDA4OworCisgICAgLy8gR0xfRVhU
X3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGVudW1zCisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBCR1JBX0VYVCA9IDB4ODBFMTsKKworICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzIGVudW1z
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkIg
PSAweDgyNTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBJTk5PQ0VOVF9DT05URVhU
X1JFU0VUX0FSQiA9IDB4ODI1NDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFVOS05P
V05fQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT05URVhUX1JPQlVTVF9BQ0NFU1MgPSAweDkwRjM7CisKKyAgICAvLyBHTF9PRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMgbmFtZXMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIEZS
QUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTID0gMHg4QjhCOworCisgICAgLy8gR0xf
T0VTX3JnYjhfcmdiYTggbmFtZXMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFJHQjhf
T0VTID0gMHg4MDUxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gUkdCQThfT0VTID0g
MHg4MDU4OworCisgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBUUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RI
X0FOR0xFID0gMHg5M0EwOworCisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0
MQorICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgPSAweDgzRjA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCA9IDB4ODNGMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDNfRVhUID0gMHg4M0YyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQgPSAweDgzRjM7CisKKyAgICAvLyBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xl
bnVtIENPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4QzRDOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgPSAw
eDhDNEQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0JfQUxQ
SEFfUzNUQ19EWFQzX0VYVCA9IDB4OEM0RTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUID0gMHg4QzRGOworCisgICAgLy8g
R0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIEVUQzFfUkdCOF9PRVMgPSAweDhENjQ7CisKKyAgICAvLyBHTF9JTUdfdGV4dHVy
ZV9jb21wcmVzc2lvbl9wdnJ0YworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lN
RyA9IDB4OEMwMjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdC
QV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzOworCisgICAgLy8gR0xfQU1EX2NvbXByZXNzZWRf
QVRDX3RleHR1cmUKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRD
X1JHQl9BTUQgPSAweDhDOTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCA9IDB4OEM5MzsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FN
RCA9IDB4ODdFRTsKKworICAgIC8vIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRy
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ180eDRf
S0hSID0gMHg5M0IwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9S
R0JBX0FTVENfNXg0X0tIUiA9IDB4OTNCMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVt
IENPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIgPSAweDkzQjI7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSID0gMHg5M0IzOworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiA9
IDB4OTNCNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9B
U1RDXzh4NV9LSFIgPSAweDkzQjU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01Q
UkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSID0gMHg5M0I2OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUiA9IDB4OTNCNzsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSID0gMHg5
M0I4OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9SR0JBX0FTVENf
MTB4Nl9LSFIgPSAweDkzQjk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVT
U0VEX1JHQkFfQVNUQ18xMHg4X0tIUiA9IDB4OTNCQTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdD
R0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUiA9IDB4OTNCQjsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiA9IDB4
OTNCQzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkdCQV9BU1RD
XzEyeDEyX0tIUiA9IDB4OTNCRDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSID0gMHg5M0QwOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSID0g
MHg5M0QxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ181eDVfS0hSID0gMHg5M0QyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSID0gMHg5M0QzOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZf
S0hSID0gMHg5M0Q0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ184eDVfS0hSID0gMHg5M0Q1OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSID0gMHg5M0Q2Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDhfS0hSID0gMHg5M0Q3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiA9IDB4OTNEODsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIgPSAw
eDkzRDk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDhfS0hSID0gMHg5M0RBOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIgPSAweDkzREI7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEy
eDEwX0tIUiA9IDB4OTNEQzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSID0gMHg5M0REOworCisgICAgLy8gR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fcmd0YworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0g
Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUID0gMHg4REJCOworICAgIHN0YXRpYyBjb25zdGV4cHIg
R0NHTGVudW0gQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCA9IDB4OERCQzsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9
IDB4OERCRDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkU7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIFRFWFRVUkVf
TUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4NEZFOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4NEZGOworCisgICAgLy8gR0xf
QVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdDR0xlbnVtIE1BWF9EUkFXX0JVRkZFUlNfRVhUID0gMHg4ODI0OworICAgIHN0YXRpYyBj
b25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIwX0VYVCA9IDB4ODgyNTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMV9FWFQgPSAweDg4MjY7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjJfRVhUID0gMHg4ODI3OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIzX0VYVCA9IDB4ODgyODsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSNF9FWFQgPSAweDg4Mjk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjVfRVhUID0gMHg4ODJBOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI2X0VYVCA9IDB4ODgyQjsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSN19FWFQgPSAweDg4MkM7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjhfRVhUID0gMHg4ODJEOworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVI5X0VYVCA9IDB4ODgyRTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTBfRVhUID0gMHg4ODJGOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxMV9FWFQgPSAweDg4MzA7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjEyX0VYVCA9IDB4ODgz
MTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIERSQVdfQlVGRkVSMTNfRVhUID0gMHg4
ODMyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gRFJBV19CVUZGRVIxNF9FWFQgPSAw
eDg4MzM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBEUkFXX0JVRkZFUjE1X0VYVCA9
IDB4ODgzNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIE1BWF9DT0xPUl9BVFRBQ0hN
RU5UU19FWFQgPSAweDhDREY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9B
VFRBQ0hNRU5UMF9FWFQgPSAweDhDRTA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBD
T0xPUl9BVFRBQ0hNRU5UMV9FWFQgPSAweDhDRTE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dM
ZW51bSBDT0xPUl9BVFRBQ0hNRU5UMl9FWFQgPSAweDhDRTI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UM19FWFQgPSAweDhDRTM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UNF9FWFQgPSAweDhDRTQ7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UNV9FWFQgPSAweDhDRTU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UNl9FWFQgPSAweDhD
RTY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UN19FWFQg
PSAweDhDRTc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5U
OF9FWFQgPSAweDhDRTg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRB
Q0hNRU5UOV9FWFQgPSAweDhDRTk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBDT0xP
Ul9BVFRBQ0hNRU5UMTBfRVhUID0gMHg4Q0VBOworICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVu
dW0gQ09MT1JfQVRUQUNITUVOVDExX0VYVCA9IDB4OENFQjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxMl9FWFQgPSAweDhDRUM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHQ0dMZW51bSBDT0xPUl9BVFRBQ0hNRU5UMTNfRVhUID0gMHg4Q0VEOworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gQ09MT1JfQVRUQUNITUVOVDE0X0VYVCA9IDB4OENFRTsK
KyAgICBzdGF0aWMgY29uc3RleHByIEdDR0xlbnVtIENPTE9SX0FUVEFDSE1FTlQxNV9FWFQgPSAw
eDhDRUY7CisKKyAgICAvLyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKKyAgICBzdGF0
aWMgY29uc3RleHByIEdDR0xlbnVtIENPTVBMRVRJT05fU1RBVFVTX0tIUiA9IDB4OTFCMTsKKwor
ICAgIC8vIEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uCisgICAgc3RhdGljIGNvbnN0ZXhwciBH
Q0dMZW51bSBSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFID0gMHg5M0E4OworCiAgICAgLy8g
QXR0ZW1wdCB0byBlbnVtZXJhdGUgYWxsIHBvc3NpYmxlIG5hdGl2ZSBpbWFnZSBmb3JtYXRzIHRv
CiAgICAgLy8gcmVkdWNlIHRoZSBhbW91bnQgb2YgdGVtcG9yYXJ5IGFsbG9jYXRpb25zIGR1cmlu
ZyB0ZXh0dXJlCiAgICAgLy8gdXBsb2FkaW5nLiBUaGlzIGVudW0gbXVzdCBiZSBwdWJsaWMgYmVj
YXVzZSBpdCBpcyBhY2Nlc3NlZApAQCAtMTIzMyw2ICsxMzcyLDMxIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291
bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgPSAwOworCisgICAgLy8gVGhpcyBtZXRob2QgbWF5
IG9ubHkgYmUgY2FsbGVkIHdpdGggZXh0ZW5zaW9uIG5hbWVzIGZvciB3aGljaCBzdXBwb3J0cyBy
ZXR1cm5zIHRydWUuCisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29u
c3QgU3RyaW5nJikgPSAwOworCisgICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjog
Zm9yIGV4YW1wbGUsICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgorICAgIC8vIENo
ZWNrcyB0byBzZWUgd2hldGhlciB0aGUgZ2l2ZW4gZXh0ZW5zaW9uIGlzIGFjdHVhbGx5IGVuYWJs
ZWQgKHNlZSBlbnN1cmVFeHRlbnNpb25FbmFibGVkKS4KKyAgICAvLyBIYXMgbm8gb3RoZXIgc2lk
ZS1lZmZlY3RzLgorICAgIHZpcnR1YWwgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3Ry
aW5nJikgPSAwOworCisgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKKyAgICAvLyBOb3RlOiBUaGlz
IG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJvbSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKKyAg
ICAvLyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb2xsb3dpbmcgd2F5OgorICAgIC8vIFRoZSBpbXBs
ZW1lbnRhdGlvbiBtdXN0IG5vdCByZXNldCB0aGUgZXJyb3Igc3RhdGUgZHVyaW5nIHRoaXMgY2Fs
bC4KKyAgICAvLyBJZiBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3Is
IGl0IHNob3VsZCBjb250aW51ZQorICAgIC8vIHJldHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVz
dG9yaW5nIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBpcyBoYW5kbGVkCisgICAgLy8gZXh0
ZXJuYWxseS4KKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
ID0gMDsKKworICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIHZp
cnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2Jq
ZWN0KSA9IDA7CisKKyAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVm
ZmVycworICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZW51bT4gYnVmcykgPSAwOworCiAgICAgLy8gPT09PT09PT09PSBPdGhlciBmdW5jdGlvbnMuCiAg
ICAgR0NHTGZsb2F0IGdldEZsb2F0KEdDR0xlbnVtIHBuYW1lKTsKICAgICBHQ0dMYm9vbGVhbiBn
ZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKTsKQEAgLTEyNDMsMTEgKzE0MDcsNiBAQCBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyczsgfQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7
IH0KIAotICAgIC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMgYSBub24tbnVsbCBv
YmplY3QsIHRob3VnaCBub3QKLSAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVj
ZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQotICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11
c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkgdG8KLSAgICAvLyBkZXRlcm1pbmUgdGhp
cy4KLSAgICB2aXJ0dWFsIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggMjMzYjBkZjc1NmVjZGQ0YmM5MmQ5MGJh
YWYwMTUzY2M2YTU5NWZmNy4uOGY1ZmYxYWU3NjAwZjVkYzkwMDlkODQ1NWNjZmY5MTViY2ExZTY2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtNDYsNzgg
KzQ2LDcgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWMKIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpID0gZGVmYXVs
dDsKIAotRXh0ZW5zaW9uc0dMJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
RXh0ZW5zaW9ucygpCi17Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAotewotI2lmIEVOQUJMRShXRUJHTDIpCi0g
ICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzKCkud2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29u
dGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZgotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrQ29u
dGV4dENoYW5nZWQoKQotewotICAgIC8vIEZJWE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0
aGlzIHN0YXRlLgotICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkgewotICAgICAgICBub3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6Om1hcmtDb250
ZXh0Q2hhbmdlZCgpOwotICAgIH0KLX0KLQotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6c3VwcG9ydHMoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHdhaXRVbnRpbElu
aXRpYWxpemVkKCk7Ci0gICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5zdXJlRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCi17Ci0gICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKLSAgICBpZiAobV9y
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgJiYgIW1fZW5hYmxlZEV4dGVuc2lv
bnMuY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChuYW1l
KTsKLSAgICAgICAgbV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7Ci0gICAgfQotfQogCi1i
b29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjppc0VuYWJsZWQoY29uc3QgU3Ry
aW5nJiBuYW1lKQotewotICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7Ci0gICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25z
LmNvbnRhaW5zKG5hbWUpOwotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCi17Ci0gICAgZm9yIChhdXRvJiBleHRlbnNp
b24gOiBhdmFpbGFibGVFeHRlbnNpb25zLnNwbGl0KCcgJykpCi0gICAgICAgIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucy5zcGxpdCgnICcpKQotICAgICAgICBtX3JlcXVlc3RhYmxlRXh0
ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKLX0KLQotI2lmICFVU0UoQU5HTEUpCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpyZWFkblBpeGVsc0VYVChHQ0dMaW50LCBHQ0dM
aW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWks
IEdDR0x2b2lkKikKLXsKLX0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6Z2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMZmxv
YXQqKQotewotfQotCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRu
VW5pZm9ybWl2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKQotewot
fQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiAhUExBVEZPUk0oQ09DT0Ep
Ci0jZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgK
aW5kZXggNWU1YzA5Yjg3MjA0M2VhMGZhMmE5NjdmNGYzOTkzYmFkODBhNzk0MS4uNzhjMTAwNzNj
OTA4ZTQxZGJlMDRmZDUwN2FmODFkNDBlOGMwY2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAt
MzksNDIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoaXMgaW1wbGVtZW50cyB0
aGUgcGFydHMgdGhhdCBhcmUgdXNpbmcgV2ViQ29yZSBpbnRlcm5hbCBmdW5jdGlvbmFsaXR5Ogog
Ly8gLSBEcmF3aW5nIGJ1ZmZlciB0cmFja2luZyBtYW5hZ2VtZW50LgogLy8gLSBDb21wb3NpdGlu
ZyBzdXBwb3J0LgotY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wsIHB1YmxpYyBFeHRlbnNpb25zR0wg
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ug
OiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wgewogcHVibGljOgogICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwog
ICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSgpIG92ZXJyaWRlOwogCi0gICAg
Ly8gT3RoZXIgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgotICAgIHVzaW5n
IEdyYXBoaWNzQ29udGV4dEdMOjppc0VuYWJsZWQ7Ci0gICAgRXh0ZW5zaW9uc0dMJiBnZXRFeHRl
bnNpb25zKCkgZmluYWw7Ci0gICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5h
bDsKLSAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1h
cmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogCi0gICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3Zl
cnJpZGVzLgotICAgIHVzaW5nIEV4dGVuc2lvbnNHTDo6aXNFbmFibGVkOwotICAgIGJvb2wgc3Vw
cG9ydHMoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwotCi0jaWYgIVVTRShBTkdMRSkKLSAgICB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQsIEdD
R0xpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXpl
aSwgR0NHTHZvaWQqKSBmaW5hbDsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQs
IEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGZsb2F0KikgZmluYWw7Ci0gICAgdm9pZCBnZXRuVW5p
Zm9ybWl2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKSBmaW5hbDsK
LSNlbmRpZgotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiByZXF1ZXN0YWJsZUV4dGVuc2lvbnMp
OwotICAgIHZpcnR1YWwgdm9pZCB3YWl0VW50aWxJbml0aWFsaXplZCgpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKLQotcHJpdmF0ZToK
LSAgICAvLyBHdWFyZGVkIGJ5IHdhaXRVbnRpbEluaXRpYWxpemVkKCkuCi0gICAgSGFzaFNldDxT
dHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnM7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5z
aW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggY2QwNDljNTEwOTI2NjE0NWRlOTExNzc5NzA0M2U5NWViYjk4N2E3OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xF
LmgiCi0KLSNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRXh0ZW5zaW9uc0dMQU5HTEU6
OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQU5HTEUqIGNvbnRleHQpCi0gICAg
OiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKLSAgICAsIG1fY29udGV4
dChjb250ZXh0KQotewotfQotCi1FeHRlbnNpb25zR0xBTkdMRTo6fkV4dGVuc2lvbnNHTEFOR0xF
KCkgPSBkZWZhdWx0OwotCi1ib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0cyhjb25zdCBT
dHJpbmcmIG5hbWUpCi17Ci0gICAgaWYgKCFtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9u
cykgewotICAgICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNp
b25zKCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwb3J0c0V4dGVuc2lvbihuYW1lKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUp
Ci17Ci0gICAgLy8gRW5hYmxlIHN1cHBvcnQgaW4gQU5HTEUgKGlmIG5vdCBlbmFibGVkIGFscmVh
ZHkpLgotICAgIGlmIChtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSAmJiAh
bV9lbmFibGVkRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IEdMX1JlcXVlc3RFeHRlbnNpb25BTkdMRShuYW1lLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAg
bV9lbmFibGVkRXh0ZW5zaW9ucy5hZGQobmFtZSk7Ci0KLSAgICAgICAgaWYgKG5hbWUgPT0gIkdM
X0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKQotICAgICAgICAgICAgbV93ZWJn
bENvbG9yQnVmZmVyRmxvYXRSR0JBID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAi
R0xfQ0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYiJfcykKLSAgICAgICAgICAgIG1fd2Vi
Z2xDb2xvckJ1ZmZlckZsb2F0UkdCID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wgRXh0ZW5zaW9u
c0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25z
LmNvbnRhaW5zKG5hbWUpOwotfQotCi1HTGludCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQigpCi17Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19F
UlJPUjsKLX0KLQotU3RyaW5nIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCi17Ci0gICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJB
TlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSk7Ci0KLSAgICBpZiAoIXNvdXJjZUxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgVmVjdG9yPEdMY2hhcj4g
bmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RI
X0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCi0gICAgR0NHTGludCByZXR1cm5lZExl
bmd0aCA9IDA7Ci0gICAgR0xfR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlciwg
c291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgpKTsKLSAgICBpZiAoIXJl
dHVybmVkTGVuZ3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAvLyByZXR1
cm5lZExlbmd0aCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBudWxsIHRlcm1pbmF0b3IuCi0gICAgQVNT
RVJUKHJldHVybmVkTGVuZ3RoID09IHNvdXJjZUxlbmd0aCAtIDEpOwotICAgIHJldHVybiBTdHJp
bmcobmFtZS5kYXRhKCksIHJldHVybmVkTGVuZ3RoKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQotewotICAgIFN0cmluZyBleHRl
bnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQotICAgICAgICBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0gICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhU
RU5TSU9OU19BTkdMRSkpKTsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNT
dHJpbmcuc3BsaXQoJyAnKSkKLSAgICAgICAgbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnMuYWRkKGV4
dGVuc2lvbik7Ci0gICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwot
fQotCi1ib29sIEV4dGVuc2lvbnNHTEFOR0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCi17Ci0gICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSB8fCBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKLX0KLQotdm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGJ1ZnMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBHTF9EcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1
ZnMuZGF0YSk7Ci19Ci0KLVN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0RXh0ZW5zaW9ucygp
Ci17Ci0gICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihHTF9H
ZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsKLX0KLQotR0NHTGVudW0gRXh0ZW5zaW9uc0dMQU5H
TEU6OmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKQotewotICAgIC8vIFRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQgZm9yIFdlYkdMIDEuMCAvIEVT
IDIuMCByZXF1aXJlcyBhIHNpemVkCi0gICAgLy8gaW50ZXJuYWwgZm9ybWF0LiBBZGp1c3QgaXQg
aWYgbmVjZXNzYXJ5IGF0IHRoaXMgbG93ZXN0IGxldmVsLgotICAgIGlmICh0eXBlID09IEdMX0ZM
T0FUKSB7Ci0gICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQkEgJiYgZm9ybWF0
ID09IEdMX1JHQkEgJiYgaW50ZXJuYWxmb3JtYXQgPT0gR0xfUkdCQSkKLSAgICAgICAgICAgIHJl
dHVybiBHTF9SR0JBMzJGOwotICAgICAgICBpZiAobV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0Ig
JiYgZm9ybWF0ID09IEdMX1JHQiAmJiBpbnRlcm5hbGZvcm1hdCA9PSBHTF9SR0IpCi0gICAgICAg
ICAgICByZXR1cm4gR0xfUkdCMzJGOwotICAgIH0KLSAgICByZXR1cm4gaW50ZXJuYWxmb3JtYXQ7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkg
JiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM5NzhlMmY5ZjY0YjlmNjE1YzNiM2E4NWM0M2EzY2EwNTRlZDc1Y2MuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTC5oIgotCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTsKLQotY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEUgOiBwdWJsaWMgRXh0ZW5zaW9u
c0dMIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBUaGlz
IGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dEdM
QU5HTEUgaW1wbGVtZW50YXRpb25zLgotICAgIGV4cGxpY2l0IEV4dGVuc2lvbnNHTEFOR0xFKEdy
YXBoaWNzQ29udGV4dEdMQU5HTEUqKTsKLSAgICB2aXJ0dWFsIH5FeHRlbnNpb25zR0xBTkdMRSgp
OwotCi0gICAgLy8gRXh0ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgYm9vbCBzdXBwb3J0cyhjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7Ci0KLSAg
ICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7
Ci0KLSAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwotCi0gICAgLy8gT25seSBmb3Igbm9uLVdlYkdMIDIuMCBjb250ZXh0
cy4KLSAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7Ci0KLXBy
aXZhdGU6Ci0gICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKLSAgICBT
dHJpbmcgZ2V0RXh0ZW5zaW9ucygpOwotCi0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVBdmFp
bGFibGVFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5z
aW9uczsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9hdmFpbGFibGVFeHRlbnNpb25zOwotICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9uczsKLSAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKLQotICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEUuCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRSogbV9jb250
ZXh0OwotCi0gICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9p
bnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgotICAgIGJvb2wg
bV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwotICAgIGJvb2wgbV93ZWJnbENv
bG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggNDhmNzM0MmYzZTA5MDFm
ZTQ2NzJjYTViNWUwMzIxZTg0MTZhOTY2ZC4uYzVjNmJmYTU3NWU5NDk0NjYxMDBlMTY1MzE4MzI4
M2EwOGEwZGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTMxLDcg
KzMxLDYgQEAKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkFOR0xFVXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTcxLDYgKzcwLDMwIEBAIHN0YXRpYyB2b2lkIHdpcGVB
bHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hh
ciogcGl4CiB9CiAjZW5kaWYKIAorCitib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmluaXRp
YWxpemUoKQoreworICAgIGlmICghcGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7
CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykp
CisgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICBleHRl
bnNpb25zU3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dl
dFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkpOworICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcpKQorICAgICAgICBtX3Jl
cXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gcGxhdGZvcm1J
bml0aWFsaXplKCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1J
bml0aWFsaXplQ29udGV4dCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQoKQogewogI2lmICFQTEFURk9STShDT0NPQSkKQEAgLTM1NCw3ICszNzcsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChH
Q0dMZW51bSBzaGFkZXJUeXBlLCBHQ0dMZQogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykKIHsKICAgICBpZiAoIW1faXNGb3JXZWJHTDIpCi0gICAgICAgIGludGVybmFs
Zm9ybWF0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uc0dMQU5HTEUmPihnZXRFeHRlbnNpb25zKCkp
LmFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChpbnRlcm5hbGZvcm1hdCwgZm9ybWF0
LCB0eXBlKTsKKyAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50
ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSk7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdMX1RleEltYWdlMkRSb2J1
c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7CkBAIC00MjUs
MTMgKzQ0OCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y2xlYXJEZXB0aChHQ0dM
Y2xhbXBmIGRlcHRoKQogICAgIEdMX0NsZWFyRGVwdGhmKHN0YXRpY19jYXN0PGZsb2F0PihkZXB0
aCkpOwogfQogCi1FeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldEV4dGVu
c2lvbnMoKQotewotICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMg
PSBtYWtlVW5pcXVlPEV4dGVuc2lvbnNHTEFOR0xFPih0aGlzKTsKLSAgICByZXR1cm4gKm1fZXh0
ZW5zaW9uczsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQog
ewogICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZGF0YS5kYXRhLCBmYWxz
ZSk7CkBAIC00ODMsMTIgKzQ5OSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIq
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKLSAgICBFeHRlbnNpb25zR0wmIGV4dGVu
c2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgLy8gRklYTUU6IFNpbmNlIHRoZSBjb25zdHJ1
Y3RvcnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMgYXJlIG5vdCBzaGFyZWQsIHdlIGluaXRpYWxpemUg
dGhpcyBoZXJlLgogICAgIC8vIFVwb24gY29uc3RydWN0aW5nIHRoZSBjb250ZXh0LCBhbHdheXMg
aW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQq
IHdpbGwKICAgICAvLyB1c2UgdG8gdHVybiBvbiBmZWF0dXJlIGZsYWdzLgotICAgIGlmIChleHRl
bnNpb25zLnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAg
ZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7Cisg
ICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsK
KyAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pOwogICAgICAgICBtX2ludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9T
VEVOQ0lMOF9PRVM7CiAgICAgfSBlbHNlCiAgICAgICAgIG1faW50ZXJuYWxEZXB0aFN0ZW5jaWxG
b3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQxNjsKQEAgLTUwNSwxNyArNTIwLDE3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciog
cGFja2VkRGVwdGhTdGVuY2lsCiAKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBtdXN0IGFkanVzdCB0aGlzIHdoZW4gdXBncmFkaW5nIHRvIFdlYkdMIDIuMCAv
IE9wZW5HTCBFUyAzLjAgc3VwcG9ydC4KLSAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRz
KCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpIHx8ICFleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikgfHwgIWV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX09FU19yZ2I4X3JnYmE4IikpIHsKKyAgICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigi
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSB8fCAhc3VwcG9ydHNFeHRlbnNpb24o
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKSB8fCAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19yZ2I4X3JnYmE4IikpIHsKICAgICAgICAgICAgIGF0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwog
ICAgICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9tdWx0aXNhbXBsZSIpOwotICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Iik7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4Iik7CisgICAgICAgICAgICBlbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAg
ICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
OworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgi
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVy
KSB7CiAgICAgICAgIC8vIE5lZWRlZCBmb3IgcHJlc2VydmVEcmF3aW5nQnVmZmVyOnRydWUgc3Vw
cG9ydCB3aXRob3V0IGFudGlhbGlhc2luZy4KLSAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFi
bGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgIGVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKTsKICAgICB9CiB9CiAKQEAgLTI4
OTAsNiArMjkwNSw2NCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om11bHRpRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTAogICAgIEdMX011bHRpRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnRzLmRhdGEsIHR5cGUsIHBvaW50ZXJz
LmRhdGEoKSwgaW5zdGFuY2VDb3VudHMuZGF0YSwgZHJhd2NvdW50KTsKIH0KIAorYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICAvLyBFbmFibGUgc3VwcG9ydCBpbiBBTkdMRSAoaWYgbm90IGVuYWJsZWQgYWxy
ZWFkeSkuCisgICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpICYm
ICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEdMX1JlcXVl
c3RFeHRlbnNpb25BTkdMRShuYW1lLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgbV9lbmFibGVk
RXh0ZW5zaW9ucy5hZGQobmFtZSk7CisKKyAgICAgICAgaWYgKG5hbWUgPT0gIkdMX0NIUk9NSVVN
X2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKQorICAgICAgICAgICAgbV93ZWJnbENvbG9yQnVm
ZmVyRmxvYXRSR0JBID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAiR0xfQ0hST01J
VU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYiJfcykKKyAgICAgICAgICAgIG1fd2ViZ2xDb2xvckJ1
ZmZlckZsb2F0UkdCID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fZW5hYmxlZEV4dGVu
c2lvbnMuY29udGFpbnMobmFtZSk7Cit9CisKK0dMaW50IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRHTDo6Tk9fRVJST1I7Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7Cisg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgaW50IHNvdXJjZUxlbmd0aCA9IGdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVE
X1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKKworICAgIGlmICghc291cmNlTGVuZ3RoKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNv
dXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUg
aW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBHQ0dMaW50IHJldHVybmVkTGVuZ3RoID0g
MDsKKyAgICBHTF9HZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VM
ZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkpOworICAgIGlmICghcmV0dXJuZWRM
ZW5ndGgpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIC8vIHJldHVybmVkTGVu
Z3RoIGRvZXMgbm90IGluY2x1ZGUgdGhlIG51bGwgdGVybWluYXRvci4KKyAgICBBU1NFUlQocmV0
dXJuZWRMZW5ndGggPT0gc291cmNlTGVuZ3RoIC0gMSk7CisgICAgcmV0dXJuIFN0cmluZyhuYW1l
LmRhdGEoKSwgcmV0dXJuZWRMZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQoreworICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdMX0Ry
YXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKK30KKwogYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjp3YWl0QW5kVXBkYXRlT2xkZXN0RnJhbWUoKQogewogICAgIHNpemVf
dCBvbGRlc3RGcmFtZUNvbXBsZXRpb25GZW5jZSA9IG1fb2xkZXN0RnJhbWVDb21wbGV0aW9uRmVu
Y2UrKyAlIG1heFBlbmRpbmdGcmFtZXM7CkBAIC0yOTk3LDYgKzMwNzAsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjppbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dMdWlu
dCkKIHsKIH0KIAorR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6YWRqdXN0V2ViR0wx
VGV4dHVyZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUpCit7CisgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9mIFdF
QkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCBmb3IgV2ViR0wgMS4wIC8gRVMgMi4wIHJlcXVpcmVzIGEg
c2l6ZWQKKyAgICAvLyBpbnRlcm5hbCBmb3JtYXQuIEFkanVzdCBpdCBpZiBuZWNlc3NhcnkgYXQg
dGhpcyBsb3dlc3QgbGV2ZWwuCisgICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpIHsKKyAgICAgICAg
aWYgKG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdCQSAmJiBmb3JtYXQgPT0gR0xfUkdCQSAmJiBp
bnRlcm5hbGZvcm1hdCA9PSBHTF9SR0JBKQorICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkEzMkY7
CisgICAgICAgIGlmIChtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdFJHQiAmJiBmb3JtYXQgPT0gR0xf
UkdCICYmIGludGVybmFsZm9ybWF0ID09IEdMX1JHQikKKyAgICAgICAgICAgIHJldHVybiBHTF9S
R0IzMkY7CisgICAgfQorICAgIHJldHVybiBpbnRlcm5hbGZvcm1hdDsKK30KKwogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggMTA3ZWMyMzhiNzgwZjQ0OTE2MGZmNWYxMTk3NWIxYjA0NDBiYmNkOC4uNDRk
MWVjM2YwZDlmM2U1MTA4MDU2OGU0ZDQ4YjM3MTJhMzg3N2I1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuaApAQCAtNTMsNyArNTMsNiBAQCBzdHJ1Y3QgZ2JtX2JvOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNpb25zR0w7Ci1jbGFzcyBFeHRlbnNpb25zR0xBTkdM
RTsKIGNsYXNzIEdMQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1ZmZl
cjsKQEAgLTMzMiw2ICszMzEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmly
c3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NH
THNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIG11
bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdD
R0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVk
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworCiAgICAgUGxhdGZvcm1HTE9iamVj
dCBjcmVhdGVCdWZmZXIoKSBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZUZyYW1l
YnVmZmVyKCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVQcm9ncmFtKCkgZmlu
YWw7CkBAIC0zNDYsMTIgKzM1MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVUZXh0dXJl
KFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NH
TGVudW0gZXJyb3IpIGZpbmFsOwogICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCkgZmluYWw7Ci0gICAgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgZmluYWw7CiAg
ICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3Rpbmcp
IG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXImKSBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXBhcmVG
b3JEaXNwbGF5KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKTsKICAg
ICB2b2lkIHJlY3ljbGVDb250ZXh0KCk7CkBAIC0zNjYsMTUgKzM3MCwyMSBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJvdGVjdGVkOgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFRBU0tfSURF
TlRJVFlfVE9LRU4pCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMsIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOwotI2Vsc2UKICAgICBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7Ci0jZW5kaWYKKwog
ICAgIC8vIENhbGxlZCBvbmNlIGJ5IGFsbCB0aGUgcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IGV2
ZW50dWFsbHkgY2FsbCBPcGVuR0wuCiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJs
aWMgZW50cnkgcG9pbnRzIG9mIEV4dGVuc2lvbnNHTCB0aGF0IGV2ZW50dWFsbHkgY2FsbCBPcGVu
R0wuCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAK
KyAgICAvLyBJbml0aWFsaXplcyB0aGUgaW5zdGFuY2UuIFJldHVybnMgZmFsc2UgaWYgdGhlIGlu
c3RhbmNlIHNob3VsZCBub3QgYmUgdXNlZC4KKyAgICBib29sIGluaXRpYWxpemUoKTsKKyAgICAv
LyBDYWxsZWQgZmlyc3QgYnkgaW5pdGlhbGl6ZSgpLiBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlk
ZSB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYml0cyBvZiBFR0xDb250ZXh0
LgorICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgcGxhdGZvcm1zIGRvIG5vdCBzaGFyZSB0aGUgY29u
dGV4dCBjcmVhdGlvbi4gVGhleSBzaG91bGQuCisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtSW5p
dGlhbGl6ZUNvbnRleHQoKTsKKyAgICAvLyBDYWxsZWQgbGFzdCBieSBpbml0aWFsaXplKCkuIFN1
YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRvIGluc3RhbnRpYXRlIHBsYXRmb3JtIHNwZWNpZmlj
IHN0YXRlIHRoYXQgZGVwZW5kIG9uCisgICAgLy8gdGhlIHNoYXJlZCBzdGF0ZS4KKyAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisKICAgICAvLyBUYWtlIGludG8gYWNjb3Vu
dCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsCiAgICAg
Ly8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hp
Y2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2Fw
YWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKQEAgLTM5NSwxMyArNDA1LDExIEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHByZXBhcmVUZXh0dXJlSW1wbCgpOwogICAgIHZvaWQgcmVzb2x2ZU11bHRpc2Ft
cGxpbmdJZk5lY2Vzc2FyeShjb25zdCBJbnRSZWN0JiA9IEludFJlY3QoKSk7CiAgICAgdm9pZCBh
dHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChHQ0dMdWludCBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLQotICAgIGJvb2wgcmVzaGFw
ZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBh
bGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwotICAgIGJvb2wgYmluZERpc3Bs
YXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQq
IHBidWZmZXIpOwogICAgIHN0YXRpYyBib29sIG1ha2VDdXJyZW50KFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0R0xEaXNwbGF5LCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKTsKICNlbmRpZgorICAg
IHZpcnR1YWwgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSA9IDA7CisKICAgICAv
LyBSZXR1cm5zIGZhbHNlIGlmIGNvbnRleHQgc2hvdWxkIGJlIGxvc3QgZHVlIHRvIHRpbWVvdXQu
CiAgICAgYm9vbCB3YWl0QW5kVXBkYXRlT2xkZXN0RnJhbWUoKSBXQVJOX1VOVVNFRF9SRVRVUk47
CiAKQEAgLTQxMCw2ICs0MTgsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50KTsKIAorICAgIC8vIE9ubHkgZm9y
IG5vbi1XZWJHTCAyLjAgY29udGV4dHMuCisgICAgR0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4dHVy
ZUludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0ZW5z
aW9uczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CisgICAg
SGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CisgICAgYm9vbCBtX3dlYmdsQ29s
b3JCdWZmZXJGbG9hdFJHQiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3dlYmdsQ29sb3JCdWZmZXJG
bG9hdFJHQkEgeyBmYWxzZSB9OwogICAgIEdDR0x1aW50IG1fdGV4dHVyZSB7IDAgfTsKICAgICBH
Q0dMdWludCBtX2ZibyB7IDAgfTsKICAgICBHQ0dMdWludCBtX2RlcHRoU3RlbmNpbEJ1ZmZlciB7
IDAgfTsKQEAgLTQzNCw3ICs0NTAsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc2l6ZV90IG1fb2xkZXN0
RnJhbWVDb21wbGV0aW9uRmVuY2UgeyAwIH07CiAgICAgU2NvcGVkR0xGZW5jZSBtX2ZyYW1lQ29t
cGxldGlvbkZlbmNlc1ttYXhQZW5kaW5nRnJhbWVzXTsKICAgICBHcmFwaGljc0NvbnRleHRHTFN0
YXRlIG1fc3RhdGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnNHTEFOR0xFPiBtX2V4
dGVuc2lvbnM7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogTW92ZSB0aGVz
ZSB0byBHcmFwaGljc0NvbnRleHRHTENvY29hLgpAQCAtNDQ3LDcgKzQ2Miw2IEBAIHByb3RlY3Rl
ZDoKICAgICAvLyBXaGVuIHByZXNlcnZlRHJhd2luZ0J1ZmZlciA9PSB0cnVlLCB0aGlzIGlzIGJs
aXR0ZWQgdG8gZHVyaW5nIGRpc3BsYXkgcHJlcGFyZS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXJCYWNraW5nOwogICAgIHZvaWQqIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgeyBudWxscHRyIH07Ci0gICAgUHJvY2Vzc0lkZW50aXR5IG1fcmVzb3VyY2VPd25l
cjsKICNlbmRpZgogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBHQ0dMdWludCBt
X2NvbXBvc2l0b3JUZXh0dXJlIHsgMCB9OwpAQCAtNDg2LDcgKzUwMCw2IEBAIHByb3RlY3RlZDoK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyPiBtX3Rl
eG1hcExheWVyOwogI2VuZGlmCiAKLSAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7
CiAjaWYgVVNFKE5JQ09TSUEpCiAgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xBTkdMRUxh
eWVyOwogICAgIGZyaWVuZCBjbGFzcyBOaWNvc2lhOjpHQ0dMTGF5ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCBhMDhkYTBmNGYxMGU0YzNlNGE5YTcxZWU4ZjUzMjVmYTY2ZTA5MWZmLi43
YjNiNGEwMWYyNjk2YzBkOWIwNjEyODA2NDYzOGRmNjkyMmExYzdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQgIkNvbG9yU3BhY2VDRy5oIgogI2lt
cG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKLSNp
bXBvcnQgIkV4dGVuc2lvbnNHTC5oIgogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1w
b3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCBjNTZlNjk1MzVlNzA5N2ZkZDI1
ZDJmY2UzMDJlMTA2OGU3NmM2ZTNiLi5jMzFmNWVmYmUyZWE4MjBkYzcwZmQ1MGQ1N2EyODcxY2Mz
OTZmOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBAIC03OSwxNyArNzksMjMg
QEAgcHVibGljOgogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgogICAgIHZvaWQgc2V0Q29udGV4dFZpc2li
aWxpdHkoYm9vbCkgZmluYWw7CisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRl
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgdXBkYXRlQ29udGV4dE9uRGlzcGxheVJl
Y29uZmlndXJhdGlvbigpOwogI2VuZGlmCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhpY3NDb250ZXh0
R0xDb2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgUHJvY2Vzc0lk
ZW50aXR5JiYgcmVzb3VyY2VPd25lcik7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKICAg
ICAvLyBHcmFwaGljc0NvbnRleHRHTEFOR0xFIG92ZXJyaWRlcy4KKyAgICBib29sIHBsYXRmb3Jt
SW5pdGlhbGl6ZUNvbnRleHQoKSBmaW5hbDsKKyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgp
IGZpbmFsOwogICAgIHZvaWQgaW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQp
IGZpbmFsOworICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkgZmluYWw7Cisg
ICAgYm9vbCBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOworICAgIGJvb2wg
YmluZERpc3BsYXlCdWZmZXJCYWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tp
bmcsIHZvaWQqIHBidWZmZXIpOwogCisgICAgUHJvY2Vzc0lkZW50aXR5IG1fcmVzb3VyY2VPd25l
cjsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4
dEdMQ1ZDb2NvYT4gbV9jdjsKICNlbmRpZgpAQCAtMTAwLDYgKzEwNiw3IEBAIHByb3RlY3RlZDoK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUPiBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNzaW9uOwogI2VuZGlmCisKICAg
ICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggMGNkMGEyNGZkYjcyYzM3YmNkMjVjMDAwYzU0NjJj
NjFjMjA1Zjc1MS4uMzZlOGYwZmIwMjkzNzdiNGVmZmU0MDUzNTIzN2U1ODIyMmZiZjc3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0
ICJBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiQU5HTEVVdGlsaXRpZXNDb2NvYS5oIgogI2lt
cG9ydCAiQ1ZVdGlsaXRpZXMuaCIKLSNpbXBvcnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1w
b3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0x
OTcsMjkgKzE5NiwxNSBAQCBzdGF0aWMgYm9vbCBuZWVkc0VBR0xPbk1hYygpCiBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0xDb2NvYT4gR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIFByb2Nlc3NJZGVudGl0eSYmIHJl
c291cmNlT3duZXIpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGlj
c0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcyksIFdURk1vdmUocmVzb3VyY2VPd25l
cikpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKKyAgICBpZiAoIWNvbnRleHQtPmlu
aXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGNvbnRleHQ7
CiB9CiAKIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EoR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgY3JlYXRpb25BdHRyaWJ1dGVzLCBQcm9jZXNzSWRl
bnRpdHkmJiByZXNvdXJjZU93bmVyKQotICAgIDoKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgSEFW
RShUQVNLX0lERU5USVRZX1RPS0VOKQotICAgIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUoV1RGTW92
ZShjcmVhdGlvbkF0dHJpYnV0ZXMpLCByZXNvdXJjZU93bmVyKQotI2Vsc2UKLSAgICBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFKFdURk1vdmUoY3JlYXRpb25BdHRyaWJ1dGVzKSkKLSNlbmRpZgorICAg
IDogR3JhcGhpY3NDb250ZXh0R0xBTkdMRShXVEZNb3ZlKGNyZWF0aW9uQXR0cmlidXRlcykpCisg
ICAgLCBtX3Jlc291cmNlT3duZXIoV1RGTW92ZShyZXNvdXJjZU93bmVyKSkKIHsKLSAgICBpZiAo
IWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8g
aW5pdGlhbGl6ZXIgbGlzdCBvbmNlIG1fcmVzb3VyY2VPd25lciBtb3ZlcyB0byBHcmFwaGljc0Nv
bnRleHRHTENvY29hLgotICAgIG1fcmVzb3VyY2VPd25lciA9IFdURk1vdmUocmVzb3VyY2VPd25l
cik7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKLSAgICBpZiAoIWF0dHJpYnV0ZXMudXNlTWV0YWwgJiYgYXR0cmlidXRlcy5l
ZmZlY3RpdmVQb3dlclByZWZlcmVuY2UoKSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6SGlnaFBlcmZvcm1hbmNlKQotICAgICAgICBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVj
b25maWd1cmF0aW9uID0gdHJ1ZTsKLSNlbmRpZgogfQogCiBHcmFwaGljc0NvbnRleHRHTENvY29h
Ojp+R3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpID0gZGVmYXVsdDsKQEAgLTIzNiwzOCArMjIxLDM5
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgp
CiAKIC8vIEZJWE1FOiBCZWxvdyBpcyBmdW5jdGlvbmFsaXR5IHRoYXQgc2hvdWxkIGJlIG1vdmVk
IHRvIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EgdG8gc2ltcGxpZnkgdGhlIGJhc2UgY2xhc3MuCiAK
LSNpZiBQTEFURk9STShDT0NPQSkgJiYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQotR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cnMsIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikK
LSNlbHNlCiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycykKLSNlbmRpZgogICAgIDogR3JhcGhpY3ND
b250ZXh0R0woYXR0cnMpCiB7Ci0gICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLndlYkdMVmVyc2lv
biA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwotICAgIGlmIChhdHRy
cy51c2VNZXRhbCAmJiAhcGxhdGZvcm1TdXBwb3J0c01ldGFsKG1faXNGb3JXZWJHTDIpKSB7Ci0g
ICAgICAgIGF0dHJzLnVzZU1ldGFsID0gZmFsc2U7Ci0gICAgICAgIHNldENvbnRleHRBdHRyaWJ1
dGVzKGF0dHJzKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUlu
aXRpYWxpemVDb250ZXh0KCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJp
YnV0ZXMud2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJH
TDI7CisgICAgaWYgKGF0dHJpYnV0ZXMudXNlTWV0YWwgJiYgIXBsYXRmb3JtU3VwcG9ydHNNZXRh
bChtX2lzRm9yV2ViR0wyKSkgeworICAgICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gZmFsc2U7
CisgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KIAogI2lm
IEVOQUJMRShXRUJYUikKLSAgICBpZiAoYXR0cnMueHJDb21wYXRpYmxlKSB7CisgICAgaWYgKGF0
dHJpYnV0ZXMueHJDb21wYXRpYmxlKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJdCdzIGFsbW9zdCBj
ZXJ0YWluIHRoYXQgYW55IGNvbm5lY3RlZCBoZWFkc2V0IHdpbGwgcmVxdWlyZSB0aGUgaGlnaC1w
b3dlciBHUFUsCiAgICAgICAgIC8vIHdoaWNoIGlzIHRoZSBzYW1lIEdQVSB3ZSBuZWVkIHRoaXMg
Y29udGV4dCB0byB1c2UuIEhvd2V2ZXIsIHRoaXMgaXMgbm90IGd1YXJhbnRlZWQsIGFuZAogICAg
ICAgICAvLyB0aGVyZSBpcyBhbHNvIHRoZSBjaGFuY2UgdGhhdCB0aGVyZSBhcmUgbXVsdGlwbGUg
R1BVcy4gR2l2ZW4gdGhhdCB5b3UgY2FuIHJlcXVlc3QgdGhlCiAgICAgICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMIGJlZm9yZSBpbml0aWFsaXppbmcgdGhlIFdlYlhSIHNlc3Npb24sIHdlJ2xsIG5l
ZWQgc29tZSB3YXkgdG8KICAgICAgICAgLy8gbWlncmF0ZSB0aGUgY29udGV4dCB0byB0aGUgYXBw
cm9wcmlhdGUgR1BVIHdoZW4gdGhlIGNvZGUgaGVyZSBkb2VzIG5vdCB3b3JrLgogICAgICAgICBM
T0coV2ViR0wsICJXZWJYUiBjb21wYXRpYmxlIGNvbnRleHQgcmVxdWVzdGVkLiBUaGlzIHdpbGwg
YWxzbyB0cmlnZ2VyIGEgcmVxdWVzdCBmb3IgdGhlIGhpZ2gtcG93ZXIgR1BVLiIpOwotICAgICAg
ICBhdHRycy5mb3JjZVJlcXVlc3RGb3JIaWdoUGVyZm9ybWFuY2VHUFUgPSB0cnVlOwotICAgICAg
ICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CisgICAgICAgIGF0dHJpYnV0ZXMuZm9yY2VS
ZXF1ZXN0Rm9ySGlnaFBlcmZvcm1hbmNlR1BVID0gdHJ1ZTsKKyAgICAgICAgc2V0Q29udGV4dEF0
dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX2Rpc3BsYXlPYmog
PSBpbml0aWFsaXplRUdMRGlzcGxheShhdHRycyk7CisgICAgbV9kaXNwbGF5T2JqID0gaW5pdGlh
bGl6ZUVHTERpc3BsYXkoYXR0cmlidXRlcyk7CiAgICAgaWYgKCFtX2Rpc3BsYXlPYmopCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIGlmICghYXR0cnMudXNlTWV0YWwpIHsKKyAgICBpZiAoIWF0dHJpYnV0ZXMudXNlTWV0YWwp
IHsKICAgICAgICAgLy8gRm9yIE9wZW5HTCwgRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UgaXMg
dXNlZC4gVGhlIGNvbnRleHQgaXMgaW5pdGlhbGl6ZWQgd2l0aCB0aGUKICAgICAgICAgLy8gZGVm
YXVsdCwgbG93LXBvd2VyIGRldmljZS4gRm9yIGhpZ2gtcGVyZm9ybWFuY2UgY29udGV4dHMsIHdl
IHJlcXVlc3QgdGhlIGhpZ2gtcGVyZm9ybWFuY2UKICAgICAgICAgLy8gR1BVIGluIHNldENvbnRl
eHRWaXNpYmlsaXR5LiBXaGVuIHRoZSByZXF1ZXN0IGlzIGZ1bGxmaWxsZWQgYnkgdGhlIHN5c3Rl
bSwgd2UgZ2V0IHRoZQpAQCAtMjc1LDExICsyNjEsMTEgQEAgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cnMKICAgICAgICAgY29uc3QgY2hhciAqZGlzcGxheUV4dGVuc2lvbnMgPSBFR0xfUXVlcnlTdHJp
bmcobV9kaXNwbGF5T2JqLCBFR0xfRVhURU5TSU9OUyk7CiAgICAgICAgIGJvb2wgc3VwcG9ydHNQ
b3dlclByZWZlcmVuY2UgPSBzdHJzdHIoZGlzcGxheUV4dGVuc2lvbnMsICJFR0xfQU5HTEVfcG93
ZXJfcHJlZmVyZW5jZSIpOwogICAgICAgICBpZiAoIXN1cHBvcnRzUG93ZXJQcmVmZXJlbmNlKSB7
Ci0gICAgICAgICAgICBhdHRycy5mb3JjZVJlcXVlc3RGb3JIaWdoUGVyZm9ybWFuY2VHUFUgPSBm
YWxzZTsKLSAgICAgICAgICAgIGlmIChhdHRycy5wb3dlclByZWZlcmVuY2UgPT0gR3JhcGhpY3ND
b250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZSkgewotICAgICAgICAgICAg
ICAgIGF0dHJzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJl
bmNlOjpEZWZhdWx0OworICAgICAgICAgICAgYXR0cmlidXRlcy5mb3JjZVJlcXVlc3RGb3JIaWdo
UGVyZm9ybWFuY2VHUFUgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnBvd2Vy
UHJlZmVyZW5jZSA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlKSB7CisgICAgICAgICAgICAgICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBH
cmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdDsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKKyAgICAgICAgICAgIHNl
dENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlm
CkBAIC0yOTgsMTQgKzI4NCwxNCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0Nv
bnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogICAgIEVHTF9D
aG9vc2VDb25maWcobV9kaXNwbGF5T2JqLCBjb25maWdBdHRyaWJ1dGVzLCAmbV9jb25maWdPYmos
IDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpOwogICAgIGlmIChudW1iZXJDb25maWdzUmV0dXJu
ZWQgIT0gMSkgewogICAgICAgICBMT0coV2ViR0wsICJFR0xDb25maWcgSW5pdGlhbGl6YXRpb24g
ZmFpbGVkLiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgTE9HKFdlYkdMLCAiR290IEVHTENvbmZpZyIpOwogCiAgICAgRUdMX0JpbmRBUEkoRUdM
X09QRU5HTF9FU19BUEkpOwogICAgIGlmIChFR0xfR2V0RXJyb3IoKSAhPSBFR0xfU1VDQ0VTUykg
ewogICAgICAgICBMT0coV2ViR0wsICJVbmFibGUgdG8gYmluZCB0byBPUEVOR0xfRVNfQVBJIik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIFZl
Y3RvcjxFR0xpbnQ+IGVnbENvbnRleHRBdHRyaWJ1dGVzOwpAQCAtMzMzLDEzICszMTksMTIgQEAg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMKICAgICBlZ2xDb250ZXh0QXR0cmlidXRlcy5hcHBlbmQo
RUdMX0NPTlRFWFRfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOwogICAgIGVnbENv
bnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfRkFMU0UpOwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKKyNpZiBIQVZFKFRBU0tfSURFTlRJVFlfVE9L
RU4pCiAgICAgYXV0byBkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0cmluZyhtX2Rpc3Bs
YXlPYmosIEVHTF9FWFRFTlNJT05TKTsKICAgICBib29sIHN1cHBvcnRzT3duZXJzaGlwSWRlbnRp
dHkgPSBzdHJzdHIoZGlzcGxheUV4dGVuc2lvbnMsICJFR0xfQU5HTEVfbWV0YWxfY3JlYXRlX2Nv
bnRleHRfb3duZXJzaGlwX2lkZW50aXR5Iik7Ci0gICAgLy8gRklYTUU6IFVzZSBtX3Jlc291cmNl
T3duZXIgb25jZSBpdCBtb3ZlcyB0byBHcmFwaGljc0NvbnRleHRHTENvY29hLgotICAgIGlmIChh
dHRycy51c2VNZXRhbCAmJiByZXNvdXJjZU93bmVyICYmIHN1cHBvcnRzT3duZXJzaGlwSWRlbnRp
dHkpIHsKKyAgICBpZiAoYXR0cmlidXRlcy51c2VNZXRhbCAmJiBtX3Jlc291cmNlT3duZXIgJiYg
c3VwcG9ydHNPd25lcnNoaXBJZGVudGl0eSkgewogICAgICAgICBlZ2xDb250ZXh0QXR0cmlidXRl
cy5hcHBlbmQoRUdMX0NPTlRFWFRfTUVUQUxfT1dORVJTSElQX0lERU5USVRZX0FOR0xFKTsKLSAg
ICAgICAgZWdsQ29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKHJlc291cmNlT3duZXIudGFza0lkVG9r
ZW4oKSk7CisgICAgICAgIGVnbENvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChtX3Jlc291cmNlT3du
ZXIudGFza0lkVG9rZW4oKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM0OCwxMCArMzMzLDE0IEBA
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzCiAgICAgbV9jb250ZXh0T2JqID0gRUdMX0NyZWF0ZUNv
bnRleHQobV9kaXNwbGF5T2JqLCBtX2NvbmZpZ09iaiwgRUdMX05PX0NPTlRFWFQsIGVnbENvbnRl
eHRBdHRyaWJ1dGVzLmRhdGEoKSk7CiAgICAgaWYgKG1fY29udGV4dE9iaiA9PSBFR0xfTk9fQ09O
VEVYVCB8fCAhbWFrZUN1cnJlbnQobV9kaXNwbGF5T2JqLCBtX2NvbnRleHRPYmopKSB7CiAgICAg
ICAgIExPRyhXZWJHTCwgIkVHTENvbnRleHQgSW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgTE9HKFdlYkdM
LCAiR290IEVHTENvbnRleHQiKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIGF1dG8gYXR0cmli
dXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAg
ICAgIEdMX0VuYWJsZShHcmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURf
SU5ERVgpOwogCkBAIC0zNjMsMzggKzM1MiwzNyBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwog
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKCFuZWVk
c0VBR0xPbk1hYygpKSB7CiAgICAgICAgIC8vIEZvciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVz
LgotICAgICAgICBpZiAoIWF0dHJzLnVzZU1ldGFsKQorICAgICAgICBpZiAoIWF0dHJpYnV0ZXMu
dXNlTWV0YWwpCiAgICAgICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9BTkdM
RV90ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CiAgICAgICAgIC8vIEZvciBjcmVhdGluZyB0aGUgRUdM
IHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCiAgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5h
cHBlbmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7CiAgICAgfQogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjaWYgRU5BQkxFKFdF
QlhSKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgaWYgKGNvbnRleHRB
dHRyaWJ1dGVzKCkueHJDb21wYXRpYmxlKQorICAgIGlmIChhdHRyaWJ1dGVzLnhyQ29tcGF0aWJs
ZSkKICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfT0VTX0VHTF9pbWFnZSJf
cyk7CiAjZW5kaWYKICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgcmVxdWlyZWRFeHRl
bnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwotICAg
IEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICBmb3IgKGF1
dG8mIGV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykgewotICAgICAgICBpZiAoIWV4dGVu
c2lvbnMuc3VwcG9ydHMoZXh0ZW5zaW9uKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5z
aW9uKGV4dGVuc2lvbikpIHsKICAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWly
ZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0ZXJzKCkpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRlbnNpb24pOworICAgICAgICBlbnN1cmVFeHRlbnNp
b25FbmFibGVkKGV4dGVuc2lvbik7CiAgICAgfQotICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygp
LnVzZU1ldGFsKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMudXNlTWV0YWwpIHsKICAgICAgICAgLy8g
R3JhcGhpY3NDb250ZXh0R0xBTkdMRSB1c2VzIHN5bmMgb2JqZWN0cyB0byB0aHJvdHRsZSBkaXNw
bGF5IG9uIE1ldGFsIGltcGxlbWVudGF0aW9ucy4KICAgICAgICAgLy8gT3BlbkdMIHN5bmMgb2Jq
ZWN0cyBhcmUgbm90IHNpZ25hbGluZyB1cG9uIGNvbXBsZXRpb24gb24gQ2F0YWxpbmEtZXJhIGRy
aXZlcnMsIHNvCiAgICAgICAgIC8vIE9wZW5HTCBjYW5ub3QgdXNlIHRoaXMgbWV0aG9kIG9mIHRo
cm90dGxpbmcuIE9wZW5HTCBkcml2ZXJzIHR5cGljYWxseSBpbXBsZW1lbnQKICAgICAgICAgLy8g
c29tZSBzb3J0IG9mIGludGVybmFsIHRocm90dGxpbmcuCi0gICAgICAgIGlmIChleHRlbnNpb25z
LnN1cHBvcnRzKCJHTF9BUkJfc3luYyJfcykpIHsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5z
aW9uKCJHTF9BUkJfc3luYyJfcykpIHsKICAgICAgICAgICAgIG1fdXNlRmVuY2VTeW5jRm9yRGlz
cGxheVJhdGVMaW1pdCA9IHRydWU7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJs
ZWQoIkdMX0FSQl9zeW5jIl9zKTsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
IkdMX0FSQl9zeW5jIl9zKTsKICAgICAgICAgfQogICAgIH0KICAgICB2YWxpZGF0ZUF0dHJpYnV0
ZXMoKTsKLSAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUg
Y2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KKyAgICBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJp
YnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCiAg
ICAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVi
dWZmZXIuCiAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRh
cmdldCgpOwpAQCAtNDExLDE4ICszOTksMTggQEAgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMKICAg
ICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICBtX3N0YXRl
LmJvdW5kRHJhd0ZCTyA9IG1fc3RhdGUuYm91bmRSZWFkRkJPID0gbV9mYm87CiAKLSAgICBpZiAo
IWF0dHJzLmFudGlhbGlhcyAmJiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRycy5kZXB0aCkpCisgICAg
aWYgKCFhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJp
YnV0ZXMuZGVwdGgpKQogICAgICAgICBHTF9HZW5SZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcik7CiAKICAgICAvLyBJZiBuZWNlc3NhcnksIGNyZWF0ZSBhbm90aGVyIGZyYW1l
YnVmZmVyIGZvciB0aGUgbXVsdGlzYW1wbGUgcmVzdWx0cy4KLSAgICBpZiAoYXR0cnMuYW50aWFs
aWFzKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7CiAgICAgICAgIEdMX0dlbkZy
YW1lYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUZCTyk7CiAgICAgICAgIEdMX0JpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiAgICAgICAgIG1fc3RhdGUu
Ym91bmREcmF3RkJPID0gbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPSBtX211bHRpc2FtcGxlRkJPOwog
ICAgICAgICBHTF9HZW5SZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIp
OwotICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRycy5kZXB0aCkKKyAgICAgICAgaWYg
KGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKQogICAgICAgICAgICAgR0xf
R2VuUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0g
ICAgfSBlbHNlIGlmIChhdHRycy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKKyAgICB9IGVsc2Ug
aWYgKGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7CiAgICAgICAgIC8vIElmIG5l
Y2Vzc2FyeSwgY3JlYXRlIGFub3RoZXIgdGV4dHVyZSB0byBoYW5kbGUgcHJlc2VydmVEcmF3aW5n
QnVmZmVyOnRydWUgd2l0aG91dAogICAgICAgICAvLyBhbnRpYWxpYXNpbmcuCiAgICAgICAgIEdM
X0dlblRleHR1cmVzKDEsICZtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlclRleHR1cmUpOwpAQCAtNDM4
LDcgKzQyNiwxMSBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFO
R0xFKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycwogCiAgICAgR0xfQ2xlYXJDb2xv
cigwLCAwLCAwLCAwKTsKIAotICAgIExPRyhXZWJHTCwgIkNyZWF0ZWQgYSBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFICglcCkuIiwgdGhpcyk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghYXR0
cmlidXRlcy51c2VNZXRhbCAmJiBhdHRyaWJ1dGVzLmVmZmVjdGl2ZVBvd2VyUHJlZmVyZW5jZSgp
ID09IEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2UpCisg
ICAgICAgIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24gPSB0cnVlOworI2Vu
ZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6On5HcmFw
aGljc0NvbnRleHRHTEFOR0xFKCkKQEAgLTQ4NSwxMSArNDc3LDYgQEAgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoKQogICAgIExPRyhXZWJHTCwgIkRlc3Ry
b3llZCBhIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgKCVwKS4iLCB0aGlzKTsKIH0KIAotYm9vbCBH
cmFwaGljc0NvbnRleHRHTENvY29hOjppc1ZhbGlkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90
ZXh0dXJlOwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0Q3Vy
cmVudCgpCiB7CiAgICAgaWYgKCFtX2NvbnRleHRPYmopCkBAIC01NTAsNyArNTM3LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjp1cGRhdGVDb250ZXh0T25EaXNwbGF5UmVjb25maWd1
cmF0aW9uKCkKIH0KICNlbmRpZgogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlc2hh
cGVEaXNwbGF5QnVmZmVyQmFja2luZygpCitib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJl
c2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQgYmFj
a2J1ZmZlciBub3cgYmVmb3JlIGFsbG9jYXRpbmcgYSBuZXcgb25lIGluIG9yZGVyIHRvIHNsaWdo
dGx5IHJlZHVjZSBtZW1vcnkgcHJlc3N1cmUuCkBAIC01NjgsNyArNTU1LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogICAgIHJl
dHVybiBhbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogfQogCi1ib29sIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5n
KCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1
ZmZlckJhY2tpbmcoKQogewogICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KS5pc0VtcHR5KCkpOwogICAgIGF1dG8gYmFja2luZyA9IElPU3VyZmFjZTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
QEAgLTU5OCw3ICs1ODUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmFsbG9jYXRl
QW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICByZXR1cm4gYmluZERpc3BsYXlCdWZm
ZXJCYWNraW5nKFdURk1vdmUoYmFja2luZyksIHBidWZmZXIpOwogfQogCi1ib29sIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OmJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKQorYm9vbCBHcmFwaGljc0NvbnRleHRH
TENvY29hOjpiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcikKIHsKICAgICBHQ0dMZW51bSB0ZXh0dXJlVGFyZ2V0
ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICAgICBTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZv
ckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdldCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJn
ZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCKTsKQEAgLTY4OSw3ICs2NzYsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OmRldGFjaElPU3VyZmFjZUZyb21TaGFyZWRUZXh0dXJlKHZv
aWQqIGhhbmRsZSkKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBy
ZXBhcmVGb3JEaXNwbGF5KCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZv
ckRpc3BsYXkoKQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRl
eCA3ZDBjZTM2YjYwYTBkNjlhNTkyM2MyNDAwZDAzYmI3YmFkMzg2NDk4Li4wYmIxMDY1YjNhNjE2
NjliOTg1MDE4NTMwNDVhNzBiNmZhYTFiNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMTUxLDcgKzE1MSw3IEBAIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdy
YXBoaWNzQ29udGV4CiAgICAgaWYgKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgV2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KSk7
Ci0gICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFs
aXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7CiAg
ICAgcmV0dXJuIGNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDUxY2Jl
NmI3ZTEzYjgwYWY3MTJlM2VmZTc2YjYyNTE1ODM0OWZmNGEuLjczZTI0ODQ1Y2IzM2U1MGQ1NDU3
YTYyMDYxODQ0NDI2OTUxN2Q2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDEsNyArMTAxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheU9F
UyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogI2VuZGlmCiB9CiAKLWJvb2wgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCitib29sIEV4dGVu
c2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNp
bmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1
ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggZDlmMTVm
NDViZGZiNGUxYmJlOGQzOTM2MzViNjBhYWQxZDJkOTBhNy4uZTczMmMxY2Y5MWEzZDg0ZjY0MzJj
MGYyMmM4NjhmM2Q4MDQ0YzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
Ym9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29s
IHBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIGdldEV4dGVuc2lvbnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggN2Q1MDBhYmMwY2YxZWU1NTI2ODMxMTJh
ZmNmMjIyNGFlNjk1NzFiZi4uMjFlODI5ZmJkMTAxZGY2ZDQ2OTMxNmY5ZDI5Y2VkODZiNGFjOTYw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTEwOSw3ICsx
MDksNyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6c3VwcG9ydHMoY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc3VwcG9ydHNFeHRl
bnNpb24obmFtZSk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24obmFtZSk7
CiB9CiAKIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjplbnN1cmVFbmFibGVkKGNvbnN0
IFN0cmluZyYgbmFtZSkKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbjo6ZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIFNoQnVp
bHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlcyA9IGNvbXBpbGVyLmdldFJlc291cmNlcygpOwog
ICAgICAgICBpZiAoIUFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMpIHsKICAgICAgICAg
ICAgIEFOR0xFUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgPSAxOwotICAgICAgICAgICAgQU5H
TEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5z
aW9uc0dMOjpNQVhfRFJBV19CVUZGRVJTX0VYVCk7CisgICAgICAgICAgICBBTkdMRVJlc291cmNl
cy5NYXhEcmF3QnVmZmVycyA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihHcmFwaGljc0NvbnRleHRH
TDo6TUFYX0RSQVdfQlVGRkVSU19FWFQpOwogICAgICAgICAgICAgY29tcGlsZXIuc2V0UmVzb3Vy
Y2VzKEFOR0xFUmVzb3VyY2VzKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSAi
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaAppbmRleCAyOWEwYzRkOGY1YTkyNmM3MDk1MzU0MWMwYjI2MTNmZGE3NTJiNDI2Li4y
YzM3ZmFjOTY1YzAyMTZkYTA1YWM1ZmI4ZWFhZWI2ODNkNDRhN2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC0yNiw4ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCi0KKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIApAQCAtMzUsMTYgKzM0LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKLWNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
biA6IHB1YmxpYyBFeHRlbnNpb25zR0wgeworY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24oKTsKIAotICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2Rz
LgotICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
bnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbmFibGVk
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCkgb3ZlcnJpZGU7CisgICAgLy8gTWV0aG9kcyBmb3J3YXJkZWQgZnJvbSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC4KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CisgICAgdmly
dHVhbCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGludCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpOworICAgIHZpcnR1YWwgdm9pZCBk
cmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCiAgICAg
Ly8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmpl
Y3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC01MiwxOCArNTMsMTQgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdM
T2JqZWN0KSA9IDA7CiAKLSAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPikgb3ZlcnJpZGUgPSAwOwotCi0gICAgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKLQogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCiAgICAgLy8gRVhUIFJvYnVzdG5l
c3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVhZG5QaXhl
bHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRh
dGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQg
KnBhcmFtcyk7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpOwogCiAg
ICAgYm9vbCBpc05WSURJQSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOVklESUE7IH0KICAgICBib29s
IGlzQU1EKCkgY29uc3QgeyByZXR1cm4gbV9pc0FNRDsgfQpAQCAtNzgsNyArNzUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwogICAgIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbihHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGJvb2wgdXNlSW5k
ZXhlZEdldFN0cmluZyk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRFeHRlbnNpb25z
KCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25z
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCAxNTQ2MjM2ZjhiNmJkYjUy
MjNkMGVkZTM3YWI3NGYwZWQ2ZjEwYmNmLi45OTdlNzllZTVkNGMxN2UyMTIwYmIzZGY0ZTAyNTUw
MjYwYTRjMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYg
bmFtZSkKIAogICAgIC8vIEZvciBHTF9FWFRfcm9idXN0bmVzcywgY2hlY2sgdGhhdCB0aGUgY29u
dGV4dCBzdXBwb3J0cyByb2J1c3QgYWNjZXNzLgogICAgIGlmIChuYW1lID09ICJHTF9FWFRfcm9i
dXN0bmVzcyIpCi0gICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVnZXIoRXh0ZW5zaW9u
c0dMOjpDT05URVhUX1JPQlVTVF9BQ0NFU1MpID09IEdMX1RSVUU7CisgICAgICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0R0w6OkNPTlRFWFRfUk9CVVNUX0FD
Q0VTUykgPT0gR0xfVFJVRTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTc0LDcgKzE3NCw3
IEBAIGludCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
CiAgICAgaWYgKG1fY29udGV4dFJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQogICAgICAgICBy
ZXR1cm4gbV9jb250ZXh0UmVzZXRTdGF0dXM7CiAgICAgaWYgKG1fZ2xHZXRHcmFwaGljc1Jlc2V0
U3RhdHVzRVhUKSB7Ci0gICAgICAgIGludCByZWFzb25Gb3JSZXNldCA9IFVOS05PV05fQ09OVEVY
VF9SRVNFVF9BUkI7CisgICAgICAgIGludCByZWFzb25Gb3JSZXNldCA9IEdyYXBoaWNzQ29udGV4
dEdMOjpVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOwogICAgICAgICBpZiAobV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgICAgIHJlYXNvbkZvclJlc2V0ID0gbV9nbEdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoKTsKICAgICAgICAgaWYgKHJlYXNvbkZvclJlc2V0ICE9
IEdMX05PX0VSUk9SKQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2
CiAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9CiAK
LWJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK2Jvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBsYXRmb3JtU3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIikgewogICAgICAgICBhdXRvIG1ham9yVmVyc2lvbiA9IFtdKCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCA5YTU4MWEwMDBkZDM3MmZmMWVjZGQ5MWZm
OTlkZWM5OGFkOGUzODU4Li45YmI1MmY5YmFhYWNiNTcxNmM0ZDAyYjliNWJmNzkxYTc4Zjc1MGUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtNzEsNiArNzEsMTIgQEAgY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiAKIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTIDog
cHVibGljIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiB7CiBwdWJsaWM6CisgICAgLy8gR0xfSU1H
X211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQorICAgIHN0YXRpYyBjb25zdGV4cHIgR0NH
TGVudW0gUkVOREVSQlVGRkVSX1NBTVBMRVNfSU1HID0gMHg5MTMzOworICAgIHN0YXRpYyBjb25z
dGV4cHIgR0NHTGVudW0gRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRV9JTUcgPSAw
eDkxMzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBNQVhfU0FNUExFU19JTUcgPSAw
eDkxMzU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBURVhUVVJFX1NBTVBMRVNfSU1H
ID0gMHg5MTM2OworCiAgICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRp
YXRlZCBieSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCiAgICAgRXh0
ZW5zaW9uc0dMT3BlbkdMRVMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBib29sIHVzZUluZGV4
ZWRHZXRTdHJpbmcpOwogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5HTEVTKCk7CkBAIC0x
MDEsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0RXh0ZW5zaW9ucygpIG92ZXJy
aWRlOwogCiAgICAgR0NHTGVudW0gbV9jb250ZXh0UmVzZXRTdGF0dXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBmMzBiNWUxZTZlYTlkMDE1Nzc0ZjgwNjBiOTE1
M2Y0N2UzMDYyZWFiLi5iYmYwZTgxZWI5ODU1MjVmMzI0NzcxMjhlNDQzNzMzMDQ5YTljNTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTMxMiwxOCArMzEyLDIw
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25z
dAogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShHVEspCi1FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKKyNpZiBQTEFURk9S
TShHVEspICYmIFVTRShPUEVOR0xfRVMpCitFeHRlbnNpb25zR0xPcGVuR0xFUyYgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewotICAgIGlmICghbV9leHRlbnNpb25z
KSB7Ci0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBh
dmFpbGFibGUgb24gR0xFUzIuCisgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBhdmFpbGFibGUg
b24gR0xFUzIuCisgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7Ci0jZWxzZQot
ICAgICAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3JlIHByb2ZpbGUsIGFu
ZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCisgICAgcmV0dXJuICptX2V4dGVuc2lv
bnM7Cit9CisjZWxpZiBQTEFURk9STShHVEspCitFeHRlbnNpb25zR0xPcGVuR0wmIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICAvLyBGcm9tIE9wZW5HTCAz
LjIgb24gd2UgdXNlIHRoZSBDb3JlIHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdl
dFN0cmluZ2kuCisgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQo
KS0+dmVyc2lvbigpID49IDMyMCk7Ci0jZW5kaWYKLSAgICB9CiAgICAgcmV0dXJuICptX2V4dGVu
c2lvbnM7CiB9CiAjZW5kaWYKQEAgLTM1MSwxMCArMzUzLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhT
dGVuY2kKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAg
ICBpZiAoYXR0cnMuc3RlbmNpbCkgewotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhw
YWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBleHRlbnNpb25zLmVu
c3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgaWYgKHN1
cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKKyAgICAgICAg
ICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsK
ICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAg
ICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlCkBAIC0zNjIsMTEgKzM2Mywx
MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChj
b25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRl
cyhhdHRycyk7CiAgICAgfQogICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgIW1faXNGb3JXZWJH
TDIpIHsKLSAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9tdWx0aXNhbXBsZSIpKSB7CisgICAgICAgIGlmICghc3VwcG9ydHNFeHRlbnNpb24oIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpIHsKICAgICAgICAgICAgIGF0dHJzLmFu
dGlhbGlhcyA9IGZhbHNlOwogICAgICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMp
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgi
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAgICAgICAgIGVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CiAgICAg
fQogfQogCkBAIC0zMDY5LDYgKzMwNzAsMzYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSwgR0NHTFNwYW4KICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04p
OwogfQogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cyhuYW1lKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmVu
c3VyZUVuYWJsZWQobmFtZSk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omlz
RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQobmFtZSk7Cit9CisKK0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK3sKKyAgICByZXR1cm4gZ2V0RXh0
ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZmZlcnMpCit7CisgICAgcmV0dXJuIGdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChi
dWZmZXJzKTsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCit7CisgICAgcmV0
dXJuIGdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
KTsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNl
U2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQog
ewogICAgIEFTU0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0g
MiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDkxZmVmZWY1MTJmNjUyOGJjM2E3Nzgz
MWViZTliNjQ1MWQ5NzQ1NmMuLjU5Nzk2OGUwZmZlOTI3ODMwODA2MTMyOTNiZmY4MGFjODA4MjBh
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MywxMCArNDMsOSBA
QCBjbGFzcyBHQ0dMTGF5ZXI7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3Mg
RXh0ZW5zaW9uc0dMOwogI2lmIFVTRShPUEVOR0xfRVMpCiBjbGFzcyBFeHRlbnNpb25zR0xPcGVu
R0xFUzsKLSNlbGlmIFVTRShPUEVOR0wpCisjZWxzZQogY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdM
OwogI2VuZGlmCiBjbGFzcyBIb3N0V2luZG93OwpAQCAtMzcwLDYgKzM2OSwxMyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKICAgICB2b2lk
IG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMs
IEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOwogCisgICAgYm9vbCBzdXBwb3J0c0V4dGVu
c2lvbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
IGZpbmFsOworICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QpIGZpbmFsOworCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAgICAgdm9p
ZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpOwpAQCAtNDA1
LDExICs0MTEsMTMgQEAgcHVibGljOgogCiAgICAgLy8gU3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4g
UmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdoIG5vdAogICAgIC8vIGFsbCBtZXRob2Rz
IGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCi0gICAgLy8g
Y3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bwor
ICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0xPcGVuR0x7RVN9
OjpzdXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgLy8gVXNlIGNvdmFy
aWFudCByZXR1cm4gdHlwZSBmb3IgT1BFTkdML09QRU5HTF9FUwotICAgIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbiYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwotCisjaWYgVVNFKE9QRU5HTF9FUykK
KyAgICBFeHRlbnNpb25zR0xPcGVuR0xFUyYgZ2V0RXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICBF
eHRlbnNpb25zR0xPcGVuR0wmIGdldEV4dGVuc2lvbnMoKTsKKyNlbmRpZgogICAgIHZvaWQgc2lt
dWxhdGVFdmVudEZvclRlc3RpbmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKQEAgLTQyMCw3ICs0Mjgs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgR0NHTHVpbnQgbV90ZXh0dXJlIHsgMCB9OwogCiAgICAgLy8g
Q2FsbGVkIG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxs
eSBjYWxsIE9wZW5HTC4KLSAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRy
eSBwb2ludHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KKyAg
ICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5z
aW9uc0dMT3BlbkdML0V4dGVuc2lvbkdMT3BlbkdMRVMgdGhhdCBldmVudHVhbGx5IGNhbGwgT3Bl
bkdMLgogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkgV0FSTl9VTlVTRURfUkVUVVJOOwog
CiAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBj
cmVhdGlvbiBhdHRyaWJ1dGVzLApAQCAtNTEyLDEzICs1MjAsMTIgQEAgcHJvdGVjdGVkOgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRlck5hbWVIYXNoPiBuYW1lSGFzaE1hcEZvclNoYWRlcnM7
CiAKKyAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOwogI2lmIFVTRShP
UEVOR0xfRVMpCiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVTOwotICAgIGZy
aWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb247CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEV4dGVuc2lvbnNHTE9wZW5HTEVTPiBtX2V4dGVuc2lvbnM7Ci0jZWxpZiBVU0UoT1BFTkdMKQor
I2Vsc2UKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMOwotICAgIGZyaWVuZCBj
bGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVu
c2lvbnNHTE9wZW5HTD4gbV9leHRlbnNpb25zOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggNjhiNmNkM2Y1MjRiZjZhMDllYWY3ZmQ2
ODQ4ZmJhYzFkYTczM2FiMy4uYzM1YjJmMGYxNWQ5Y2QwOWI5YjI4YmUwYmY0NDc3ODg3NDMwNTcz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTM0
NSwxMCArMzQ1LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51CiAgICAgICAgIHR5cGUgPSBH
TF9IQUxGX0ZMT0FUX0FSQjsKICAgICB9CiAKLSAgICBBU1NFUlQoZm9ybWF0ICE9IEV4dGVuc2lv
bnNHTDo6U1JHQjhfQUxQSEE4X0VYVCk7Ci0gICAgaWYgKGZvcm1hdCA9PSBFeHRlbnNpb25zR0w6
OlNSR0JfQUxQSEFfRVhUKQorICAgIEFTU0VSVChmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0R0w6
OlNSR0I4X0FMUEhBOF9FWFQpOworICAgIGlmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6
OlNSR0JfQUxQSEFfRVhUKQogICAgICAgICBvcGVuR0xGb3JtYXQgPSBHTF9SR0JBOwotICAgIGVs
c2UgaWYgKGZvcm1hdCA9PSBFeHRlbnNpb25zR0w6OlNSR0JfRVhUKQorICAgIGVsc2UgaWYgKGZv
cm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6U1JHQl9FWFQpCiAgICAgICAgIG9wZW5HTEZvcm1h
dCA9IEdMX1JHQjsKICNlbmRpZgogCkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogfQogCiAjaWYgIVBM
QVRGT1JNKEdUSykKLUV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uc0dMT3BlbkdMJiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAg
ICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlz
LCBpc0dMRVMyQ29tcGxpYW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwCmluZGV4IDM4NjQxOThmNzRhNTkyYmE0MjljNmQwYThiYzYxZGU4MWEzOGY2MDkuLjgz
YjliODZjNTMyNzJmYzU0MTU3YzkwZjQ2NjVhZjgxMTk4ZGE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQg
YW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZm
ZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIGdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9v
bCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8
fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIik7CiAKICAgICAvLyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBt
dXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpAQCAtMTMxLDEwICsxMzEsMTAgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6
OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CiAjZW5kaWYKIAotICAgIEV4dGVuc2lv
bnNHTE9wZW5HTEVTJiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uc0dMT3BlbkdM
RVMmPihnZXRFeHRlbnNpb25zKCkpOworICAgIEV4dGVuc2lvbnNHTE9wZW5HTEVTJiBleHRlbnNp
b25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChleHRlbnNpb25zLmlzSW1hZ2luYXRpb24o
KSAmJiBhdHRyaWJ1dGVzLmFudGlhbGlhcykgewogICAgICAgICBHTGludCBtYXhTYW1wbGVDb3Vu
dDsKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KEV4dGVuc2lvbnNHTDo6TUFYX1NBTVBMRVNfSU1H
LCAmbWF4U2FtcGxlQ291bnQpOyAKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpNQVhfU0FNUExFU19JTUcsICZtYXhTYW1wbGVDb3VudCk7IAogICAgICAgICBH
TGludCBzYW1wbGVDb3VudCA9IHN0ZDo6bWluKDgsIG1heFNhbXBsZUNvdW50KTsKIAogICAgICAg
ICBleHRlbnNpb25zLmZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDAs
IHNhbXBsZUNvdW50KTsKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29u
dGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhZ2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0
dXJlIikpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5z
aW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKICAgICAgICAg
YXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0
ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIH0KIAogI2lmICFQ
TEFURk9STShHVEspCi1FeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKK0V4dGVuc2lvbnNHTE9wZW5HTEVTJiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMp
CiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+
KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IGU1
NGFlM2Y3OTlmODUyZTFlZTdhNzA2MDdjOTA3YmZjMmM0NWFjMTIuLjkxZThlYTgwMTRiN2E5NTg5
MDBiNGY3MWM2MDQzNzE5NjZjMTVkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0yNCw3
ICsyNCw2IEBACiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAKLSNpbmNsdWRlICJFeHRl
bnNpb25zR0wuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiTGVu
Z3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNzUwYTg0YWY2MzgyYzU0
MTMwY2YzNmU4NmQ5YmM4Yzc2MDRjZmJjYi4uNzUyOGMwZTk3ZjdlNTZiODU3OWFhYjVhZWNkNjdi
OTJiMDVlYjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTQ3LDE1ICs0Nyw4IEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNl
bmRpZgogCi0jaWYgVVNFKEFOR0xFKQotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCi0j
ZWxzZQorI2lmICFVU0UoQU5HTEUpCiAjaW5jbHVkZSA8QU5HTEUvU2hhZGVyTGFuZy5oPgotI2lm
IFVTRShPUEVOR0xfRVMpCi0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCIKLSNlbHNl
Ci0jaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMLmgiCi0jZW5kaWYKICNlbmRpZgogCiAjaWYg
VVNFKE5JQ09TSUEpCkBAIC0xMDgsNyArMTAxLDEyIEBAIHByaXZhdGU6CiAKIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdU
Rk1vdmUoYXR0cmlidXRlcykpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisjaWYg
VVNFKEFOR0xFKQorICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiBjb250ZXh0OwogfQogCiBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9
IGRlZmF1bHQ7CkBAIC0xNDgsNyArMTQ2LDggQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXgKIAog
ICAgIC8vIENyZWF0ZSB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2JqZWN0IGZpcnN0IGlu
IG9yZGVyIHRvIGVzdGFibGlzdCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlzIHRocmVhZC4KICAg
ICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwotCisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNpZiBVU0UoTElCRVBPWFkpICYmIFVT
RShPUEVOR0xfRVMpICYmIEVOQUJMRShXRUJHTDIpCiAgICAgLy8gQmFpbCBpZiBHTEVTMyB3YXMg
cmVxdWVzdGVkIGJ1dCBjYW5ub3QgYmUgcHJvdmlkZWQuCiAgICAgaWYgKGF0dHJpYnV0ZXMud2Vi
R0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDIgJiYgIWVw
b3h5X2lzX2Rlc2t0b3BfZ2woKSAmJiBlcG94eV9nbF92ZXJzaW9uKCkgPCAzMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAppbmRleCAyZGIyZThkN2Q5Y2Q3
YjljYWJiNGM5Y2E0MTcyNDNmMGU3YTBiNTIyLi45MWZhNTViY2Y4NGQ3MTk3MGJjNTBmODQzNzdl
NTVhNDBkN2YwYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTFRlCiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IGNyZWF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CiAgICAgfkdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcigpOwotCisgICAgCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQmFzZSBvdmVycmlkZXMuCiAgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogI2lmIEVOQUJMRShWSURFTykKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogI2VuZGlm
CiAjaWYgVVNFKEFOR0xFKQogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmlu
YWw7CisgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSBmaW5hbDsKKyAgICB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAK
aW5kZXggNjZlMzJhYTAzMzNmN2I4YTZiNWY0ODc0MmE2ODU3OWRlZWY3MWNlNS4uYmZjZjcyMWZm
NWMxZTRmYjc1ZTZiZDg4ZWQwZjc1M2Y5ZDgzZWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ckFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCkBAIC0zMSw3ICszMSw2IEBA
CiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5o
IgotI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKIApAQCAtNjcs
NiArNjYsOCBAQCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xF
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaQogI2VuZGlmCiAgICAgYm9vbCBzdWNj
ZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBz
dWNjZXNzKTsKKyAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZSgpOworICAgIEFTU0VSVF9VTlVTRUQo
c3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBhdHRy
aWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1
cmluZyB2YWxpZGF0aW9uLgpAQCAtMjYwLDExICsyNjEsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXI6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCiB7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZUZvckRpc3BsYXkoKQordm9pZCBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKIH0KIAot
Ym9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmco
KQorYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZygpCiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAg
ICAgY29uc3QgYXV0byBzaXplID0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKaW5kZXggZDI2MWE0MDI0Y2Y3ZWY3MTg3YTEwZjQ3N2ViNTMzZWYyNDZj
ODhjYS4uYTM3ZjRhNThjNmU4MGQzNjY0NjIzZmM3NmQxMDBhOTM2OTMxNTYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFRleHR1
cmVHTC5oIgogI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVQb29sLmgiCi0jaW5jbHVkZSAiRXh0ZW5z
aW9uc0dMLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCmluZGV4IGVjYjRiNTc2N2NjOWE4ZTI2ODY0NmRjZTM5ZDI2NjJjMzQyYzMzYjYuLjg5
NzJjMjM5NjM5ZGMzYzUwNWRkOGJhZmY0YTMwNzRjNmY5OTI0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyCiAg
ICAgaWYgKG1fY29udGV4dCkgewogICAgICAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7
CiAgICAgICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgICAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRl
bnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpSRVFVRVNUQUJMRV9F
WFRFTlNJT05TX0FOR0xFKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9
IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRVFVRVNUQUJMRV9FWFRF
TlNJT05TX0FOR0xFKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVh
bVdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpLCBleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4
dGVuc2lvbnMpKTsKICAgICB9IGVsc2UKICAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwgSVBDOjpTZW1hcGhvcmUgeyB9
LCAiIiwgIiIpKTsKQEAgLTE4OCwxMCArMTg4LDEwIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmdldEVycm9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBs
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjplbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0
cmluZyYmIGV4dGVuc2lvbikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQp
OwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoZXh0ZW5zaW9u
KTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKTsKIH0K
IAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7
CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBtX2NvbnRleHQtPm1h
cmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBlYjIwZDE2YzM3
N2Y1ZjNlMDA3ZjIxYmEyNTYyNGRkMTllMzZiYjE3Li5kOGI5ODIwNzEwYjcyZDliNDQwOGI5YmM5
MDU3NWJhZTJhNjBkOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgIlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlN0cmVhbU1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC05NCw5ICs5Myw5IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBmaW5hbDsK
IAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgcmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CiAgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFi
bGVkKFN0cmluZyYmKTsKLSAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOworICAg
IHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgdm9pZCByZXNoYXBlKGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5k
UmlnaHQmJik+JiYpID0gMDsKICNlbGlmIFVTRShHUkFQSElDU19MQVlFUl9XQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBjOGFiMjk3NzI5MzBiZmQ0MDhh
MDNjZWIzN2EwYzI5ODk4ZTMwMmIyLi45NzY4MGE4N2FiM2FhNGEwNzNmMjE5MzNjNWZlY2I1YjIy
NGRmZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0z
Niw3ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNv
dW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hy
b25vdXMKICNlbmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0
ZW5zaW9uKQotICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKKyAgICB2b2lkIE1h
cmtDb250ZXh0Q2hhbmdlZCgpCiAgICAgdm9pZCBTeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBl
cnJvcikKICAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVlKSBTeW5j
aHJvbm91cwogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aAppbmRleCBkMWMzMjkwNTE3ZDI5NmM1MWUzNTZlOGI0ZTU3MGMwNjdiYjc3NThkLi45M2JkNjc3
MTY4YmI0NGM5ODEzNGRjNzg5OGM5MDNlMGZiZDAzZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMTMzNywyMCArMTMzNywy
MCBAQAogICAgIHsKICAgICAgICAgR0NHTGludCByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICAgICAg
YXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7Cisg
ICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsKICAgICB9CiAgICAg
dm9pZCBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUodWludDMyX3QgYXJnMCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07CiAgICAgICAgIGFzc2VydElzQ3VycmVu
dChtX3N0cmVhbVRocmVhZCk7Ci0gICAgICAgIHJldHVyblZhbHVlID0gbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApOworICAgICAg
ICByZXR1cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KGFyZzApOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJldHVyblZhbHVlKSk7
CiAgICAgfQogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
MzJfdD4mJiBidWZzKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhy
ZWFkKTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNFWFQo
bWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEo
KSksIGJ1ZnMuc2l6ZSgpKSk7CisgICAgICAgIG1fY29udGV4dC0+ZHJhd0J1ZmZlcnNFWFQobWFr
ZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGVudW0qPihidWZzLmRhdGEoKSks
IGJ1ZnMuc2l6ZSgpKSk7CiAgICAgfQogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdih1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGludGVybmFsZm9ybWF0LCB1aW50MzJfdCBwbmFtZSwgdWlu
dDY0X3QgcGFyYW1zU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCA3YWUxZWU3NmRjNGIwN2M0MDNmNjBi
OGFkMTNkYWQ5Yjg3YmRlZDBhLi4zOGM5NGIzYThiNzdmMDIxOWYxNmNkMzIwOTllY2NkZmM3OTMw
ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQy
LDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRyaWJ1dGVzKQor
ICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcykKICAgICAsIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICwgbV9zdHJlYW1Db25uZWN0aW9u
KGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVmYXVsdFN0cmVhbVNpemUpCiB7
CkBAIC01OSwzMSArNTksNzMgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQogICAgIGRpc2Nvbm5lY3RHcHVQcm9jZXNzSWZOZWVk
ZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKLSAgICBtX2N1cnJl
bnRIZWlnaHQgPSBoZWlnaHQ7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpOwotICAgIGlm
ICghc2VuZFJlc3VsdCkKLSAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVF
eHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQorYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsKLSAgICBpZiAo
aXNDb250ZXh0TG9zdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoZXh0ZW5zaW9uKSk7Ci0gICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICBtYXJrQ29u
dGV4dExvc3QoKTsKKyNpZiBFTkFCTEUoV0VCR0wyKQorICAgIHJldHVybiBjb250ZXh0QXR0cmli
dXRlcygpLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2Vi
R0wyOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dENoYW5nZWQoKQoreworICAgIC8vIEZJ
WE1FOiBUaGUgY2FsbGVyIHNob3VsZCB0cmFjayB0aGlzIHN0YXRlLgorICAgIGlmIChtX2xheWVy
Q29tcG9zaXRlZCkgeworICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFu
Z2VkKCk7CisgICAgICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpNYXJrQ29udGV4dENoYW5nZWQoKSk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgIH0KIH0KIAotdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQorYm9v
bCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpCit7CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4g
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpIHx8IG1fcmVxdWVzdGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKG5hbWUpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgaWYgKG1fcmVxdWVzdGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKG5hbWUpICYmICFtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpKSB7
CisgICAgICAgIG1fZW5hYmxlZEV4dGVuc2lvbnMuYWRkKG5hbWUpOworICAgICAgICBpZiAoaXND
b250ZXh0TG9zdCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChuYW1lKSk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IG1hcmtDb250ZXh0TG9zdCgpOworICAgIH0KK30KKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmluaXRpYWxpemUoY29uc3Qg
U3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25zLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0
ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGF2YWlsYWJsZUV4dGVuc2lv
bnMuc3BsaXQoJyAnKSkKKyAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNp
b24pOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcmVxdWVzdGFibGVFeHRlbnNpb25zLnNw
bGl0KCcgJykpCisgICAgICAgIG1fcmVxdWVzdGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24p
OworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkpOworICAgIG1fY3VycmVudFdp
ZHRoID0gd2lkdGg7CisgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBl
KHdpZHRoLCBoZWlnaHQpKTsKICAgICBpZiAoIXNlbmRSZXN1bHQpCiAgICAgICAgIG1hcmtDb250
ZXh0TG9zdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRl
eCAyOWYwMTk4NzE5NTU5OTg3OTJlZTc3OTVkOWFhNjBjMmYzOTczOTcxLi41NzNmN2NiNGMwYzk1
ZjU0NWVmNmUwNjU0NDg0NmYxNzQ4YzMzYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTAsNyAr
NTAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHByaXZhdGUg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAotICAgICwgcHVibGljIFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIH5SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KCk7CkBAIC01OCwxMSArNTgsMTQgQEAgcHVibGljOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgLy8gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgorICAgIC8vIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KSBmaW5hbDsKLSAgICB1c2luZyBXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6aXNFbmFibGVkOwotICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJv
b2wpIGZpbmFsOworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0V4dGVu
c2lvbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBz
eW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CkBAIC0zMjEsOSArMzI0LDYg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHko
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKLSAgICAvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSBvdmVycmlkZXMuCi0gICAgdm9pZCB3YWl0VW50aWxJ
bml0aWFsaXplZCgpIGZpbmFsOwotCiAgICAgYm9vbCBpc0NvbnRleHRMb3N0KCkgY29uc3QgeyBy
ZXR1cm4gIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247IH0KICAgICB2b2lkIG1hcmtDb250ZXh0TG9z
dCgpOwogCkBAIC0zNTAsMTEgKzM1MCwxOCBAQCBwcml2YXRlOgogICAgIC8vIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwogCisgICAgdm9pZCBpbml0
aWFsaXplKGNvbnN0IFN0cmluZyYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsK
ICAgICB2b2lkIGRpc2Nvbm5lY3RHcHVQcm9jZXNzSWZOZWVkZWQoKTsKICAgICB2b2lkIGFiYW5k
b25HcHVQcm9jZXNzKCk7CiAKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbjsKICAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgLy8g
R3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgorICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVF
eHRlbnNpb25zOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7CiAg
ICAgR0NHTGVudW0gbV9lcnJvcldoZW5Db250ZXh0SXNMb3N0ID0gTk9fRVJST1I7CiAgICAgSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uIG1fc3RyZWFtQ29ubmVjdGlvbjsKIH07CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGI3ZTQyMjgzNjM1
Yjc3NjI5NThhY2YxZGIxOGIwMGQxMzNhNDg1OS4uNGJkMTk2ZjFmODdiYzNjYjcyNWZlYzEyY2Zm
MWM0ZDI4ZmJkZDM4NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTE0ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgRXh0ZW5zaW9uc0dMIGlzIG5vdCB1c2VmdWwg
Y2xhc3MsIGl0IHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEph
Y2tzb24uCisKKyAgICAgICAgVXBkYXRlIG1hbnVhbGx5IGltcGxlbWVudGVkIGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
OgorCiAyMDIyLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCB0byBxdWVyeSBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lv
bnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBj
YjRlM2I4OWY3NWZmZTZiMTgxLi5jNjVkODc2YTRhZjIxMWNiZjczY2I3Mjk4NjQzMTA4MWI2MGY4
OGY2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC00MSw3ICs0MSw2IEBAIGltcG9y
dCBjb2xsZWN0aW9ucwogZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIERpY3QsIEl0ZXJhYmxlLCBD
YWxsYWJsZSwgVHVwbGUsIFNldCwgT3B0aW9uYWwsIEdlbmVyYXRvciwgSXRlcmF0b3IsIENvdW50
ZXIKIAogcm9vdF9kaXIgPSAocGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5wYXJlbnQgLyAiLi4iIC8g
Ii4uIikucmVzb2x2ZSgpCi1leHRlbnNpb25zX2lucHV0X2ZuID0gcm9vdF9kaXIgLyAiU291cmNl
IiAvICJXZWJDb3JlIiAvICJwbGF0Zm9ybSIgLyAiZ3JhcGhpY3MiIC8gIkV4dGVuc2lvbnNHTC5o
IgogCiBmdW5jdGlvbnNfaW5wdXRfZm5zID0gWwogICAgIHJvb3RfZGlyIC8gIlNvdXJjZSIgLyAi
V2ViS2l0IiAvICJXZWJQcm9jZXNzIiAvICJHUFUiIC8gImdyYXBoaWNzIiAvICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmgiCkBAIC05OCw3ICs5Nyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBQcmVw
YXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKLSAgICB2b2lkIE5vdGlmeU1hcmtD
b250ZXh0Q2hhbmdlZCgpCisgICAgdm9pZCBNYXJrQ29udGV4dENoYW5nZWQoKQogICAgIHZvaWQg
U3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCiAgICAgdm9pZCBHZXRFcnJvcigpIC0+
ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBp
bWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKQEAgLTQyMCwxNCArNDE5LDEyIEBAIGNsYXNz
IGNwcF9mdW5jKG9iamVjdCk6CiAgICAgbmFtZTogc3RyCiAgICAgYXJnczogY3BwX2FyZ19saXN0
CiAgICAgcmV0dXJuX3R5cGU6IGNwcF90eXBlCi0gICAgaXNfZXh0ZW5zaW9uOiBib29sCiAgICAg
b3ZlcmxvYWRfc3VmZml4OiBzdHIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIs
IHJldHVybl90eXBlOiBjcHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0LCBpc19leHRlbnNpb246
IGJvb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIHJldHVybl90eXBlOiBj
cHBfdHlwZSwgYXJnczogY3BwX2FyZ19saXN0KToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQog
ICAgICAgICBzZWxmLnJldHVybl90eXBlID0gcmV0dXJuX3R5cGUKICAgICAgICAgc2VsZi5hcmdz
ID0gYXJncwotICAgICAgICBzZWxmLmlzX2V4dGVuc2lvbiA9IGlzX2V4dGVuc2lvbgogICAgICAg
ICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9ICIiCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAg
LTcxMSw3ICs3MDgsNiBAQCBjbGFzcyBjb250ZXh0X3Byb3h5X2NwcF93ZWJraXRfaXBjX2dlbmVy
YXRvcihvYmplY3QpOgogY2xhc3Mgd2Via2l0X2lwY19jcHBfaW1wbChvYmplY3QpOgogICAgIG5h
bWU6IHN0cgogICAgIGFyZ3M6IGNwcF9hcmdfbGlzdAotICAgIGlzX2V4dGVuc2lvbjogYm9vbAog
ICAgIHByZV9jYWxsX3N0bXRzOiBMaXN0W3N0cl0KICAgICBjYWxsX3N0bXRzOiBMaXN0W3N0cl0K
ICAgICBwb3N0X2NhbGxfc3RtdHM6IExpc3Rbc3RyXQpAQCAtNzIzLDcgKzcxOSw2IEBAIGNsYXNz
IHdlYmtpdF9pcGNfY3BwX2ltcGwob2JqZWN0KToKICAgICAgICAgc2VsZi5uYW1lID0gY3BwX2Z1
bmMubmFtZQogICAgICAgICBzZWxmLm92ZXJsb2FkX3N1ZmZpeCA9IGNwcF9mdW5jLm92ZXJsb2Fk
X3N1ZmZpeAogICAgICAgICBzZWxmLmFyZ3MgPSBjcHBfYXJnX2xpc3QoW10pCi0gICAgICAgIHNl
bGYuaXNfZXh0ZW5zaW9uID0gY3BwX2Z1bmMuaXNfZXh0ZW5zaW9uCiAgICAgICAgIHNlbGYucHJl
X2NhbGxfc3RtdHMgPSBbXQogICAgICAgICBzZWxmLmNhbGxfc3RtdHMgPSBbXQogICAgICAgICBz
ZWxmLnBvc3RfY2FsbF9zdG10cyA9IFtdCkBAIC03MzgsMTIgKzczMywxMSBAQCBjbGFzcyB3ZWJr
aXRfaXBjX2NwcF9pbXBsKG9iamVjdCk6CiAKICAgICBkZWYgcHJvY2Vzc19jYWxsKHNlbGYpOgog
ICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWyAiYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhy
ZWFkKTsiIF0KLSAgICAgICAgZXh0ID0gImdldEV4dGVuc2lvbnMoKS4iIGlmIHNlbGYuaXNfZXh0
ZW5zaW9uIGVsc2UgIiIKIAogICAgICAgICBpbl9leHBycyA9ICIsICIuam9pbihzdHIoZSkgZm9y
IGUgaW4gc2VsZi5pbl9leHBycykKICAgICAgICAgaXNfYXN5bmMgPSBsZW4oc2VsZi5vdXRfZXhw
cnMpID09IDAKIAotICAgICAgICBjYWxsX2V4cHIgPSBmIm1fY29udGV4dC0+e2V4dH17c2VsZi5u
YW1lfSh7aW5fZXhwcnN9KSIKKyAgICAgICAgY2FsbF9leHByID0gZiJtX2NvbnRleHQtPntzZWxm
Lm5hbWV9KHtpbl9leHByc30pIgogICAgICAgICBpZiBub3Qgc2VsZi5yZXR1cm5fdmFsdWVfZXhw
cjoKICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbZiJ7Y2FsbF9leHByfTsiXQogICAg
ICAgICBlbHNlOgpAQCAtODc5LDggKzg3Myw4IEBAIGRlZiBjcmVhdGVfY3BwX2FyZ19saXN0KGFy
Z3Nfc3BlY3M6IEl0ZXJhYmxlW3N0cl0pOgogICAgIHJldHVybiBjcHBfYXJnX2xpc3QoW2NyZWF0
ZV9jcHBfYXJnKGFyZ19zcGVjPWUsIGFyZ19pbmRleD1pKSBmb3IgaSwgZSBpbiBlbnVtZXJhdGUo
YXJnc19zcGVjcyldKQogCiAKLWRlZiBjcmVhdGVfY3BwX2Z1bmMobmFtZTogc3RyLCByZXR1cm5f
c3BlYzogc3RyLCBhcmdzX3NwZWNzOiBMaXN0W3N0cl0sIGlzX2V4dGVuc2lvbjogYm9vbCk6Ci0g
ICAgcmV0dXJuIGNwcF9mdW5jKG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJl
dHVybl9zcGVjKSwgYXJncz1jcmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpLCBpc19leHRl
bnNpb249aXNfZXh0ZW5zaW9uKQorZGVmIGNyZWF0ZV9jcHBfZnVuYyhuYW1lOiBzdHIsIHJldHVy
bl9zcGVjOiBzdHIsIGFyZ3Nfc3BlY3M6IExpc3Rbc3RyXSk6CisgICAgcmV0dXJuIGNwcF9mdW5j
KG5hbWU9bmFtZSwgcmV0dXJuX3R5cGU9Z2V0X2NwcF90eXBlKHJldHVybl9zcGVjKSwgYXJncz1j
cmVhdGVfY3BwX2FyZ19saXN0KGFyZ3Nfc3BlY3MpKQogCiAKIGRlZiByZWFkX2xpbmVzX3VudGls
KGxpbmVzIDogSXRlcmFibGVbc3RyXSwgbWF0Y2ggOiBzdHIpIC0+IEdlbmVyYXRvcltzdHIsIE5v
bmUsIE5vbmVdOgpAQCAtODk2LDIwICs4OTAsNiBAQCBkZWYgbWFpbigpOgogCiAgICAgIyBDb25z
dHJ1Y3QgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHJlbW90ZSBmcm9tIHdlYiBwcm9jZXNzIHRv
IEdQVSBwcm9jZXNzLgogCi0gICAgIyBGSVhNRTogVW50aWwgZXh0ZW5zaW9ucyBoZWFkZXIgaXMg
cmVtb3ZlZCwgd2UgbmVlZCB0byBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbgotICAgICMg
d2l0aCB0aGUgZGlzdGluY3Rpb24gb2Ygd2hldGhlciBhIGZ1bmN0aW9uIGlzIG9yIGlzIG5vdCBh
biBleHRlbnNpb24gZnVuY3Rpb24uCi0gICAgZXh0ZW5zaW9uX3NpZ25hdHVyZXMgOiBTZXRbc3Ry
XSA9IHNldCgpCi0gICAgd2l0aCBvcGVuKGV4dGVuc2lvbnNfaW5wdXRfZm4pIGFzIGY6Ci0gICAg
ICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICBtID0gcmUubWF0Y2go
ciIuKnZpcnR1YWwgKFxTKylccysoXHcrKVwoKC4qKVwpID0gMDsiLCBsaW5lKQotICAgICAgICAg
ICAgaWYgbToKLSAgICAgICAgICAgICAgICBmdW5jID0gY3JlYXRlX2NwcF9mdW5jKAotICAgICAg
ICAgICAgICAgICAgICBuYW1lPW1bMl0sCi0gICAgICAgICAgICAgICAgICAgIHJldHVybl9zcGVj
PW1bMV0sCi0gICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3BlY3M9Y3BwX3NwbGl0X2FyZ3Nfc3Bl
Y3MobVszXSksCi0gICAgICAgICAgICAgICAgICAgIGlzX2V4dGVuc2lvbj1UcnVlLAotICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBleHRlbnNpb25fc2lnbmF0dXJlcy51cGRhdGUo
W3N0cihmdW5jKV0pCiAgICAgZnVuY3MgPSBbXQogICAgIHVuaW1wbGVtZW50ZWQgPSBbXQogICAg
IGZvciBmbiBpbiBmdW5jdGlvbnNfaW5wdXRfZm5zOgpAQCAtOTI2LDkgKzkwNiw3IEBAIGRlZiBt
YWluKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bmNfbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybl9zcGVjPW1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmdzX3NwZWNzPWNwcF9zcGxpdF9hcmdzX3NwZWNzKG1bM10pLAotICAgICAgICAgICAgICAg
ICAgICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICAgICAgICAgIGZ1bmMuaXNfZXh0ZW5zaW9uID0gc3RyKGZ1bmMpIGluIGV4dGVuc2lv
bl9zaWduYXR1cmVzCiAgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMuaXNfaW1wbGVtZW50ZWQo
KToKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZChmdW5jKQogICAgICAgICAg
ICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
CmluZGV4IDRhMzQwYWQ5YzNlZGE3MDFiZmFkMTQzMjIxYjI2MzA2Y2Q3MDFkNGUuLjMyY2NlM2Y4
ZWUwMTJlOTcxZGNjYzFiZjc1NmNmMzYxY2RkY2EzZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgewogICAgICAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
V1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICBpZiAoIWNvbnRleHQtPmluaXRpYWxpemUo
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gY29udGV4dDsK
ICAgICB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51
bGxwdHI7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>