<?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>136462</bug_id>
          
          <creation_ts>2014-09-02 13:47:11 -0700</creation_ts>
          <short_desc>Web Inspector: remove ProfilerAgent and legacy profiler files in the frontend</short_desc>
          <delta_ts>2014-09-02 20:17:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>136380</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1032730</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-02 13:47:11 -0700</bug_when>
    <thetext>They are not used anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032731</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-09-02 13:47:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/18204711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032786</commentid>
    <comment_count>2</comment_count>
      <attachid>237530</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-02 16:34:40 -0700</bug_when>
    <thetext>Created attachment 237530
Proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032792</commentid>
    <comment_count>3</comment_count>
      <attachid>237530</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-02 16:51:31 -0700</bug_when>
    <thetext>Comment on attachment 237530
Proposed fix

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

&gt; Source/WebCore/inspector/protocol/Timeline.json:50
&gt; +                { &quot;name&quot;: &quot;idleTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true }

Didn&apos;t you remove this in another patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032795</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-02 17:04:30 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 237530 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237530&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/protocol/Timeline.json:50
&gt; &gt; +                { &quot;name&quot;: &quot;idleTime&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true }
&gt; 
&gt; Didn&apos;t you remove this in another patch?

Yes, going to land this one first though once EWS is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032833</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-02 20:17:58 -0700</bug_when>
    <thetext>Committed r173198: &lt;http://trac.webkit.org/changeset/173198&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237530</attachid>
            <date>2014-09-02 16:34:40 -0700</date>
            <delta_ts>2014-09-02 16:51:30 -0700</delta_ts>
            <desc>Proposed fix</desc>
            <filename>bug-136462-20140902163350.patch</filename>
            <type>text/plain</type>
            <size>186524</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MzUxODllNGNhZDEyMmU2YTQ5NTQwNjE0MmU4MjkxNmYzYjQ5ZjFjLi5hYTRmMjMyMjk3MGNjMTgz
ZTEwODY2MTU3NWI2OWQ4ZGY4MTViYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNC0wOS0wMiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIFByb2ZpbGVyQWdlbnQgYW5k
IGxlZ2FjeSBwcm9maWxlciBmaWxlcyBpbiB0aGUgZnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjQ2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0J3Mgbm90IHVzZWQgYnkgdGhlIGZyb250
ZW5kIGFueW1vcmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL0pTQ29uc29sZUNs
aWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTQ29uc29sZUNsaWVudDo6SlNDb25zb2xl
Q2xpZW50KTogU3R1YiBvdXQgY29uc29sZS5wcm9maWxlL3Byb2ZpbGVFbmQKKyAgICAgICAgbWV0
aG9kcyBzaW5jZSB0aGV5IGRpZG4ndCB3b3JrIGZvciBKU0NvbnRleHRzIGFueXdheS4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6SlNDb25zb2xlQ2xpZW50Ojpwcm9maWxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SlNDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SlNDb25zb2xlQ2xpZW50Lmg6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFn
ZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dFByb2ZpbGVyQWdlbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3Byb3RvY29sL1Byb2ZpbGVyLmpzb246IFJlbW92ZWQuCisKIDIwMTQtMDktMDIgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIG93biBwcm9w
ZXJ0eSBHZXRCeVZhbHMgd2l0aCByb3BlIHN0cmluZyBzdWJzY3JpcHRzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDlkZWEzZWI2YWYzNGNiN2FlOGY0N2ZlYTBjM2M1ZWY5ZDNmOWVmMWYuLjU4YjU0ZDFiNTJiMDhh
ZWRhZDhhZTkzMTdjMjFkYjg0N2NkOGM3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAor
MjAxNC0wOS0wMiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIFByb2ZpbGVyQWdlbnQgYW5kIGxlZ2FjeSBwcm9m
aWxlciBmaWxlcyBpbiB0aGUgZnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjQ2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEl0J3Mgbm90IHVzZWQgYnkgdGhlIGZyb250ZW5kIGFueW1vcmUu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2VkLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
Q29yZS5vcmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRM
b2FkSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpyZXNldCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3RydW1lbnRpbmdBZ2VudHM6Omluc3BlY3RvclByb2ZpbGVyQWdlbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6c2V0SW5zcGVjdG9yUHJvZmls
ZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VQcm9maWxlckFnZW50
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVByb2ZpbGVyQWdlbnQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDog
TW92ZWQgdGhlc2UgYnVpbGRlcnMgdG8gdGhlaXIgb25seSBjYWxsc2l0ZS4KKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkUHJv
ZmlsZUluc3BlY3Rvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmFwcGVuZFByb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJQcm9maWxlckFn
ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViUHJvZmlsZXJBZ2VudC5o
OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJQcm9maWxl
ckFnZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUHJvZmlsZXJB
Z2VudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5q
c29uOgorCiAyMDE0LTA5LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlIHJlZmVyZW5jZXMgaW4gcHVibGljIEV2ZW50U2VuZGVyIGZ1bmN0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggZDNhMmY5NDc2YWViZDgwZjU1NTNhMTNm
Zjk4MTY3MWIxMjY5MjNhYi4uODFlNTIzODc4NTQ0ODY4MGFlZmIxMzdlM2U2YTg1ODU0NGE3NWY0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTQtMDktMDIg
IEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHJlbW92ZSBQcm9maWxlckFnZW50IGFuZCBsZWdhY3kgcHJvZmlsZXIgZmlsZXMg
aW4gdGhlIGZyb250ZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzY0NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbGVnYWN5IHByb2ZpbGVyIG1hbmFnZXIgZGlkbid0IGRvIGFueXRoaW5nLCBh
bmQgaXRzIHZpZXdzIGFuZCBtb2RlbHMKKyAgICAgICAgaGF2ZSBiZWVuIHN1cGVyc2VkZWQgYnkg
bmV3IHZpZXdzIGFuZCBtb2RlbHMgYmFzZWQgb24gdGhlIFRpbWVsaW5lIGNsYXNzZXMuCisKKyAg
ICAgICAgKiAuZXNsaW50cmM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5v
cGVuVVJMKTogUmVtb3ZlIHByb2ZpbGUgVVJMIGhhbmRsaW5nIGNvZGUuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9MZWdhY3lQcm9maWxlTWFuYWdlci5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Byb3RvY29sL0NvbnNvbGVPYnNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlT2JzZXJ2ZXIucHJvdG90eXBlLm1lc3NhZ2VBZGRlZCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAgKEluc3Bl
Y3RvckZyb250ZW5kQVBJLmlzUHJvZmlsaW5nSmF2YVNjcmlwdCk6IERlbGV0ZWQuCisgICAgICAg
IChJbnNwZWN0b3JGcm9udGVuZEFQSS5zdGFydFByb2ZpbGluZ0phdmFTY3JpcHQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuc3RvcFByb2ZpbGluZ0phdmFTY3JpcHQp
OiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGVnYWN5UHJvZmls
ZXJPYnNlcnZlci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xl
Z2FjeUJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlT2JqZWN0LmpzOiBSZW1v
dmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5SmF2YVNjcmlwdFByb2Zp
bGVUeXBlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5
SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5qczogUmVtb3ZlZC4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUuanM6IFJl
bW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lQcm9maWxlT2JqZWN0
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5UHJvZmls
ZVR5cGUuanM6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lQ
cm9maWxlVmlldy5jc3M6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9M
ZWdhY3lQcm9maWxlVmlldy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0xlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzOiBSZW1vdmVkLgorCiAyMDE0
LTA4LTI5ICBTYWFtIEJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDcmVhdGUgYSBVSSBmb3IgZGlzcGxheWluZyBKYXZhU2NyaXB0IHR5cGUg
aW5mb3JtYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkNzM0MWUx
NzBjZDc2YzE4YjE2ZjAyNzY0ZGZlZjgzMjE4ZWFjNDQ2Li5jN2Q2OGUzNWE5NjcwZDA3YmViZWZk
NzhhN2U0NmM5ZDcyNmM3ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0zMDAsMTEgKzMwMCw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmNwcAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAogICAg
IGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwCiAgICAgaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCi0gICAgaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKIAogICAgIGludGVycHJldGVy
L0Fic3RyYWN0UEMuY3BwCkBAIC05NTYsNyArOTU0LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lO
U1BFQ1RPUl9ET01BSU5TCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90
b2NvbC9EZWJ1Z2dlci5qc29uCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9w
cm90b2NvbC9HZW5lcmljVHlwZXMuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvcHJvdG9jb2wvSW5zcGVjdG9yRG9tYWluLmpzb24KLSAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1Byb2ZpbGVyLmpzb24KICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgogKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDVhNWRhYzM2MjI0OTA2ZGExMTgy
OGYxMTY4ZmVmOTU3ZGEwYTZhMjIuLmE4ZDdkZjdkNGVlZjNlOThhN2VkNDJiNjBhYjkwMGMwZjFh
ODRkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0x
MTcsNyArMTE3LDYgQEAgSU5TUEVDVE9SX0RPTUFJTlMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvaW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENv
cmUpL2luc3BlY3Rvci9wcm90b2NvbC9HZW5lcmljVHlwZXMuanNvbiBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0luc3BlY3RvckRvbWFpbi5qc29uIFwKLSAgICAk
KEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvUHJvZmlsZXIuanNvbiBcCiAgICAg
JChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbiBcCiAjCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IGJhN2VlNWU1NzEyYTA0
MDNiNWUxY2M3M2IxOTQ4ZDJkZGVjYjkyMDAuLjI1OWVmYjRhYWVlM2MzNTM0ZTQ1MDAwNjY2YjBl
Mzk3NzUzMDJjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAt
NTc0LDcgKzU3NCw2IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcYWdlbnRzXEluc3BlY3RvckFn
ZW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNc
SW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcYWdlbnRzXEluc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXGFnZW50c1xJ
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxpbnRlcnByZXRlclxDYWxsRnJhbWUuY3BwIiAvPgpAQCAtMTI3OCw3ICsxMjc3LDYgQEAg77u/
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yQWdlbnQuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yQ29uc29sZUFnZW50
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcYWdlbnRzXEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxhZ2VudHNcSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXGFnZW50c1xJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhY2hlZENhbGwuaCIgLz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRl
eCAyOTRmNTFkMmMxZTYzYzM1ODk0ZWRjNjRlYmRhYWQ4ZjA1MzZiMzU3Li5mMjU4OTY4NjEzZDYw
NWMzMjMzMjU3ZWEyMWNlYzU3YTBhMDk1MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0zNDIsOSArMzQyLDYgQEAg77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAiPgogICAgICAg
PEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yUnVu
dGltZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtMjE5Miw5ICsyMTg5LDYgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxh
Z2VudHNcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9y
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcYWdlbnRzXEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCI+Ci0gICAgICA8RmlsdGVy
Pmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXGFnZW50c1xJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCI+CiAgICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5NGZkYjBlNmNhNTQ4OWNjMTM2MTEyODkxMGY1ZTc2Yjlj
NDFlYzc3Li41ZGE4MTVkOTUyYzEyZTE1MjRiOTNkYTRlZWU1MWYyODFjZGIwNjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODMzLDEwICs4MzMsNiBAQAogCQkxNEY5NzQ0NzEz
OEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVh
cFJvb3RWaXNpdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyOEQ0QTcx
NzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQ0Y3Mzc3MTcxQ0E2RkIwMEM5QkIx
RSAvKiBXZWFrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQ0Y3Mzc2MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCAqLzsgfTsKLQkJMUNBQTlB
MUUxOEY0OTk3RjAwMEEzNjlEIC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBQTlBMUMxOEY0OTk3RjAw
MEEzNjlEIC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwICovOyB9OwotCQkxQ0FBOUExRjE4
RjQ5OTdGMDAwQTM2OUQgLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBQTlBMUQxOEY0OTk3RjAwMEEzNjlE
IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQkxQ0FBOUEyMjE4RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9i
YWxPYmplY3RQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQUE5QTIwMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVj
dFByb2ZpbGVyQWdlbnQuY3BwICovOyB9OwotCQkxQ0FBOUEyMzE4RjRBMjIwMDAwQTM2OUQgLyog
SlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9iYWxP
YmplY3RQcm9maWxlckFnZW50LmggKi87IH07CiAJCTI2MDBCNUE2MTUyQkFBQTcwMDkxRUU1RiAv
KiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3Bw
ICovOyB9OwogCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBCNUE1MTUy
QkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovOyB9OwogCQkyQTA1QUJENTE5NjFE
RjI0MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMDVBQkQzMTk2MURGMjQwMDM0MTc1
MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovOyB9OwpAQCAtMjcxOSwxMCArMjcx
NSw2IEBACiAJCTFDOTA1MTQ1MEJBOUU4QTcwMDgxRTlEMCAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDQUE4QjRBMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBQThCNEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3Jp
cHRDb3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRDb3Jl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQUE5QTFDMThGNDk5N0YwMDBBMzY5
RCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQ0FBOUExRDE4RjQ5OTdGMDAwQTM2OUQgLyogSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JQcm9m
aWxlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQUE5QTIwMThGNEEy
MjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBQTlBMjExOEY0QTIyMDAwMEEzNjlE
IC8qIEpTR2xvYmFsT2JqZWN0UHJvZmlsZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFF
RTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU3RyaW5nSm9pbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBMDVBQkQz
MTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMjAsMTYgKzUzMTIsMTIgQEAKIAkJ
CQlBNUZEMDA4MDE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmggKi8s
CiAJCQkJQTU3RDIzRTMxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwICovLAogCQkJCUE1N0QyM0U0MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmggKi8sCi0JCQkJMUNBQTlBMUMxOEY0OTk3RjAwMEEzNjlEIC8qIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwICovLAotCQkJCTFDQUE5QTFEMThGNDk5N0YwMDBBMzY5RCAvKiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmggKi8sCiAJCQkJQTUwRTRCNUQxODgwOURENTAwNjhBNDZEIC8q
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi8sCiAJCQkJQTUwRTRCNUUxODgwOURENTAwNjhB
NDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovLAogCQkJCUE1RkQwMDgzMTg5QjFCN0Uw
MDYzMzIzMSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAgKi8sCiAJCQkJQTVGRDAw
ODQxODlCMUI3RTAwNjMzMjMxIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmggKi8sCiAJ
CQkJQTU3RDIzRTcxODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dC5jcHAgKi8sCiAJCQkJQTU3RDIzRTgxODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudC5oICovLAotCQkJCTFDQUE5QTIwMThGNEEyMjAwMDBBMzY5RCAvKiBKU0ds
b2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuY3BwICovLAotCQkJCTFDQUE5QTIxMThGNEEyMjAwMDBB
MzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuaCAqLywKIAkJCQlBNTBFNEI1RjE4
ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwICovLAogCQkJ
CUE1MEU0QjYwMTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5o
ICovLAogCQkJKTsKQEAgLTYyMDksNyArNjE5Nyw2IEBACiAJCQkJQTc2MTQwRDIxODI5ODJDQjAw
NzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDE3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZFMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMUNBQTlBMjMxOEY0QTIyMDAwMEEzNjlEIC8qIEpTR2xvYmFsT2JqZWN0UHJvZmlsZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTcxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkU5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRl
cnMgKi8sCkBAIC02MjM3LDcgKzYyMjQsNiBAQAogCQkJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4
QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzU3NkQzMThF
MUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTFDQUE5QTFGMThGNDk5N0YwMDBBMzY5RCAvKiBJbnNwZWN0b3JQcm9maWxl
ckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRTE3QjZCNUFCMDBBN0FFM0YgLyog
SlNEYXRhVmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc4ODAxNDExNDcxQUQ5
MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQTdGNjg4MTYw
NDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBA
IC03Mzk4LDcgKzczODQsNiBAQAogCQkJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDMzE4NjJDNDc4MDA4
NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNF
RkFBQjE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMUNBQTlBMjIxOEY0QTIyMDAwMEEzNjlEIC8qIEpTR2xvYmFsT2JqZWN0UHJvZmlsZXJB
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyog
RlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMw
MDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTc2MjIsNyArNzYwNyw2IEBACiAJCQkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8qIFBy
b2ZpbGVyQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5MTI5MTY3NzFDMzMw
MDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGNzI5QUYxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMUNBQTlBMUUxOEY0OTk3RjAwMEEzNjlEIC8qIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjAxNjZBRDM1QzAwMEY1
QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0
YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTQ29uc29sZUNsaWVudC5jcHAKaW5kZXggMDE5ZGJhMGYzNDVmNDhkMmU1MDc4
NWUzMTkzOTIyMmY0Mjc5MGZhYS4uOTdlZjc3ZWM2YjcwNDY5YzRlOTk0YTZhMzQzYTc5OWZiMzdh
MjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0NvbnNv
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNDb25z
b2xlQ2xpZW50LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
ICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JQ
cm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgpA
QCAtNjYsMTAgKzY1LDkgQEAgdm9pZCBKU0NvbnNvbGVDbGllbnQ6OmluaXRpYWxpemVMb2dUb1N5
c3RlbUNvbnNvbGUoKQogI2VuZGlmCiB9CiAKLUpTQ29uc29sZUNsaWVudDo6SlNDb25zb2xlQ2xp
ZW50KEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50LCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50KiBwcm9maWxlckFnZW50KQorSlNDb25zb2xlQ2xpZW50OjpKU0NvbnNvbGVDbGllbnQo
SW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQpCiAgICAgOiBDb25zb2xlQ2xpZW50
KCkKICAgICAsIG1fY29uc29sZUFnZW50KGNvbnNvbGVBZ2VudCkKLSAgICAsIG1fcHJvZmlsZXJB
Z2VudChwcm9maWxlckFnZW50KQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFs
aXplTG9nZ2luZzsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplTG9nZ2luZywgW117CkBA
IC05NCwyOSArOTIsMTQgQEAgdm9pZCBKU0NvbnNvbGVDbGllbnQ6OmNvdW50KEV4ZWNTdGF0ZSog
ZXhlYywgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW4KICAgICBtX2NvbnNvbGVB
Z2VudC0+Y291bnQoZXhlYywgYXJndW1lbnRzKTsKIH0KIAotdm9pZCBKU0NvbnNvbGVDbGllbnQ6
OnByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lk
IEpTQ29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgaWYgKCFtX3Byb2ZpbGVyQWdlbnQtPmVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgU3RyaW5nIHJlc29sdmVkVGl0bGUgPSBtX3Byb2ZpbGVyQWdlbnQtPnN0YXJ0UHJv
ZmlsaW5nKHRpdGxlKTsKLQotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhj
cmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKTsKLSAgICBtX2NvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNz
YWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpEZWJ1ZywgcmVzb2x2ZWRUaXRsZSwgY2Fs
bFN0YWNrKTsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCB8Y29uc29sZS5wcm9maWxlfCBmb3IgSlND
b250ZXh0cy4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzNjQ2Nj4KIH0KIAotdm9pZCBKU0NvbnNv
bGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCit2b2lkIEpTQ29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgaWYgKCFtX3Byb2ZpbGVyQWdlbnQtPmVuYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPEpTQzo6UHJvZmlsZT4gcHJvZmlsZSA9IG1f
cHJvZmlsZXJBZ2VudC0+c3RvcFByb2ZpbGluZyh0aXRsZSk7Ci0gICAgaWYgKCFwcm9maWxlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2so
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSk7Ci0gICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKHByb2ZpbGUtPnRpdGxlKCksICcjJywgU3RyaW5nOjpudW1iZXIo
cHJvZmlsZS0+dWlkKCkpKTsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2Fn
ZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgY2FsbFN0YWNrKTsKKyAgICAvLyBGSVhNRTogc3VwcG9y
dCB8Y29uc29sZS5wcm9maWxlfCBmb3IgSlNDb250ZXh0cy4gPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzEzNjQ2Nj4KIH0KIAogdm9pZCBKU0NvbnNvbGVDbGllbnQ6OnRpbWUoRXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTQ29uc29sZUNsaWVudC5oCmluZGV4IDc0MTMyYzYxMzdlNmZjMmVmYWY3MWU4ZTlhN2QwNzRl
MzY4YTBkZDkuLmQ1ODg3YmJiZWY3OGU3MGYwMDIzYTFhOTRhYjg4Mzk5ZGI5MTgzODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNDb25zb2xlQ2xpZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0NvbnNvbGVDbGllbnQuaApA
QCAtMzEsMTIgKzMxLDExIEBACiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVj
dG9yQ29uc29sZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKIAogY2xhc3Mg
SlNDb25zb2xlQ2xpZW50IGZpbmFsIDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSlNDb25zb2xl
Q2xpZW50KEluc3BlY3RvckNvbnNvbGVBZ2VudCosIEluc3BlY3RvclByb2ZpbGVyQWdlbnQqKTsK
KyAgICBleHBsaWNpdCBKU0NvbnNvbGVDbGllbnQoSW5zcGVjdG9yQ29uc29sZUFnZW50Kik7CiAg
ICAgdmlydHVhbCB+SlNDb25zb2xlQ2xpZW50KCkgeyB9CiAKICAgICBzdGF0aWMgYm9vbCBsb2dU
b1N5c3RlbUNvbnNvbGUoKTsKQEAgLTU3LDcgKzU2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
dGVybmFsQWRkTWVzc2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBKU0M6OkV4ZWNTdGF0
ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CiAKICAgICBJbnNwZWN0b3JDb25zb2xl
QWdlbnQqIG1fY29uc29sZUFnZW50OwotICAgIEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIG1fcHJv
ZmlsZXJBZ2VudDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCA0YjgzMDFhZDJhNmQ4MWJiZDQ4N2YxZGM0ZDg5OTY4NTQzZDA4Zjg2Li4zYzI5
OTdlOTE1MWM4OTQ3Y2E4ZjBlMmQ0OGE3MTBjZjQ5MTJiZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oIgotI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0UHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCkBAIC02MSwxMyArNjAsMTEgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoK
ICAgICBhdXRvIHJ1bnRpbWVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RS
dW50aW1lQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2dsb2JhbE9iamVj
dCk7CiAgICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSk7CiAgICAgYXV0
byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2dsb2JhbE9iamVjdCwgY29u
c29sZUFnZW50LmdldCgpKTsKLSAgICBhdXRvIHByb2ZpbGVyQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpTR2xvYmFsT2JqZWN0UHJvZmlsZXJBZ2VudD4obV9nbG9iYWxPYmplY3QpOwogCiAgICAg
bV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0KCk7Ci0gICAgbV9jb25zb2xlQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0NvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50LCBwcm9m
aWxlckFnZW50LmdldCgpKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTQ29uc29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwogCiAgICAgcnVudGltZUFnZW50LT5z
ZXRTY3JpcHREZWJ1Z1NlcnZlcigmZGVidWdnZXJBZ2VudC0+c2NyaXB0RGVidWdTZXJ2ZXIoKSk7
Ci0gICAgcHJvZmlsZXJBZ2VudC0+c2V0U2NyaXB0RGVidWdTZXJ2ZXIoJmRlYnVnZ2VyQWdlbnQt
PnNjcmlwdERlYnVnU2VydmVyKCkpOwogCiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUo
cnVudGltZUFnZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTkzYzM0NDQwZjc4YTZkNzM1MmQ0OGU0MWRiMTU0OTFi
OTI3MjE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVyLmgi
Ci0jaW5jbHVkZSAiUHJvZmlsZS5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCi0j
aW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIEluc3Bl
Y3RvciB7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBVc2VySW5pdGlhdGVkUHJvZmlsZU5h
bWUgPSAib3JnLndlYmtpdC5wcm9maWxlcy51c2VyLWluaXRpYXRlZCI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgQ1BVUHJvZmlsZVR5cGUgPSAiQ1BVIjsKLQotSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJQcm9maWxlciIpKQotICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihudWxs
cHRyKQotICAgICwgbV9lbmFibGVkKGZhbHNlKQotICAgICwgbV9wcm9maWxlSGVhZGVyc1JlcXVl
c3RlZChmYWxzZSkKLSAgICAsIG1fcmVjb3JkaW5nUHJvZmlsZUNvdW50KDApCi0gICAgLCBtX25l
eHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcigxKQotewotfQotCi1JbnNwZWN0b3JQcm9maWxl
ckFnZW50Ojp+SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpCi17Ci19Ci0KLXZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvclByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQcm9maWxlckJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwotfQotCi12b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQotewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7Ci0KLSAgICBy
ZXNldCgpOwotCi0gICAgZGlzYWJsZShyZWFzb24gPT0gSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkID8gU2tpcFJlY29tcGlsZSA6IFJlY29tcGlsZSk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJvZmlsZShQYXNzUmVmUHRy
PEpTQzo6UHJvZmlsZT4gcHJwUHJvZmlsZSkKLXsKLSAgICBSZWZQdHI8SlNDOjpQcm9maWxlPiBw
cm9maWxlID0gcHJwUHJvZmlsZTsKLSAgICBtX3Byb2ZpbGVzLmFkZChwcm9maWxlLT51aWQoKSwg
cHJvZmlsZSk7Ci0KLSAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbV9wcm9maWxlSGVh
ZGVyc1JlcXVlc3RlZCkKLSAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFkZFByb2ZpbGVI
ZWFkZXIoY3JlYXRlUHJvZmlsZUhlYWRlcigqcHJvZmlsZSkpOwotfQotCi1QYXNzUmVmUHRyPFBy
b3RvY29sOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBKU0M6OlByb2ZpbGUmIHByb2ZpbGUpCi17Ci0gICAg
cmV0dXJuIFByb3RvY29sOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKLSAgICAg
ICAgLnNldFR5cGVJZChQcm90b2NvbDo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OlR5cGVJZDo6
Q1BVKQotICAgICAgICAuc2V0VWlkKHByb2ZpbGUudWlkKCkpCi0gICAgICAgIC5zZXRUaXRsZShw
cm9maWxlLnRpdGxlKCkpCi0gICAgICAgIC5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKLXsKLSAgICBlbmFibGUoUmVjb21w
aWxlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpkaXNhYmxlKEVycm9yU3Ry
aW5nKikKLXsKLSAgICBkaXNhYmxlKFJlY29tcGlsZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6ZW5hYmxlKFNob3VsZFJlY29tcGlsZSBzaG91bGRSZWNvbXBpbGUpCi17Ci0g
ICAgaWYgKG1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9lbmFibGVkID0gdHJ1
ZTsKLQotICAgIGlmIChzaG91bGRSZWNvbXBpbGUgPT0gUmVjb21waWxlKQotICAgICAgICBtX3Nj
cmlwdERlYnVnU2VydmVyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwotfQotCi12b2lkIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpc2FibGUoU2hvdWxkUmVjb21waWxlIHNob3VsZFJlY29t
cGlsZSkKLXsKLSAgICBpZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9l
bmFibGVkID0gZmFsc2U7Ci0gICAgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCA9IGZhbHNlOwot
Ci0gICAgaWYgKHNob3VsZFJlY29tcGlsZSA9PSBSZWNvbXBpbGUpCi0gICAgICAgIG1fc2NyaXB0
RGVidWdTZXJ2ZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7Ci19Ci0KLVN0cmluZyBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpnZXRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoKQotewotICAg
IHJldHVybiBtYWtlU3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwgJy4nLCBTdHJpbmc6
Om51bWJlcihtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcisrKSk7Ci19Ci0KLXZvaWQg
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+
JiBoZWFkZXJzKQotewotICAgIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQgPSB0cnVlOwotICAg
IGhlYWRlcnMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpQcm9maWxlSGVh
ZGVyPjo6Y3JlYXRlKCk7Ci0KLSAgICBmb3IgKGF1dG8mIHByb2ZpbGUgOiBtX3Byb2ZpbGVzLnZh
bHVlcygpKQotICAgICAgICBoZWFkZXJzLT5hZGRJdGVtKGNyZWF0ZVByb2ZpbGVIZWFkZXIoKnBy
b2ZpbGUuZ2V0KCkpKTsKLX0KLQotc3RhdGljIFBhc3NSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVy
OjpDUFVQcm9maWxlTm9kZUNhbGw+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJv
ZmlsZU5vZGU6OkNhbGwmIGNhbGwpCi17Ci0gICAgUmVmUHRyPFByb3RvY29sOjpQcm9maWxlcjo6
Q1BVUHJvZmlsZU5vZGVDYWxsPiByZXN1bHQgPSBQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2Zp
bGVOb2RlQ2FsbDo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFN0YXJ0VGltZShjYWxsLnN0YXJ0VGlt
ZSgpKQotICAgICAgICAuc2V0VG90YWxUaW1lKGNhbGwudG90YWxUaW1lKCkpOwotICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOwotfQotCi1zdGF0aWMgUGFzc1JlZlB0cjxQcm90b2NvbDo6UHJv
ZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlBy
b2ZpbGVOb2RlKiBub2RlKQotewotICAgIFJlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6
OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZUNhbGw+PiBjYWxscyA9IFByb3RvY29sOjpBcnJheTxQ
cm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlQ2FsbD46OmNyZWF0ZSgpOwotICAgIGZv
ciAoY29uc3QgSlNDOjpQcm9maWxlTm9kZTo6Q2FsbCYgY2FsbCA6IG5vZGUtPmNhbGxzKCkpCi0g
ICAgICAgIGNhbGxzLT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNhbGwpKTsKLQotICAg
IFJlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiByZXN1bHQgPSBQcm90
b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlOjpjcmVhdGUoKQotICAgICAgICAuc2V0SWQo
bm9kZS0+aWQoKSkKLSAgICAgICAgLnNldENhbGxzKGNhbGxzLnJlbGVhc2UoKSk7Ci0KLSAgICBp
ZiAoIW5vZGUtPmZ1bmN0aW9uTmFtZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LT5zZXRG
dW5jdGlvbk5hbWUobm9kZS0+ZnVuY3Rpb25OYW1lKCkpOwotCi0gICAgaWYgKCFub2RlLT51cmwo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVzdWx0LT5zZXRVcmwobm9kZS0+dXJsKCkpOwotICAg
ICAgICByZXN1bHQtPnNldExpbmVOdW1iZXIobm9kZS0+bGluZU51bWJlcigpKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRDb2x1bW5OdW1iZXIobm9kZS0+Y29sdW1uTnVtYmVyKCkpOwotICAgIH0KLQot
ICAgIGlmICghbm9kZS0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPFBy
b3RvY29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPj4gY2hpbGRy
ZW4gPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT46
OmNyZWF0ZSgpOwotICAgICAgICBmb3IgKFJlZlB0cjxKU0M6OlByb2ZpbGVOb2RlPiBwcm9maWxl
Tm9kZSA6IG5vZGUtPmNoaWxkcmVuKCkpCi0gICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShi
dWlsZEluc3BlY3Rvck9iamVjdChwcm9maWxlTm9kZS5nZXQoKSkpOwotICAgICAgICByZXN1bHQt
PnNldENoaWxkcmVuKGNoaWxkcmVuKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2UoKTsKLX0KLQotUGFzc1JlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+IElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmJ1aWxkUHJvZmlsZUluc3BlY3Rvck9iamVjdChjb25zdCBK
U0M6OlByb2ZpbGUqIHByb2ZpbGUpCi17Ci0gICAgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90
b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPj4gcm9vdE5vZGVzID0gUHJvdG9jb2w6OkFy
cmF5PFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+OjpjcmVhdGUoKTsKLSAgICBm
b3IgKFJlZlB0cjxKU0M6OlByb2ZpbGVOb2RlPiBwcm9maWxlTm9kZSA6IHByb2ZpbGUtPmhlYWQo
KS0+Y2hpbGRyZW4oKSkKLSAgICAgICAgcm9vdE5vZGVzLT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9y
T2JqZWN0KHByb2ZpbGVOb2RlLmdldCgpKSk7Ci0KLSAgICBSZWZQdHI8UHJvdG9jb2w6OlByb2Zp
bGVyOjpDUFVQcm9maWxlPiByZXN1bHQgPSBQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGU6
OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRSb290Tm9kZXMocm9vdE5vZGVzKTsKLQotICAgIGlmIChw
cm9maWxlLT5pZGxlVGltZSgpKQotICAgICAgICByZXN1bHQtPnNldElkbGVUaW1lKHByb2ZpbGUt
PmlkbGVUaW1lKCkpOwotCi0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQg
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmlsZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCByYXdVaWQsIFJlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+
JiBwcm9maWxlT2JqZWN0KQotewotICAgIHVuc2lnbmVkIHVpZCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihyYXdVaWQpOwotICAgIGF1dG8gaXQgPSBtX3Byb2ZpbGVzLmZpbmQodWlkKTsKLSAgICBp
ZiAoaXQgPT0gbV9wcm9maWxlcy5lbmQoKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIlByb2ZpbGUgd2Fzbid0IGZvdW5kIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBwcm9maWxlT2JqZWN0ID0gYnVpbGRQcm9maWxlSW5zcGVjdG9yT2JqZWN0KGl0LT52
YWx1ZS5nZXQoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVtb3ZlUHJv
ZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHJhd1VpZCkKLXsKLSAg
ICB1bnNpZ25lZCB1aWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmF3VWlkKTsKLSAgICBpZiAo
dHlwZSA9PSBDUFVQcm9maWxlVHlwZSkKLSAgICAgICAgbV9wcm9maWxlcy5yZW1vdmUodWlkKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldCgpCi17Ci0gICAgc3RvcCgp
OwotCi0gICAgbV9wcm9maWxlcy5jbGVhcigpOwotICAgIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9m
aWxlTnVtYmVyID0gMTsKLSAgICBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkID0gZmFsc2U7Ci0K
LSAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3Rl
ZCkKLSAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc2V0UHJvZmlsZXMoKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdGFydChFcnJvclN0cmluZyopCi17Ci0gICAg
c3RhcnRQcm9maWxpbmcoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9w
KEVycm9yU3RyaW5nKikKLXsKLSAgICBzdG9wUHJvZmlsaW5nKCk7Ci19Ci0KLXZvaWQgSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6c2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5nKQot
ewotICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOwotfQotCi1TdHJpbmcgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RhcnRQcm9maWxpbmcoY29uc3QgU3RyaW5nICZ0aXRsZSwg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIGVu
YWJsZShSZWNvbXBpbGUpOwotCi0gICAgYm9vbCB3YXNOb3RSZWNvcmRpbmcgPSAhbV9yZWNvcmRp
bmdQcm9maWxlQ291bnQ7Ci0gICAgKyttX3JlY29yZGluZ1Byb2ZpbGVDb3VudDsKLQotICAgIFN0
cmluZyByZXNvbHZlZFRpdGxlID0gdGl0bGU7Ci0gICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmVzb2x2ZWRUaXRsZSA9IGdldFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpOwotCi0g
ICAgaWYgKCFleGVjKQotICAgICAgICBleGVjID0gcHJvZmlsaW5nR2xvYmFsRXhlY1N0YXRlKCk7
Ci0gICAgQVNTRVJUKGV4ZWMpOwotCi0gICAgSlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIo
KS0+c3RhcnRQcm9maWxpbmcoZXhlYywgcmVzb2x2ZWRUaXRsZSk7Ci0KLSAgICBpZiAod2FzTm90
UmVjb3JkaW5nKQotICAgICAgICBzZXRSZWNvcmRpbmdQcm9maWxlKHRydWUpOwotCi0gICAgcmV0
dXJuIHJlc29sdmVkVGl0bGU7Ci19Ci0KLVBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpzdG9wUHJvZmlsaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIEpTQzo6
RXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmICghbV9yZWNvcmRpbmdQcm9maWxlQ291bnQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLS1tX3JlY29yZGluZ1Byb2ZpbGVDb3VudDsK
LQotICAgIGlmICghZXhlYykKLSAgICAgICAgZXhlYyA9IHByb2ZpbGluZ0dsb2JhbEV4ZWNTdGF0
ZSgpOwotICAgIEFTU0VSVChleGVjKTsKLQotICAgIFJlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2Zp
bGUgPSBKU0M6OkxlZ2FjeVByb2ZpbGVyOjpwcm9maWxlcigpLT5zdG9wUHJvZmlsaW5nKGV4ZWMs
IHRpdGxlKTsKLSAgICBpZiAocHJvZmlsZSkKLSAgICAgICAgYWRkUHJvZmlsZShwcm9maWxlKTsK
LQotICAgIGlmICghbV9yZWNvcmRpbmdQcm9maWxlQ291bnQpCi0gICAgICAgIHNldFJlY29yZGlu
Z1Byb2ZpbGUoZmFsc2UpOwotCi0gICAgcmV0dXJuIHByb2ZpbGUucmVsZWFzZSgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYxYTM2MTQ2ZDlmZmQ5ZjQ1ZGQwZDBlNGZhOWE4N2Y0MDc2ZmY3OWYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEluc3BlY3RvclByb2ZpbGVyQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0b3JQ
cm9maWxlckFnZW50X2gKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJJbnNw
ZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckpTRnJvbnRl
bmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgImluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2Uu
aCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwotY2xhc3MgUHJvZmlsZTsK
LX0KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwot
Ci10eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKLQotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCgpOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZSBmaW5hbDsKLQotICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlIGZpbmFsOwotCi0gICAgdmlydHVh
bCB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiA9IG51bGxwdHIpIG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgdm9pZCBzdG9wKEVycm9yU3RyaW5nKiA9IG51bGxwdHIpIG92ZXJyaWRlIGZpbmFs
OwotCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyUHJvZmlsZXMoRXJyb3JTdHJpbmcqKSBvdmVycmlk
ZSBmaW5hbCB7IHJlc2V0KCk7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVhZGVy
cyhFcnJvclN0cmluZyosIFJlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVy
OjpQcm9maWxlSGVhZGVyPj4mKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q1BVUHJvZmlsZShFcnJvclN0cmluZyosIGludCB1aWQsIFJlZlB0cjxQcm90b2NvbDo6UHJvZmls
ZXI6OkNQVVByb2ZpbGU+Jikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCB1aWQpIG92ZXJy
aWRlIGZpbmFsOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVyOjpD
UFVQcm9maWxlPiBidWlsZFByb2ZpbGVJbnNwZWN0b3JPYmplY3QoY29uc3QgSlNDOjpQcm9maWxl
Kik7Ci0KLSAgICBlbnVtIFNob3VsZFJlY29tcGlsZSB7IFNraXBSZWNvbXBpbGUsIFJlY29tcGls
ZSB9OwotCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShTaG91bGRSZWNvbXBpbGUpOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNhYmxlKFNob3VsZFJlY29tcGlsZSk7Ci0KLSAgICBib29sIGVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLQotICAgIHZvaWQgcmVzZXQoKTsKLQotICAg
IHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERlYnVn
U2VydmVyKSB7IG1fc2NyaXB0RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQotCi0g
ICAgU3RyaW5nIHN0YXJ0UHJvZmlsaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUgPSBTdHJpbmcoKSwg
SlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0cik7Ci0gICAgUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+
IHN0b3BQcm9maWxpbmcoY29uc3QgU3RyaW5nJiB0aXRsZSA9IFN0cmluZygpLCBKU0M6OkV4ZWNT
dGF0ZSogPSBudWxscHRyKTsKLQotcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQoKTsKLQotICAgIHZpcnR1YWwgSlNDOjpFeGVjU3RhdGUqIHByb2ZpbGluZ0dsb2JhbEV4ZWNT
dGF0ZSgpIGNvbnN0ID0gMDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGFkZFByb2ZpbGUoUGFzc1Jl
ZlB0cjxKU0M6OlByb2ZpbGU+KTsKLQotICAgIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShib29s
IGlzUHJvZmlsaW5nKTsKLQotICAgIFN0cmluZyBnZXRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUo
KTsKLQotICAgIFBhc3NSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBj
cmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0IEpTQzo6UHJvZmlsZSYpOwotCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3RvclByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8SlNDOjpQ
cm9maWxlPj4gbV9wcm9maWxlczsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlciogbV9zY3JpcHREZWJ1
Z1NlcnZlcjsKLSAgICBib29sIG1fZW5hYmxlZDsKLSAgICBib29sIG1fcHJvZmlsZUhlYWRlcnNS
ZXF1ZXN0ZWQ7Ci0gICAgdW5zaWduZWQgbV9yZWNvcmRpbmdQcm9maWxlQ291bnQ7Ci0gICAgdW5z
aWduZWQgbV9uZXh0VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXI7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JQcm9maWxlckFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3RQcm9maWxlckFnZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAy
NmI5YWVkODQ5MGFjMzc1ZjEyMjg1NDBiZTZkMjYzNDZiMzBlNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdFByb2Zp
bGVyQWdlbnQuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgSW5zcGVjdG9y
IHsKLQotSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50OjpKU0dsb2JhbE9iamVjdFByb2ZpbGVy
QWdlbnQoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLSAgICA6IEluc3BlY3RvclByb2Zp
bGVyQWdlbnQoKQotICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotewotfQotCi1F
eGVjU3RhdGUqIEpTR2xvYmFsT2JqZWN0UHJvZmlsZXJBZ2VudDo6cHJvZmlsaW5nR2xvYmFsRXhl
Y1N0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UHJvZmlsZXJBZ2VudC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1MTkwNmE5MWUwZjgyODM5MTU4YmFmNDJiOTQwNTJmNDE2NWRk
ZmVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UHJvZmlsZXJB
Z2VudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSlNHbG9iYWxPYmplY3RQcm9maWxl
ckFnZW50X2gKLSNkZWZpbmUgSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50X2gKLQotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci19Ci0KLW5hbWVzcGFjZSBJ
bnNwZWN0b3IgewotCi1jbGFzcyBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQgZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCB7Ci1wdWJsaWM6Ci0gICAgSlNHbG9iYWxPYmpl
Y3RQcm9maWxlckFnZW50KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKLQotcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIEpTQzo6RXhlY1N0YXRlKiBwcm9maWxpbmdHbG9iYWxFeGVjU3RhdGUoKSBjb25zdCBv
dmVycmlkZTsKLQotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50X2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1Byb2Zp
bGVyLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1Byb2Zp
bGVyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhM2JmMzViZmU1NmQ0YTVj
NTY1OThmODE4NmUyYTA5ODdjNWZlNmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9Q
cm9maWxlci5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLXsKLSAgICAiZG9t
YWluIjogIlByb2ZpbGVyIiwKLSAgICAidHlwZXMiOiBbCi0gICAgICAgIHsKLSAgICAgICAgICAg
ICJpZCI6ICJQcm9maWxlSGVhZGVyIiwKLSAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCi0g
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvZmlsZSBoZWFkZXIuIiwKLSAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZUlkIiwgInR5
cGUiOiAic3RyaW5nIiwgImVudW0iOiBbIkNQVSJdLCAiZGVzY3JpcHRpb24iOiAiUHJvZmlsZSB0
eXBlIG5hbWUuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGl0bGUiLCAidHlwZSI6
ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiUHJvZmlsZSB0aXRsZS4iIH0sCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ1aWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjog
IlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBwcm9maWxlLiIgfQotICAgICAgICAgICAgXQotICAg
ICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAiaWQiOiAiQ1BVUHJvZmlsZU5vZGVDYWxs
IiwKLSAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiQ1BVIFByb2ZpbGUgY2FsbCBpbmZvLiBIb2xkcyB0aW1lIGluZm9ybWF0aW9uIGZvciBh
IHNwZWNpZmljIGNhbGwgdGhhdCBoYXBwZW5lZCBvbiBhIG5vZGUuIiwKLSAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRUaW1lIiwgInR5
cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIlN0YXJ0IHRpbWUgZm9yIHRoZSBjYWxsLiIg
fSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRvdGFsVGltZSIsICJ0eXBlIjogIm51bWJl
ciIsICJkZXNjcmlwdGlvbiI6ICJUb3RhbCBleGVjdXRpb24gdGltZSBmb3IgdGhlIGNhbGwuIiB9
Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJpZCI6
ICJDUFVQcm9maWxlTm9kZSIsCi0gICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAotICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkNQVSBQcm9maWxlIG5vZGUuIEhvbGRzIGNhbGxzaXRlIGlu
Zm9ybWF0aW9uLCBleGVjdXRpb24gc3RhdGlzdGljcyBhbmQgY2hpbGQgbm9kZXMuIiwKLSAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaWQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0
aGlzIGNhbGwgc2l0ZS4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxscyIsICJ0
eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJDUFVQcm9maWxlTm9kZUNhbGwiIH0s
ICJkZXNjcmlwdGlvbiI6ICJDYWxscyBtYWtpbmcgdXAgdGhpcyBub2RlLiIgfSwKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImZ1bmN0aW9uTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGdW5jdGlvbiBuYW1lLiIgfSwKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJVUkwuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bGluZU51bWJlciIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiTGluZSBudW1iZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29s
dW1uTnVtYmVyIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJDb2x1bW4gbnVtYmVyLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNo
aWxkcmVuIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNQVVByb2ZpbGVO
b2RlIiB9LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ2hpbGQgbm9kZXMuIiB9
Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJpZCI6
ICJDUFVQcm9maWxlIiwKLSAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCi0gICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiUHJvZmlsZS4iLAotICAgICAgICAgICAgInByb3BlcnRpZXMiOiBb
Ci0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyb290Tm9kZXMiLCAidHlwZSI6ICJhcnJheSIs
ICJpdGVtcyI6IHsgIiRyZWYiOiAiQ1BVUHJvZmlsZU5vZGUiIH0sICJkZXNjcmlwdGlvbiI6ICJU
b3AgbGV2ZWwgbm9kZXMgaW4gdGhlIHN0YWNrLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImlkbGVUaW1lIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSB9Ci0gICAg
ICAgICAgICBdCi0gICAgICAgIH0KLSAgICBdLAotICAgICJjb21tYW5kcyI6IFsKLSAgICAgICAg
ewotICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlIgotICAgICAgICB9LAotICAgICAgICB7Ci0g
ICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAg
ICAgICAgICAibmFtZSI6ICJzdGFydCIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAg
ICAgIm5hbWUiOiAic3RvcCIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5h
bWUiOiAiZ2V0UHJvZmlsZUhlYWRlcnMiLAotICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMi
OiB7ICIkcmVmIjogIlByb2ZpbGVIZWFkZXIifSB9Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0s
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImdldENQVVByb2ZpbGUiLAotICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1aWQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiB9Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInJldHVybnMi
OiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9maWxlIiwgIiRyZWYiOiAiQ1BVUHJv
ZmlsZSIgfQotICAgICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAg
ICAibmFtZSI6ICJyZW1vdmVQcm9maWxlIiwKLSAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0cmluZyIgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInVpZCIsICJ0eXBlIjogImludGVnZXIiIH0KLSAgICAg
ICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiY2xl
YXJQcm9maWxlcyIKLSAgICAgICAgfQotICAgIF0sCi0gICAgImV2ZW50cyI6IFsKLSAgICAgICAg
ewotICAgICAgICAgICAgIm5hbWUiOiAiYWRkUHJvZmlsZUhlYWRlciIsCi0gICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlciIsICIkcmVm
IjogIlByb2ZpbGVIZWFkZXIiIH0KLSAgICAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAg
ewotICAgICAgICAgICAgIm5hbWUiOiAic2V0UmVjb3JkaW5nUHJvZmlsZSIsCi0gICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUHJvZmlsaW5n
IiwgInR5cGUiOiAiYm9vbGVhbiIgfQotICAgICAgICAgICAgXQotICAgICAgICB9LAotICAgICAg
ICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJyZXNldFByb2ZpbGVzIgotICAgICAgICB9Ci0gICAg
XQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1MTU5YzhiNTNmMjRjMjJhODgyODEyMTc4MzBk
ZjU5ODYzODA2MmI1Li40NTkyZTI4NmU2NWFiOGJmOTU0MWI4ZDAxNzlkYTc1ZjFkOGNkYzNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgwNiw3ICsxODA2LDYgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKICAgICBpbnNwZWN0
b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQu
Y3BwCi0gICAgaW5zcGVjdG9yL1BhZ2VQcm9maWxlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTE4MTQsMTEg
KzE4MTMsOSBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL1dlYkRlYnVnZ2Vy
QWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0SG9zdC5jcHAKICAgICBp
bnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAotICAgIGluc3BlY3Rvci9XZWJQ
cm9maWxlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCiAg
ICAgaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCi0gICAgaW5zcGVjdG9yL1dvcmtlclByb2ZpbGVyQWdl
bnQuY3BwCiAgICAgaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKIAogICAgIGxvYWRl
ci9Db29raWVKYXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTgzZmQ2MDY5MzgyZjdi
YmY3ZDRjYzJkYTE3YTVjMGVhZjUxODUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNCAr
MCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvclByb2ZpbGVyQWdlbnRfaAotI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JQcm9maWxlckFnZW50X2gKLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg+Ci0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyCmluZGV4IDU1OWY1NWQ4ZGFkYjI1YzA5NzEzOGQ1MmQ4ZWJjYzU2MGZlMGY4MzAuLjdhMWJh
ODU2MzQ5ZjZhYjE2NzI1ZmYwMDUwZmU1ZTU1YjUzNjI3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpA
QCAtNzMwLDkgKzczMCw2IEBAIF9fWk43V2ViQ29yZTE0SW5zcGVjdG9yU3RhdGU4c2V0VmFsdWVF
UktOM1dURjZTdHJpbmdFTlMxXzEwUGFzc1JlZlB0cklOU18xNEluc3BlCiBfX1pON1dlYkNvcmUx
OUluc3BlY3Rvck9iamVjdEJhc2U4c2V0VmFsdWVFUktOM1dURjZTdHJpbmdFTlMxXzEwUGFzc1Jl
ZlB0cklOU18xNEluc3BlY3RvclZhbHVlRUVFCiBfX1pON1dlYkNvcmUyM0luc3BlY3RvckNvbXBv
c2l0ZVN0YXRlMjFpbnNwZWN0b3JTdGF0ZVVwZGF0ZWRFdgogX19aTjdXZWJDb3JlMjVJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50NmNyZWF0ZUVQTlNfMTlJbnN0cnVtZW50aW5nQWdlbnRzRVBOU18y
M0luc3BlY3RvckNvbXBvc2l0ZVN0YXRlRVBOU18xN0luc3BlY3RvckRPTUFnZW50RVBOU18yMklu
c3BlY3RvckRlYnVnZ2VyQWdlbnRFUE5TXzE0SW5zcGVjdG9yQWdlbnRFCi1fX1pON1dlYkNvcmUy
Mkluc3BlY3RvclByb2ZpbGVyQWdlbnQ2Y3JlYXRlRVBOU18xOUluc3RydW1lbnRpbmdBZ2VudHNF
UE5TXzIxSW5zcGVjdG9yQ29uc29sZUFnZW50RVBOU180UGFnZUVQTlNfMjNJbnNwZWN0b3JDb21w
b3NpdGVTdGF0ZUVQTlNfMjFJbmplY3RlZFNjcmlwdE1hbmFnZXJFCi1fX1pON1dlYkNvcmUyMklu
c3BlY3RvclByb2ZpbGVyQWdlbnRDMkVQTlNfMTlJbnN0cnVtZW50aW5nQWdlbnRzRVBOU18yMUlu
c3BlY3RvckNvbnNvbGVBZ2VudEVQTlNfMjNJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZUVQTlNfMjFJ
bmplY3RlZFNjcmlwdE1hbmFnZXJFCi1fX1pON1dlYkNvcmUyNkluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50NmNyZWF0ZUVQTlNfMTlJbnN0cnVtZW50aW5nQWdlbnRzRVBOU18yM0luc3BlY3RvckNv
bXBvc2l0ZVN0YXRlRVBOU18yMUluamVjdGVkU2NyaXB0TWFuYWdlckUKIF9fWk43V2ViQ29yZTIw
SW5zcGVjdG9yV29ya2VyQWdlbnQ2Y3JlYXRlRVBOU18xOUluc3RydW1lbnRpbmdBZ2VudHNFUE5T
XzIzSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGVFCiBfX1pON1dlYkNvcmUyMEluc3BlY3RvckNhbnZh
c0FnZW50QzFFUE5TXzE5SW5zdHJ1bWVudGluZ0FnZW50c0VQTlNfMjNJbnNwZWN0b3JDb21wb3Np
dGVTdGF0ZUVQTlNfMThJbnNwZWN0b3JQYWdlQWdlbnRFUE5TXzIxSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JJbnB1dEFnZW50QzFFUE5TXzE5SW5zdHJ1bWVu
dGluZ0FnZW50c0VQTlNfMjNJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZUVQTlNfNFBhZ2VFCkBAIC02
NDk5LDEwICs2NDk2LDYgQEAgX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JDb25zb2xlQWdlbnREMkV2
CiBfX1pON1dlYkNvcmUxN1BhZ2VEZWJ1Z2dlckFnZW50RDBFdgogX19aTjdXZWJDb3JlMjJJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50RDJFdgogX19aTjdXZWJDb3JlMjVJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50RDBFdgotX19aTjdXZWJDb3JlMTdQYWdlUHJvZmlsZXJBZ2VudEQwRXYKLV9fWk43V2Vi
Q29yZTIySW5zcGVjdG9yUHJvZmlsZXJBZ2VudEQyRXYKLV9fWk43V2ViQ29yZTI2SW5zcGVjdG9y
SGVhcFByb2ZpbGVyQWdlbnREMEV2Ci1fX1pON1dlYkNvcmUyNkluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50RDJFdgogX19aTjdXZWJDb3JlMjBJbnNwZWN0b3JXb3JrZXJBZ2VudEQwRXYKIF9fWk43
V2ViQ29yZTIwSW5zcGVjdG9yV29ya2VyQWdlbnREMkV2CiBfX1pON1dlYkNvcmUyMEluc3BlY3Rv
ckNhbnZhc0FnZW50RDBFdgpAQCAtMjA5OTcsNyArMjA5OTAsNiBAQCBfX1pUVk4zV1RGMjFNZW1v
cnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxMl9HTE9CQUxfX05fMTE5RXh0ZXJu
YWxTdHJpbgogX19aVFZON1dlYkNvcmUxMl9HTE9CQUxfX05fMTE5RXh0ZXJuYWxTdHJpbmdzUm9v
dEUKIF9fWlRWTjdXZWJDb3JlMTJfR0xPQkFMX19OXzExNENvdW50ZXJWaXNpdG9yRQogX19aVFZO
N1dlYkNvcmUxOEluc3BlY3RvclBhZ2VBZ2VudEUKLV9fWlRWTjdXZWJDb3JlMjJJbnNwZWN0b3JQ
cm9maWxlckFnZW50RQogX19aVFZON1dlYkNvcmUyMkluc3BlY3RvclJlc291cmNlQWdlbnRFCiBf
X1pUVk43V2ViQ29yZTIxSW5zcGVjdG9yUnVudGltZUFnZW50RQogX19aVFZON1dlYkNvcmUxNElu
c3BlY3RvclN0eWxlRQpAQCAtMjQzODMsNyArMjQzNzUsNiBAQCBfX1pUVk4zV1RGMjFNZW1vcnlJ
bnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmU0UGFnZUVFRQogX19aVFZOM1dURjIxTWVt
b3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMTdJbnNwZWN0b3JGcm9udGVuZEVF
RQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMjNJ
bnNwZWN0b3JGcm9udGVuZENsaWVudEVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0
aW9uN1dyYXBwZXJJTjdXZWJDb3JlMjZJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckVFRQotX19a
VFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMjJJbnNwZWN0
b3JQcm9maWxlckFnZW50RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3Jh
cHBlcklON1dlYkNvcmUyMkluc3BlY3RvckRlYnVnZ2VyQWdlbnRFRUUKIF9fWlRWTjNXVEYyMU1l
bW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTE4SW5zcGVjdG9yUGFnZUFnZW50
RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUy
Mkluc3BlY3RvclJlc291cmNlQWdlbnRFRUUKQEAgLTI0NDU0LDkgKzI0NDQ1LDYgQEAgX19aVFZO
M1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMThTY3JpcHRIZWFw
U25hcHNob3RFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43
V2ViQ29yZTEzU2NyaXB0UHJvZmlsZUVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0
aW9uN1dyYXBwZXJJTjdXZWJDb3JlMjFJbnNwZWN0b3JDb25zb2xlQWdlbnRFRUUKIF9fWlRWTjdX
ZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF84UHJvZmlsZXIxM1Byb2ZpbGVIZWFkZXJFRUUKLV9f
WlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMjJJbnNwZWN0b3JQcm9maWxlckFn
ZW50RUVFCi1fX1pUVk43V2ViQ29yZTE5V29ya2VyUHJvZmlsZXJBZ2VudEUKLV9fWlRWTjdXZWJD
b3JlMTdQYWdlUHJvZmlsZXJBZ2VudEUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdl
bnRJTlNfMjJJbnNwZWN0b3JSZXNvdXJjZUFnZW50RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0
cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmU4UHJvdG9jb2w3TmV0d29yazlJbml0aWF0b3JF
RUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTEz
WEhSUmVwbGF5RGF0YUVFRQpAQCAtMjY0NjAsNyArMjY0NDgsNiBAQCBfX1pON1dlYkNvcmUxOFdl
YkNvcmVNZW1vcnlUeXBlczE5SW5zcGVjdG9yQ29udHJvbGxlckUKIF9fWk43V2ViQ29yZTE4V2Vi
Q29yZU1lbW9yeVR5cGVzMjBJbnNwZWN0b3JNZW1vcnlBZ2VudEUKIF9fWk43V2ViQ29yZTE4V2Vi
Q29yZU1lbW9yeVR5cGVzMjRJbnNwZWN0b3JET01TdG9yYWdlQWdlbnRFCiBfX1pON1dlYkNvcmUx
OFdlYkNvcmVNZW1vcnlUeXBlczE2SW5zcGVjdG9yT3ZlcmxheUUKLV9fWk43V2ViQ29yZTE4V2Vi
Q29yZU1lbW9yeVR5cGVzMjJJbnNwZWN0b3JQcm9maWxlckFnZW50RQogX19aTjdXZWJDb3JlMThX
ZWJDb3JlTWVtb3J5VHlwZXMyMkluc3BlY3RvckRlYnVnZ2VyQWdlbnRFCiBfX1pON1dlYkNvcmUx
OFdlYkNvcmVNZW1vcnlUeXBlczIySW5zcGVjdG9yUmVzb3VyY2VBZ2VudEUKIF9fWk43V2ViQ29y
ZTE4V2ViQ29yZU1lbW9yeVR5cGVzMTBKU0hlYXBVc2VkRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNTk0ZjliYTBkOGRjMWFhM2EwZTY5
MDdlNWQzZWMyZWVkZGU4YTU2MS4uMGY3MzdmZGEzZjk3YTNhMjQyMmRjOTlhZDYwZTg3YTY4NmFh
MTg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC0xODEwOSwxNCArMTgxMDksNiBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxQYWdlUHJvZmlsZXJBZ2VudC5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFBhZ2VSdW50aW1lQWdlbnQuY3BwIj4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xODE1
NywxNCArMTgxNDksNiBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxX
ZWJQcm9maWxlckFnZW50LmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcV29ya2VyQ29uc29sZUFnZW50LmNwcCI+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTgyMDUsMTQgKzE4MTg5
LDYgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENv
bXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV29ya2VyUHJvZmls
ZXJBZ2VudC5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXFdvcmtlclJ1bnRpbWVBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTIxMzAzLDE5ICsyMTI3OSwxNiBAQCDv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXE5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZUNvbnNvbGVBZ2VudC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFBhZ2VEZWJ1Z2dlckFnZW50LmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZVByb2ZpbGVyQWdlbnQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxQYWdlUnVudGltZUFn
ZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZVNjcmlw
dERlYnVnU2VydmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcV2ViQ29uc29sZUFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcV2ViRGVidWdnZXJBZ2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXFdlYlByb2ZpbGVyQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxXb3JrZXJDb25zb2xlQWdl
bnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxXb3JrZXJEZWJ1
Z2dlckFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXFdvcmtlclByb2ZpbGVyQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxXb3JrZXJSdW50aW1lQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXG1hdGhtbFxNYXRoTUxFbGVtZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxtYXRobWxcTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIiAvPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDFmMjJkZmVjMGI2MDE5MTMzYTFhZjUwMTI2OTYzNzhkYjZkOWE2MTQuLjhm
YzQ0MzNiZTc4ZjY4Mzg0MzBjY2MyNDkxMTNkNDVhYWE5OWRjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAg
LTQ4MzYsOSArNDgzNiw2IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04
Ij8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZURlYnVnZ2VyQWdl
bnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZVByb2ZpbGVyQWdl
bnQuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KQEAgLTQ4NTQsOSArNDg1MSw2IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV2ViRGVidWdn
ZXJBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxXZWJQcm9maWxl
ckFnZW50LmNwcCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFdlYkluamVjdGVk
U2NyaXB0SG9zdC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KQEAgLTQ4NzIsOSArNDg2Niw2IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxXb3JrZXJQcm9maWxlckFnZW50LmNwcCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3Rv
cjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXFdvcmtlclJ1bnRpbWVBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0
b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEyNTY3LDkgKzEyNTU4LDYgQEAg77u/
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxQYWdlRGVidWdnZXJBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcUGFnZVByb2ZpbGVyQWdlbnQuaCI+Ci0gICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXFBhZ2VSdW50aW1lQWdlbnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3Bl
Y3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTI1ODUsOSArMTI1NzMsNiBAQCDv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXFdlYkRlYnVnZ2VyQWdlbnQuaCI+CiAgICAgICA8RmlsdGVy
Pmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXFdlYlByb2ZpbGVyQWdlbnQuaCI+Ci0gICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIj4KICAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjYwMyw5ICsxMjU4OCw2
IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIj4K
ICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV29ya2VyUHJvZmlsZXJBZ2VudC5oIj4K
LSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV29ya2VyUnVudGltZUFnZW50LmgiPgog
ICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
NzNmM2YzMzAwYmRmM2ZmOGQ0MjMwN2NkMDI2ODUyODhiZjUzYWY1Li42OTZmNDQxYWI3OGYwYmJh
YjY2Yjk1MGUzOGUxMTE3ZGRiN2FiNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NTEsMTIgKzk1MSw2IEBACiAJCTFDQjQy
MTRCMEFGMkIyQ0EwMDg1QUQ5MSAvKiBET01FbGVtZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTcxMTQ5
MEFDNUQ1MzQwMDUzMjcwRiAvKiBET01FbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJMUNCNDIx
NEMwQUYyQjJDQTAwODVBRDkxIC8qIERPTUhUTUxFbGVtZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTcx
MTU4MEFDNUQ1MzQwMDUzMjcwRiAvKiBET01IVE1MRWxlbWVudEludGVybmFsLmggKi87IH07CiAJ
CTFDQjQyMTREMEFGMkIyQ0EwMDg1QUQ5MSAvKiBET01SYW5nZUludGVybmFsLmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTM4
RjA1QTBBRDcyMkYxMDA2QTgxRDEgLyogRE9NUmFuZ2VJbnRlcm5hbC5oICovOyB9OwotCQkxQ0M2
QjA2QzE4Rjg1MjZCMDAwN0VDQ0QgLyogV2ViUHJvZmlsZXJBZ2VudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0M2QjA2QTE4Rjg1MjZCMDAwN0VD
Q0QgLyogV2ViUHJvZmlsZXJBZ2VudC5jcHAgKi87IH07Ci0JCTFDQzZCMDZEMThGODUyNkIwMDA3
RUNDRCAvKiBXZWJQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0M2QjA2QjE4Rjg1MjZCMDAwN0VDQ0QgLyogV2ViUHJvZmlsZXJB
Z2VudC5oICovOyB9OwotCQkxQ0M2QjA3MDE4Rjg2ODdBMDAwN0VDQ0QgLyogUGFnZVByb2ZpbGVy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNDNkIwNkUxOEY4Njg3QTAwMDdFQ0NEIC8qIFBhZ2VQcm9maWxlckFnZW50LmNwcCAqLzsgfTsK
LQkJMUNDNkIwNzExOEY4Njg3QTAwMDdFQ0NEIC8qIFBhZ2VQcm9maWxlckFnZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0M2QjA2RjE4Rjg2ODdB
MDAwN0VDQ0QgLyogUGFnZVByb2ZpbGVyQWdlbnQuaCAqLzsgfTsKLQkJMUNDNkIwNzQxOEY4OTNB
MjAwMDdFQ0NEIC8qIFdvcmtlclByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDNkIwNzIxOEY4OTNBMjAwMDdFQ0NEIC8qIFdv
cmtlclByb2ZpbGVyQWdlbnQuY3BwICovOyB9OwotCQkxQ0M2QjA3NTE4Rjg5M0EyMDAwN0VDQ0Qg
LyogV29ya2VyUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUNDNkIwNzMxOEY4OTNBMjAwMDdFQ0NEIC8qIFdvcmtlclByb2ZpbGVy
QWdlbnQuaCAqLzsgfTsKIAkJMUNDQTczMjIxMEFERDQ0QTAwRkQ0NDBEIC8qIERPTUhUTUxJbnB1
dEVsZW1lbnRQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0NBNzMyMTEwQURENDNFMDBGRDQ0MEQgLyogRE9NSFRN
TElucHV0RWxlbWVudFByaXZhdGUuaCAqLzsgfTsKIAkJMUNFODNBQzMwQURBRkZENzAwOTM1NEY2
IC8qIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0QzhFRkYwQUQ4NUQ4NzAwOTQ3NUNFIC8qIERlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXIuY3BwICovOyB9OwogCQkxQ0U4M0FDNDBBREFGRkQ4MDA5MzU0RjYgLyog
RGVsZXRlQnV0dG9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDNEM4RjYzMEFEODY1NUQwMDk0NzVDRSAvKiBEZWxldGVCdXR0b24uY3BwICovOyB9
OwpAQCAtNzkwMSwxMiArNzg5NSw2IEBACiAJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBX
ZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2Ny
aXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdGMEE2QzQw
NTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNDNkIwNkExOEY4NTI2QjAw
MDdFQ0NEIC8qIFdlYlByb2ZpbGVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViUHJvZmlsZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDQzZCMDZCMThGODUyNkIwMDA3RUNDRCAvKiBXZWJQcm9maWxlckFnZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2ZpbGVyQWdlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNDNkIwNkUxOEY4Njg3QTAwMDdFQ0NEIC8qIFBhZ2VQ
cm9maWxlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2VQcm9maWxlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNDNkIw
NkYxOEY4Njg3QTAwMDdFQ0NEIC8qIFBhZ2VQcm9maWxlckFnZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VQcm9maWxlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDQzZCMDcyMThGODkzQTIwMDA3RUNDRCAvKiBXb3JrZXJQcm9maWxlckFn
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclByb2Zp
bGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0M2QjA3MzE4Rjg5
M0EyMDAwN0VDQ0QgLyogV29ya2VyUHJvZmlsZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJQcm9maWxlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDQ0E3MzIxMTBBREQ0M0UwMEZENDQwRCAvKiBET01IVE1MSW5wdXRFbGVtZW50
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MSW5wdXRF
bGVtZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0QwQjYyMDBB
QUJEQjUwMDBEMEEzRkYgLyogUHVibGljRE9NSW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQdWJsaWNET01JbnRlcmZhY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29u
ZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMzMsOCArMTUyMjEsNiBAQAog
CQkJCUYzODIwODhCMTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlQ29uc29sZUFnZW50LmggKi8sCiAJ
CQkJRjM0NzQyREExMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCAqLywK
IAkJCQlGMzQ3NDJEQjEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuaCAqLywK
LQkJCQkxQ0M2QjA2RTE4Rjg2ODdBMDAwN0VDQ0QgLyogUGFnZVByb2ZpbGVyQWdlbnQuY3BwICov
LAotCQkJCTFDQzZCMDZGMThGODY4N0EwMDA3RUNDRCAvKiBQYWdlUHJvZmlsZXJBZ2VudC5oICov
LAogCQkJCUYzODIwODhDMTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlUnVudGltZUFnZW50LmNwcCAq
LywKIAkJCQlGMzgyMDg4RDE0N0QzNUY5MDAxMEJDMDYgLyogUGFnZVJ1bnRpbWVBZ2VudC5oICov
LAogCQkJCUE1RjM2RDM4MThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwICovLApAQCAtMTUyNTEsMTYgKzE1MjM3LDEyIEBACiAJCQkJQTU4NDBFMjMxODdCOEFDMjAw
ODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCUE1ODRGRTJEMTg2NENC
ODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovLAogCQkJCUE1ODRG
RTJFMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLywKLQkJ
CQkxQ0M2QjA2QTE4Rjg1MjZCMDAwN0VDQ0QgLyogV2ViUHJvZmlsZXJBZ2VudC5jcHAgKi8sCi0J
CQkJMUNDNkIwNkIxOEY4NTI2QjAwMDdFQ0NEIC8qIFdlYlByb2ZpbGVyQWdlbnQuaCAqLywKIAkJ
CQlGMzgyMDg4RTE0N0QzNUY5MDAxMEJDMDYgLyogV29ya2VyQ29uc29sZUFnZW50LmNwcCAqLywK
IAkJCQlGMzgyMDg4RjE0N0QzNUY5MDAxMEJDMDYgLyogV29ya2VyQ29uc29sZUFnZW50LmggKi8s
CiAJCQkJRjM0NzQyREUxMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuY3Bw
ICovLAogCQkJCUYzNDc0MkRGMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50
LmggKi8sCiAJCQkJRjM2RTA3QTIxMzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwICovLAogCQkJCUYzNkUwN0EzMTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmggKi8sCi0JCQkJMUNDNkIwNzIxOEY4OTNBMjAwMDdFQ0NEIC8q
IFdvcmtlclByb2ZpbGVyQWdlbnQuY3BwICovLAotCQkJCTFDQzZCMDczMThGODkzQTIwMDA3RUND
RCAvKiBXb3JrZXJQcm9maWxlckFnZW50LmggKi8sCiAJCQkJRjM4MjA4OTAxNDdEMzVGOTAwMTBC
QzA2IC8qIFdvcmtlclJ1bnRpbWVBZ2VudC5jcHAgKi8sCiAJCQkJRjM4MjA4OTExNDdEMzVGOTAw
MTBCQzA2IC8qIFdvcmtlclJ1bnRpbWVBZ2VudC5oICovLAogCQkJKTsKQEAgLTI0MTg1LDcgKzI0
MTY3LDYgQEAKIAkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjZDMTdBM0UxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1J
T1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzhFMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxl
VGhyZWFkLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQ0M2QjA2RDE4Rjg1MjZCMDAwN0VDQ0QgLyog
V2ViUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2OUYwRTgxREFFQjAw
QjI1OTY1IC8qIEZpbGxMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ1RTcyRjgwRkQyNjFF
RTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhDOTI1MUEwRkNDN0M0
QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTkzOSw3ICsy
NTkyMCw2IEBACiAJCQkJMUFCMDlEQjUxNkFGNUY2QzAwODUzOEU3IC8qIFN0b3JhZ2VTdHJhdGVn
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUxMDJEOTQwRkQ5QUEyRDAwRkFGRjA0IC8qIFN0b3Jh
Z2VTeW5jTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRjIzMUEwREMxNjBEQTAwNEYw
MDMyIC8qIFN0b3JhZ2VUaHJlYWQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFDQzZCMDcxMThGODY4
N0EwMDA3RUNDRCAvKiBQYWdlUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0FC
MDJEMkExMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzQUMzNjgwMDEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTgxQUM2QzM2MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJpbmdDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjMwMiw3ICsyNjI4Miw2IEBACiAJCQkJOTMwRkM2
OEExMDcyQjkyODAwNDUyOTNFIC8qIFRleHRSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREEwN0ZDMjE4RTBBMjJCMDA0Njk5RkEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RjYwODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNv
dXJjZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTFDQzZCMDc1MThGODkzQTIwMDA3RUND
RCAvKiBXb3JrZXJQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODI0QjQ2NTBF
MkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4QjFCN0Ew
RjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJDM0RBNEIwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRTdHJlYW0uaCBpbiBIZWFkZXJzICov
LApAQCAtMjc1OTYsNyArMjc1NzUsNiBAQAogCQkJCUE4Q0ZGNkNCMEExNTYxQ0QwMDBBNDIzNCAv
KiBFbGxpcHNpc0JveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RCQjEyNTFGMTJEMDAz
RUYyNjkgLyogRW1haWxJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjUyQUQ1RTQx
NTM0MjQ1RjAwNTlGQkU2IC8qIEVtcHR5Q2xpZW50cy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkx
Q0M2QjA3MDE4Rjg2ODdBMDAwN0VDQ0QgLyogUGFnZVByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThFQTdFQzEwQTE5NDVEMDAwQThFRjVGIC8qIEVudGl0eVJlZmVyZW5jZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA5MjEyQjAyNkY3MDBDMUEzNTkgLyogRXF1YWxQ
b3dlclBhbm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUNGN0FFMTEwMTYyQjU4MDA0MjdE
RTcgLyogRXJyb3JFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NTc2LDcgKzI4NTU0LDYg
QEAKIAkJCQlCMkZBM0RERTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTW92ZXRvUmVs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREUwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdHRlcm5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NDJBNzk2MEFFNUM5NDIw
MERGNThERiAvKiBKU1NWR1BvaW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDQzZCMDZDMThG
ODUyNkIwMDA3RUNDRCAvKiBXZWJQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRkEzREUyMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvaW50TGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkZBM0RFNTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQb2x5Z29uRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RFNzBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdQb2x5bGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODkzMiw3ICsyODkwOSw2
IEBACiAJCQkJRkQzMTYwMTkxMkIwMjY3NjAwQzFBMzU5IC8qIFBhbm5lck5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDQ3OTU4MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREM5MTI1MUYxMkQwMDNFRjI2OSAvKiBQ
YXNzd29yZElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQ0M2QjA3NDE4Rjg5M0Ey
MDAwN0VDQ0QgLyogV29ya2VyUHJvZmlsZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
NDUzOTAxRTBFQUZDQUNBMDAzNjk1QzggLyogUGFzdGVib2FyZElPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTRCMjcwOTgzMEFGMkU1RTAwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjI3NTM1N0YwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25l
LmNwcAppbmRleCA0MDI5YWQwZGM1ZjczM2U4ZWNhNzI2OTkwNjliZGNhNjAwNTAxNDYwLi5jMDIx
MWRiZjE5ZTQ0ZGQyYjUyZmEyYWE4MWY4M2YxYjlmOTdlMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTU3LDcgKzU3LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVB
Z2VudC5jcHAiCiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdlbnQuY3BwIgotI2luY2x1ZGUgIlBh
Z2VQcm9maWxlckFnZW50LmNwcCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmNwcCIKICNp
bmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIgogI2luY2x1ZGUgIlRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5jcHAiCkBAIC02NSw5ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViRGVidWdnZXJB
Z2VudC5jcHAiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCIKICNpbmNsdWRl
ICJXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIgotI2luY2x1ZGUgIldlYlByb2ZpbGVyQWdl
bnQuY3BwIgogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5jcHAiCiAjaW5jbHVkZSAiV29y
a2VyRGVidWdnZXJBZ2VudC5jcHAiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAiCi0jaW5jbHVkZSAiV29ya2VyUHJvZmlsZXJBZ2VudC5jcHAiCiAjaW5jbHVkZSAiV29y
a2VyUnVudGltZUFnZW50LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4M2ZmMWFmOWUyMWI5MmFmOTgyYTdmNWQ1MzFjZGUw
Y2ZlMTE5NDllLi5jN2M4Nzk1MmQ5NjdkZGJkMDRhMTdkYjFlZGIwNTE2MzM1YjE1NzA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC02NCw3ICs2NCw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xl
QWdlbnQuaCIKICNpbmNsdWRlICJQYWdlRGVidWdnZXJBZ2VudC5oIgotI2luY2x1ZGUgIlBhZ2VQ
cm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUg
IlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xNTQs
MTAgKzE1Myw2IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFn
ZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgbV9kb21EZWJ1Z2dlckFn
ZW50ID0gZG9tRGVidWdnZXJBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RG
Ojptb3ZlKGRvbURlYnVnZ2VyQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gcHJvZmlsZXJBZ2VudFB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZVByb2ZpbGVyQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSwgJnBhZ2UpOwotICAgIG1fcHJvZmlsZXJBZ2VudCA9IHByb2ZpbGVyQWdlbnRQ
dHIuZ2V0KCk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShwcm9maWxlckFnZW50UHRy
KSk7Ci0KICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50
KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2Vy
QWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwogICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCkpKTsKQEAgLTE3Niw3ICsxNzEsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVy
OjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQwogCiAgICAgcnVudGltZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmbV9kZWJ1Z2dl
ckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKICAgICBtX3RpbWVsaW5lQWdlbnQtPnNldFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcigmbV9kZWJ1Z2dlckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigp
KTsKLSAgICBtX3Byb2ZpbGVyQWdlbnQtPnNldFNjcmlwdERlYnVnU2VydmVyKCZtX2RlYnVnZ2Vy
QWdlbnQtPnNjcmlwdERlYnVnU2VydmVyKCkpOwogfQogCiBJbnNwZWN0b3JDb250cm9sbGVyOjp+
SW5zcGVjdG9yQ29udHJvbGxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAppbmRleCAxZDIwYzM4MTYzY2E0NjNlM2Q2YWQ3M2MzMjcyOTllNWYx
MWFmYjNkLi5mZDU1OTI0YzAzNTI1NTM0OTczNzhkZmNjMzVjMTM0NjE1OWM1MmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ3LDcg
KzQ3LDYgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOwotY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKIH0KIApAQCAtMTQ0LDcgKzE0Myw2IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBQYWdlRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFn
ZW50OwogICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsK
LSAgICBJbnNwZWN0b3I6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQqIG1fcHJvZmlsZXJBZ2VudDsK
ICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX3RpbWVsaW5lQWdlbnQ7CiAKICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggODJkN2RmZDIzNDk2M2I4MzhlNjc3M2E0ZWIx
ZGIxNzA5YWNiNjVjYS4uN2I2NWIwYmU4ZGI3MDcxYTM4MDk3NGIwNGI4MDRjZjYzNmI4Y2YyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTcwLDcgKzcwLDYgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0
QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgotI2luY2x1
ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oPgogI2luY2x1ZGUg
PHByb2ZpbGVyL1Byb2ZpbGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTc2OSw5ICs3NjgsNiBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudAogICAgICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVz
b3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQo
KSkKICAgICAgICAgICAgIHJlc291cmNlQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZChsb2FkZXIp
OwogCi0gICAgICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKQotICAgICAgICAg
ICAgcHJvZmlsZXJBZ2VudC0+cmVzZXQoKTsKLQogICAgICAgICBpZiAoSW5zcGVjdG9yQ1NTQWdl
bnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkK
ICAgICAgICAgICAgIGNzc0FnZW50LT5yZXNldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKaW5kZXggNzU0MzdlNGI5NTk3NGI1N2Y4
Y2I5Mjk5YjFiNjBlODI3Yjk0ODNkMy4uZjRlOGRmMDQ3MTdhOGFjODc5MzczNDA1MTg1ZWM2MGJl
MzFiOTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5n
QWdlbnRzLmNwcApAQCAtNjgsNyArNjgsNiBAQCBJbnN0cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVt
ZW50aW5nQWdlbnRzKEluc3BlY3RvckVudmlyb25tZW50JiBlbnZpcm9ubWVudCkKICAgICAsIG1f
aW5zcGVjdG9yRGVidWdnZXJBZ2VudChudWxscHRyKQogICAgICwgbV9wYWdlRGVidWdnZXJBZ2Vu
dChudWxscHRyKQogICAgICwgbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpCi0g
ICAgLCBtX2luc3BlY3RvclByb2ZpbGVyQWdlbnQobnVsbHB0cikKICAgICAsIG1faW5zcGVjdG9y
V29ya2VyQWdlbnQobnVsbHB0cikKIHsKIH0KQEAgLTk3LDcgKzk2LDYgQEAgdm9pZCBJbnN0cnVt
ZW50aW5nQWdlbnRzOjpyZXNldCgpCiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50ID0gbnVs
bHB0cjsKICAgICBtX3BhZ2VEZWJ1Z2dlckFnZW50ID0gbnVsbHB0cjsKICAgICBtX2luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQgPSBudWxscHRyOwotICAgIG1faW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCA9IG51bGxwdHI7CiAgICAgbV9pbnNwZWN0b3JXb3JrZXJBZ2VudCA9IG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCmluZGV4
IGVkODBhMDYwYWI3ZmFmNWY2YWQ3YTNlODQ1ODI1OWNjYjIyODBkOWIuLjY1N2NkOTY4YjRmNjc3
OTUzNDNiYjcxMjM5ODE5ZjFiYmJkNWIxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaApAQCAtNDEsNyArNDEsNiBAQAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMzMsOSArMTMyLDYgQEAgcHVibGljOgogICAgIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQqIGluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7IH0KICAgICB2b2lkIHNldEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KIAotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCogaW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dChJbnNwZWN0b3I6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9y
UHJvZmlsZXJBZ2VudCA9IGFnZW50OyB9Ci0KICAgICBJbnNwZWN0b3JXb3JrZXJBZ2VudCogaW5z
cGVjdG9yV29ya2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvcldvcmtlckFnZW50
OyB9CiAgICAgdm9pZCBzZXRJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnNwZWN0b3JXb3JrZXJBZ2Vu
dCogYWdlbnQpIHsgbV9pbnNwZWN0b3JXb3JrZXJBZ2VudCA9IGFnZW50OyB9CiAKQEAgLTE2OSw3
ICsxNjUsNiBAQCBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCogbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogICAgIFBhZ2VEZWJ1Z2dlckFnZW50KiBtX3Bh
Z2VEZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIG1faW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDsKLSAgICBJbnNwZWN0b3I6Okluc3BlY3RvclByb2ZpbGVyQWdl
bnQqIG1faW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKICAgICBJbnNwZWN0b3JXb3JrZXJBZ2VudCog
bV9pbnNwZWN0b3JXb3JrZXJBZ2VudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVByb2ZpbGVyQWdlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
MjhlYmNmYzdmY2IzZGE1MjM2Yjg1MzNiYmQ5ZmIxY2M1ZjA2NWY2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUHJvZmlsZXJBZ2VudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlBhZ2VQcm9maWxlckFnZW50LmgiCi0KLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotCi0jaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKLSNpbmNsdWRlICJNYWluRnJhbWUuaCIK
LSNpbmNsdWRlICJQYWdlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUGFnZVByb2ZpbGVyQWdlbnQ6OlBhZ2VQcm9maWxlckFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UpCi0gICAg
OiBXZWJQcm9maWxlckFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX2luc3BlY3Rl
ZFBhZ2UocGFnZSkKLXsKLX0KLQotSlNDOjpFeGVjU3RhdGUqIFBhZ2VQcm9maWxlckFnZW50Ojpw
cm9maWxpbmdHbG9iYWxFeGVjU3RhdGUoKSBjb25zdAotewotICAgIHJldHVybiB0b0pTRE9NV2lu
ZG93KCZtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9i
YWxFeGVjKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVBy
b2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUHJvZmlsZXJBZ2Vu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzBiZThhMjQxZDFmZTVhZDIyMWE4
ZWI4NmZiMTllMWZjYmNjNDBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUHJvZmlsZXJBZ2VudC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGFnZVByb2ZpbGVyQWdlbnRfaAotI2RlZmluZSBQ
YWdlUHJvZmlsZXJBZ2VudF9oCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCi0jaW5jbHVkZSAi
V2ViUHJvZmlsZXJBZ2VudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBhZ2U7
Ci0KLWNsYXNzIFBhZ2VQcm9maWxlckFnZW50IGZpbmFsIDogcHVibGljIFdlYlByb2ZpbGVyQWdl
bnQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VQcm9maWxlckFnZW50KTsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQYWdlUHJvZmlsZXJBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZSopOwotICAgIHZpcnR1YWwgflBhZ2VQcm9maWxlckFn
ZW50KCkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBKU0M6OkV4ZWNTdGF0ZSogcHJvZmls
aW5nR2xvYmFsRXhlY1N0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBQYWdlKiBtX2luc3Bl
Y3RlZFBhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQotCi0jZW5kaWYgLy8gIWRlZmluZWQoUGFnZVByb2ZpbGVyQWdlbnRfaCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAKaW5kZXggMmM0MzI4MGY2MTMyMDA5ZjVkNDI3YTdlMmU0MmNkZTAwNDc2N2JjNS4uOTFjMzM1
M2QwNTRiMTIxMmU4MDQ0YmQ1MjRhM2M0Nzg0ZDJiODZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTM3LDE2ICszNywx
NSBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
Lmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg+
CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogCkBAIC0yNzEsOSArMjcwLDYxIEBAIHZvaWQgVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojph
cHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwgY29uc3QgRmxvYXRRCiAgICAg
ZGF0YS0+c2V0QXJyYXkoInJvb3QiLCBjcmVhdGVRdWFkKHF1YWQpKTsKIH0KIAorc3RhdGljIFBh
c3NSZWZQdHI8UHJvdG9jb2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlTm9kZUNhbGw+IGJ1aWxkSW5z
cGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZU5vZGU6OkNhbGwmIGNhbGwpCit7CisgICAg
UmVmUHRyPFByb3RvY29sOjpUaW1lbGluZTo6Q1BVUHJvZmlsZU5vZGVDYWxsPiByZXN1bHQgPSBQ
cm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGVOb2RlQ2FsbDo6Y3JlYXRlKCkKKyAgICAgICAg
LnNldFN0YXJ0VGltZShjYWxsLnN0YXJ0VGltZSgpKQorICAgICAgICAuc2V0VG90YWxUaW1lKGNh
bGwudG90YWxUaW1lKCkpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCitzdGF0
aWMgUGFzc1JlZlB0cjxQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGVOb2RlPiBidWlsZElu
c3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2ZpbGVOb2RlKiBub2RlKQoreworICAgIFJlZlB0
cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlTm9kZUNhbGw+
PiBjYWxscyA9IFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGVO
b2RlQ2FsbD46OmNyZWF0ZSgpOworICAgIGZvciAoY29uc3QgSlNDOjpQcm9maWxlTm9kZTo6Q2Fs
bCYgY2FsbCA6IG5vZGUtPmNhbGxzKCkpCisgICAgICAgIGNhbGxzLT5hZGRJdGVtKGJ1aWxkSW5z
cGVjdG9yT2JqZWN0KGNhbGwpKTsKKworICAgIFJlZlB0cjxQcm90b2NvbDo6VGltZWxpbmU6OkNQ
VVByb2ZpbGVOb2RlPiByZXN1bHQgPSBQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGVOb2Rl
OjpjcmVhdGUoKQorICAgICAgICAuc2V0SWQobm9kZS0+aWQoKSkKKyAgICAgICAgLnNldENhbGxz
KGNhbGxzLnJlbGVhc2UoKSk7CisKKyAgICBpZiAoIW5vZGUtPmZ1bmN0aW9uTmFtZSgpLmlzRW1w
dHkoKSkKKyAgICAgICAgcmVzdWx0LT5zZXRGdW5jdGlvbk5hbWUobm9kZS0+ZnVuY3Rpb25OYW1l
KCkpOworCisgICAgaWYgKCFub2RlLT51cmwoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVzdWx0
LT5zZXRVcmwobm9kZS0+dXJsKCkpOworICAgICAgICByZXN1bHQtPnNldExpbmVOdW1iZXIobm9k
ZS0+bGluZU51bWJlcigpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRDb2x1bW5OdW1iZXIobm9kZS0+
Y29sdW1uTnVtYmVyKCkpOworICAgIH0KKworICAgIGlmICghbm9kZS0+Y2hpbGRyZW4oKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6VGltZWxp
bmU6OkNQVVByb2ZpbGVOb2RlPj4gY2hpbGRyZW4gPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6
OlRpbWVsaW5lOjpDUFVQcm9maWxlTm9kZT46OmNyZWF0ZSgpOworICAgICAgICBmb3IgKFJlZlB0
cjxKU0M6OlByb2ZpbGVOb2RlPiBwcm9maWxlTm9kZSA6IG5vZGUtPmNoaWxkcmVuKCkpCisgICAg
ICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZEluc3BlY3Rvck9iamVjdChwcm9maWxlTm9k
ZS5nZXQoKSkpOworICAgICAgICByZXN1bHQtPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICB9
CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8
UHJvdG9jb2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlPiBidWlsZFByb2ZpbGVJbnNwZWN0b3JPYmpl
Y3QoY29uc3QgSlNDOjpQcm9maWxlKiBwcm9maWxlKQoreworICAgIFJlZlB0cjxQcm90b2NvbDo6
QXJyYXk8UHJvdG9jb2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlTm9kZT4+IHJvb3ROb2RlcyA9IFBy
b3RvY29sOjpBcnJheTxQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGVOb2RlPjo6Y3JlYXRl
KCk7CisgICAgZm9yIChSZWZQdHI8SlNDOjpQcm9maWxlTm9kZT4gcHJvZmlsZU5vZGUgOiBwcm9m
aWxlLT5oZWFkKCktPmNoaWxkcmVuKCkpCisgICAgICAgIHJvb3ROb2Rlcy0+YWRkSXRlbShidWls
ZEluc3BlY3Rvck9iamVjdChwcm9maWxlTm9kZS5nZXQoKSkpOworCisgICAgUmVmUHRyPFByb3Rv
Y29sOjpUaW1lbGluZTo6Q1BVUHJvZmlsZT4gcmVzdWx0ID0gUHJvdG9jb2w6OlRpbWVsaW5lOjpD
UFVQcm9maWxlOjpjcmVhdGUoKQorICAgICAgICAuc2V0Um9vdE5vZGVzKHJvb3ROb2Rlcyk7CisK
KyAgICBpZiAocHJvZmlsZS0+aWRsZVRpbWUoKSkKKyAgICAgICAgcmVzdWx0LT5zZXRJZGxlVGlt
ZShwcm9maWxlLT5pZGxlVGltZSgpKTsKKworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwor
fQorCiB2b2lkIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6YXBwZW5kUHJvZmlsZShJbnNwZWN0b3JP
YmplY3QqIGRhdGEsIFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBwcm9maWxlKQogewotICAgIGRh
dGEtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicHJvZmlsZSIpLCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpidWlsZFByb2ZpbGVJbnNwZWN0b3JPYmplY3QocHJvZmlsZS5nZXQoKSkpOworICAgIGRh
dGEtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicHJvZmlsZSIpLCBidWlsZFByb2ZpbGVJbnNwZWN0
b3JPYmplY3QocHJvZmlsZS5nZXQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViUHJvZmlsZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViUHJvZmlsZXJBZ2VudC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNTFmMWRiYWFhMDVjY2M0YmRmMjVjYjZjYTYwNDBiOTUy
M2I0NmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYlByb2ZpbGVyQWdlbnQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQcm9maWxlckFnZW50Lmgi
Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCi0jaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50
cy5oIgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVdlYlByb2ZpbGVyQWdlbnQ6OldlYlByb2ZpbGVyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvclByb2ZpbGVyQWdlbnQoKQot
ICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCi17Ci19Ci0K
LXZvaWQgV2ViUHJvZmlsZXJBZ2VudDo6ZW5hYmxlKFNob3VsZFJlY29tcGlsZSBzaG91bGRSZWNv
bXBpbGUpCi17Ci0gICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZW5hYmxlKHNob3VsZFJlY29t
cGlsZSk7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQcm9maWxlckFn
ZW50KHRoaXMpOwotfQotCi12b2lkIFdlYlByb2ZpbGVyQWdlbnQ6OmRpc2FibGUoU2hvdWxkUmVj
b21waWxlIHNob3VsZFJlY29tcGlsZSkKLXsKLSAgICBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpk
aXNhYmxlKHNob3VsZFJlY29tcGlsZSk7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJ
bnNwZWN0b3JQcm9maWxlckFnZW50KG51bGxwdHIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dlYlByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJQcm9maWxlckFnZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVi
ZTE5YzBjY2M0NjVlY2IyMzc5YWY1NWJlMjA1YmRmNGIzNmE0YzQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dl
YlByb2ZpbGVyQWdlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlByb2ZpbGVy
QWdlbnRfaAotI2RlZmluZSBXZWJQcm9maWxlckFnZW50X2gKLQotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0KLSNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwot
Ci1jbGFzcyBXZWJQcm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViUHJvZmlsZXJBZ2VudCk7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV2ViUHJvZmlsZXJB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgdmlydHVhbCB+V2ViUHJvZmlsZXJBZ2Vu
dCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShTaG91bGRSZWNvbXBpbGUpIG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKFNob3VsZFJlY29tcGlsZSkgb3Zl
cnJpZGUgZmluYWw7Ci0KLXByb3RlY3RlZDoKLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2lu
c3RydW1lbnRpbmdBZ2VudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQotCi0jZW5kaWYgLy8gIWRlZmluZWQoV2ViUHJvZmlsZXJB
Z2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDhkMzdiNmMwNDZjOGRjNmRhMTkzYjU0ZDQwMGUzMjRk
MzM1MzcxYjguLmZiOWNmZTIzMmQxMjk4YTI2MzE5MzgxMGEwMmUyODUwNWJmMzc1MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQu
aCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xv
YmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrZXJQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAi
V29ya2VyUmVwb3J0aW5nUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIK
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKQEAgLTk1LDEwICs5NCw2IEBAIFdvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsCiAgICAgbV9ydW50aW1lQWdlbnQtPnNldFNjcmlwdERlYnVnU2VydmVyKCZk
ZWJ1Z2dlckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKICAgICBtX2FnZW50cy5hcHBlbmQo
V1RGOjptb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKIAotICAgIGF1dG8gcHJvZmlsZXJBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V29ya2VyUHJvZmlsZXJBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCAmd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIHByb2ZpbGVyQWdlbnQtPnNldFNjcmlw
dERlYnVnU2VydmVyKCZkZWJ1Z2dlckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKLSAgICBt
X2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKHByb2ZpbGVyQWdlbnQpKTsKLQogICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgbnVsbHB0ciwgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6V29y
a2VySW5zcGVjdG9yLCBudWxscHRyKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShj
b25zb2xlQWdlbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclBy
b2ZpbGVyQWdlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWUyNDBlM2Y0
NmJhMGQxMTg2NTQ2NWEzYzkwMmRkODBhNDVkOGUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJQcm9m
aWxlckFnZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV29ya2VyUHJvZmlsZXJBZ2VudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LQotI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0jaW5j
bHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KLXVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV29ya2VyUHJvZmlsZXJBZ2Vu
dDo6V29ya2VyUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCi0gICAgOiBXZWJQ
cm9maWxlckFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKQotewotfQotCi1KU0M6OkV4ZWNTdGF0ZSogV29ya2VyUHJv
ZmlsZXJBZ2VudDo6cHJvZmlsaW5nR2xvYmFsRXhlY1N0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclByb2ZpbGVyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJQcm9maWxlckFnZW50LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZGJmYmMxZmQ3YTk4YzRiY2Q2MTY0ZTI1MjBm
YjNmN2VhNWU4YTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclByb2ZpbGVyQWdlbnQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdvcmtlclByb2ZpbGVyQWdlbnRfaAotI2RlZmluZSBXb3Jr
ZXJQcm9maWxlckFnZW50X2gKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJX
ZWJQcm9maWxlckFnZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGU7Ci0KLWNsYXNzIFdvcmtlclByb2ZpbGVyQWdlbnQgZmluYWwgOiBwdWJsaWMg
V2ViUHJvZmlsZXJBZ2VudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyUHJvZmls
ZXJBZ2VudCk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV29y
a2VyUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgV29ya2VyR2xvYmFsU2NvcGUq
KTsKLSAgICB2aXJ0dWFsIH5Xb3JrZXJQcm9maWxlckFnZW50KCkgeyB9Ci0KLXByaXZhdGU6Ci0g
ICAgdmlydHVhbCBKU0M6OkV4ZWNTdGF0ZSogcHJvZmlsaW5nR2xvYmFsRXhlY1N0YXRlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0KLSAgICBXb3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29w
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChXb3JrZXJQcm9maWxlckFnZW50X2gpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGltZWxpbmUuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29uCmluZGV4IGFh
ZWM1MDRlZjQ3ZTkzMzRjZTNhZTMxZGM1ODlmMWFhODVlZGVkNTMuLjI5MDNmZmVkYjhiZTMwNTgx
ZjliYWFmZTMzZmY4MDMwZTFhNmY0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9UaW1lbGluZS5qc29uCkBAIC0xNyw2ICsxNywzOCBAQAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiY2hpbGRyZW4iLCAidHlwZSI6ICJhcnJheSIsICJvcHRpb25hbCI6IHRy
dWUsICJpdGVtcyI6IHsgIiRyZWYiOiAiVGltZWxpbmVFdmVudCIgfSwgImRlc2NyaXB0aW9uIjog
Ik5lc3RlZCByZWNvcmRzLiIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJUaW1lbGluZSByZWNvcmQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJl
Y29yZGVkIGFjdGl2aXR5LiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlk
IjogIkNQVVByb2ZpbGVOb2RlQ2FsbCIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNQVSBQcm9maWxlIGNhbGwgaW5mby4gSG9sZHMg
dGltZSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyBjYWxsIHRoYXQgaGFwcGVuZWQgb24gYSBu
b2RlLiIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInN0YXJ0VGltZSIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJTdGFy
dCB0aW1lIGZvciB0aGUgY2FsbC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0b3Rh
bFRpbWUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiVG90YWwgZXhlY3V0aW9u
IHRpbWUgZm9yIHRoZSBjYWxsLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAiaWQiOiAiQ1BVUHJvZmlsZU5vZGUiLAorICAgICAgICAgICAgInR5
cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDUFUgUHJvZmlsZSBu
b2RlLiBIb2xkcyBjYWxsc2l0ZSBpbmZvcm1hdGlvbiwgZXhlY3V0aW9uIHN0YXRpc3RpY3MgYW5k
IGNoaWxkIG5vZGVzLiIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImlkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJV
bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBjYWxsIHNpdGUuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY2FsbHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
Q1BVUHJvZmlsZU5vZGVDYWxsIiB9LCAiZGVzY3JpcHRpb24iOiAiQ2FsbHMgbWFraW5nIHVwIHRo
aXMgbm9kZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5jdGlvbk5hbWUiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rp
b24gbmFtZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJz
dHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVVJMLiIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImxpbmVOdW1iZXIiLCAidHlwZSI6ICJpbnRlZ2VyIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkxpbmUgbnVtYmVyLiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNvbHVtbk51bWJlciIsICJ0eXBlIjogImludGVnZXIiLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29sdW1uIG51bWJlci4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJjaGlsZHJlbiIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjog
eyAiJHJlZiI6ICJDUFVQcm9maWxlTm9kZSIgfSwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIkNoaWxkIG5vZGVzLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAiaWQiOiAiQ1BVUHJvZmlsZSIsCisgICAgICAgICAgICAidHlwZSI6
ICJvYmplY3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUuIiwKKyAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicm9vdE5v
ZGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNQVVByb2ZpbGVOb2Rl
IiB9LCAiZGVzY3JpcHRpb24iOiAiVG9wIGxldmVsIG5vZGVzIGluIHRoZSBzdGFjay4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpZGxlVGltZSIsICJ0eXBlIjogIm51bWJlciIsICJv
cHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAi
Y29tbWFuZHMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJj
IGIvU291cmNlL1dlYkluc3BlY3RvclVJLy5lc2xpbnRyYwppbmRleCBhZTRhYzA2Zjg4MzQwODY1
ZjI5Y2JkZjlkN2I0NTMxY2Y5MTdmNjcwLi5jMTFkNGJiYTM1Y2FhNmE5ZjNiZmFhZjVkNTM1NGNi
ZjU1OWIyYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMKQEAgLTQ5LDcgKzQ5LDYgQEAKICAg
ICAgICAgIk1hcCI6IHRydWUsCiAgICAgICAgICJOZXR3b3JrQWdlbnQiOiB0cnVlLAogICAgICAg
ICAiUGFnZUFnZW50IjogdHJ1ZSwKLSAgICAgICAgIlByb2ZpbGVyQWdlbnQiOiB0cnVlLAogICAg
ICAgICAiUmVwbGF5QWdlbnQiOiB0cnVlLAogICAgICAgICAiUnVudGltZUFnZW50IjogdHJ1ZSwK
ICAgICAgICAgIlRpbWVsaW5lQWdlbnQiOiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IGJjNGNlZDI5NTdhZTgzZmZmMzYz
NDI1Y2YwMWQwOTFhYjdkNmI4MGUuLmY1NWFmNDdmMmFiMjExZjRlNDE4YTMyYTlhMjc2N2Y3MDEw
ZDY0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L01haW4uanMKQEAgLTc2LDggKzc2LDYgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9u
KCkKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckFwcGxpY2F0aW9uQ2FjaGVEaXNw
YXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyKTsKICAgICBp
ZiAoSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlclRpbWVsaW5lRGlzcGF0Y2hlcikKICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlclRpbWVsaW5lRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT2JzZXJ2ZXIpOwotICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
UHJvZmlsZXJEaXNwYXRjaGVyKQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUHJv
ZmlsZXJEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZXJPYnNlcnZlcik7
CiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDU1NEaXNwYXRjaGVyKQogICAgICAg
ICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ1NTRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9y
LkNTU09ic2VydmVyKTsKICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckxheWVyVHJl
ZURpc3BhdGNoZXIpCkBAIC0xMTEsNyArMTA5LDYgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLnJ1bnRpbWVNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5SdW50
aW1lTWFuYWdlcjsKICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gbmV3IFdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlcjsKICAgICB0aGlzLnRpbWVsaW5lTWFuYWdl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyOwotICAgIHRoaXMubGVnYWN5UHJv
ZmlsZU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVNYW5hZ2VyOwogICAg
IHRoaXMuZGVidWdnZXJNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXI7
CiAgICAgdGhpcy5zb3VyY2VNYXBNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBN
YW5hZ2VyOwogICAgIHRoaXMubGF5ZXJUcmVlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuTGF5
ZXJUcmVlTWFuYWdlcjsKQEAgLTUwMiwyMCArNDk5LDYgQEAgV2ViSW5zcGVjdG9yLm9wZW5VUkwg
PSBmdW5jdGlvbih1cmwsIGZyYW1lLCBhbHdheXNPcGVuRXh0ZXJuYWxseSwgbGluZU51bWJlcikK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHZhciBwYXJzZWRVUkwgPSBwYXJzZVVSTCh1
cmwpOwotICAgIGlmIChwYXJzZWRVUkwuc2NoZW1lID09PSBXZWJJbnNwZWN0b3IuTGVnYWN5UHJv
ZmlsZVR5cGUuUHJvZmlsZVNjaGVtZSkgewotICAgICAgICB2YXIgcHJvZmlsZVR5cGUgPSBwYXJz
ZWRVUkwuaG9zdC50b1VwcGVyQ2FzZSgpOwotICAgICAgICB2YXIgcHJvZmlsZVRpdGxlID0gcGFy
c2VkVVJMLnBhdGg7Ci0KLSAgICAgICAgLy8gVGhlIHBhdGggb2Ygb2YgdGhlIHByb2ZpbGUgVVJM
IHN0YXJ0cyB3aXRoIGEgc2xhc2gsIHJlbW92ZSBpdCwgc28KLSAgICAgICAgLy8gd2UgY2FuIGdl
dCB0aGUgYWN0dWFsIHRpdGxlLgotICAgICAgICBjb25zb2xlLmFzc2VydChwcm9maWxlVGl0bGVb
MF0gPT09ICIvIik7Ci0gICAgICAgIHByb2ZpbGVUaXRsZSA9IHByb2ZpbGVUaXRsZS5zdWJzdHJp
bmcoMSk7Ci0KLSAgICAgICAgdGhpcy50aW1lbGluZVNpZGViYXJQYW5lbC5zaG93UHJvZmlsZShw
cm9maWxlVHlwZSwgcHJvZmlsZVRpdGxlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IHZhciBzZWFyY2hDaGlsZEZyYW1lcyA9IGZhbHNlOwogICAgIGlmICghZnJhbWUpIHsKICAgICAg
ICAgZnJhbWUgPSB0aGlzLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xlZ2Fj
eVByb2ZpbGVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvTGVnYWN5UHJvZmlsZU1hbmFnZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNlMTlhMjc1Mzg2OWYwZTE4MGEwNGQwZjk3NTY3NTZjYzVlMDRjM2QuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTGVnYWN5UHJvZmlsZU1hbmFnZXIuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3BlY3Rv
ci5MZWdhY3lQcm9maWxlTWFuYWdlciA9IGZ1bmN0aW9uKCkKLXsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9qYXZhU2NyaXB0UHJvZmlsZVR5cGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVHlwZTsKLQotICAgIGlmICh3
aW5kb3cuUHJvZmlsZXJBZ2VudCkgewotICAgICAgICBQcm9maWxlckFnZW50LmVuYWJsZSgpOwot
ICAgICAgICBQcm9maWxlckFnZW50LmdldFByb2ZpbGVIZWFkZXJzKCk7Ci0gICAgfQotCi0gICAg
V2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2
ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzKTsKLQotICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotfTsKLQotV2ViSW5zcGVjdG9yLkxlZ2Fj
eVByb2ZpbGVNYW5hZ2VyLkV2ZW50ID0gewotICAgIFByb2ZpbGVXYXNBZGRlZDogInByb2ZpbGUt
bWFuYWdlci1wcm9maWxlLXdhcy1hZGRlZCIsCi0gICAgUHJvZmlsZVdhc1VwZGF0ZWQ6ICJwcm9m
aWxlLW1hbmFnZXItcHJvZmlsZS13YXMtdXBkYXRlZCIsCi0gICAgUHJvZmlsaW5nU3RhcnRlZDog
InByb2ZpbGUtbWFuYWdlci1wcm9maWxpbmctc3RhcnRlZCIsCi0gICAgUHJvZmlsaW5nRW5kZWQ6
ICJwcm9maWxlLW1hbmFnZXItcHJvZmlsaW5nLWVuZGVkIiwKLSAgICBQcm9maWxpbmdJbnRlcnJ1
cHRlZDogInByb2ZpbGUtbWFuYWdlci1wcm9maWxpbmctaW50ZXJydXB0ZWQiLAotICAgIENsZWFy
ZWQ6ICJwcm9maWxlLW1hbmFnZXItY2xlYXJlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lQ
cm9maWxlTWFuYWdlci5Vc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUgPSAib3JnLndlYmtpdC5wcm9m
aWxlcy51c2VyLWluaXRpYXRlZCI7Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlTWFuYWdl
ci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9m
aWxlTWFuYWdlciwKLQotICAgIC8vIFB1YmxpYwotCi0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5fY2hlY2tGb3JJbnRlcnJ1cHRpb25zKCk7Ci0KLSAgICAg
ICAgdGhpcy5fcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUgPSBudWxsOwotCi0gICAgICAgIHRo
aXMuX2lzUHJvZmlsaW5nID0gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQp
OwotICAgIH0sCi0KLSAgICBpc1Byb2ZpbGluZ0phdmFTY3JpcHQ6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9qYXZhU2NyaXB0UHJvZmlsZVR5cGUuaXNSZWNvcmRpbmdQ
cm9maWxlKCk7Ci0gICAgfSwKLQotICAgIHN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlLnN0YXJ0UmVj
b3JkaW5nUHJvZmlsZSgpOwotICAgIH0sCi0KLSAgICBzdG9wUHJvZmlsaW5nSmF2YVNjcmlwdDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlLnN0
b3BSZWNvcmRpbmdQcm9maWxlKCk7Ci0gICAgfSwKLQotICAgIHByb2ZpbGVXYXNTdGFydGVkRnJv
bUNvbnNvbGU6IGZ1bmN0aW9uKHRpdGxlKQotICAgIHsKLSAgICAgICAgdGhpcy5zZXRSZWNvcmRp
bmdKYXZhU2NyaXB0UHJvZmlsZSh0cnVlLCB0cnVlKTsKLQotICAgICAgICBpZiAodGl0bGUuaW5k
ZXhPZihXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuVXNlckluaXRpYXRlZFByb2Zp
bGVOYW1lKSA9PT0gLTEpIHsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQ
cm9maWxlLnRpdGxlID0gdGl0bGU7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsZVdh
c1VwZGF0ZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZX0pOwot
ICAgICAgICB9Ci0gICAgfSwKLQotICAgIHByb2ZpbGVXYXNFbmRlZEZyb21Db25zb2xlOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICB0aGlzLnNldFJlY29yZGluZ0phdmFTY3JpcHRQcm9maWxl
KGZhbHNlLCB0cnVlKTsKLSAgICB9LAotCi0gICAgYWRkSmF2YVNjcmlwdFByb2ZpbGU6IGZ1bmN0
aW9uKHByb2ZpbGUpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNvcmRp
bmdKYXZhU2NyaXB0UHJvZmlsZSk7Ci0gICAgICAgIGlmICghdGhpcy5fcmVjb3JkaW5nSmF2YVNj
cmlwdFByb2ZpbGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fcmVjb3Jk
aW5nSmF2YVNjcmlwdFByb2ZpbGUudHlwZSA9IHByb2ZpbGUudHlwZUlkOwotICAgICAgICB0aGlz
Ll9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZS50aXRsZSA9IHByb2ZpbGUudGl0bGU7Ci0gICAg
ICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlLmlkID0gcHJvZmlsZS51aWQ7Ci0g
ICAgICAgIHRoaXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlLnJlY29yZGluZyA9IGZhbHNl
OwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5M
ZWdhY3lQcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxlV2FzVXBkYXRlZCwge3Byb2ZpbGU6IHRo
aXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlfSk7Ci0KLSAgICAgICAgLy8gV2Ugd2FudCB0
byByZXNldCBfcmVjb3JkaW5nSmF2YVNjcmlwdFByb2ZpbGUgc28gdGhhdCB3ZSBjYW4gaWRlbnRp
ZnkKLSAgICAgICAgLy8gaW50ZXJydXB0aW9ucywgYnV0IHdlIGFsc28gd2FudCB0byBrZWVwIHRy
YWNrIG9mIHRoZSBsYXN0IHByb2ZpbGUKLSAgICAgICAgLy8gd2UndmUgcmVjb3JkZWQgc28gdGhh
dCB3ZSBjYW4gcHJvdmlkZSBpdCBhcyBkYXRhIHRvIHRoZSBQcm9maWxpbmdFbmRlZCBldmVudAot
ICAgICAgICAvLyB3ZSdsbCBkaXNwYXRjaCBpbiBzZXRSZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmls
ZSgpLgotICAgICAgICB0aGlzLl9sYXN0SmF2YVNjcmlwdFByb2ZpbGVBZGRlZCA9IHRoaXMuX3Jl
Y29yZGluZ0phdmFTY3JpcHRQcm9maWxlOwotICAgICAgICB0aGlzLl9yZWNvcmRpbmdKYXZhU2Ny
aXB0UHJvZmlsZSA9IG51bGw7Ci0gICAgfSwKLQotICAgIHNldFJlY29yZGluZ0phdmFTY3JpcHRQ
cm9maWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZywgZnJvbUNvbnNvbGUpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5faXNQcm9maWxpbmcgPT09IGlzUHJvZmlsaW5nKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHRoaXMuX2lzUHJvZmlsaW5nID0gaXNQcm9maWxpbmc7Ci0KLSAgICAg
ICAgLy8gV2UndmUgaW50ZXJydXB0ZWQgdGhlIGN1cnJlbnQgSlMgcHJvZmlsZSBkdWUgdG8gYSBw
YWdlIHJlbG9hZC4gUmV0dXJuCi0gICAgICAgIC8vIG5vdyBhbmQgX2F0dGVtcHRUb1Jlc3VtZVBy
b2ZpbGluZyB3aWxsIHBpY2sgdGhpbmdzIHVwIGFmdGVyIHRoZSByZWxvYWQuCi0gICAgICAgIGlm
ICghaXNQcm9maWxpbmcgJiYgISF0aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoaXNQcm9maWxpbmcgJiYgIXRoaXMuX3Jl
Y29yZGluZ0phdmFTY3JpcHRQcm9maWxlKQotICAgICAgICAgICAgdGhpcy5fcmVjb3JkaW5nSmF2
YVNjcmlwdFByb2ZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxl
T2JqZWN0KFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlTWFuYWdlci5Vc2VySW5pdGlhdGVkUHJv
ZmlsZU5hbWUsIC0xLCB0cnVlKTsKLQotICAgICAgICBpZiAoaXNQcm9maWxpbmcpIHsKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5MZWdhY3lQ
cm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxlV2FzQWRkZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNv
cmRpbmdKYXZhU2NyaXB0UHJvZmlsZX0pOwotICAgICAgICAgICAgaWYgKCFmcm9tQ29uc29sZSkK
LSAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nU3RhcnRlZCk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuRXZlbnQuUHJvZmlsaW5nRW5kZWQsIHsKLSAg
ICAgICAgICAgICAgICBwcm9maWxlOiB0aGlzLl9sYXN0SmF2YVNjcmlwdFByb2ZpbGVBZGRlZCwK
LSAgICAgICAgICAgICAgICBmcm9tQ29uc29sZTogZnJvbUNvbnNvbGUKLSAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgdGhpcy5fbGFzdEphdmFTY3JpcHRQcm9maWxlQWRkZWQgPSBudWxsOwot
ICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8vIFByaXZhdGUKLSAgICAKLSAgICBfbWFpblJlc291
cmNlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSk7Ci0KLSAgICAg
ICAgaWYgKCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICB2YXIgb2xkTWFpblJlc291cmNlID0gZXZlbnQuZGF0YS5vbGRNYWluUmVzb3Vy
Y2U7Ci0gICAgICAgIHZhciBuZXdNYWluUmVzb3VyY2UgPSBldmVudC50YXJnZXQubWFpblJlc291
cmNlOwotICAgICAgICBpZiAob2xkTWFpblJlc291cmNlLnVybCAhPT0gbmV3TWFpblJlc291cmNl
LnVybCkKLSAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB0aGlzLl9hdHRlbXB0VG9SZXN1bWVQcm9maWxpbmcoKTsKLSAgICB9LAotCi0gICAg
X2NoZWNrRm9ySW50ZXJydXB0aW9uczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX3JlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKSB7Ci0gICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU1hbmFnZXIuRXZl
bnQuUHJvZmlsaW5nSW50ZXJydXB0ZWQsIHtwcm9maWxlOiB0aGlzLl9yZWNvcmRpbmdKYXZhU2Ny
aXB0UHJvZmlsZX0pOwotICAgICAgICAgICAgdGhpcy5famF2YVNjcmlwdFByb2ZpbGVUeXBlLnNl
dFJlY29yZGluZ1Byb2ZpbGUoZmFsc2UpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9hdHRl
bXB0VG9SZXN1bWVQcm9maWxpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2No
ZWNrRm9ySW50ZXJydXB0aW9ucygpOwotCi0gICAgICAgIGlmICh0aGlzLl9yZWNvcmRpbmdKYXZh
U2NyaXB0UHJvZmlsZSkKLSAgICAgICAgICAgIHRoaXMuc3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0
KCk7Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVNYW5hZ2VyLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1N2FmNzI3YWEy
ZmQzNjg0NTZmZjBkZmI4YzBkNzFkYmRkM2QwOWU3Li5kODk0YWExZTNhYjg3NDhjNDVhNWFlYWFl
YzhkZDg5ODdkNWU0N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sCkBAIC05MCw4ICs5MCw2IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9MYXllclRyZWVTaWRlYmFyUGFuZWwuY3NzIj4KICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0xheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTGF5b3V0VGltZWxpbmVW
aWV3LmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9MZWdhY3lK
YXZhU2NyaXB0UHJvZmlsZVZpZXcuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlZpZXdzL0xlZ2FjeVByb2ZpbGVWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJWaWV3cy9Mb2dDb250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iVmlld3MvTG9nSWNvbi5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iVmlld3MvTWFpbi5jc3MiPgpAQCAtMTg5LDcgKzE4Nyw2IEBACiAgICAgPHNj
cmlwdCBzcmM9IlByb3RvY29sL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0xheWVyVHJlZU9ic2VydmVyLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTGVnYWN5UHJvZmlsZXJPYnNlcnZlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0xvYWRJbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9NZXNz
YWdlRGlzcGF0Y2hlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL05l
dHdvcmtPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CkBAIC0yODEsMTAgKzI3OCw2IEBACiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0RhdGFHcmlkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvRGV0YWlsc1NlY3Rpb25Sb3cuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iVmlld3MvTGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0xlZ2FjeVByb2ZpbGVPYmplY3QuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9MZWdhY3lQcm9maWxlVHlwZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0xlZ2FjeVByb2ZpbGVWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9TZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KQEAgLTQwMSwxMSArMzk0LDYgQEAKICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MZWdhY3lCb3R0b21VcFByb2ZpbGVE
YXRhR3JpZFRyZWUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MZWdhY3lK
YXZhU2NyaXB0UHJvZmlsZU9iamVjdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlVHlwZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTG9nQ29udGVudFZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Mb2dUcmVlRWxlbWVudC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5qcyI+
PC9zY3JpcHQ+CkBAIC00ODcsNyArNDc1LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9MYXllclRyZWVNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTGVnYWN5UHJvZmls
ZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Mb2dN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUHJvYmVN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUmVwbGF5
TWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIuanMKaW5kZXgg
NGFlZTFmZGMzZDI5OTc4ZjY3MjUwNzA1NDAxZGQ4YzVlYTZjOGQ2Zi4uODk4MzM0Yjc3MDMyM2Fl
YTRiNWEwYWM1NzFmZDVkZDI4MTRkMDg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVPYnNlcnZlci5q
cwpAQCAtMzgsMTMgKzM4LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmIChtZXNzYWdlLmxldmVsID09PSAid2FybmluZyIgfHwgbWVzc2Fn
ZS5sZXZlbCA9PT0gImVycm9yIikKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5pc3N1ZU1hbmFn
ZXIuaXNzdWVXYXNBZGRlZChtZXNzYWdlLnNvdXJjZSwgbWVzc2FnZS5sZXZlbCwgbWVzc2FnZS50
ZXh0LCBtZXNzYWdlLnVybCwgbWVzc2FnZS5saW5lLCBtZXNzYWdlLmNvbHVtbiB8fCAwLCBtZXNz
YWdlLnBhcmFtZXRlcnMpOwogCi0gICAgICAgIGlmIChtZXNzYWdlLnVybCA9PT0gIltuYXRpdmUg
Y29kZV0iKSB7Ci0gICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAicHJvZmlsZSIpCi0g
ICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxlZ2FjeVByb2ZpbGVNYW5hZ2VyLnByb2ZpbGVX
YXNTdGFydGVkRnJvbUNvbnNvbGUobWVzc2FnZS50ZXh0KTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KG1lc3NhZ2UudHlwZSA9PT0gInByb2ZpbGVFbmQiKQotICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5sZWdhY3lQcm9maWxlTWFuYWdlci5wcm9maWxlV2FzRW5kZWRGcm9tQ29uc29sZSgpOwot
ICAgICAgICB9Ci0KICAgICAgICAgaWYgKG1lc3NhZ2Uuc291cmNlID09PSAiY29uc29sZS1hcGki
ICYmIG1lc3NhZ2UudHlwZSA9PT0gImNsZWFyIikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCBiZjA0Y2RiZTRmNDg3MGJl
NzBlMzAzYjI0NzBjMTJjZGJhY2YyMjhlLi4xMjI3MjExMjhkYWZiZWIzMTk0MWRiMGNjMTg2MWJi
MDc2YTE1ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAt
NjgsMjIgKzY4LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KICAgICB9
LAogCi0gICAgaXNQcm9maWxpbmdKYXZhU2NyaXB0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLmxlZ2FjeVByb2ZpbGVNYW5hZ2VyLmlzUHJvZmlsaW5nSmF2
YVNjcmlwdCgpOwotICAgIH0sCi0KLSAgICBzdGFydFByb2ZpbGluZ0phdmFTY3JpcHQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5sZWdhY3lQcm9maWxlTWFuYWdlci5z
dGFydFByb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSAgICB9LAotCi0gICAgc3RvcFByb2ZpbGluZ0ph
dmFTY3JpcHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGlu
ZVNpZGViYXJQYW5lbC5zaG93KCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5sZWdhY3lQcm9maWxl
TWFuYWdlci5zdG9wUHJvZmlsaW5nSmF2YVNjcmlwdCgpOwotICAgIH0sCi0KICAgICBzZXREb2Nr
U2lkZTogZnVuY3Rpb24oc2lkZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVE
b2NrZWRTdGF0ZShzaWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0xlZ2FjeVByb2ZpbGVyT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MZWdhY3lQcm9maWxlck9ic2VydmVy
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmQ5OTMzNDAwMGMzNzcyMjM3OTRi
YjI5NDczMTE1MTk1MTI4NjRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xl
Z2FjeVByb2ZpbGVyT2JzZXJ2ZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVyT2JzZXJ2ZXIgPSBmdW5jdGlv
bigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5z
cGVjdG9yLkxlZ2FjeVByb2ZpbGVyT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZXJPYnNlcnZlciwKLQotICAgIC8vIEV2ZW50
cyBkZWZpbmVkIGJ5IHRoZSAiUHJvZmlsZXIiIGRvbWFpbi4KLQotICAgIHJlc2V0UHJvZmlsZXM6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAg
ICB9LAotCi0gICAgYWRkUHJvZmlsZUhlYWRlcjogZnVuY3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5sZWdhY3lQcm9maWxlTWFuYWdlci5hZGRKYXZhU2NyaXB0UHJv
ZmlsZShwcm9maWxlKTsKLSAgICB9LAotCi0gICAgYWRkSGVhcFNuYXBzaG90Q2h1bms6IGZ1bmN0
aW9uKHVpZCwgY2h1bmspCi0gICAgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMg
KHdlIG5lZWQgaGVhcCBzbmFwc2hvdHMpLgotICAgIH0sCi0KLSAgICBmaW5pc2hIZWFwU25hcHNo
b3Q6IGZ1bmN0aW9uKHVpZCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cyAod2UgbmVlZCBoZWFwIHNuYXBzaG90cykuCi0gICAgfSwKLQotICAgIHNldFJlY29yZGluZ1By
b2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LmxlZ2FjeVByb2ZpbGVNYW5hZ2VyLnNldFJlY29yZGluZ0phdmFTY3JpcHRQcm9maWxlKGlzUHJv
ZmlsaW5nKTsKLSAgICB9LAotCi0gICAgcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3M6IGZ1bmN0
aW9uKGRvbmUsIHRvdGFsKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
ICh3ZSBuZWVkIGhlYXAgc25hcHNob3RzKS4KLSAgICB9Ci0KLX07Ci0KLVdlYkluc3BlY3Rvci5M
ZWdhY3lQcm9maWxlck9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUJvdHRvbVVwUHJv
ZmlsZURhdGFHcmlkVHJlZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjllMTE1
NjNlODY3NDk1MTMwOGY4OWVkZGZmZjgwMTRlMDc3ZjZiYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9MZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwyNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSAyODAgTm9y
dGggSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotLy8gQm90dG9tIFVwIFByb2ZpbGluZyBzaG93cyB0aGUgZW50aXJlIGNh
bGxzdGFjayBiYWNrd2FyZHM6Ci0vLyBUaGUgcm9vdCBub2RlIGlzIGEgcmVwcmVzZW50YXRpb24g
b2YgZWFjaCBpbmRpdmlkdWFsIGZ1bmN0aW9uIGNhbGxlZCwgYW5kIGVhY2ggY2hpbGQgb2YgdGhh
dCBub2RlIHJlcHJlc2VudHMKLS8vIGEgcmV2ZXJzZS1jYWxsc3RhY2sgc2hvd2luZyBob3cgbWFu
eSBvZiB0aG9zZSBjYWxscyBjYW1lIGZyb20gaXQuIFNvLCB1bmxpa2UgdG9wLWRvd24sIHRoZSBz
dGF0aXN0aWNzIGluCi0vLyBlYWNoIGNoaWxkIHN0aWxsIHJlcHJlc2VudCB0aGUgcm9vdCBub2Rl
LiBXZSBoYXZlIHRvIGJlIHBhcnRpY3VsYXJseSBjYXJlZnVsIG9mIHJlY3Vyc2lvbiB3aXRoIHRo
aXMgbW9kZQotLy8gYmVjYXVzZSBhIHJvb3Qgbm9kZSBjYW4gcmVwcmVzZW50IGl0c2VsZiBBTkQg
YW4gYW5jZXN0b3IuCi0KLVdlYkluc3BlY3Rvci5MZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3Jp
ZE5vZGUgPSBmdW5jdGlvbihwcm9maWxlTm9kZSwgb3duaW5nVHJlZSkKLXsKLSAgICBXZWJJbnNw
ZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIHByb2ZpbGVOb2RlLCBv
d25pbmdUcmVlLCB0aGlzLl93aWxsSGF2ZUNoaWxkcmVuKHByb2ZpbGVOb2RlKSk7Ci0KLSAgICB0
aGlzLl9yZW1haW5pbmdOb2RlSW5mb3MgPSBbXTsKLX0KLQotV2ViSW5zcGVjdG9yLkxlZ2FjeUJv
dHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgX3Rha2VQcm9wZXJ0
aWVzRnJvbVByb2ZpbGVEYXRhR3JpZE5vZGU6IGZ1bmN0aW9uKHByb2ZpbGVEYXRhR3JpZE5vZGUp
Ci0gICAgewotICAgICAgICB0aGlzLl9zYXZlKCk7Ci0KLSAgICAgICAgdGhpcy5zZWxmVGltZSA9
IHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlRpbWU7Ci0gICAgICAgIHRoaXMudG90YWxUaW1lID0g
cHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRpbWU7Ci0gICAgICAgIHRoaXMubnVtYmVyT2ZDYWxs
cyA9IHByb2ZpbGVEYXRhR3JpZE5vZGUubnVtYmVyT2ZDYWxsczsKLSAgICB9LAotCi0gICAgLy8g
V2hlbiBmb2N1c2luZywgd2Uga2VlcCBqdXN0IHRoZSBtZW1iZXJzIG9mIHRoZSBjYWxsc3RhY2su
Ci0gICAgX2tlZXBPbmx5Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKQotICAgIHsKLSAgICAgICAgdGhp
cy5fc2F2ZSgpOwotCi0gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdGhp
cy5hcHBlbmRDaGlsZChjaGlsZCk7Ci0gICAgfSwKLQotICAgIF9leGNsdWRlOiBmdW5jdGlvbihh
Q2FsbFVJRCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZW1haW5pbmdOb2RlSW5mb3MpCi0g
ICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZSgpOwotCi0gICAgICAgIHRoaXMuX3NhdmUoKTsKLQot
ICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOwotICAgICAgICB2YXIgaW5kZXgg
PSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsKLQotICAgICAgICB3aGlsZSAoaW5kZXgtLSkKLSAgICAg
ICAgICAgIGNoaWxkcmVuW2luZGV4XS5fZXhjbHVkZShhQ2FsbFVJRCk7Ci0KLSAgICAgICAgdmFy
IGNoaWxkID0gdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFthQ2FsbFVJRF07Ci0KLSAgICAgICAgaWYg
KGNoaWxkKQotICAgICAgICAgICAgdGhpcy5fbWVyZ2UoY2hpbGQsIHRydWUpOwotICAgIH0sCi0K
LSAgICBfcmVzdG9yZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkxl
Z2FjeVByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9yZXN0b3JlKCk7Ci0KLSAgICAgICAg
aWYgKCF0aGlzLmNoaWxkcmVuLmxlbmd0aCkKLSAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4g
PSB0aGlzLl93aWxsSGF2ZUNoaWxkcmVuKCk7Ci0gICAgfSwKLQotICAgIF9tZXJnZTogZnVuY3Rp
b24oY2hpbGQsIHNob3VsZEFic29yYikKLSAgICB7Ci0gICAgICAgIHRoaXMuc2VsZlRpbWUgLT0g
Y2hpbGQuc2VsZlRpbWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLl9tZXJnZS5jYWxsKHRoaXMsIGNoaWxkLCBzaG91bGRBYnNvcmIp
OwotICAgIH0sCi0KLSAgICBfc2hhcmVkUG9wdWxhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHZhciByZW1haW5pbmdOb2RlSW5mb3MgPSB0aGlzLl9yZW1haW5pbmdOb2RlSW5mb3M7Ci0g
ICAgICAgIHZhciBjb3VudCA9IHJlbWFpbmluZ05vZGVJbmZvcy5sZW5ndGg7Ci0KLSAgICAgICAg
Zm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgICAg
ICB2YXIgbm9kZUluZm8gPSByZW1haW5pbmdOb2RlSW5mb3NbaW5kZXhdOwotICAgICAgICAgICAg
dmFyIGFuY2VzdG9yID0gbm9kZUluZm8uYW5jZXN0b3I7Ci0gICAgICAgICAgICB2YXIgZm9jdXNO
b2RlID0gbm9kZUluZm8uZm9jdXNOb2RlOwotICAgICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5m
aW5kQ2hpbGQoYW5jZXN0b3IpOwotCi0gICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUg
dGhpcyBjaGlsZCwgdGhlbiBtZXJnZSB0aGUgZGF0YSB0b2dldGhlci4KLSAgICAgICAgICAgIGlm
IChjaGlsZCkgewotICAgICAgICAgICAgICAgIHZhciB0b3RhbFRpbWVBY2NvdW50ZWRGb3IgPSBu
b2RlSW5mby50b3RhbFRpbWVBY2NvdW50ZWRGb3I7Ci0KLSAgICAgICAgICAgICAgICBjaGlsZC5z
ZWxmVGltZSArPSBmb2N1c05vZGUuc2VsZlRpbWU7Ci0gICAgICAgICAgICAgICAgY2hpbGQubnVt
YmVyT2ZDYWxscyArPSBmb2N1c05vZGUubnVtYmVyT2ZDYWxsczsKLQotICAgICAgICAgICAgICAg
IGlmICghdG90YWxUaW1lQWNjb3VudGVkRm9yKQotICAgICAgICAgICAgICAgICAgICBjaGlsZC50
b3RhbFRpbWUgKz0gZm9jdXNOb2RlLnRvdGFsVGltZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgLy8gSWYgbm90LCBhZGQgaXQgYXMgYSB0cnVlIGFuY2VzdG9yLgotICAg
ICAgICAgICAgICAgIC8vIEluIGhlYXZ5IG1vZGUsIHdlIHRha2Ugb3VyIHZpc3VhbCBpZGVudGl0
eSBmcm9tIGFuY2VzdG9yIG5vZGUuLi4KLSAgICAgICAgICAgICAgICBjaGlsZCA9IG5ldyBXZWJJ
bnNwZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlKGFuY2VzdG9yLCB0aGlz
LnRyZWUsIGZhbHNlLCB0aGlzLnNob3dUaW1lQXNQZXJjZW50KTsKLQotICAgICAgICAgICAgICAg
IGlmIChhbmNlc3RvciAhPT0gZm9jdXNOb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGJ1
dCB0aGUgYWN0dWFsIHN0YXRpc3RpY3MgZnJvbSB0aGUgInJvb3QiIG5vZGUgKGJvdHRvbSBvZiB0
aGUgY2FsbHN0YWNrKS4KLSAgICAgICAgICAgICAgICAgICAgY2hpbGQuc2VsZlRpbWUgPSBmb2N1
c05vZGUuc2VsZlRpbWU7Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkLnRvdGFsVGltZSA9IGZv
Y3VzTm9kZS50b3RhbFRpbWU7Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkLm51bWJlck9mQ2Fs
bHMgPSBmb2N1c05vZGUubnVtYmVyT2ZDYWxsczsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgdmFyIHBhcmVudCA9IGFuY2VzdG9yLnBhcmVudDsKLSAgICAgICAgICAgIGlmIChw
YXJlbnQgJiYgcGFyZW50LnBhcmVudCkgewotICAgICAgICAgICAgICAgIG5vZGVJbmZvLmFuY2Vz
dG9yID0gcGFyZW50OwotICAgICAgICAgICAgICAgIGNoaWxkLl9yZW1haW5pbmdOb2RlSW5mb3Mu
cHVzaChub2RlSW5mbyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBkZWxl
dGUgdGhpcy5fcmVtYWluaW5nTm9kZUluZm9zOwotICAgIH0sCi0KLSAgICBfd2lsbEhhdmVDaGls
ZHJlbjogZnVuY3Rpb24ocHJvZmlsZU5vZGUpCi0gICAgewotICAgICAgICBwcm9maWxlTm9kZSA9
IHByb2ZpbGVOb2RlIHx8IHRoaXMucHJvZmlsZU5vZGU7Ci0gICAgICAgIC8vIEluIGJvdHRvbSB1
cCBtb2RlLCBvdXIgcGFyZW50cyBhcmUgb3VyIGNoaWxkcmVuIHNpbmNlIHdlIGRpc3BsYXkgYW4g
aW52ZXJ0ZWQgdHJlZS4KLSAgICAgICAgLy8gSG93ZXZlciwgd2UgZG9uJ3Qgd2FudCB0byBzaG93
IHRoZSB2ZXJ5IHRvcCBwYXJlbnQgc2luY2UgaXQgaXMgcmVkdW5kYW50LgotICAgICAgICByZXR1
cm4gISEocHJvZmlsZU5vZGUucGFyZW50ICYmIHByb2ZpbGVOb2RlLnBhcmVudC5wYXJlbnQpOwot
ICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkxlZ2FjeUJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9k
ZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlOwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0
YUdyaWRUcmVlID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUpCi17Ci0gICAgV2ViSW5zcGVjdG9yLkxl
Z2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUuY2FsbCh0aGlzLCBwcm9maWxlTm9kZSk7Ci0KLSAgICAv
LyBJdGVyYXRlIGVhY2ggbm9kZSBpbiBwcmUtb3JkZXIuCi0gICAgdmFyIHByb2ZpbGVOb2RlVUlE
cyA9IDA7Ci0gICAgdmFyIHByb2ZpbGVOb2RlR3JvdXBzID0gW1tdLCBbcHJvZmlsZU5vZGVdXTsK
LSAgICB2YXIgdmlzaXRlZFByb2ZpbGVOb2Rlc0ZvckNhbGxVSUQgPSB7fTsKLQotICAgIHRoaXMu
X3JlbWFpbmluZ05vZGVJbmZvcyA9IFtdOwotCi0gICAgZm9yICh2YXIgcHJvZmlsZU5vZGVHcm91
cEluZGV4ID0gMDsgcHJvZmlsZU5vZGVHcm91cEluZGV4IDwgcHJvZmlsZU5vZGVHcm91cHMubGVu
Z3RoOyArK3Byb2ZpbGVOb2RlR3JvdXBJbmRleCkgewotICAgICAgICB2YXIgcGFyZW50UHJvZmls
ZU5vZGVzID0gcHJvZmlsZU5vZGVHcm91cHNbcHJvZmlsZU5vZGVHcm91cEluZGV4XTsKLSAgICAg
ICAgdmFyIHByb2ZpbGVOb2RlcyA9IHByb2ZpbGVOb2RlR3JvdXBzWysrcHJvZmlsZU5vZGVHcm91
cEluZGV4XTsKLSAgICAgICAgdmFyIGNvdW50ID0gcHJvZmlsZU5vZGVzLmxlbmd0aDsKLQotICAg
ICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAg
ICAgICAgIHZhciBwcm9maWxlTm9kZSA9IHByb2ZpbGVOb2Rlc1tpbmRleF07Ci0KLSAgICAgICAg
ICAgIGlmICghcHJvZmlsZU5vZGUuVUlEKQotICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLlVJ
RCA9ICsrcHJvZmlsZU5vZGVVSURzOwotCi0gICAgICAgICAgICBpZiAocHJvZmlsZU5vZGUuaGVh
ZCAmJiBwcm9maWxlTm9kZSAhPT0gcHJvZmlsZU5vZGUuaGVhZCkgewotICAgICAgICAgICAgICAg
IC8vIFRoZSB0b3RhbCB0aW1lIG9mIHRoaXMgYW5jZXN0b3IgaXMgYWNjb3VudGVkIGZvciBpZiB3
ZSdyZSBpbiBhbnkgZm9ybSBvZiByZWN1cnNpdmUgY3ljbGUuCi0gICAgICAgICAgICAgICAgdmFy
IHZpc2l0ZWROb2RlcyA9IHZpc2l0ZWRQcm9maWxlTm9kZXNGb3JDYWxsVUlEW3Byb2ZpbGVOb2Rl
LmNhbGxVSURdOwotICAgICAgICAgICAgICAgIHZhciB0b3RhbFRpbWVBY2NvdW50ZWRGb3IgPSBm
YWxzZTsKLQotICAgICAgICAgICAgICAgIGlmICghdmlzaXRlZE5vZGVzKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZpc2l0ZWROb2RlcyA9IHt9OwotICAgICAgICAgICAgICAgICAgICB2aXNpdGVk
UHJvZmlsZU5vZGVzRm9yQ2FsbFVJRFtwcm9maWxlTm9kZS5jYWxsVUlEXSA9IHZpc2l0ZWROb2Rl
czsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUg
dG90YWwgdGltZSBmb3IgdGhpcyBub2RlIGhhcyBhbHJlYWR5IGJlZW4gYWNjb3VudGVkIGZvciBp
ZmYgb25lIG9mIGl0J3MgcGFyZW50cyBoYXMgYWxyZWFkeSBiZWVuIHZpc2l0ZWQuCi0gICAgICAg
ICAgICAgICAgICAgIC8vIFdlIGNhbiBkbyB0aGlzIGNoZWNrIGluIHRoaXMgc3R5bGUgYmVjYXVz
ZSB3ZSBhcmUgdHJhdmVyc2luZyB0aGUgdHJlZSBpbiBwcmUtb3JkZXIuCi0gICAgICAgICAgICAg
ICAgICAgIHZhciBwYXJlbnRDb3VudCA9IHBhcmVudFByb2ZpbGVOb2Rlcy5sZW5ndGg7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciAodmFyIHBhcmVudEluZGV4ID0gMDsgcGFyZW50SW5kZXggPCBw
YXJlbnRDb3VudDsgKytwYXJlbnRJbmRleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZpc2l0ZWROb2Rlc1twYXJlbnRQcm9maWxlTm9kZXNbcGFyZW50SW5kZXhdLlVJRF0pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFRpbWVBY2NvdW50ZWRGb3IgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgdmlzaXRlZE5vZGVzW3Byb2ZpbGVOb2RlLlVJRF0gPSB0cnVlOwotCi0gICAgICAg
ICAgICAgICAgdGhpcy5fcmVtYWluaW5nTm9kZUluZm9zLnB1c2goeyBhbmNlc3Rvcjpwcm9maWxl
Tm9kZSwgZm9jdXNOb2RlOnByb2ZpbGVOb2RlLCB0b3RhbFRpbWVBY2NvdW50ZWRGb3I6dG90YWxU
aW1lQWNjb3VudGVkRm9yIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgY2hp
bGRyZW4gPSBwcm9maWxlTm9kZS5jaGlsZHJlbjsKLSAgICAgICAgICAgIGlmIChjaGlsZHJlbi5s
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBwcm9maWxlTm9kZUdyb3Vwcy5wdXNoKHBhcmVudFBy
b2ZpbGVOb2Rlcy5jb25jYXQoW3Byb2ZpbGVOb2RlXSkpOwotICAgICAgICAgICAgICAgIHByb2Zp
bGVOb2RlR3JvdXBzLnB1c2goY2hpbGRyZW4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgLy8gUG9wdWxhdGUgdGhlIHRvcCBsZXZlbCBub2Rlcy4KLSAgICBXZWJJbnNw
ZWN0b3IuTGVnYWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fcG9wdWxh
dGUuY2FsbCh0aGlzKTsKLQotICAgIHJldHVybiB0aGlzOwotfQotCi1XZWJJbnNwZWN0b3IuTGVn
YWN5Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZSA9IHsKLSAgICAvLyBXaGVu
IGZvY3VzaW5nLCB3ZSBrZWVwIHRoZSBlbnRpcmUgY2FsbHN0YWNrIHVwIHRvIHRoaXMgYW5jZXN0
b3IuCi0gICAgZm9jdXM6IGZ1bmN0aW9uKHByb2ZpbGVEYXRhR3JpZE5vZGUpCi0gICAgewotICAg
ICAgICBpZiAoIXByb2ZpbGVEYXRhR3JpZE5vZGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdGhpcy5fc2F2ZSgpOwotCi0gICAgICAgIHZhciBjdXJyZW50Tm9kZSA9IHByb2ZpbGVE
YXRhR3JpZE5vZGU7Ci0gICAgICAgIHZhciBmb2N1c05vZGUgPSBwcm9maWxlRGF0YUdyaWROb2Rl
OwotCi0gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZS5wYXJlbnQgJiYgKGN1cnJlbnROb2RlIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3JpZE5vZGUpKSB7Ci0gICAg
ICAgICAgICBjdXJyZW50Tm9kZS5fdGFrZVByb3BlcnRpZXNGcm9tUHJvZmlsZURhdGFHcmlkTm9k
ZShwcm9maWxlRGF0YUdyaWROb2RlKTsKLQotICAgICAgICAgICAgZm9jdXNOb2RlID0gY3VycmVu
dE5vZGU7Ci0gICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudDsKLQot
ICAgICAgICAgICAgaWYgKGN1cnJlbnROb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxlZ2Fj
eVByb2ZpbGVEYXRhR3JpZE5vZGUpCi0gICAgICAgICAgICAgICAgY3VycmVudE5vZGUuX2tlZXBP
bmx5Q2hpbGQoZm9jdXNOb2RlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY2hpbGRyZW4g
PSBbZm9jdXNOb2RlXTsKLSAgICAgICAgdGhpcy50b3RhbFRpbWUgPSBwcm9maWxlRGF0YUdyaWRO
b2RlLnRvdGFsVGltZTsKLSAgICB9LAotCi0gICAgZXhjbHVkZTogZnVuY3Rpb24ocHJvZmlsZURh
dGFHcmlkTm9kZSkKLSAgICB7Ci0gICAgICAgIGlmICghcHJvZmlsZURhdGFHcmlkTm9kZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9zYXZlKCk7Ci0KLSAgICAgICAgdmFy
IGV4Y2x1ZGVkQ2FsbFVJRCA9IHByb2ZpbGVEYXRhR3JpZE5vZGUuY2FsbFVJRDsKLSAgICAgICAg
dmFyIGV4Y2x1ZGVkVG9wTGV2ZWxDaGlsZCA9IHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbZXhjbHVk
ZWRDYWxsVUlEXTsKLQotICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdG9wIGxldmVsIG5vZGUgdGhh
dCBpcyBleGNsdWRlZCwgZ2V0IHJpZCBvZiBpdCBjb21wbGV0ZWx5IChub3Qga2VlcGluZyBjaGls
ZHJlbiksCi0gICAgICAgIC8vIHNpbmNlIGJvdHRvbSB1cCBkYXRhIHJlbGllcyBlbnRpcmVseSBv
biB0aGUgcm9vdCBub2RlLgotICAgICAgICBpZiAoZXhjbHVkZWRUb3BMZXZlbENoaWxkKQotICAg
ICAgICAgICAgdGhpcy5jaGlsZHJlbi5yZW1vdmUoZXhjbHVkZWRUb3BMZXZlbENoaWxkKTsKLQot
ICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOwotICAgICAgICB2YXIgY291bnQg
PSBjaGlsZHJlbi5sZW5ndGg7Ci0KLSAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8
IGNvdW50OyArK2luZGV4KQotICAgICAgICAgICAgY2hpbGRyZW5baW5kZXhdLl9leGNsdWRlKGV4
Y2x1ZGVkQ2FsbFVJRCk7Ci0KLSAgICAgICAgaWYgKHRoaXMubGFzdENvbXBhcmF0b3IpCi0gICAg
ICAgICAgICB0aGlzLnNvcnQodGhpcy5sYXN0Q29tcGFyYXRvciwgdHJ1ZSk7Ci0gICAgfSwKLQot
ICAgIF9zaGFyZWRQb3B1bGF0ZTogV2ViSW5zcGVjdG9yLkxlZ2FjeUJvdHRvbVVwUHJvZmlsZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUuX3NoYXJlZFBvcHVsYXRlCi19Ci0KLVdlYkluc3BlY3Rvci5M
ZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZTsKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5SmF2
YVNjcmlwdFByb2ZpbGVPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMWFmYWU0MTlhM2ZhZjk1NDI4MTM1ODg2NjZlN2RlY2YzM2RmMmQ0
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lKYXZhU2NyaXB0UHJvZmls
ZU9iamVjdC5qcworKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1X
ZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVPYmplY3QgPSBmdW5jdGlvbih0aXRs
ZSwgaWQsIHJlY29yZGluZykKLXsKLSAgICBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU9iamVj
dC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5cGUuVHlw
ZUlkLCB0aXRsZSwgaWQsIHJlY29yZGluZyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5SmF2
YVNjcmlwdFByb2ZpbGVPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVPYmplY3QKLX07Ci0KLVdlYkluc3BlY3Rv
ci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5SmF2YVNjcmlwdFBy
b2ZpbGVUeXBlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVUeXBlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxOGY4MzYxNTVlYzY3ZDAyMGI4Yzc5ZDZlYjNmMDI3N2E3MzBjMTRhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlVHlwZS5qcworKysg
L2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2Zp
bGVUeXBlID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVHlw
ZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5cGUuVHlw
ZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgSmF2YVNjcmlwdCBQcm9maWxlIikp
OwotICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOwotICAgIFdlYkluc3BlY3Rvci5MZWdhY3lK
YXZhU2NyaXB0UHJvZmlsZVR5cGUuaW5zdGFuY2UgPSB0aGlzOwotfQotCi1XZWJJbnNwZWN0b3Iu
TGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVUeXBlLlR5cGVJZCA9ICJDUFUiOwotCi1XZWJJbnNwZWN0
b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgYnV0
dG9uVG9vbHRpcCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIEphdmFTY3JpcHQgcHJvZmlsaW5nLiIpIDogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTdGFydCBKYXZhU2NyaXB0IHByb2ZpbGluZy4iKTsKLSAgICB9LAot
Ci0gICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X3JlY29yZGluZykgewotICAgICAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nUHJvZmlsZSgpOwot
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmVuYWJsZVJlc291cmNlVHJh
Y2tpbmcoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3
b3JrTWFuYWdlci5kaXNhYmxlUmVzb3VyY2VUcmFja2luZygpOwotICAgICAgICAgICAgdGhpcy5z
dGFydFJlY29yZGluZ1Byb2ZpbGUoKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBnZXQgdHJl
ZUl0ZW1UaXRsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJKQVZBU0NSSVBUIFBST0ZJTEVTIik7Ci0gICAgfSwKLQotICAgIGdldCBkZXNjcmlwdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJKYXZhU2NyaXB0
IHByb2ZpbGVzIHNob3cgd2hlcmUgdGhlIGV4ZWN1dGlvbiB0aW1lIGlzIHNwZW50IGluIHlvdXIg
cGFnZSdzIEphdmFTY3JpcHQgZnVuY3Rpb25zLiIpOwotICAgIH0sCi0KLSAgICBpc1JlY29yZGlu
Z1Byb2ZpbGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRp
bmc7Ci0gICAgfSwKLQotICAgIHN0YXJ0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1ZTsKLSAgICAgICAgUHJvZmlsZXJBZ2Vu
dC5zdGFydCgpOwotICAgIH0sCi0KLSAgICBzdG9wUmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgICAgIFByb2Zp
bGVyQWdlbnQuc3RvcCgpOwotICAgIH0sCi0KLSAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5j
dGlvbihpc1Byb2ZpbGluZykKLSAgICB7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZyA9IGlzUHJv
ZmlsaW5nOwotICAgIH0sCi0KLSAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxl
OiBmdW5jdGlvbihwcm9maWxlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuTGVnYWN5UHJvZmlsZVNpZGViYXJUcmVlRWxlbWVudChwcm9maWxlLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlByb2ZpbGUgJWQiKSwgInByb2ZpbGUtc2lkZWJhci10cmVlLWl0ZW0iKTsKLSAg
ICB9LAotCi0gICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldyhwcm9m
aWxlKTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVR5
cGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVHlwZS5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuY3NzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVWaWV3LmNz
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JmOThhMTdkOWIxNzc3YjE4MWRmYjI2
OTZiNWQ4MmMyOTQ3OGE2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lK
YXZhU2NyaXB0UHJvZmlsZVZpZXcuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLS5jb250ZW50LXZpZXcucHJvZmlsZS12aWV3ID4gLmRhdGEtZ3JpZCB7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiAwOwotICAgIHJp
Z2h0OiAwOwotICAgIGJvdHRvbTogMDsKLX0KLQotLnByb2ZpbGUtdmlldyAuZGF0YS1ncmlkIHRo
LmF2ZXJhZ2UtY29sdW1uIHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5wcm9maWxl
LXZpZXcgLmRhdGEtZ3JpZCB0ZC5hdmVyYWdlLWNvbHVtbiB7Ci0gICAgdGV4dC1hbGlnbjogcmln
aHQ7Ci19Ci0KLS5wcm9maWxlLXZpZXcgLmRhdGEtZ3JpZCB0aC5zZWxmLWNvbHVtbiB7Ci0gICAg
dGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0ucHJvZmlsZS12aWV3IC5kYXRhLWdyaWQgdGQuc2Vs
Zi1jb2x1bW4gewotICAgIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi0ucHJvZmlsZS12aWV3IC5k
YXRhLWdyaWQgdGgudG90YWwtY29sdW1uIHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0K
LS5wcm9maWxlLXZpZXcgLmRhdGEtZ3JpZCB0ZC50b3RhbC1jb2x1bW4gewotICAgIHRleHQtYWxp
Z246IHJpZ2h0OwotfQotCi0ucHJvZmlsZS12aWV3IC5kYXRhLWdyaWQgLmNhbGxzLWNvbHVtbiB7
Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0ucHJvZmlsZS1ub2RlLWZpbGUgewotICAg
IGZsb2F0OiByaWdodDsKLSAgICBjb2xvcjogZ3JheTsKLSAgICBtYXJnaW4tdG9wOiAtMXB4Owot
fQotCi0uZGF0YS1ncmlkIHRyLnNlbGVjdGVkIC5wcm9maWxlLW5vZGUtZmlsZSB7Ci0gICAgY29s
b3I6IHJnYigzMyUsIDMzJSwgMzMlKTsKLX0KLQotLmRhdGEtZ3JpZDpmb2N1cyB0ci5zZWxlY3Rl
ZCAucHJvZmlsZS1ub2RlLWZpbGUgewotICAgIGNvbG9yOiB3aGl0ZTsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUphdmFTY3Jp
cHRQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZWRlNzY1ZTRkNjA1YzA2YWNiNDIwYTc2OGU4ZjA4YTE5MGEzZjJlOC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuanMK
KysrIC9kZXYvbnVsbApAQCAtMSw0NTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0
UHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQotewotICAgIGNvbnNvbGUuYXNzZXJ0KHBy
b2ZpbGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2ZpbGVPYmpl
Y3QpOwotCi0gICAgV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVWaWV3LmNhbGwodGhpcywgcHJv
ZmlsZSwgImphdmFzY3JpcHQtcHJvZmlsZXItc2hvdy10aW1lLWFzLXBlcmNlbnQiKTsKLQotICAg
IHRoaXMuX3Nob3dUcmVlQm90dG9tVXBTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5n
KCJqYXZhc2NyaXB0LXByb2ZpbGVyLXNob3ctdHJlZS1ib3R0b20tdXAiLCB0cnVlKTsKLQotICAg
IHRoaXMuX3Nob3dUcmVlQm90dG9tVXBOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
QWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvdy10cmVlLWJvdHRvbS11cC1uYXZpZ2F0
aW9uLWl0ZW0iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkludmVydCBjYWxsIHRyZWUiKSwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJOb3JtYWwgY2FsbCB0cmVlIiksICJJbWFnZXMvQm90dG9tVXBU
cmVlLnN2ZyIsIDE2LCAxNik7Ci0gICAgdGhpcy5fc2hvd1RyZWVCb3R0b21VcE5hdmlnYXRpb25J
dGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZUJvdHRvbVVwVmlldywgdGhpcyk7Ci0gICAgdGhpcy5f
c2hvd1RyZWVCb3R0b21VcE5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IHRoaXMuX3Nob3dUcmVl
Qm90dG9tVXBTZXR0aW5nLnZhbHVlOwotCi0gICAgdGhpcy5fdmlld1R5cGUgPSBuZXcgV2ViSW5z
cGVjdG9yLlNldHRpbmcoImphdmFzY3JpcHQtcHJvZmlsZXItdmlldyIsIFdlYkluc3BlY3Rvci5M
ZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuX1R5cGVIZWF2eSk7Ci19Ci0KLVdlYkluc3BlY3Rv
ci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZpZXcuX1R5cGVUcmVlID0gIlRyZWUiOwotV2ViSW5z
cGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5fVHlwZUhlYXZ5ID0gIkhlYXZ5IjsK
LQotV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MZWdhY3lKYXZhU2NyaXB0UHJvZmlsZVZp
ZXcsCi0KLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0
aGlzLmRhdGFHcmlkKQotICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsK
LSAgICB9LAotCi0gICAgZ2V0IHJlY29yZGluZ1RpdGxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZGluZyBKYXZhU2NyaXB0IFByb2ZpbGVcdTIw
MjYiKTsKLSAgICB9LAotCi0gICAgZGlzcGxheVByb2ZpbGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHZhciBjb2x1bW5zID0geyAic2VsZiI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2VsZiIpLCB3aWR0aDogIjcycHgiLCBzb3J0OiAiZGVzY2VuZGluZyIsIHNvcnRhYmxl
OiB0cnVlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAidG90YWwiOiB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxlOiB0cnVl
IH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXZlcmFnZSI6IHsgdGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQXZlcmFnZSIpLCB3aWR0aDogIjcycHgiLCBzb3J0YWJsZTogdHJ1ZSB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxzIjogeyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDYWxscyIpLCB3aWR0aDogIjU0cHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJGdW5jdGlvbiIpLCBkaXNjbG9zdXJlOiB0cnVlLCBzb3J0YWJsZTogdHJ1ZSB9IH07
Ci0KLSAgICAgICAgdGhpcy5kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29s
dW1ucyk7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnREYXRhLCB0aGlzKTsKLQot
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5kYXRhR3JpZC5lbGVtZW50KTsK
LSAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICBmdW5jdGlv
biBwcm9maWxlQ2FsbGJhY2soZXJyb3IsIHByb2ZpbGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmICgh
cHJvZmlsZS5oZWFkKSB7Ci0gICAgICAgICAgICAgICAgLy8gUHJvZmlsaW5nIHdhcyB0ZW50YXRp
dmVseSB0ZXJtaW5hdGVkIHdpdGggdGhlICJDbGVhciBhbGwgcHJvZmlsZXMuIiBidXR0b24uCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5w
cm9maWxlLmhlYWQgPSBwcm9maWxlLmhlYWQ7Ci0gICAgICAgICAgICB0aGlzLl9hc3NpZ25QYXJl
bnRzSW5Qcm9maWxlKCk7Ci0gICAgICAgICAgICB0aGlzLl9jaGFuZ2VWaWV3KCk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNik6IGdldENQVVByb2ZpbGUgdXNl
IHRvIGJlIGNhbGxlZCBnZXRQcm9maWxlLgotICAgICAgICBpZiAoUHJvZmlsZXJBZ2VudC5nZXRQ
cm9maWxlKQotICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMucHJvZmls
ZS50eXBlLCB0aGlzLnByb2ZpbGUuaWQsIHByb2ZpbGVDYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5nZXRDUFVQcm9maWxlKHRoaXMu
cHJvZmlsZS5pZCwgcHJvZmlsZUNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAgICBn
ZXQgbmF2aWdhdGlvbkl0ZW1zKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fc2hvd1Ry
ZWVCb3R0b21VcE5hdmlnYXRpb25JdGVtLCB0aGlzLnNob3dUaW1lQXNQZXJjZW50TmF2aWdhdGlv
bkl0ZW1dOwotICAgIH0sCi0KLSAgICBnZXQgYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKQot
ICAgICAgICAgICAgdGhpcy5fYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlID0gbmV3IFdlYklu
c3BlY3Rvci5MZWdhY3lCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUodGhpcy5wcm9maWxlLmhl
YWQpOwotICAgICAgICByZXR1cm4gdGhpcy5fYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlOwot
ICAgIH0sCi0KLSAgICBnZXQgdG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUoKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLl90b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSkKLSAgICAgICAgICAg
IHRoaXMuX3RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5MZWdh
Y3lUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSh0aGlzLnByb2ZpbGUuaGVhZCk7Ci0gICAgICAg
IHJldHVybiB0aGlzLl90b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZTsKLSAgICB9LAotCi0gICAg
d2lsbEhpZGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hS
ZXN1bHRJbmRleCA9IC0xOwotICAgIH0sCi0KLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB2YXIgc2VsZWN0ZWRQcm9maWxlTm9kZSA9IHRoaXMuZGF0YUdyaWQuc2VsZWN0
ZWROb2RlID8gdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUucHJvZmlsZU5vZGUgOiBudWxsOwot
Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICB2YXIg
Y2hpbGRyZW4gPSB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuY2hpbGRyZW47Ci0gICAgICAgIHZh
ciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsKLQotICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7
IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCi0gICAgICAgICAgICB0aGlzLmRhdGFHcmlkLmFwcGVu
ZENoaWxkKGNoaWxkcmVuW2luZGV4XSk7Ci0KLSAgICAgICAgaWYgKHNlbGVjdGVkUHJvZmlsZU5v
ZGUpCi0gICAgICAgICAgICBzZWxlY3RlZFByb2ZpbGVOb2RlLnNlbGVjdGVkID0gdHJ1ZTsKLSAg
ICB9LAotCi0gICAgcmVmcmVzaFZpc2libGVEYXRhOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICB2YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVuWzBdOwotICAgICAgICB3aGlsZSAo
Y2hpbGQpIHsKLSAgICAgICAgICAgIGNoaWxkLnJlZnJlc2godGhpcy5zaG93VGltZUFzUGVyY2Vu
dC52YWx1ZSk7Ci0gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4dE5vZGUoZmFs
c2UsIG51bGwsIHRydWUpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHNlYXJjaENhbmNlbGVk
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fc2VhcmNoUmVzdWx0cykgewot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHByb2ZpbGVOb2RlID0gdGhpcy5fc2VhcmNo
UmVzdWx0c1tpXS5wcm9maWxlTm9kZTsKLQotICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxl
Tm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW47Ci0gICAgICAgICAgICAgICAgZGVsZXRlIHBy
b2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW47Ci0gICAgICAgICAgICAgICAgZGVs
ZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW47Ci0gICAgICAgICAgICAg
ICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW47Ci0KLSAg
ICAgICAgICAgICAgICBwcm9maWxlTm9kZS5yZWZyZXNoKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjazsKLSAg
ICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gLTE7Ci0gICAgICAgIHRoaXMu
X3NlYXJjaFJlc3VsdHMgPSBbXTsKLSAgICB9LAotCi0gICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rp
b24ocXVlcnksIGZpbmlzaGVkQ2FsbGJhY2spCi0gICAgewotICAgICAgICAvLyBDYWxsIHNlYXJj
aENhbmNlbGVkIHNpbmNlIGl0IHdpbGwgcmVzZXQgZXZlcnl0aGluZyB3ZSBuZWVkIGJlZm9yZSBk
b2luZyBhIG5ldyBzZWFyY2guCi0gICAgICAgIHRoaXMuc2VhcmNoQ2FuY2VsZWQoKTsKLQotICAg
ICAgICBxdWVyeSA9IHF1ZXJ5LnRyaW0oKTsKLQotICAgICAgICBpZiAoIXF1ZXJ5Lmxlbmd0aCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxi
YWNrID0gZmluaXNoZWRDYWxsYmFjazsKLQotICAgICAgICB2YXIgZ3JlYXRlclRoYW4gPSBxdWVy
eS5jaGFyQXQoMCkgPT09ICI+IjsKLSAgICAgICAgdmFyIGxlc3NUaGFuID0gcXVlcnkuY2hhckF0
KDApID09PSAiPCI7Ci0gICAgICAgIHZhciBlcXVhbFRvID0gKHF1ZXJ5LmNoYXJBdCgwKSA9PT0g
Ij0iIHx8ICgoZ3JlYXRlclRoYW4gfHwgbGVzc1RoYW4pICYmIHF1ZXJ5LmNoYXJBdCgxKSA9PT0g
Ij0iKSk7Ci0gICAgICAgIHZhciBwZXJjZW50VW5pdHMgPSAocXVlcnkubGFzdEluZGV4T2YoIiUi
KSA9PT0gKHF1ZXJ5Lmxlbmd0aCAtIDEpKTsKLSAgICAgICAgdmFyIG1pbGxpc2Vjb25kc1VuaXRz
ID0gKHF1ZXJ5Lmxlbmd0aCA+IDIgJiYgcXVlcnkubGFzdEluZGV4T2YoIm1zIikgPT09IChxdWVy
eS5sZW5ndGggLSAyKSk7Ci0gICAgICAgIHZhciBzZWNvbmRzVW5pdHMgPSAoIW1pbGxpc2Vjb25k
c1VuaXRzICYmIHF1ZXJ5Lmxhc3RJbmRleE9mKCJzIikgPT09IChxdWVyeS5sZW5ndGggLSAxKSk7
Ci0KLSAgICAgICAgdmFyIHF1ZXJ5TnVtYmVyID0gcGFyc2VGbG9hdChxdWVyeSk7Ci0gICAgICAg
IGlmIChncmVhdGVyVGhhbiB8fCBsZXNzVGhhbiB8fCBlcXVhbFRvKSB7Ci0gICAgICAgICAgICBp
ZiAoZXF1YWxUbyAmJiAoZ3JlYXRlclRoYW4gfHwgbGVzc1RoYW4pKQotICAgICAgICAgICAgICAg
IHF1ZXJ5TnVtYmVyID0gcGFyc2VGbG9hdChxdWVyeS5zdWJzdHJpbmcoMikpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHF1ZXJ5TnVtYmVyID0gcGFyc2VGbG9hdChxdWVyeS5z
dWJzdHJpbmcoMSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHF1ZXJ5TnVtYmVyTWlsbGlz
ZWNvbmRzID0gKHNlY29uZHNVbml0cyA/IChxdWVyeU51bWJlciAqIDEwMDApIDogcXVlcnlOdW1i
ZXIpOwotCi0gICAgICAgIC8vIE1ha2UgZXF1YWxUbyBpbXBsaWNpdGx5IHRydWUgaWYgaXQgd2Fz
bid0IHNwZWNpZmllZCB0aGVyZSBpcyBubyBvdGhlciBvcGVyYXRvci4KLSAgICAgICAgaWYgKCFp
c05hTihxdWVyeU51bWJlcikgJiYgIShncmVhdGVyVGhhbiB8fCBsZXNzVGhhbikpCi0gICAgICAg
ICAgICBlcXVhbFRvID0gdHJ1ZTsKLQotICAgICAgICBmdW5jdGlvbiBtYXRjaGVzUXVlcnkoLypQ
cm9maWxlRGF0YUdyaWROb2RlKi8gcHJvZmlsZURhdGFHcmlkTm9kZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgZGVsZXRlIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29s
dW1uOwotICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNo
ZWRUb3RhbENvbHVtbjsKLSAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9z
ZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbjsKLSAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0
YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW47Ci0gICAgICAgICAgICBkZWxldGUg
cHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uOwotCi0gICAg
ICAgICAgICBpZiAocGVyY2VudFVuaXRzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxlc3NUaGFu
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnNlbGZQZXJj
ZW50IDwgcXVlcnlOdW1iZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsUGVyY2VudCA8IHF1ZXJ5TnVtYmVyKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZFRvdGFsQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRh
R3JpZE5vZGUuYXZlcmFnZVBlcmNlbnQgPCBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVy
YWdlQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdyZWF0ZXJUaGFu
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnNlbGZQZXJj
ZW50ID4gcXVlcnlOdW1iZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsUGVyY2VudCA+IHF1ZXJ5TnVtYmVyKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZFRvdGFsQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRh
R3JpZE5vZGUuYXZlcmFnZVBlcmNlbnQgPCBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVy
YWdlQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoZXF1YWxUbykgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9k
ZS5zZWxmUGVyY2VudCA9PSBxdWVyeU51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUudG90YWxQZXJjZW50ID09IHF1
ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5f
c2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2ZpbGVEYXRhR3JpZE5vZGUuYXZlcmFnZVBlcmNlbnQgPCBxdWVyeU51bWJlck1pbGxpc2Vj
b25kcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJj
aE1hdGNoZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKG1pbGxpc2Vjb25kc1VuaXRzIHx8IHNlY29uZHNVbml0cykgewotICAg
ICAgICAgICAgICAgIGlmIChsZXNzVGhhbikgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJv
ZmlsZURhdGFHcmlkTm9kZS5zZWxmVGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNl
bGZDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlk
Tm9kZS50b3RhbFRpbWUgPCBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmF2ZXJh
Z2VUaW1lIDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbiA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVyVGhhbikgewotICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmVGltZSA+IHF1ZXJ5TnVtYmVyTWls
bGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5f
c2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAo
cHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRpbWUgPiBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykK
LSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNo
ZWRUb3RhbENvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0
YUdyaWROb2RlLmF2ZXJhZ2VUaW1lID4gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFn
ZUNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KGVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUu
c2VsZlRpbWUgPT0gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsVGltZSA9
PSBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2Zp
bGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmF2ZXJhZ2VUaW1lID09IHF1ZXJ5
TnVtYmVyTWlsbGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFH
cmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVxdWFsVG8g
JiYgcHJvZmlsZURhdGFHcmlkTm9kZS5udW1iZXJPZkNhbGxzID09IHF1ZXJ5TnVtYmVyKQotICAg
ICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHND
b2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChncmVhdGVyVGhhbiAmJiBwcm9maWxl
RGF0YUdyaWROb2RlLm51bWJlck9mQ2FsbHMgPiBxdWVyeU51bWJlcikKLSAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4gJiYgcHJvZmlsZURhdGFHcmlkTm9kZS5u
dW1iZXJPZkNhbGxzIDwgcXVlcnlOdW1iZXIpCi0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGVE
YXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbiA9IHRydWU7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmZ1bmN0aW9uTmFtZS5o
YXNTdWJzdHJpbmcocXVlcnksIHRydWUpIHx8IHByb2ZpbGVEYXRhR3JpZE5vZGUudXJsLmhhc1N1
YnN0cmluZyhxdWVyeSwgdHJ1ZSkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9k
ZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTsKLQotICAgICAgICAgICAgaWYg
KHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uIHx8Ci0gICAgICAg
ICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uIHx8
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJh
Z2VDb2x1bW4gfHwKLSAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hN
YXRjaGVkQ2FsbHNDb2x1bW4gfHwKLSAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2Rl
Ll9zZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5yZWZyZXNoKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZhciBjdXJyZW50ID0gdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVl
LmNoaWxkcmVuWzBdOwotCi0gICAgICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBp
ZiAobWF0Y2hlc1F1ZXJ5KGN1cnJlbnQpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2VhcmNo
UmVzdWx0cy5wdXNoKHsgcHJvZmlsZU5vZGU6IGN1cnJlbnQgfSk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51
bGwsIGZhbHNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbmlzaGVkQ2FsbGJhY2sodGhpcywg
dGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOwotICAgIH0sCi0KLSAgICBqdW1wVG9GaXJzdFNl
YXJjaFJlc3VsdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hS
ZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKLSAgICAgICAg
dGhpcy5fanVtcFRvU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7
Ci0gICAgfSwKLQotICAgIGp1bXBUb0xhc3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0
cy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleCA9ICh0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpOwotICAgICAg
ICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4
KTsKLSAgICB9LAotCi0gICAganVtcFRvTmV4dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1
bHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCsrdGhpcy5fY3Vy
cmVudFNlYXJjaFJlc3VsdEluZGV4ID49IHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQotICAg
ICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKLSAgICAgICAgdGhp
cy5fanVtcFRvU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7Ci0g
ICAgfSwKLQotICAgIGp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3Vs
dHMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoLS10aGlzLl9jdXJy
ZW50U2VhcmNoUmVzdWx0SW5kZXggPCAwKQotICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJj
aFJlc3VsdEluZGV4ID0gKHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7Ci0gICAgICAg
IHRoaXMuX2p1bXBUb1NlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgp
OwotICAgIH0sCi0KLSAgICBzaG93aW5nRmlyc3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID09PSAw
KTsKLSAgICB9LAotCi0gICAgc2hvd2luZ0xhc3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAodGhpcy5fc2VhcmNoUmVzdWx0cyAmJiB0aGlzLl9jdXJyZW50
U2VhcmNoUmVzdWx0SW5kZXggPT09ICh0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpKTsK
LSAgICB9LAotCi0gICAgX2p1bXBUb1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oaW5kZXgpCi0gICAg
ewotICAgICAgICB2YXIgc2VhcmNoUmVzdWx0ID0gdGhpcy5fc2VhcmNoUmVzdWx0c1tpbmRleF07
Ci0gICAgICAgIGlmICghc2VhcmNoUmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHZhciBwcm9maWxlTm9kZSA9IHNlYXJjaFJlc3VsdC5wcm9maWxlTm9kZTsKLSAgICAgICAg
cHJvZmlsZU5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgfSwKLQotICAgIF90b2dnbGVCb3R0
b21VcFZpZXc6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fc2hvd1RyZWVC
b3R0b21VcFNldHRpbmcudmFsdWUgPSAhdGhpcy5fc2hvd1RyZWVCb3R0b21VcFNldHRpbmcudmFs
dWU7Ci0gICAgICAgIHRoaXMuX3Nob3dUcmVlQm90dG9tVXBOYXZpZ2F0aW9uSXRlbS5hY3RpdmF0
ZWQgPSB0aGlzLl9zaG93VHJlZUJvdHRvbVVwU2V0dGluZy52YWx1ZTsKLSAgICAgICAgdGhpcy5f
Y2hhbmdlVmlldygpOwotICAgIH0sCi0KLSAgICBfY2hhbmdlVmlldzogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgICAgIGlmICghdGhpcy5fc2hvd1RyZWVCb3R0b21VcFNldHRpbmcudmFsdWUpIHsKLSAg
ICAgICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZSA9IHRoaXMudG9wRG93blByb2ZpbGVE
YXRhR3JpZFRyZWU7Ci0gICAgICAgICAgICB0aGlzLl9zb3J0UHJvZmlsZSgpOwotICAgICAgICAg
ICAgdGhpcy5fdmlld1R5cGUudmFsdWUgPSBXZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFBy
b2ZpbGVWaWV3Ll9UeXBlVHJlZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMu
cHJvZmlsZURhdGFHcmlkVHJlZSA9IHRoaXMuYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlOwot
ICAgICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUoKTsKLSAgICAgICAgICAgIHRoaXMuX3ZpZXdU
eXBlLnZhbHVlID0gV2ViSW5zcGVjdG9yLkxlZ2FjeUphdmFTY3JpcHRQcm9maWxlVmlldy5fVHlw
ZUhlYXZ5OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVyeSB8fCAh
dGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cykKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBUaGUgY3VycmVudCBzZWFyY2ggbmVlZHMg
dG8gYmUgcGVyZm9ybWVkIGFnYWluLiBGaXJzdCBuZWdhdGUgb3V0IHByZXZpb3VzIG1hdGNoCi0g
ICAgICAgIC8vIGNvdW50IGJ5IGNhbGxpbmcgdGhlIHNlYXJjaCBmaW5pc2hlZCBjYWxsYmFjayB3
aXRoIGEgbmVnYXRpdmUgbnVtYmVyIG9mIG1hdGNoZXMuCi0gICAgICAgIC8vIFRoZW4gcGVyZm9y
bSB0aGUgc2VhcmNoIGFnYWluIHRoZSB3aXRoIHNhbWUgcXVlcnkgYW5kIGNhbGxiYWNrLgotICAg
ICAgICB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrKHRoaXMsIC10aGlzLl9zZWFyY2hSZXN1
bHRzLmxlbmd0aCk7Ci0gICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCh0aGlzLmN1cnJlbnRRdWVy
eSwgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIHRvZ2dsZVRp
bWVEaXNwbGF5OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5M
ZWdhY3lQcm9maWxlVmlldy5wcm90b3R5cGUudG9nZ2xlVGltZURpc3BsYXkuY2FsbCh0aGlzLCBl
dmVudCk7Ci0gICAgICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQudmFsdWUgPSAhdGhpcy5zaG93
VGltZUFzUGVyY2VudC52YWx1ZTsKLSAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsK
LSAgICB9LAotCi0gICAgX2ZvY3VzQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICBpZiAoIXRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5mb2N1cyh0aGlzLmRhdGFHcmlk
LnNlbGVjdGVkTm9kZSk7Ci0gICAgICAgIHRoaXMucmVmcmVzaCgpOwotICAgICAgICB0aGlzLnJl
ZnJlc2hWaXNpYmxlRGF0YSgpOwotICAgIH0sCi0KLSAgICBfZXhjbHVkZUNsaWNrZWQ6IGZ1bmN0
aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHNlbGVjdGVkTm9kZSA9IHRoaXMuZGF0YUdy
aWQuc2VsZWN0ZWROb2RlOwotCi0gICAgICAgIGlmICghc2VsZWN0ZWROb2RlKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHNlbGVjdGVkTm9kZS5kZXNlbGVjdCgpOwotCi0gICAgICAg
IHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5leGNsdWRlKHNlbGVjdGVkTm9kZSk7Ci0gICAgICAg
IHRoaXMucmVmcmVzaCgpOwotICAgICAgICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgpOwotICAg
IH0sCi0KLSAgICBfcmVzZXRDbGlja2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAg
IHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5yZXN0b3JlKCk7Ci0gICAgICAgIHRoaXMucmVmcmVz
aCgpOwotICAgICAgICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgpOwotICAgIH0sCi0KLSAgICBf
c29ydERhdGE6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fc29ydFByb2Zp
bGUodGhpcy5wcm9maWxlKTsKLSAgICB9LAotCi0gICAgX3NvcnRQcm9maWxlOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB2YXIgc29ydEFzY2VuZGluZyA9IHRoaXMuZGF0YUdyaWQuc29ydE9y
ZGVyID09PSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZzsKLSAgICAg
ICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5kYXRhR3JpZC5zb3J0Q29sdW1uSWRl
bnRpZmllcjsKLSAgICAgICAgdmFyIHNvcnRQcm9wZXJ0eSA9IHsKLSAgICAgICAgICAgICAgICAi
YXZlcmFnZSI6ICJhdmVyYWdlVGltZSIsCi0gICAgICAgICAgICAgICAgInNlbGYiOiAic2VsZlRp
bWUiLAotICAgICAgICAgICAgICAgICJ0b3RhbCI6ICJ0b3RhbFRpbWUiLAotICAgICAgICAgICAg
ICAgICJjYWxscyI6ICJudW1iZXJPZkNhbGxzIiwKLSAgICAgICAgICAgICAgICAiZnVuY3Rpb24i
OiAiZnVuY3Rpb25OYW1lIgotICAgICAgICAgICAgfVtzb3J0Q29sdW1uSWRlbnRpZmllcl07Ci0K
LSAgICAgICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLnNvcnQoV2ViSW5zcGVjdG9yLkxlZ2Fj
eVByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9yKHNvcnRQcm9wZXJ0eSwgc29y
dEFzY2VuZGluZykpOwotCi0gICAgICAgIHRoaXMucmVmcmVzaCgpOwotICAgIH0sCi0KLSAgICBf
YXNzaWduUGFyZW50c0luUHJvZmlsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGhl
YWQgPSB0aGlzLnByb2ZpbGUuaGVhZDsKLSAgICAgICAgaGVhZC5wYXJlbnQgPSBudWxsOwotICAg
ICAgICBoZWFkLmhlYWQgPSBudWxsOwotICAgICAgICB2YXIgbm9kZXNUb1RyYXZlcnNlID0gWyB7
IHBhcmVudDogaGVhZCwgY2hpbGRyZW46IGhlYWQuY2hpbGRyZW4gfSBdOwotICAgICAgICB3aGls
ZSAobm9kZXNUb1RyYXZlcnNlLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgIHZhciBwYWlyID0g
bm9kZXNUb1RyYXZlcnNlLnNoaWZ0KCk7Ci0gICAgICAgICAgICB2YXIgcGFyZW50ID0gcGFpci5w
YXJlbnQ7Ci0gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBwYWlyLmNoaWxkcmVuOwotICAgICAg
ICAgICAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDsKLSAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5o
ZWFkID0gaGVhZDsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5wYXJlbnQgPSBwYXJlbnQ7
Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmNoaWxkcmVuLmxlbmd0aCA+IDApCi0g
ICAgICAgICAgICAgICAgICAgIG5vZGVzVG9UcmF2ZXJzZS5wdXNoKHsgcGFyZW50OiBjaGlsZHJl
bltpXSwgY2hpbGRyZW46IGNoaWxkcmVuW2ldLmNoaWxkcmVuIH0pOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuTGVnYWN5SmF2YVNjcmlwdFByb2Zp
bGVWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZVZp
ZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeVByb2ZpbGVEYXRhR3JpZFRyZWUuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MDBjZmU4YjYyMGMyMjA0YTYxOGU0NTQ5
N2U2ZjhjZjc4MjlkZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5UHJv
ZmlsZURhdGFHcmlkVHJlZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDM5OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IDI4MCBOb3J0aCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3BlY3Rv
ci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUsIG93bmlu
Z1RyZWUsIGhhc0NoaWxkcmVuLCBzaG93VGltZUFzUGVyY2VudCkKLXsKLSAgICB0aGlzLnByb2Zp
bGVOb2RlID0gcHJvZmlsZU5vZGU7Ci0KLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNh
bGwodGhpcywgbnVsbCwgaGFzQ2hpbGRyZW4pOwotCi0gICAgdGhpcy5hZGRFdmVudExpc3RlbmVy
KCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKLQotICAgIHRoaXMudHJlZSA9IG93
bmluZ1RyZWU7Ci0KLSAgICB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEID0ge307Ci0gICAgdGhpcy5s
YXN0Q29tcGFyYXRvciA9IG51bGw7Ci0KLSAgICB0aGlzLmNhbGxVSUQgPSBwcm9maWxlTm9kZS5j
YWxsVUlEOwotICAgIHRoaXMuc2VsZlRpbWUgPSBwcm9maWxlTm9kZS5zZWxmVGltZTsKLSAgICB0
aGlzLnRvdGFsVGltZSA9IHByb2ZpbGVOb2RlLnRvdGFsVGltZTsKLSAgICB0aGlzLmZ1bmN0aW9u
TmFtZSA9IHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFtZTsKLSAgICB0aGlzLm51bWJlck9mQ2FsbHMg
PSBwcm9maWxlTm9kZS5udW1iZXJPZkNhbGxzOwotICAgIHRoaXMudXJsID0gcHJvZmlsZU5vZGUu
dXJsOwotCi0gICAgdGhpcy5fc2hvd1RpbWVBc1BlcmNlbnQgPSBzaG93VGltZUFzUGVyY2VudCB8
fCBmYWxzZTsKLX0KLQotV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3JpZE5vZGUucHJv
dG90eXBlID0gewotICAgIGdldCBkYXRhKCkKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGZvcm1h
dE1pbGxpc2Vjb25kcyh0aW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gTnVtYmVy
LnNlY29uZHNUb1N0cmluZyh0aW1lIC8gMTAwMCwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgZGF0YSA9IHt9OwotCi0gICAgICAgIGRhdGFbImZ1bmN0aW9uIl0gPSB0aGlzLmZ1bmN0
aW9uTmFtZTsKLSAgICAgICAgZGF0YVsiY2FsbHMiXSA9IHRoaXMubnVtYmVyT2ZDYWxsczsKLQot
ICAgICAgICBpZiAodGhpcy5fc2hvd1RpbWVBc1BlcmNlbnQpIHsKLSAgICAgICAgICAgIGRhdGFb
InNlbGYiXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4yZiAlJSIpLmZvcm1hdCh0aGlzLnNl
bGZQZXJjZW50KTsKLSAgICAgICAgICAgIGRhdGFbInRvdGFsIl0gPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIiUuMmYgJSUiKS5mb3JtYXQodGhpcy50b3RhbFBlcmNlbnQpOwotICAgICAgICAgICAg
ZGF0YVsiYXZlcmFnZSJdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmICUlIikuZm9ybWF0
KHRoaXMuYXZlcmFnZVBlcmNlbnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGF0
YVsic2VsZiJdID0gZm9ybWF0TWlsbGlzZWNvbmRzKHRoaXMuc2VsZlRpbWUpOwotICAgICAgICAg
ICAgZGF0YVsidG90YWwiXSA9IGZvcm1hdE1pbGxpc2Vjb25kcyh0aGlzLnRvdGFsVGltZSk7Ci0g
ICAgICAgICAgICBkYXRhWyJhdmVyYWdlIl0gPSBmb3JtYXRNaWxsaXNlY29uZHModGhpcy5hdmVy
YWdlVGltZSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGF0YTsKLSAgICB9LAotCi0g
ICAgZ2V0IHNob3dUaW1lQXNQZXJjZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9z
aG93VGltZUFzUGVyY2VudDsKLSAgICB9LAotCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oc2hvd1Rp
bWVBc1BlcmNlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9zaG93VGltZUFzUGVyY2VudCA9IHNo
b3dUaW1lQXNQZXJjZW50OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJv
dG90eXBlLnJlZnJlc2guY2FsbCh0aGlzKTsKLSAgICB9LAotCi0gICAgY3JlYXRlQ2VsbDogZnVu
Y3Rpb24oY29sdW1uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHZhciBjZWxsID0gV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbC5jYWxsKHRoaXMsIGNvbHVt
bklkZW50aWZpZXIpOwotCi0gICAgICAgIGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAic2VsZiIg
JiYgdGhpcy5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4pCi0gICAgICAgICAgICBjZWxsLmNsYXNz
TGlzdC5hZGQoImhpZ2hsaWdodCIpOwotICAgICAgICBlbHNlIGlmIChjb2x1bW5JZGVudGlmaWVy
ID09PSAidG90YWwiICYmIHRoaXMuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbikKLSAgICAgICAg
ICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0Iik7Ci0gICAgICAgIGVsc2UgaWYgKGNv
bHVtbklkZW50aWZpZXIgPT09ICJhdmVyYWdlIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkQXZlcmFn
ZUNvbHVtbikKLSAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0Iik7Ci0g
ICAgICAgIGVsc2UgaWYgKGNvbHVtbklkZW50aWZpZXIgPT09ICJjYWxscyIgJiYgdGhpcy5fc2Vh
cmNoTWF0Y2hlZENhbGxzQ29sdW1uKQotICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCJo
aWdobGlnaHQiKTsKLQotICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciAhPT0gImZ1bmN0aW9u
IikKLSAgICAgICAgICAgIHJldHVybiBjZWxsOwotCi0gICAgICAgIGlmICh0aGlzLnByb2ZpbGVO
b2RlLl9zZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW4pCi0gICAgICAgICAgICBjZWxsLmNsYXNz
TGlzdC5hZGQoImhpZ2hsaWdodCIpOwotCi0gICAgICAgIGlmICh0aGlzLnByb2ZpbGVOb2RlLnVy
bCkgewotICAgICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBwcm9maWxlTm9kZSBzaG91bGQgcmVm
ZXJlbmNlIGEgZGVidWdnZXIgbG9jYXRpb24uCi0gICAgICAgICAgICB2YXIgbGluZU51bWJlciA9
IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlciA/IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJl
ciAtIDEgOiAwOwotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLl9saW5raWZ5TG9j
YXRpb24odGhpcy5wcm9maWxlTm9kZS51cmwsIGxpbmVOdW1iZXIsICJwcm9maWxlLW5vZGUtZmls
ZSIpOwotICAgICAgICAgICAgdXJsRWxlbWVudC5zdHlsZS5tYXhXaWR0aCA9ICI3NSUiOwotICAg
ICAgICAgICAgY2VsbC5pbnNlcnRCZWZvcmUodXJsRWxlbWVudCwgY2VsbC5maXJzdENoaWxkKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBjZWxsOwotICAgIH0sCi0KLSAgICBzb3J0OiBm
dW5jdGlvbihjb21wYXJhdG9yLCBmb3JjZSkKLSAgICB7Ci0gICAgICAgIHZhciBncmlkTm9kZUdy
b3VwcyA9IFtbdGhpc11dOwotCi0gICAgICAgIGZvciAodmFyIGdyaWROb2RlR3JvdXBJbmRleCA9
IDA7IGdyaWROb2RlR3JvdXBJbmRleCA8IGdyaWROb2RlR3JvdXBzLmxlbmd0aDsgKytncmlkTm9k
ZUdyb3VwSW5kZXgpIHsKLSAgICAgICAgICAgIHZhciBncmlkTm9kZXMgPSBncmlkTm9kZUdyb3Vw
c1tncmlkTm9kZUdyb3VwSW5kZXhdOwotICAgICAgICAgICAgdmFyIGNvdW50ID0gZ3JpZE5vZGVz
Lmxlbmd0aDsKLQotICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50
OyArK2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGdyaWROb2RlID0gZ3JpZE5vZGVzW2lu
ZGV4XTsKLQotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBncmlkIG5vZGUgaXMgY29sbGFwc2Vk
LCB0aGVuIGRvbid0IHNvcnQgY2hpbGRyZW4gKHNhdmUgb3BlcmF0aW9uIGZvciBsYXRlcikuCi0g
ICAgICAgICAgICAgICAgLy8gSWYgdGhlIGdyaWQgbm9kZSBoYXMgdGhlIHNhbWUgc29ydGluZyBh
cyBwcmV2aW91c2x5LCB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIHNvcnRpbmcgaXQgYWdhaW4u
Ci0gICAgICAgICAgICAgICAgaWYgKCFmb3JjZSAmJiAoIWdyaWROb2RlLmV4cGFuZGVkIHx8IGdy
aWROb2RlLmxhc3RDb21wYXJhdG9yID09PSBjb21wYXJhdG9yKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoZ3JpZE5vZGUuY2hpbGRyZW4ubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZ3JpZE5vZGUuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZ3Jp
ZE5vZGUubGFzdENvbXBhcmF0b3IgPSBjb21wYXJhdG9yOwotCi0gICAgICAgICAgICAgICAgdmFy
IGNoaWxkcmVuID0gZ3JpZE5vZGUuY2hpbGRyZW47Ci0gICAgICAgICAgICAgICAgdmFyIGNoaWxk
Q291bnQgPSBjaGlsZHJlbi5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb3Vu
dCkgewotICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5zb3J0KGNvbXBhcmF0b3IpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4IDwg
Y2hpbGRDb3VudDsgKytjaGlsZEluZGV4KQotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRy
ZW5bY2hpbGRJbmRleF0uX3JlY2FsY3VsYXRlU2libGluZ3MoY2hpbGRJbmRleCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgZ3JpZE5vZGVHcm91cHMucHVzaChjaGlsZHJlbik7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGluc2VydENo
aWxkOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWROb2RlLCBpbmRleCkKLSAgICB7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmluc2VydENoaWxkLmNhbGwodGhp
cywgcHJvZmlsZURhdGFHcmlkTm9kZSwgaW5kZXgpOwotCi0gICAgICAgIHRoaXMuY2hpbGRyZW5C
eUNhbGxVSURbcHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsVUlEXSA9IHByb2ZpbGVEYXRhR3JpZE5v
ZGU7Ci0gICAgfSwKLQotICAgIHJlbW92ZUNoaWxkOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWRO
b2RlKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUu
cmVtb3ZlQ2hpbGQuY2FsbCh0aGlzLCBwcm9maWxlRGF0YUdyaWROb2RlKTsKLQotICAgICAgICBk
ZWxldGUgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtwcm9maWxlRGF0YUdyaWROb2RlLmNhbGxVSURd
OwotICAgIH0sCi0KLSAgICByZW1vdmVDaGlsZHJlbjogZnVuY3Rpb24ocHJvZmlsZURhdGFHcmlk
Tm9kZSkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
LnJlbW92ZUNoaWxkcmVuLmNhbGwodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5jaGlsZHJlbkJ5Q2Fs
bFVJRCA9IHt9OwotICAgIH0sCi0KLSAgICBmaW5kQ2hpbGQ6IGZ1bmN0aW9uKG5vZGUpCi0gICAg
ewotICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAg
cmV0dXJuIHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbbm9kZS5jYWxsVUlEXTsKLSAgICB9LAotCi0g
ICAgZ2V0IGF2ZXJhZ2VUaW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNlbGZUaW1l
IC8gTWF0aC5tYXgoMSwgdGhpcy5udW1iZXJPZkNhbGxzKTsKLSAgICB9LAotCi0gICAgZ2V0IGF2
ZXJhZ2VQZXJjZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmF2ZXJhZ2VUaW1lIC8g
dGhpcy50cmVlLnRvdGFsVGltZSAqIDEwMC4wOwotICAgIH0sCi0KLSAgICBnZXQgc2VsZlBlcmNl
bnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2VsZlRpbWUgLyB0aGlzLnRyZWUudG90
YWxUaW1lICogMTAwLjA7Ci0gICAgfSwKLQotICAgIGdldCB0b3RhbFBlcmNlbnQoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMudG90YWxUaW1lIC8gdGhpcy50cmVlLnRvdGFsVGltZSAqIDEw
MC4wOwotICAgIH0sCi0KLSAgICBnZXQgX3BhcmVudCgpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5wYXJlbnQgIT09IHRoaXMuZGF0YUdyaWQgPyB0aGlzLnBhcmVudCA6IHRoaXMudHJlZTsK
LSAgICB9LAotCi0gICAgX3BvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX3NoYXJlZFBvcHVsYXRlKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkgewot
ICAgICAgICAgICAgdmFyIGN1cnJlbnRDb21wYXJhdG9yID0gdGhpcy5fcGFyZW50Lmxhc3RDb21w
YXJhdG9yOwotCi0gICAgICAgICAgICBpZiAoY3VycmVudENvbXBhcmF0b3IpCi0gICAgICAgICAg
ICAgICAgdGhpcy5zb3J0KGN1cnJlbnRDb21wYXJhdG9yLCB0cnVlKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICh0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIpCi0gICAgICAgICAgICB0aGlzLnJl
bW92ZUV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9wdWxhdGUsIHRoaXMpOwotICAg
IH0sCi0KLSAgICAvLyBXaGVuIGZvY3VzaW5nIGFuZCBjb2xsYXBzaW5nIHdlIG1vZGlmeSBsb3Rz
IG9mIG5vZGVzIGluIHRoZSB0cmVlLgotICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlc3RvcmUg
dGhlbSBhbGwgdG8gdGhlaXIgb3JpZ2luYWwgc3RhdGUgd2hlbiB3ZSByZXZlcnQuCi0gICAgX3Nh
dmU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zYXZlZENoaWxkcmVuKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3NhdmVkU2VsZlRpbWUgPSB0aGlz
LnNlbGZUaW1lOwotICAgICAgICB0aGlzLl9zYXZlZFRvdGFsVGltZSA9IHRoaXMudG90YWxUaW1l
OwotICAgICAgICB0aGlzLl9zYXZlZE51bWJlck9mQ2FsbHMgPSB0aGlzLm51bWJlck9mQ2FsbHM7
Ci0KLSAgICAgICAgdGhpcy5fc2F2ZWRDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uc2xpY2UoKTsK
LSAgICB9LAotCi0gICAgLy8gV2hlbiBmb2N1c2luZyBhbmQgY29sbGFwc2luZyB3ZSBtb2RpZnkg
bG90cyBvZiBub2RlcyBpbiB0aGUgdHJlZS4KLSAgICAvLyBUaGlzIGFsbG93cyB1cyB0byByZXN0
b3JlIHRoZW0gYWxsIHRvIHRoZWlyIG9yaWdpbmFsIHN0YXRlIHdoZW4gd2UgcmV2ZXJ0LgotICAg
IF9yZXN0b3JlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3NhdmVkQ2hp
bGRyZW4pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5zZWxmVGltZSA9IHRo
aXMuX3NhdmVkU2VsZlRpbWU7Ci0gICAgICAgIHRoaXMudG90YWxUaW1lID0gdGhpcy5fc2F2ZWRU
b3RhbFRpbWU7Ci0gICAgICAgIHRoaXMubnVtYmVyT2ZDYWxscyA9IHRoaXMuX3NhdmVkTnVtYmVy
T2ZDYWxsczsKLQotICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAgdmFy
IGNoaWxkcmVuID0gdGhpcy5fc2F2ZWRDaGlsZHJlbjsKLSAgICAgICAgdmFyIGNvdW50ID0gY2hp
bGRyZW4ubGVuZ3RoOwotCi0gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3Vu
dDsgKytpbmRleCkgewotICAgICAgICAgICAgY2hpbGRyZW5baW5kZXhdLl9yZXN0b3JlKCk7Ci0g
ICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxkcmVuW2luZGV4XSk7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgX21lcmdlOiBmdW5jdGlvbihjaGlsZCwgc2hvdWxkQWJzb3JiKQotICAg
IHsKLSAgICAgICAgdGhpcy5zZWxmVGltZSArPSBjaGlsZC5zZWxmVGltZTsKLQotICAgICAgICBp
ZiAoIXNob3VsZEFic29yYikgewotICAgICAgICAgICAgdGhpcy50b3RhbFRpbWUgKz0gY2hpbGQu
dG90YWxUaW1lOwotICAgICAgICAgICAgdGhpcy5udW1iZXJPZkNhbGxzICs9IGNoaWxkLm51bWJl
ck9mQ2FsbHM7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxk
cmVuLnNsaWNlKCk7Ci0KLSAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAg
IHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsKLQotICAgICAgICBmb3IgKHZhciBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIGlmICghc2hvdWxkQWJz
b3JiIHx8IGNoaWxkcmVuW2luZGV4XSAhPT0gY2hpbGQpCi0gICAgICAgICAgICAgICAgdGhpcy5h
cHBlbmRDaGlsZChjaGlsZHJlbltpbmRleF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hpbGRy
ZW4gPSBjaGlsZC5jaGlsZHJlbi5zbGljZSgpOwotICAgICAgICBjb3VudCA9IGNoaWxkcmVuLmxl
bmd0aDsKLQotICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5k
ZXgpIHsKLSAgICAgICAgICAgIHZhciBvcnBoYW5lZENoaWxkID0gY2hpbGRyZW5baW5kZXhdLAot
ICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2hpbGQgPSB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEW29y
cGhhbmVkQ2hpbGQuY2FsbFVJRF07Ci0KLSAgICAgICAgICAgIGlmIChleGlzdGluZ0NoaWxkKQot
ICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2hpbGQuX21lcmdlKG9ycGhhbmVkQ2hpbGQsIGZhbHNl
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG9y
cGhhbmVkQ2hpbGQpOwotICAgICAgICB9Ci0gICAgfSwKLSAgICAKLSAgICBfbGlua2lmeUxvY2F0
aW9uOiBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNsYXNzTmFtZSkKLSAgICB7Ci0gICAgICAg
IC8vIEZJWE1FOiBDUFVQcm9maWxlTm9kZSdzIG5lZWQgY29sdW1uTnVtYmVycy4KLSAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCAwLCBj
bGFzc05hbWUpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJv
dG90eXBlOwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZSA9IGZ1bmN0
aW9uKHByb2ZpbGVOb2RlKQotewotICAgIHRoaXMudHJlZSA9IHRoaXM7Ci0gICAgdGhpcy5jaGls
ZHJlbiA9IFtdOwotCi0gICAgdGhpcy50b3RhbFRpbWUgPSBwcm9maWxlTm9kZS50b3RhbFRpbWU7
Ci0gICAgdGhpcy5sYXN0Q29tcGFyYXRvciA9IG51bGw7Ci0KLSAgICB0aGlzLmNoaWxkcmVuQnlD
YWxsVUlEID0ge307Ci19Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVl
LnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZXhwYW5kZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKLQotICAgIGFwcGVuZENoaWxkOiBmdW5jdGlvbihjaGlsZCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoY2hpbGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsK
LSAgICB9LAotCi0gICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAwLCBjaGlsZCk7Ci0gICAgICAg
IHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbY2hpbGQuY2FsbFVJRF0gPSBjaGlsZDsKLSAgICB9LAot
Ci0gICAgcmVtb3ZlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2hp
bGRyZW4gPSBbXTsKLSAgICAgICAgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRCA9IHt9OwotICAgIH0s
Ci0KLSAgICBmaW5kQ2hpbGQ6IFdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5maW5kQ2hpbGQsCi0gICAgc29ydDogV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2Zp
bGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnNvcnQsCi0KLSAgICBfc2F2ZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NhdmVkQ2hpbGRyZW4pCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgdGhpcy5fc2F2ZWRUb3RhbFRpbWUgPSB0aGlzLnRvdGFsVGltZTsKLSAg
ICAgICAgdGhpcy5fc2F2ZWRDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uc2xpY2UoKTsKLSAgICB9
LAotCi0gICAgcmVzdG9yZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9z
YXZlZENoaWxkcmVuKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuY2hpbGRy
ZW4gPSB0aGlzLl9zYXZlZENoaWxkcmVuOwotICAgICAgICB0aGlzLnRvdGFsVGltZSA9IHRoaXMu
X3NhdmVkVG90YWxUaW1lOwotCi0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47
Ci0gICAgICAgIHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsKLQotICAgICAgICBmb3IgKHZh
ciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCi0gICAgICAgICAgICBjaGlsZHJl
bltpbmRleF0uX3Jlc3RvcmUoKTsKLQotICAgICAgICB0aGlzLl9zYXZlZENoaWxkcmVuID0gbnVs
bDsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLnBy
b3BlcnR5Q29tcGFyYXRvcnMgPSBbe30sIHt9XTsKLQotV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2Zp
bGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9yID0gZnVuY3Rpb24ocHJvcGVydHksIGlz
QXNjZW5kaW5nKQotewotICAgIHZhciBjb21wYXJhdG9yID0gdGhpcy5wcm9wZXJ0eUNvbXBhcmF0
b3JzWyhpc0FzY2VuZGluZyA/IDEgOiAwKV1bcHJvcGVydHldOwotCi0gICAgaWYgKCFjb21wYXJh
dG9yKSB7Ci0gICAgICAgIGlmIChpc0FzY2VuZGluZykgewotICAgICAgICAgICAgY29tcGFyYXRv
ciA9IGZ1bmN0aW9uKGxocywgcmhzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlm
IChsaHNbcHJvcGVydHldIDwgcmhzW3Byb3BlcnR5XSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC0xOwotCi0gICAgICAgICAgICAgICAgaWYgKGxoc1twcm9wZXJ0eV0gPiByaHNbcHJvcGVy
dHldKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNv
bXBhcmF0b3IgPSBmdW5jdGlvbihsaHMsIHJocykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpZiAobGhzW3Byb3BlcnR5XSA+IHJoc1twcm9wZXJ0eV0pCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAtMTsKLQotICAgICAgICAgICAgICAgIGlmIChsaHNbcHJvcGVydHldIDwgcmhz
W3Byb3BlcnR5XSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlz
LnByb3BlcnR5Q29tcGFyYXRvcnNbKGlzQXNjZW5kaW5nID8gMSA6IDApXVtwcm9wZXJ0eV0gPSBj
b21wYXJhdG9yOwotICAgIH0KLQotICAgIHJldHVybiBjb21wYXJhdG9yOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5UHJvZmls
ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xl
Z2FjeVByb2ZpbGVPYmplY3QuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2M2Zk
MTIzYTQ4N2Y4NDliZWU2NjJkZjczNmZjOWZjZGIwZWMzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTGVnYWN5UHJvZmlsZU9iamVjdC5qcworKysgL2Rldi9udWxsCkBAIC0xLDkz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU9iamVjdCA9
IGZ1bmN0aW9uKHR5cGUsIHRpdGxlLCBpZCwgaXNSZWNvcmRpbmcpCi17Ci0gICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQodHlwZSk7Ci0gICAg
Y29uc29sZS5hc3NlcnQodGl0bGUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KGlkKTsKLQotICAgIHRo
aXMuX3R5cGUgPSB0eXBlOwotICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7Ci0gICAgdGhpcy5faWQg
PSBpZDsKLSAgICB0aGlzLl9pc1JlY29yZGluZyA9IGlzUmVjb3JkaW5nIHx8IGZhbHNlOwotfTsK
LQotV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QuRXZlbnQgPSB7Ci0gICAgRmluc2hl
ZFJlY29yZGluZzogInByb2ZpbGUtb2JqZWN0LWZpbmlzaGVkLXJlY29yZGluZyIKLX07Ci0KLVdl
Ykluc3BlY3Rvci5MZWdhY3lQcm9maWxlT2JqZWN0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVPYmplY3QsCi0gICAgCi0gICAgZ2V0IHR5
cGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKLQotICAgIHNl
dCB0eXBlKHR5cGUpCi0gICAgewotICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKLSAgICB9LAot
ICAgIAotICAgIGdldCB0aXRsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGU7
Ci0gICAgfSwKLQotICAgIHNldCB0aXRsZSh0aXRsZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Rp
dGxlID0gdGl0bGU7Ci0gICAgfSwKLQotICAgIGdldCBpZCgpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5faWQ7Ci0gICAgfSwKLQotICAgIHNldCBpZChpZCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX2lkID0gaWQ7Ci0gICAgfSwKLQotICAgIGdldCByZWNvcmRpbmcoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2lzUmVjb3JkaW5nOwotICAgIH0sCi0KLSAgICBzZXQgcmVjb3JkaW5n
KGZsYWcpCi0gICAgewotICAgICAgICBpZiAodGhpcy5faXNSZWNvcmRpbmcgPT09IGZsYWcpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5faXNSZWNvcmRpbmcgPSBmbGFnOwot
ICAgICAgICBpZiAoIWZsYWcpCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU9iamVjdC5FdmVudC5GaW5zaGVkUmVjb3Jk
aW5nKTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZU9iamVjdC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lQcm9m
aWxlVHlwZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xl
Z2FjeVByb2ZpbGVUeXBlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjZkNTRj
NmJlOTY0ZWQyN2JkODY1NTM5ZmZhOGMwYmZhZmMwMTNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0xlZ2FjeVByb2ZpbGVUeXBlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LVdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKGlkLCBuYW1lKQotewot
ICAgIHRoaXMuX2lkID0gaWQ7Ci0gICAgdGhpcy5fbmFtZSA9IG5hbWU7Ci19Ci0KLVdlYkluc3Bl
Y3Rvci5MZWdhY3lQcm9maWxlVHlwZS5VUkxSZWdFeHAgPSAvd2Via2l0LXByb2ZpbGU6XC9cLygu
KylcLyguKykjKFswLTldKykvOwotV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVUeXBlLlByb2Zp
bGVTY2hlbWUgPSAid2Via2l0LXByb2ZpbGUiOwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmls
ZVR5cGUucHJvdG90eXBlID0gewotICAgIGdldCBidXR0b25Ub29sdGlwKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAiIjsKLSAgICB9LAotCi0gICAgZ2V0IGlkKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9pZDsKLSAgICB9LAotCi0gICAgZ2V0IHRyZWVJdGVtVGl0bGUoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwKLQotICAgIGdldCBuYW1lKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCi0KLSAgICBidXR0b25DbGlj
a2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICB2aWV3Rm9yUHJvZmlsZTogZnVu
Y3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIGlmICghcHJvZmlsZS5fcHJvZmlsZVZpZXcp
Ci0gICAgICAgICAgICBwcm9maWxlLl9wcm9maWxlVmlldyA9IHRoaXMuY3JlYXRlVmlldyhwcm9m
aWxlKTsKLSAgICAgICAgcmV0dXJuIHByb2ZpbGUuX3Byb2ZpbGVWaWV3OwotICAgIH0sCi0KLSAg
ICByZXNldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgZ2V0IGRlc2NyaXB0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAiIjsKLSAgICB9LAotCi0gICAgLy8gTXVzdCBiZSBp
bXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2Zp
bGUpCi0gICAgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk5lZWRzIGltcGxlbWVudGVkLiIp
OwotICAgIH0sCi0KLSAgICAvLyBNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0g
ICAgY3JlYXRlU2lkZWJhclRyZWVFbGVtZW50Rm9yUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkK
LSAgICB7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiTmVlZHMgaW1wbGVtZW50ZWQuIik7Ci0g
ICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTGVnYWN5UHJvZmlsZVZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTGVnYWN5UHJvZmlsZVZpZXcuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxNGEzNjFmZjI5NTc0NDJkMTk0MDc1ZjQyMWI1NjEyMGVjNjIwYmQ0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeVByb2ZpbGVWaWV3LmNzcworKysgL2Rl
di9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0ucmVjb3JkaW5nLXByb2ZpbGUt
dmlldyB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDog
MDsKLSAgICBib3R0b206IDA7Ci0gICAgbGVmdDogMDsKLQotICAgIGRpc3BsYXk6IC13ZWJraXQt
ZmxleDsKLSAgICAtd2Via2l0LWZsZXgtZmxvdzogcm93IG5vd3JhcDsKLSAgICAtd2Via2l0LWp1
c3RpZnktY29udGVudDogY2VudGVyOwotICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVy
OwotICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKLSAgICAKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjMyLCAyMzIsIDIzMik7Ci19Ci0KLS5yZWNvcmRpbmctcHJvZmlsZS12aWV3
ID4gLmluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bpbm5lciB7Ci0gICAgcG9zaXRpb246IHN0YXRp
YzsKLSAgICBtYXJnaW46IDA7Ci19Ci0KLS5yZWNvcmRpbmctcHJvZmlsZS12aWV3ID4gc3BhbiB7
Ci0gICAgZm9udC1zaXplOiAxNHB4OwotCi0gICAgdGV4dC1zaGFkb3c6IHJnYmEoMjU1LCAyNTUs
IDI1NSwgMC41KSAwIDFweCAwOwotICAgIGNvbG9yOiByZ2IoNjAsIDYwLCA2MCk7Ci0KLSAgICBw
YWRkaW5nLWxlZnQ6IDEwcHg7Ci0KLSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIHRleHQtb3Zl
cmZsb3c6IGVsbGlwc2lzOwotICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lQcm9maWxl
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2Fj
eVByb2ZpbGVWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzg1OGQ1NDRl
ZTBmNGQ5ODFlMGM4ZjY0NzU1MWE0NzBkMzUxYmI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0xlZ2FjeVByb2ZpbGVWaWV3LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZVZpZXcgPSBmdW5jdGlv
bihwcm9maWxlLCBzZXR0aW5nSWQpCi17Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNh
bGwodGhpcywgcHJvZmlsZSk7Ci0KLSAgICB0aGlzLl9wcm9maWxlID0gcHJvZmlsZTsKLQotICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9maWxlLXZpZXciKTsKLQotICAgIHRoaXMu
c2hvd1RpbWVBc1BlcmNlbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoc2V0dGluZ0lkLCB0
cnVlKTsKLSAgICB0aGlzLnNob3dUaW1lQXNQZXJjZW50TmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNlbGVjdG9yLXByb2ZpbGVy
LXNob3ctdGltZS1hcy1wZXJjZW50LW5hdmlnYXRpb24taXRlbSIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyB0aW1lcyBhcyBwZXJjZW50YWdlcyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNob3cgdGltZXMgYXMgYWJzb2x1dGUgdGltZXMiKSwgIkltYWdlcy9QZXJjZW50LnN2ZyIsIDE2
LCAxNik7Ci0gICAgdGhpcy5zaG93VGltZUFzUGVyY2VudE5hdmlnYXRpb25JdGVtLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQs
IHRoaXMudG9nZ2xlVGltZURpc3BsYXksIHRoaXMpOwotICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNl
bnROYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSB0aGlzLnNob3dUaW1lQXNQZXJjZW50LnZhbHVl
OwotCi0gICAgaWYgKHByb2ZpbGUucmVjb3JkaW5nKSB7Ci0gICAgICAgIHRoaXMuX3Nob3dSZWNv
cmRpbmdNZXNzYWdlKCk7Ci0gICAgICAgIHByb2ZpbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTGVnYWN5UHJvZmlsZU9iamVjdC5FdmVudC5GaW5zaGVkUmVjb3JkaW5nLCB0aGlzLl9w
cm9maWxlRmluaXNoZWRSZWNvcmRpbmcsIHRoaXMpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlz
LmRpc3BsYXlQcm9maWxlKCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZVZpZXcu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmls
ZVZpZXcsCi0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLnNob3dUaW1lQXNQZXJjZW50TmF2aWdhdGlvbkl0ZW1d
OwotICAgIH0sCi0KLSAgICBnZXQgYWxsb3dlZE5hdmlnYXRpb25TaWRlYmFyUGFuZWxzKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBbImluc3RydW1lbnQiXTsKLSAgICB9LAotCi0gICAgZ2V0IHBy
b2ZpbGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGU7Ci0gICAgfSwKLQot
ICAgIHNldCBwcm9maWxlKHByb2ZpbGUpCi0gICAgewotICAgICAgICB0aGlzLl9wcm9maWxlID0g
cHJvZmlsZTsKLSAgICB9LAotICAgIAotICAgIHRvZ2dsZVRpbWVEaXNwbGF5OiBmdW5jdGlvbihl
dmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnROYXZpZ2F0aW9uSXRl
bS5hY3RpdmF0ZWQgPSAhdGhpcy5zaG93VGltZUFzUGVyY2VudE5hdmlnYXRpb25JdGVtLmFjdGl2
YXRlZDsKLSAgICB9LAotCi0gICAgZGlzcGxheVByb2ZpbGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKLQotICAgIGdldCBy
ZWNvcmRpbmdUaXRsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZWNvcmRpbmdcdTIwMjYiKTsKLSAgICB9LAotICAgIAotICAgIC8vIFByaXZhdGUKLSAg
ICAKLSAgICBfcHJvZmlsZUZpbmlzaGVkUmVjb3JkaW5nOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9oaWRlUmVjb3JkaW5nTWVzc2FnZSgpOwotICAgICAgICB0aGlzLmRpc3BsYXlQ
cm9maWxlKCk7Ci0gICAgfSwKLSAgICAKLSAgICBfc2hvd1JlY29yZGluZ01lc3NhZ2U6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZ01lc3NhZ2VDb250YWluZXIgPSB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwot
ICAgICAgICB0aGlzLl9yZWNvcmRpbmdNZXNzYWdlQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJyZWNv
cmRpbmctcHJvZmlsZS12aWV3IjsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nTWVzc2FnZUNvbnRh
aW5lci5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1Nw
aW5uZXIoKS5lbGVtZW50KTsKLSAgICAgICAgdGhpcy5fcmVjb3JkaW5nTWVzc2FnZUNvbnRhaW5l
ci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpLnRleHRDb250ZW50
ID0gdGhpcy5yZWNvcmRpbmdUaXRsZTsKLSAgICB9LAotICAgIAotICAgIF9oaWRlUmVjb3JkaW5n
TWVzc2FnZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3JlY29yZGluZ01l
c3NhZ2VDb250YWluZXIpCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdNZXNzYWdlQ29udGFp
bmVyLnJlbW92ZSgpOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lQcm9maWxlVmll
dy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZWJjNzI0YjYwMDM2MTQxNTIwMjg5
OWI2ZTNjZGJmMjA3ZGM1YjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5
VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSAyODAgTm9ydGggSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1X
ZWJJbnNwZWN0b3IuTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihw
cm9maWxlTm9kZSwgb3duaW5nVHJlZSkKLXsKLSAgICB2YXIgaGFzQ2hpbGRyZW4gPSAocHJvZmls
ZU5vZGUuY2hpbGRyZW4gJiYgcHJvZmlsZU5vZGUuY2hpbGRyZW4ubGVuZ3RoKTsKLQotICAgIFdl
Ykluc3BlY3Rvci5MZWdhY3lQcm9maWxlRGF0YUdyaWROb2RlLmNhbGwodGhpcywgcHJvZmlsZU5v
ZGUsIG93bmluZ1RyZWUsIGhhc0NoaWxkcmVuKTsKLQotICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxk
cmVuID0gcHJvZmlsZU5vZGUuY2hpbGRyZW47Ci19Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lUb3BE
b3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgX3NoYXJlZFBvcHVsYXRl
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9yZW1haW5p
bmdDaGlsZHJlbjsKLSAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3Ro
OwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5MZWdhY3lUb3BEb3du
UHJvZmlsZURhdGFHcmlkTm9kZShjaGlsZHJlbltpXSwgdGhpcy50cmVlLCBmYWxzZSwgdGhpcy5z
aG93VGltZUFzUGVyY2VudCkpOwotCi0gICAgICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuID0g
bnVsbDsKLSAgICB9LAotCi0gICAgX2V4Y2x1ZGU6IGZ1bmN0aW9uKGFDYWxsVUlEKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuKQotICAgICAgICAgICAgdGhpcy5f
cG9wdWxhdGUoKTsKLQotICAgICAgICB0aGlzLl9zYXZlKCk7Ci0KLSAgICAgICAgdmFyIGNoaWxk
cmVuID0gdGhpcy5jaGlsZHJlbjsKLSAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZHJlbi5s
ZW5ndGg7Ci0KLSAgICAgICAgd2hpbGUgKGluZGV4LS0pCi0gICAgICAgICAgICBjaGlsZHJlbltp
bmRleF0uX2V4Y2x1ZGUoYUNhbGxVSUQpOwotCi0gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hp
bGRyZW5CeUNhbGxVSURbYUNhbGxVSURdOwotCi0gICAgICAgIGlmIChjaGlsZCkKLSAgICAgICAg
ICAgIHRoaXMuX21lcmdlKGNoaWxkLCB0cnVlKTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5M
ZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlOwotCi1XZWJJbnNw
ZWN0b3IuTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUgPSBmdW5jdGlvbihwcm9maWxl
Tm9kZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuTGVnYWN5UHJvZmlsZURhdGFHcmlkVHJlZS5jYWxs
KHRoaXMsIHByb2ZpbGVOb2RlKTsKLQotICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuID0gcHJv
ZmlsZU5vZGUuY2hpbGRyZW47Ci0KLSAgICBXZWJJbnNwZWN0b3IuTGVnYWN5VG9wRG93blByb2Zp
bGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9wb3B1bGF0ZS5jYWxsKHRoaXMpOwotfQotCi1XZWJJ
bnNwZWN0b3IuTGVnYWN5VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0gewot
ICAgIGZvY3VzOiBmdW5jdGlvbihwcm9maWxlRGF0YUdyaWRlTm9kZSkKLSAgICB7Ci0gICAgICAg
IGlmICghcHJvZmlsZURhdGFHcmlkZU5vZGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5fc2F2ZSgpOwotICAgICAgICBwcm9maWxlRGF0YUdyaWRlTm9kZS5zYXZlUG9zaXRp
b24oKTsKLQotICAgICAgICB0aGlzLmNoaWxkcmVuID0gW3Byb2ZpbGVEYXRhR3JpZGVOb2RlXTsK
LSAgICAgICAgdGhpcy50b3RhbFRpbWUgPSBwcm9maWxlRGF0YUdyaWRlTm9kZS50b3RhbFRpbWU7
Ci0gICAgfSwKLQotICAgIGV4Y2x1ZGU6IGZ1bmN0aW9uKHByb2ZpbGVEYXRhR3JpZGVOb2RlKQot
ICAgIHsKLSAgICAgICAgaWYgKCFwcm9maWxlRGF0YUdyaWRlTm9kZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB0aGlzLl9zYXZlKCk7Ci0KLSAgICAgICAgdmFyIGV4Y2x1ZGVkQ2Fs
bFVJRCA9IHByb2ZpbGVEYXRhR3JpZGVOb2RlLmNhbGxVSUQ7Ci0KLSAgICAgICAgV2ViSW5zcGVj
dG9yLkxlZ2FjeVRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fZXhjbHVkZS5j
YWxsKHRoaXMsIGV4Y2x1ZGVkQ2FsbFVJRCk7Ci0KLSAgICAgICAgaWYgKHRoaXMubGFzdENvbXBh
cmF0b3IpCi0gICAgICAgICAgICB0aGlzLnNvcnQodGhpcy5sYXN0Q29tcGFyYXRvciwgdHJ1ZSk7
Ci0gICAgfSwKLQotICAgIHJlc3RvcmU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fc2F2ZWRDaGlsZHJlbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlz
LmNoaWxkcmVuWzBdLnJlc3RvcmVQb3NpdGlvbigpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5M
ZWdhY3lQcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcyk7Ci0g
ICAgfSwKLQotICAgIF9tZXJnZTogV2ViSW5zcGVjdG9yLkxlZ2FjeVRvcERvd25Qcm9maWxlRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5fbWVyZ2UsCi0KLSAgICBfc2hhcmVkUG9wdWxhdGU6IFdlYklu
c3BlY3Rvci5MZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3NoYXJl
ZFBvcHVsYXRlCi19Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lUb3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkxlZ2FjeVByb2ZpbGVEYXRh
R3JpZFRyZWUucHJvdG90eXBlOwo=
</data>
<flag name="review"
          id="262262"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>