<?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>115006</bug_id>
          
          <creation_ts>2013-04-22 18:30:35 -0700</creation_ts>
          <short_desc>Remove the WebKit layer of wxWebKit</short_desc>
          <delta_ts>2013-04-23 14:42:16 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>kevino</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>879553</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-22 18:30:35 -0700</bug_when>
    <thetext>Remove the WebKit layer of wxWebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879554</commentid>
    <comment_count>1</comment_count>
      <attachid>199137</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-22 18:36:08 -0700</bug_when>
    <thetext>Created attachment 199137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880134</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-23 14:42:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/148994</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199137</attachid>
            <date>2013-04-22 18:36:08 -0700</date>
            <delta_ts>2013-04-23 14:22:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>115006.diff</filename>
            <type>text/plain</type>
            <size>450283</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYTRlMDgxMzBiOWNhYzY4NjcwNjg1YjdhNmIyMGQ2ZDI3MWYyMWY4YS4uYWM5
YzFhMmYzMjQ5OGI2NGZkYWMzODIxN2JkMDAyZjcxNmJkMjEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NyBAQAorMjAxMy0wNC0yMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBsYXllciBvZiB3eFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDA2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHd4V2ViS2l0IHBv
cnQgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IG1haW50YWluZWQgYnkgS2V2aW4KKyAgICAgICAgb24g
d2Via2l0Lm9yZy4gUmVtb3ZlIHRoZSBjb2RlIHVudGlsIG5ldyBtYWludGFpbmVycyByZXN1bWUg
dGhlIHdvcmsuCisKKyAgICAgICAgKiB3eC9XZWJCcm93c2VyU2hlbGwuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHd4L1dlYkJyb3dzZXJTaGVsbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd4L1dl
YkRPTVNlbGVjdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3gvV2ViRE9NU2VsZWN0aW9u
Lmg6IFJlbW92ZWQuCisgICAgICAgICogd3gvV2ViRWRpdC5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogd3gvV2ViRWRpdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd4L1dlYkZyYW1lLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3eC9XZWJGcmFtZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHd4L1dl
YkZyYW1lUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHd4L1dlYktpdERlZmluZXMuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6IFJl
bW92ZWQuCisgICAgICAgICogd3gvV2ViS2l0U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFd4LmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50
V3guaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0RyYWdDbGllbnRXeC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogd3gvV2ViS2l0U3VwcG9ydC9EcmFnQ2xpZW50V3guaDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0VkaXRDb21tYW5kV3guaDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6IFJlbW92
ZWQuCisgICAgICAgICogd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0Nv
bnRleHRXeC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50V3guY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd4L1dlYktpdFN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50V3guaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJTZXR0aW5ncy5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogd3gvV2ViU2V0dGluZ3MuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
eC9XZWJWaWV3LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3eC9XZWJWaWV3Lmg6IFJlbW92ZWQu
CisgICAgICAgICogd3gvV2ViVmlld1ByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3eC9i
aW5kaW5ncy9weXRob24vc2FtcGxlcy9zaW1wbGUucHk6IFJlbW92ZWQuCisgICAgICAgICogd3gv
YmluZGluZ3MvcHl0aG9uL3dlYnZpZXcuaTogUmVtb3ZlZC4KKyAgICAgICAgKiB3eC9iaW5kaW5n
cy9weXRob24vd3NjcmlwdDogUmVtb3ZlZC4KKyAgICAgICAgKiB3eC93c2NyaXB0OiBSZW1vdmVk
LgorCiAyMDEzLTA0LTIyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgdGhlIG1lbW9yeSBpbnN0cnVtZW50YXRpb24gY29kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZkMGNiYTZiYTY5M2Q5NGVkNmFi
YTRkZTFlN2FlNzE1MGY0MmMwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgL2Rldi9udWxsCkBAIC0x
LDUzNTYgKzAsMCBAQAotMjAxMy0wMy0xNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0u
b3JnPgotCi0gICAgICAgIEhpZGUgTWFpblJlc291cmNlTG9hZGVyIGZyb20gdGhlIG91dHNpZGUg
d29ybGQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTk3MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKLSAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLSAgICAgICAgKEZy
YW1lTG9hZGVyQ2xpZW50V3gpOgotCi0yMDEzLTAzLTE1ICBBYmhpc2hlayBBcnlhICA8aW5mZXJu
b0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byog
aGVscGVyIGZ1bmN0aW9ucy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMjQwMQotCi0gICAgICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4gQ2hlbm5leS4K
LQotICAgICAgICB0byogaGVscGVyIGZ1bmN0aW9ucyBhcmUgcHJlZmVycmVkIG92ZXIgc3RhdGlj
X2Nhc3QgY2FsbHMgc2luY2UgdGhleQotICAgICAgICBoZWxwIHRvIGNhdGNoIGJhZCBjYXN0cyBl
YXNpbHkgb24gdGhlIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCi0KLSAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRXeDo6cmVkaXJlY3REYXRhVG9QbHVnaW4pOgotCi0yMDEzLTAzLTE0ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgotCi0gICAgICAgIEFkZCBzZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIHNldHRpbmcgdG8gV2ViQ29yZTo6UGFnZQotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDA0Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KLQotICAgICAgICBVc2UgbmV3IHNldHRpbmdz
IGZvciBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgYW5kCi0gICAgICAgIHNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVu
dFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpzbWFydEluc2VydERl
bGV0ZUVuYWJsZWQpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmlzU2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6Ci0KLTIwMTMtMDMtMTQgIEpvbmF0aGFuIExpdSAg
PG5ldDE0N0BnbWFpbC5jb20+Ci0KLSAgICAgICAgRml4IGRldGVjdGlvbiBvZiBJbnRlbCBNYWMg
T1MgWCBwbGF0Zm9ybSBvbiBJbnRlbCBNYWMgNjQtYml0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIzMTIKLQotICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjphZ2VudE9TKToKLQotMjAxMy0wMi0yNiAgRG1p
dHJ5IFp2b3J5Z2luICA8enZvcnlnaW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIE1lcmdlZCBU
aXAgYW5kIERlYnVnIGxvZyBsZXZlbHMgZm9yIHdlYiBjb25zb2xlLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTE5Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KLQotICAgICAgICBJbiBldmVyeSBjb21wb25lbnQgZWl0aGVy
IFRJUCBvciBERUJVRyBsZXZlbCB3YXMgdXNlZCBmb3IgcmVwb3J0aW5nLAotICAgICAgICBidXQg
bm90IGJvdGguIFRoaXMgcGF0Y2ggaXMgcHJlcmVxdWlzaXRlIGZvciBXZWIgSW5zcGVjdG9yIGNv
bnNvbGUgbG9nIGZpbHRlcmluZy4KLQotICAgICAgICAqIFdlYlZpZXcuaDoKLQotMjAxMy0wMi0x
NSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KLQotICAg
ICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElz
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEp1bGllbiBDaGFmZnJhaXguCi0KLSAgICAgICAgVXBkYXRl
IGNhbGxzIHRvIG5ldyBBUEkuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpIaXRUZXN0KToKLQotMjAxMy0wMi0xMSAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBEaXNhYmxlIGRlbGV0ZSBidXR0b24gY29udHJv
bGxlciBvbiBub24tTWFjIHBvcnRzIGFuZCBkZWxldGUgRWRpdG9yQ2xpZW50OjpzaG91bGRTaG93
RGVsZXRlSW50ZXJmYWNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDk1MzQKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0K
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdl
YkNvcmUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKLSAgICAg
ICAgKEVkaXRvckNsaWVudFd4KToKLQotMjAxMy0wMi0wMyAgS3dhbmdZb25nIENob2kgIDxreTAu
Y2hvaUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBGaXggYnVpbGQgd2FybmluZyBhZnRlciByMTQx
NDczCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3
ODIKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCi0KLSAgICAgICAgRml4IC1X
dW51c2VkLXBhcmFtZXRlciBidWlsZCB3YXJuaW5nLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9y
dC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6Ci0KLTIwMTMtMDEtMzEgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KLQotICAgICAgICBXZWJLaXQyOiBwcm92aWRlIG5l
dyBidW5kbGUgQVBJcyB0byBhbGxvdyBidW5kbGUgY2xpZW50cyB0byBiZSBub3RpZmllZCBvZiBw
YXN0ZWJvYXJkIGFjY2Vzcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwODM5Ni4KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyOTIwNDYxPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAgICAgICAgQWRkcyBz
dHViIGltcGxlbWVudGF0aW9uIGZvciBXZWJLaXQgb2YgdGhlIG5ldyBFZGl0b3JDbGllbnQgbWV0
aG9kcy4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRX
eC5oOgotCi0yMDEzLTAxLTI0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5j
b20+Ci0KLSAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFs
dWUuaCB0byBKU0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMjcKLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxp
cCBQaXpsby4KLQotICAgICAgICBXZSdyZSByZW5hbWluZyB0aGVzZSB0d28gZmlsZXMsIHNvIHdl
IGhhdmUgdG8gcmVwbGFjZSB0aGUgbmFtZXMgZXZlcnl3aGVyZS4KLQotICAgICAgICAqIFdlYkZy
YW1lLmNwcDoKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLQotMjAxMy0wMS0wOCAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlZCB0aGUgbmVlZCBmb3IgdGhl
IFByb3Bvc2VkRGF0YWJhc2UgbWVjaGFuaXNtLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjkyLgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgot
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKENocm9t
ZUNsaWVudFd4KToKLQotMjAxMi0xMi0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgotCi0gICAgICAgIFJlbmFtZSBGcmFtZUxvYWRlckNsaWVudDo6ZG93bmxvYWQgdG8g
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUxMjIKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgotCi0gICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2VzLgotCi0g
ICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6
Ci0gICAgICAgIChGcmFtZUxvYWRlckNsaWVudFd4KToKLQotMjAxMi0xMi0xMiAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+Ci0KLSAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1
c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgotCi0gICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBpbnN0ZWFk
IG9mIGFjY2Vzc2luZyBEYXRhYmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCi0gICAgICAg
IGFuZCBEYXRhYmFzZUNvbnRleHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBmb3IgdXBj
b21pbmcgd2Via2l0MgotICAgICAgICByZWZhY3RvcmluZy4KLQotICAgICAgICAqIFdlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
V3g6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6Ci0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAg
ICAgIChXZWJLaXQ6OldlYlZpZXc6OlNldERhdGFiYXNlRGlyZWN0b3J5KToKLSAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6R2V0RGF0YWJhc2VEaXJlY3RvcnkpOgotICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpTZXREYXRhYmFzZXNFbmFibGVkKToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
QXJlRGF0YWJhc2VzRW5hYmxlZCk6Ci0KLTIwMTItMTItMTIgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+Ci0KLSAgICAgICAgTWFrZSBMT0coKSB3b3JrIGluIFdlYlByb2Nlc3Mg
YW5kIE5ldHdvcmtQcm9jZXNzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDQ3MTgKLQotICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgotCi0g
ICAgICAgICogV2ViVmlldy5jcHA6IEluY2x1ZGUgSW5pdGlhbGl6ZUxvZ2dpbmcuaAotCi0yMDEy
LTExLTI3ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KLQotICAgICAg
ICBDb25zb2xpZGF0ZSBGcmFtZUxvYWRlcjo6bG9hZCgpIGludG8gb25lIGZ1bmN0aW9uIHRha2lu
ZyBhIEZyYW1lTG9hZFJlcXVlc3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjE1MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0K
LSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpTZXRQ
YWdlU291cmNlKToKLQotMjAxMi0xMS0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNTc4Ni4K
LSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM1Nzg2Ci0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzNzkKLQotICAgICAg
ICBJdCBtYWRlIDMgcGx1Z2luIHRlc3RzIHRpbWVvdXQgb24gc2V2ZXJhbCBwbGF0Zm9ybXMgKFJl
cXVlc3RlZAotICAgICAgICBieSBPc3N5IG9uICN3ZWJraXQpLgotCi0gICAgICAgICogV2ViRnJh
bWUuY3BwOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6U2V0UGFnZVNvdXJjZSk6Ci0KLTIw
MTItMTEtMjYgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgotCi0gICAg
ICAgIENvbnNvbGlkYXRlIEZyYW1lTG9hZGVyOjpsb2FkKCkgaW50byBvbmUgZnVuY3Rpb24gdGFr
aW5nIGEgRnJhbWVMb2FkUmVxdWVzdAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAyMTUxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
LQotICAgICAgICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OlNl
dFBhZ2VTb3VyY2UpOgotCi0yMDEyLTExLTIwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1Mjk1
LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzUyOTUKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgzNAotCi0gICAg
ICAgIFRoaXMgcGF0Y2ggY2F1c2VzIGFzc2VydGlvbiB0byBzb21lIGxheW91dCB0ZXN0cyBvbiBj
aHJvbWl1bQotICAgICAgICAoUmVxdWVzdGVkIGJ5IGppYW5saSBvbiAjd2Via2l0KS4KLQotICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OlNldFBhZ2VT
b3VyY2UpOgotCi0yMDEyLTExLTIwICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVt
Lm9yZz4KLQotICAgICAgICBDb25zb2xpZGF0ZSBGcmFtZUxvYWRlcjo6bG9hZCgpIGludG8gb25l
IGZ1bmN0aW9uIHRha2luZyBhIEZyYW1lTG9hZFJlcXVlc3QKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjE1MQotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpTZXRQYWdlU291cmNlKToKLQotMjAxMi0xMC0yMiAgSm9jZWx5biBUdXJjb3R0
ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgotCi0gICAgICAgIFtRdF0gRml4ICJBU1NF
UlRJT04gRkFJTEVEOiAhZG9jdW1lbnQtPmluUGFnZUNhY2hlKCkiIHdoZW4gbG9hZGluZyBhIHBh
Z2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTE0
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCi0KLSAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3
UGFnZSk6Ci0KLTIwMTItMDktMjUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5NwotICAg
ICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQgCi0g
ICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAotICAgICAgICAtYW5kIGNv
cnJlc3BvbmRpbmctCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZEZp
cnN0TGF5b3V0LCAKLSAgICAgICAgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQsIGFuZCAKLSAgICAgICAgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgCi0gICAgICAgIGlzIG5vdyByZXBsYWNlZCBieSBkaXNw
YXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzKQotICAgICAgICAqIFdlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFd4OjpkaXNwYXRjaERpZExheW91dCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4Lmg6Ci0gICAgICAgIChGcmFtZUxvYWRlckNsaWVudFd4KToKLQotMjAx
Mi0wOS0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNzg3Ni4KLSAgICAgICAgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI3ODc2Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjYwMAotCi0gICAgICAgIG1vdXNlIGNsaWNrIGRvZXNu
J3Qgd29yayBmb3Igc3BpbiBidXR0b24gaWYgc3BpbiBidXR0b24gaW4KLSAgICAgICAgaWZyYW1l
IChSZXF1ZXN0ZWQgYnkgeW9zaW4gb24gI3dlYmtpdCkuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5j
cHA6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpIaXRUZXN0KToKLQotMjAxMi0wOS0wNyAg
QWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KLQotICAgICAg
ICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCi0KLSAgICAgICAgVXBkYXRlIGNhbGxz
IHRvIG5ldyBBUEkuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpIaXRUZXN0KToKLQotMjAxMi0wOS0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgotCi0gICAgICAgIFBhcnQgMiBvZiByZW1vdmluZyBQbGF0Zm9ybVN0cmluZy5oLCBy
ZW1vdmUgUGxhdGZvcm1TdHJpbmcuaAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU5MzEKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgot
Ci0gICAgICAgIFJlbW92ZSBQbGF0Zm9ybVN0cmluZy5oCi0KLSAgICAgICAgKiBXZWJGcmFtZS5j
cHA6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAg
ICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFd4LmNwcDoKLSAgICAgICAgKiBXZWJTZXR0aW5ncy5jcHA6Ci0gICAgICAg
ICogV2ViVmlldy5jcHA6Ci0KLTIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJp
bmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mjcx
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0KLSAgICAgICAgVXBkYXRl
IHRoZSAjaW5jbHVkZXMgdG8gdXNlIHRoZSBjb3JyZWN0IHR5cGVzLgotCi0gICAgICAgICogV2Vi
RnJhbWUuY3BwOgotICAgICAgICAqIFdlYlZpZXcuY3BwOgotCi0yMDEyLTA4LTEzICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFtjaHJvbWl1bV0gcmVsZWFzZSBG
cmFtZUxvYWRlckNsaWVudEltcGw6Om1fcGx1Z2luV2lkZ2V0IHJlZnB0ciB1cG9uIFBsdWdpbiBE
b2N1bWVudCBkZXRhY2guCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MzI4MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAg
ICAgIENocm9taXVtIGhhcyBhIHJlZnB0ciB0aGF0IG5lZWRzIHRvIGJlIE5VTExlZCBhdCB0aGlz
IHBvaW50LgotICAgICAgICAKLSAgICAgICAgQ2hhbmdlIHRoZSBjbGllbnQgcmVkaXJlY3REYXRh
VG9QbHVnaW4gbWV0aG9kKHMpIHRvIGV4cGVjdCB0aGUgcG9zc2liaWxpdHkgb2YKLSAgICAgICAg
YSBOVUxMIGFyZ3VtZW50LCBrZWVwaW5nIGV4aXN0aW5nIGJlaGF2aW91ciBvdGhlcndpc2UuCi0K
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6cmVkaXJlY3REYXRhVG9QbHVnaW4pOgot
Ci0yMDEyLTA3LTIzICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgotCi0g
ICAgICAgIFVuaWZ5IG51bVRvdWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQgYW5kIG5lZWRUb3VjaEV2
ZW50cyBpbiB0aGUgY2hyb21lIGNsaWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTEwMDYKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5p
d2EuCi0KLSAgICAgICAgUmVtb3ZlIG51bVRvdWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQgc3R1Yi4K
LQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLQotMjAxMi0wNy0x
NyAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KLQotICAgICAgICBX
ZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoKSB0byBhY2NlcHQgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExOTYKLQotICAgICAgICBSZXZpZXdl
ZCBieSBQYXZlbCBGZWxkbWFuLgotCi0gICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVu
dHMuIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCi0gICAgICAgIG5vdyBy
ZXR1cm5pbmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KLQotICAgICAgICAqIFdlYktp
dFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50V3g6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6Ci0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oOgotICAgICAgICAoSW5zcGVjdG9yQ2xpZW50V3gpOgot
Ci0yMDEyLTA3LTAyICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIERvIG5vdCBkbyBhbnkgbG9nZ2luZyBpbml0aWFsaXphdGlvbiB3aGVuIGxvZ2dpbmcg
aXMgZGlzYWJsZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwMjI4Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgotCi0gICAgICAg
ICogV2ViVmlldy5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkNyZWF0ZSk6Ci0KLTIw
MTItMDUtMzEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAg
ICAgUkVHUkVTU0lPTihyMTE3NTcyKTogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5j
LXJlbW92ZS1mcmFtZS5odG1sIGNyYXNoZXMgb24gTWFjCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njg1OQotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YS4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoK
LSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6Ci0KLTIwMTItMDUtMTggIE1PUklUQSBIYWppbWUgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KLQot
ICAgICAgICBBbm90aGVyIHVucmV2aWV3ZWQgYXR0ZW1wdCB0byBmaXggYnVpbGQgYnJlYWthZ2Ug
b24gcjExNzU3Mi4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoK
LSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpmcmFtZVdpbGxEZXRhY2hQYWdlKToK
LQotMjAxMi0wNS0xOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KLQotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MTUKLSAgICAg
ICAgU3RhbGUgZnJhbWUgaW4gV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRl
ZAotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICAqIFdlYktp
dFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFd4OjpmcmFtZVdpbGxEZXRhY2hQYWdlKToKLQotMjAxMi0wNS0xNyAgSGlyb25vcmkgQm9ubyAg
PGhib25vQGNocm9taXVtLm9yZz4KLQotICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxhdGZv
cm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8g
dGhlIFdlYktpdCBsYXllcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODY1OTEKLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAg
ICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIFRleHRDaGVja2VyQ2xpZW50OjpzaG91bGRFcmFzZU1h
cmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbgotICAgICAgICBmdW5jdGlvbiB0byByZW1vdmUgcGxh
dGZvcm0tc3BlY2lmaWMgY29kZSBmcm9tIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bgotICAgICAgICBmdW5jdGlvbi4KLQotICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBp
biBiZWhhdmlvci4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnNob3VsZEVyYXNlTWFya2Vyc0Fm
dGVyQ2hhbmdlU2VsZWN0aW9uKToKLSAgICAgICAgKFdlYkNvcmUpOgotICAgICAgICAqIFdlYktp
dFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKLSAgICAgICAgKEVkaXRvckNsaWVudFd4KToKLQot
MjAxMi0wNS0xNCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQot
ICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQgZml4LiBBZGQgYSBjb3VwbGUgbWlzc2luZyBo
ZWFkZXJzLgotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotCi0yMDEyLTA1LTEyICBSb2JpbiBE
dW5uICA8cm9iaW5AYWxsZHVubi5jb20+Ci0KLSAgICAgICAgW3d4XSBGaXggYSBidWcgd2l0aCBD
YW5EZWNyZWFzZVRleHRTaXplIGFuZCBoYW5kbGluZyBwYWdlIGJyZWFrcy4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzExCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAg
ICAgIChXZWJLaXQ6Ond4V2ViRnJhbWVQcmludG91dDo6SW5pdGlhbGl6ZVdpdGhQYWdlU2l6ZSk6
Ci0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkNhbkRl
Y3JlYXNlVGV4dFNpemUpOgotCi0yMDEyLTA1LTExICBSb2JpbiBEdW5uICA8cm9iaW5AYWxsZHVu
bi5jb20+Ci0KLSAgICAgICAgW3d4XSBGaXggYmFja2luZyBiaXRtYXAgY3JlYXRpb24gdW5kZXIg
d3hNU1cuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NjMwNAotCi0gICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgICog
V2ViVmlldy5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Ok9uUGFpbnQpOgotCi0yMDEy
LTA1LTA0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgRG9u
J3QgcmVxdWlyZSBGcmFtZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERhdGEo
KSBjYWxsIGZvciBlbXB0eSBkb2N1bWVudHMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NTUzMwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQ
cm9za3VyeWFrb3YuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZmluaXNoZWRM
b2FkaW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldE1haW5E
b2N1bWVudEVycm9yKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRp
c3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50V3g6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgotICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRXeCk6
Ci0KLTIwMTItMDQtMTggIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KLQot
ICAgICAgICBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KCkg
c2hvdWxkIGJlIGdpdmVuIG1vcmUKLSAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm0g
YmVpbmcgc3VibWl0dGVkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDI5NwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCi0KLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCk6Ci0g
ICAgICAgIFVwZGF0ZWQgbWV0aG9kIGRlY2xhcmF0aW9uLgotCi0yMDEyLTAzLTMwICBNYWxjb2xt
IE1hY0xlb2QgIDxtYWxjb2xtLm1hY2xlb2RAdHNod2FuZWRqZS5jb20+Ci0KLSAgICAgICAgW3d4
XSBNb3ZlIHd4V2ViS2l0IEFQSSBpbnRvIFdlYktpdCBuYW1lc3BhY2UuCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjc0MAotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgICogV2ViQnJvd3NlclNoZWxsLmNwcDoK
LSAgICAgICAgKFdlYktpdCk6Ci0gICAgICAgIChXZWJLaXQ6OlBhZ2VTb3VyY2VWaWV3RnJhbWU6
OlBhZ2VTb3VyY2VWaWV3RnJhbWUpOgotICAgICAgICAoV2ViS2l0OjpXZWJCcm93c2VyU2hlbGw6
OldlYkJyb3dzZXJTaGVsbCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6fldl
YkJyb3dzZXJTaGVsbCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6U2hvd0Rl
YnVnTWVudSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25RdWl0KToKLSAg
ICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpPbkFib3V0KToKLSAgICAgICAgKFdlYktp
dDo6V2ViQnJvd3NlclNoZWxsOjpPbkxvYWRGaWxlKToKLSAgICAgICAgKFdlYktpdDo6V2ViQnJv
d3NlclNoZWxsOjpPbkxvYWRFdmVudCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVs
bDo6T25CZWZvcmVMb2FkKToKLSAgICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpPbkFk
ZHJlc3NCYXJFbnRlcik6Ci0gICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25TZWFy
Y2hDdHJsRW50ZXIpOgotICAgICAgICAoV2ViS2l0OjpXZWJCcm93c2VyU2hlbGw6Ok9uQ3V0KToK
LSAgICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpPbkNvcHkpOgotICAgICAgICAoV2Vi
S2l0OjpXZWJCcm93c2VyU2hlbGw6Ok9uUGFzdGUpOgotICAgICAgICAoV2ViS2l0OjpXZWJCcm93
c2VyU2hlbGw6Ok9uQmFjayk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25G
b3J3YXJkKToKLSAgICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpPblN0b3ApOgotICAg
ICAgICAoV2ViS2l0OjpXZWJCcm93c2VyU2hlbGw6Ok9uUmVsb2FkKToKLSAgICAgICAgKFdlYktp
dDo6V2ViQnJvd3NlclNoZWxsOjpPbk1ha2VUZXh0TGFyZ2VyKToKLSAgICAgICAgKFdlYktpdDo6
V2ViQnJvd3NlclNoZWxsOjpPbk1ha2VUZXh0U21hbGxlcik6Ci0gICAgICAgIChXZWJLaXQ6Oldl
YkJyb3dzZXJTaGVsbDo6T25HZXRTb3VyY2UpOgotICAgICAgICAoV2ViS2l0OjpXZWJCcm93c2Vy
U2hlbGw6Ok9uU2V0U291cmNlKToKLSAgICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpP
bkJyb3dzZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25FZGl0KToKLSAg
ICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpPblJ1blNjcmlwdCk6Ci0gICAgICAgIChX
ZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25FZGl0Q29tbWFuZCk6Ci0gICAgICAgIChXZWJLaXQ6
OldlYkJyb3dzZXJTaGVsbDo6T25HZXRFZGl0Q29tbWFuZFN0YXRlKToKLSAgICAgICAgKFdlYktp
dDo6V2ViQnJvd3NlclNoZWxsOjpPblByaW50KToKLSAgICAgICAgKiBXZWJCcm93c2VyU2hlbGwu
aDoKLSAgICAgICAgKFdlYktpdCk6Ci0gICAgICAgICogV2ViRE9NU2VsZWN0aW9uLmNwcDoKLSAg
ICAgICAgKFdlYktpdCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYktpdFNlbGVjdGlvbjo6V2ViS2l0
U2VsZWN0aW9uKToKLSAgICAgICAgKFdlYktpdDo6V2ViS2l0U2VsZWN0aW9uOjpHZXRSb290RWRp
dGFibGVFbGVtZW50KToKLSAgICAgICAgKFdlYktpdDo6V2ViS2l0U2VsZWN0aW9uOjpHZXRBc1Jh
bmdlKToKLSAgICAgICAgKiBXZWJET01TZWxlY3Rpb24uaDoKLSAgICAgICAgKFdlYktpdCk6Ci0g
ICAgICAgICogV2ViRWRpdC5jcHA6Ci0gICAgICAgIChXZWJLaXQpOgotICAgICAgICAoV2ViS2l0
OjpXZWJFZGl0Q29tbWFuZDo6V2ViRWRpdENvbW1hbmQpOgotICAgICAgICAoV2ViS2l0OjpXZWJF
ZGl0Q29tbWFuZDo6fldlYkVkaXRDb21tYW5kKToKLSAgICAgICAgKFdlYktpdDo6V2ViRWRpdENv
bW1hbmQ6OlNldE5vZGVBdHRyaWJ1dGUpOgotICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29tbWFu
ZDo6QXBwbHkpOgotICAgICAgICAqIFdlYkVkaXQuaDoKLSAgICAgICAgKFdlYktpdCk6Ci0gICAg
ICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAoV2ViS2l0KToKLSAgICAgICAgKFdlYktpdDo6
a2l0KToKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OldlYkZyYW1lKToKLSAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6On5XZWJGcmFtZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpH
ZXROYW1lKToKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkdldEZyYW1lKToKLSAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OlN0b3ApOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6UmVs
b2FkKToKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkdldFBhZ2VTb3VyY2UpOgotICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6U2V0UGFnZVNvdXJjZSk6Ci0gICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpHZXRJbm5lclRleHQpOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6R2V0QXNN
YXJrdXApOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6R2V0RXh0ZXJuYWxSZXByZXNlbnRh
dGlvbik6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpHZXRTZWxlY3Rpb25Bc0hUTUwpOgot
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6R2V0U2VsZWN0aW9uQXNUZXh0KToKLSAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OkdldFNlbGVjdGlvbik6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjpSdW5TY3JpcHQpOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6RXhlY3V0ZUVkaXRD
b21tYW5kKToKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkdldEVkaXRDb21tYW5kU3RhdGUp
OgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6R2V0RWRpdENvbW1hbmRWYWx1ZSk6Ci0gICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lOjpGaW5kU3RyaW5nKToKLSAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OkxvYWRVUkwpOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6R2V0VVJMKToKLSAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkdvQmFjayk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjpHb0ZvcndhcmQpOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Q2FuR29CYWNrKToK
LSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkNhbkdvRm9yd2FyZCk6Ci0gICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpVbmRvKToKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OlJlZG8pOgot
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Q2FuVW5kbyk6Ci0gICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpDYW5SZWRvKToKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkNhbkluY3JlYXNl
VGV4dFNpemUpOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6ZSk6
Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpDYW5EZWNyZWFzZVRleHRTaXplKToKLSAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUpOgotICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6UmVzZXRUZXh0U2l6ZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpN
YWtlRWRpdGFibGUpOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6SXNFZGl0YWJsZSk6Ci0g
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpDYW5Db3B5KToKLSAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OkNvcHkpOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Q2FuQ3V0KToKLSAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OkN1dCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpD
YW5QYXN0ZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpQYXN0ZSk6Ci0gICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpQcmludCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpIaXRU
ZXN0KToKLSAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OlNob3VsZENsb3NlKToKLSAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OkdldENvbXBhdGliaWxpdHlNb2RlKToKLSAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWU6OkdyYW50VW5pdmVyc2FsQWNjZXNzKToKLSAgICAgICAgKiBXZWJGcmFtZS5o
OgotICAgICAgICAoV2ViS2l0KToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVu
dFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OndrRmVhdHVyZXNmb3JXaW5kb3dGZWF0dXJlcyk6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Q2hyb21lQ2xpZW50V3gpOgotICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyk6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFd4OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6cnVuSmF2YVNjcmlwdFByb21wdCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6cHJpbnQpOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50V3g6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9y
dC9DaHJvbWVDbGllbnRXeC5oOgotICAgICAgICAoQ2hyb21lQ2xpZW50V3gpOgotICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50V3g6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyk6Ci0gICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRXeDo6cmVnaXN0ZXJVbmRvU3RlcCk6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRXeDo6cmVnaXN0ZXJSZWRvU3RlcCk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRXeDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgotICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50V3g6OmNhblVuZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
V3g6OmNhblJlZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnVuZG8pOgot
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlZG8pOgotICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50V3g6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgotICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKLSAgICAgICAgKEVkaXRvckNsaWVudFd4
KToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6d3hOYXZUeXBlRnJvbVdlYk5hdlR5cGUpOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0RnJhbWUpOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDo6c2V0V2ViVmlldyk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cyk6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFd4OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFd4Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZhaWxMb2Fk
aW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpjcmVhdGVGcmFtZSk6Ci0gICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4Lmg6Ci0gICAgICAgIChXZWJLaXQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRXeDo6d2ViRnJhbWUpOgotICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRXeCk6Ci0gICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojp3ZWJWaWV3KToKLSAgICAgICAgKiBX
ZWJTZXR0aW5ncy5jcHA6Ci0gICAgICAgIChXZWJLaXQpOgotICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nczo6U2V0RGVmYXVsdEZpeGVkRm9udFNpemUpOgotICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nczo6R2V0RGVmYXVsdEZpeGVkRm9udFNpemUpOgotICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nczo6U2V0RGVmYXVsdEZvbnRTaXplKToKLSAgICAgICAgKFdlYktpdDo6V2ViU2V0dGlu
Z3M6OkdldERlZmF1bHRGb250U2l6ZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzOjpT
ZXRNaW5pbXVtRm9udFNpemUpOgotICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6R2V0TWlu
aW11bUZvbnRTaXplKToKLSAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OlNldExvYWRzSW1h
Z2VzQXV0b21hdGljYWxseSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzOjpMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkpOgotICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0SmF2
YVNjcmlwdEVuYWJsZWQpOgotICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6SXNKYXZhU2Ny
aXB0RW5hYmxlZCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzOjpTZXRMb2NhbFN0b3Jh
Z2VQYXRoKToKLSAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OkdldExvY2FsU3RvcmFnZVBh
dGgpOgotICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0RWRpdGFibGVMaW5rQmVoYXZp
b3IpOgotICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6R2V0RWRpdGFibGVMaW5rQmVoYXZp
b3IpOgotICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQpOgot
ICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6QXJlUGx1Z2luc0VuYWJsZWQpOgotICAgICAg
ICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6Ci0gICAg
ICAgIChXZWJLaXQ6OldlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKLSAgICAg
ICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OlNldFVzZXNQYWdlQ2FjaGUpOgotICAgICAgICAoV2Vi
S2l0OjpXZWJTZXR0aW5nczo6VXNlc1BhZ2VDYWNoZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlNl
dHRpbmdzOjpTZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOgotICAgICAgICAo
V2ViS2l0OjpXZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToK
LSAgICAgICAgKiBXZWJTZXR0aW5ncy5oOgotICAgICAgICAoV2ViS2l0KToKLSAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKLSAgICAgICAgKFdlYktpdCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXdM
b2FkRXZlbnQ6OldlYlZpZXdMb2FkRXZlbnQpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3QmVm
b3JlTG9hZEV2ZW50OjpXZWJWaWV3QmVmb3JlTG9hZEV2ZW50KToKLSAgICAgICAgKFdlYktpdDo6
V2ViVmlld05ld1dpbmRvd0V2ZW50OjpXZWJWaWV3TmV3V2luZG93RXZlbnQpOgotICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3UmlnaHRDbGlja0V2ZW50OjpXZWJWaWV3UmlnaHRDbGlja0V2ZW50KToK
LSAgICAgICAgKFdlYktpdDo6V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQ6OldlYlZpZXdDb25z
b2xlTWVzc2FnZUV2ZW50KToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlld0FsZXJ0RXZlbnQ6Oldl
YlZpZXdBbGVydEV2ZW50KToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlld0NvbmZpcm1FdmVudDo6
V2ViVmlld0NvbmZpcm1FdmVudCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXdQcm9tcHRFdmVu
dDo6V2ViVmlld1Byb21wdEV2ZW50KToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlld1JlY2VpdmVk
VGl0bGVFdmVudDo6V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCk6Ci0gICAgICAgIChXZWJLaXQ6
OldlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnQ6OldlYlZpZXdXaW5kb3dPYmplY3RDbGVh
cmVkRXZlbnQpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQ6
OldlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXdT
ZWxlY3Rpb25DaGFuZ2VkRXZlbnQ6OldlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQpOgotICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3UHJpbnRGcmFtZUV2ZW50OjpXZWJWaWV3UHJpbnRGcmFtZUV2
ZW50KToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlld0RPTUVsZW1lbnRJbmZvOjpXZWJWaWV3RE9N
RWxlbWVudEluZm8pOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTZXRDYWNoZVBvbGljeSk6
Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkdldENhY2hlUG9saWN5KToKLSAgICAgICAgKFdl
YktpdDo6V2ViVmlld0RPTUVsZW1lbnRJbmZvOjp+V2ViVmlld0RPTUVsZW1lbnRJbmZvKToKLSAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZp
ZXc6OkNyZWF0ZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6On5XZWJWaWV3KToKLSAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6T25UTFdBY3RpdmF0ZWQpOgotICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpTdG9wKToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6UmVsb2FkKToKLSAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6R2V0UGFnZVNvdXJjZSk6Ci0gICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OlNldFBhZ2VTb3VyY2UpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRJbm5l
clRleHQpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRBc01hcmt1cCk6Ci0gICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OkdldEV4dGVybmFsUmVwcmVzZW50YXRpb24pOgotICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpHZXRTZWxlY3Rpb24pOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
OjpHZXRTZWxlY3Rpb25Bc0hUTUwpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRTZWxl
Y3Rpb25Bc1RleHQpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTZXRUcmFuc3BhcmVudCk6
Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OklzVHJhbnNwYXJlbnQpOgotICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3OjpSdW5TY3JpcHQpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpFeGVj
dXRlRWRpdENvbW1hbmQpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRFZGl0Q29tbWFu
ZFN0YXRlKToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6R2V0RWRpdENvbW1hbmRWYWx1ZSk6
Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkxvYWRVUkwpOgotICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpHZXRNYWluRnJhbWVVUkwpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHb0Jh
Y2spOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHb0ZvcndhcmQpOgotICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3OjpDYW5Hb0JhY2spOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpDYW5H
b0ZvcndhcmQpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpDYW5JbmNyZWFzZVRleHRTaXpl
KToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6SW5jcmVhc2VUZXh0U2l6ZSk6Ci0gICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OkNhbkRlY3JlYXNlVGV4dFNpemUpOgotICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpEZWNyZWFzZVRleHRTaXplKToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
UmVzZXRUZXh0U2l6ZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Ok1ha2VFZGl0YWJsZSk6
Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OklzRWRpdGFibGUpOgotICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpPblBhaW50KToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6RmluZFN0cmlu
Zyk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Ok9uU2l6ZSk6Ci0gICAgICAgIChXZWJLaXQ6
OldlYlZpZXc6Ok9uTW91c2VFdmVudHMpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpPbkNv
bnRleHRNZW51RXZlbnRzKToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6T25NZW51U2VsZWN0
RXZlbnRzKToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6T25Nb3VzZUNhcHR1cmVMb3N0KToK
LSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Q2FuQ29weSk6Ci0gICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OkNvcHkpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpDYW5DdXQpOgotICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpDdXQpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpDYW5Q
YXN0ZSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OlBhc3RlKToKLSAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6T25LZXlFdmVudHMpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpPblNl
dEZvY3VzKToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6T25LaWxsRm9jdXMpOgotICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpIaXRUZXN0KToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
U2hvdWxkQ2xvc2UpOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTZXREYXRhYmFzZURpcmVj
dG9yeSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkdldERhdGFiYXNlRGlyZWN0b3J5KToK
LSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6U2V0RGF0YWJhc2VzRW5hYmxlZCk6Ci0gICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OkFyZURhdGFiYXNlc0VuYWJsZWQpOgotICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpTZXRQcm94eUluZm8pOgotICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRX
ZWJTZXR0aW5ncyk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkdldENvbXBhdGliaWxpdHlN
b2RlKToKLSAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6R3JhbnRVbml2ZXJzYWxBY2Nlc3MpOgot
ICAgICAgICAqIFdlYlZpZXcuaDoKLSAgICAgICAgKFdlYktpdCk6Ci0gICAgICAgICogYmluZGlu
Z3MvcHl0aG9uL3dlYnZpZXcuaToKLQotMjAxMi0wMy0yOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRA
Y2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZExvYWRNYWluUmVzb3Vy
Y2UgY2FsbGJhY2ssIHNpbmNlIG5vCi0gICAgICAgIHBvcnQgaW1wbGVtZW50cyBpdC4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNTM5Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KLQotICAgICAgICAqIFdlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlKToKLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLSAgICAgICAgKEZyYW1l
TG9hZGVyQ2xpZW50V3gpOgotCi0yMDEyLTAzLTI1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXguIEFk
ZCBoZWFkZXIgbmVlZGVkIGZvciBVbml4IGJ1aWxkcy4KLQotICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0KLTIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBp
ZnJhbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
NTkwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgUmVtb3Zl
IEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuCi0KLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2Vi
Q29yZSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6Ci0g
ICAgICAgIChGcmFtZUxvYWRlckNsaWVudFd4KToKLQotMjAxMi0wMy0xNSAgS2V2aW4gT2xsaXZp
ZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBNb3ZlIHd4IHBvcnQgdG8g
dXNpbmcgZXhwb3J0IG1hY3JvcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzcyNzkKLQotICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgot
Ci0gICAgICAgICogd3NjcmlwdDoKLQotMjAxMi0wMy0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPiAmJiBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIEFsd2F5cyBlbmFibGUgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODUzCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQv
Q2hyb21lQ2xpZW50V3guY3BwOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaDoKLQotMjAxMi0wMi0yNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVtLm9y
Zz4KLQotICAgICAgICBNb3ZlIENocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkgdG8gQ29u
dGV4dE1lbnVDbGllbnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NDI3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKENocm9tZUNsaWVu
dFd4KToKLQotMjAxMi0wMi0yNCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5v
cmc+Ci0KLSAgICAgICAgU3BlbGxDaGVja1JlcXVlc3QgbmVlZHMgdG8ga25vdyB0aGUgY29udGV4
dCB3aGVyZSB0aGUgc3BlbGxjaGVjayBoYXBwZW5lZC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MzIwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSGFq
aW1lIE1vcml0YS4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoK
LSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6Ci0KLTIwMTItMDItMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+Ci0KLSAg
ICAgICAgUmVtb3ZlIHRoZSByZW1haW5pbmcgdXNlcyBvZiBDU1NTdHlsZURlY2xhcmF0aW9uIGlu
IEVkaXRvcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzg5MzkKLQotICAgICAgICBSZXZpZXdlZCBieSBFbnJpY2EgQ2FzdWNjaS4KLQotICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50V3g6OnNob3VsZEFwcGx5U3R5bGUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQv
RWRpdG9yQ2xpZW50V3guaDoKLSAgICAgICAgKEVkaXRvckNsaWVudFd4KToKLQotMjAxMi0wMi0y
MiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZW1vdmUgdGhl
IHJlbWFpbmluZyB1c2VzIG9mIENTU1N0eWxlRGVjbGFyYXRpb24gaW4gRWRpdG9yCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODkzOQotCi0gICAgICAg
IFJldmlld2VkIGJ5IEVucmljYSBDYXN1Y2NpLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6c2hv
dWxkQXBwbHlTdHlsZSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5o
OgotICAgICAgICAoRWRpdG9yQ2xpZW50V3gpOgotCi0yMDEyLTAyLTE1ICBTYWRydWwgSGFiaWIg
Q2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KLQotICAgICAgICBOb3RpZnkgQ2hyb21l
Q2xpZW50IHdoZW4gdG91Y2gtZXZlbnQgaGFuZGxlcnMgYXJlIGluc3RhbGxlZC9yZW1vdmVkLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDAKLQot
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIgYW5kIFJ5b3N1a2UgTml3YS4KLQotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFd4OjpudW1Ub3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKToKLQotMjAxMi0w
MS0zMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICBbd3hdIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeCwgYWRkIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUK
LSAgICAgICAgdG8gaW5jbHVkZSBkaXJzLgotCi0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dz
Y3JpcHQ6Ci0KLTIwMTItMDEtMjYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVy
cy5jb20+Ci0KLSAgICAgICAgW3d4XSBVbnJldmlld2VkLiAKLSAgICAgICAgQnVpbGQgZml4ZXMg
YWZ0ZXIgVW5kb1N0ZXAgYW5kIENocm9tZUNsaWVudCBjaGFuZ2VzLgotCi0gICAgICAgICogV2Vi
RnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6UnVuU2NyaXB0KToKLSAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmUpOgotICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6Omhhc09wZW5lZFBvcHVwKToKLSAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0gICAgICAgIChDaHJvbWVDbGllbnRX
eCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVnaXN0ZXJVbmRvU3RlcCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVnaXN0ZXJSZWRvU3RlcCk6Ci0gICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRXeDo6dW5kbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRXeDo6cmVkbyk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgot
ICAgICAgICAoRWRpdG9yQ2xpZW50V3gpOgotICAgICAgICAqIFdlYlZpZXdQcml2YXRlLmg6Ci0g
ICAgICAgIChXZWJWaWV3UHJpdmF0ZSk6Ci0KLTIwMTEtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmVuYW1lIHJlZ2lzdGVyQ29tbWFuZEZvcihVbmRv
fFJlZG8pIHRvIHJlZ2lzdGVyKFVuZG98UmVkbylTdGVwCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDc0OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVnaXN0ZXJVbmRvU3RlcCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVnaXN0ZXJSZWRvU3RlcCk6Ci0gICAg
ICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgotCi0yMDExLTEyLTE2ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgR2l2ZSBQbGF0Zm9ybUV2ZW50cyBh
IGJhc2UgY2xhc3MKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc0Njg1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAg
ICAgIEFkZCBhIGJhc2UgY2xhc3MgZm9yIFBsYXRmb3JtTW91c2VFdmVudCwgUGxhdGZvcm1LZXli
b2FyZEV2ZW50LCBQbGF0Zm9ybVdoZWVsRXZlbnQKLSAgICAgICAgYW5kIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50IGFuZCBtb3ZlIFR5cGUgZW51bWVyYXRpb24gYW5kIG1vZGlmaWVycyBkb3duIHRvIGl0
LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgot
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmludGVycHJldEtleUV2ZW50KToKLQot
MjAxMS0xMi0xMSAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4uY29tPgotCi0gICAgICAgIEFk
ZCBhIFVSTCBhcmd1bWVudCB0byB0aGUgd3hXZWJWaWV3IGNvbnN0cnVjdG9yLAotICAgICAgICBh
bmQgZml4IHBhZ2UgY2FsY3VsYXRpb25zIGFuZCBtYXJnaW5zIG9uIFdpbmRvd3MgYW5kIE1hYy4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzE2Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgKiBXZWJCcm93
c2VyU2hlbGwuY3BwOgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ond4V2ViQnJvd3NlclNo
ZWxsKToKLSAgICAgICAgKiBXZWJCcm93c2VyU2hlbGwuaDoKLSAgICAgICAgKiBXZWJGcmFtZS5j
cHA6Ci0gICAgICAgICh3eFdlYkZyYW1lUHJpbnRvdXQ6Ond4V2ViRnJhbWVQcmludG91dCk6Ci0g
ICAgICAgICh3eFdlYkZyYW1lUHJpbnRvdXQ6On53eFdlYkZyYW1lUHJpbnRvdXQpOgotICAgICAg
ICAod3hXZWJGcmFtZVByaW50b3V0OjpJbml0aWFsaXplV2l0aFBhZ2VTaXplKToKLSAgICAgICAg
KHd4V2ViRnJhbWVQcmludG91dDo6T25QcmVwYXJlUHJpbnRpbmcpOgotICAgICAgICAod3hXZWJG
cmFtZVByaW50b3V0OjpPblByaW50UGFnZSk6Ci0gICAgICAgICh3eFdlYkZyYW1lUHJpbnRvdXQ6
Ok9uRW5kUHJpbnRpbmcpOgotICAgICAgICAod3hXZWJGcmFtZTo6UHJpbnQpOgotICAgICAgICAq
IFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3Ojp3eFdlYlZpZXcpOgotICAgICAgICAo
d3hXZWJWaWV3OjpDcmVhdGUpOgotICAgICAgICAqIFdlYlZpZXcuaDoKLSAgICAgICAgKiBiaW5k
aW5ncy9weXRob24vc2FtcGxlcy9zaW1wbGUucHk6Ci0gICAgICAgIChUZXN0UGFuZWwuX19pbml0
X18pOgotCi0yMDExLTEyLTA3ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+
Ci0KLSAgICAgICAgQ2hhbmdlIGZ1bmN0aW9uIG5hbWUgSW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVs
c0lmTmVjZXNzYXJ5IHRvIGZvbGxvdyBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzk4NgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgotCi0gICAgICAgICogV2ViVmll
dy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNyZWF0ZSk6Ci0KLTIwMTEtMTItMDIgIEtldmlu
IE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgW3d4XSBVbnJl
dmlld2VkIGJ1aWxkIGZpeGVzIGZvciBXaW5kb3dzIGJ1aWxkLgotCi0gICAgICAgICogV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLQotMjAxMS0xMS0zMCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgYW4gdW5uZWVkZWQg
YXJndW1lbnQgZnJvbSBGcmFtZUxvYWRlckNsaWVudDo6ZG93bmxvYWQKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDg2Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojpk
b3dubG9hZCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6
Ci0gICAgICAgIFVwZGF0ZWQgZm9yIHRoZSBjaGFuZ2UuCi0KLTIwMTEtMTEtMzAgIFJvYmluIER1
bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4KLQotICAgICAgICBHZW5lcmF0ZSBhIG1vcmUgcm9idXN0
IHVzZXIgYWdlbnQgc3RyaW5nLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM0NjUKLSAgICAgICAgCi0gICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9s
bGl2aWVyLgotICAgICAgICAKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6YWdlbnRPUyk6Ci0gICAgICAgIChXZWJDb3Jl
Ojpjb21wb3NlVXNlckFnZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
V3g6OnVzZXJBZ2VudCk6Ci0KLTIwMTEtMTEtMzAgIFJvYmluIER1bm4gIDxyb2JpbkBhbGxkdW5u
LmNvbT4KLQotICAgICAgICBVc2UgdGhlIHd4R0NEQyh3eEdyYXBoaWNzQ29udGV4dCkgY29uc3Ry
dWN0b3Igb24gTWFjIGFzIHdlbGwKLSAgICAgICAgdG8gYXZvaWQgaXNzdWVzIHdpdGggdGhlIHd4
R0NEQyh3eFByaW50ZXJEQykgY29uc3RydWN0b3IuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQ2MwotICAgICAgICAKLSAgICAgICAgUmV2aWV3ZWQg
YnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3
eFdlYkZyYW1lUHJpbnRvdXQ6Ok9uUHJpbnRQYWdlKToKLQotMjAxMS0xMS0yNiAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEwMTE5My4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTAxMTkzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MzE1OAotCi0gICAgICAgIEJyZWFrcyBXaW5kb3dzIGFuZCBRdCBtaW5pbWFsLiAoUmVx
dWVzdGVkIGJ5IHBmZWxkbWFuIG9uCi0gICAgICAgICN3ZWJraXQpLgotCi0gICAgICAgICogV2Vi
S2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRXeC5oOgotCi0yMDExLTExLTIyICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AZ29vZ2xlLmNvbT4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgSW5zcGVj
dG9yOjpicmluZ1RvRnJvbnQgZnJvbSB0aGUgcHJvdG9jb2wuCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjkzNwotCi0gICAgICAgIFJldmlld2VkIGJ5
IFl1cnkgU2VtaWtoYXRza3kuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNs
aWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFd4OjpicmluZ0Zy
b250ZW5kVG9Gcm9udCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRX
eC5oOgotCi0yMDExLTExLTIxICBSb2JpbiBEdW5uICA8cm9iaW5AYWxsZHVubi5jb20+Ci0KLSAg
ICAgICAgQWRkIHd4V2ViS2l0IEFQSXMgZm9yIGNvbnRyb2xsaW5nIFdlYktpdCBjYWNoaW5nIGJl
aGF2aW9yLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI4OTEKLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICAq
IFdlYlNldHRpbmdzLmNwcDoKLSAgICAgICAgKHd4V2ViU2V0dGluZ3M6OlNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQpOgotICAgICAgICAod3hXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCk6Ci0gICAgICAgICh3eFdlYlNldHRpbmdzOjpTZXRVc2VzUGFnZUNhY2hlKToKLSAgICAg
ICAgKHd4V2ViU2V0dGluZ3M6OlVzZXNQYWdlQ2FjaGUpOgotICAgICAgICAod3hXZWJTZXR0aW5n
czo6U2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKLSAgICAgICAgKHd4V2Vi
U2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCk6Ci0gICAgICAgICog
V2ViU2V0dGluZ3MuaDoKLQotMjAxMS0xMS0yMSAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4u
Y29tPgotCi0gICAgICAgIEFkZCB3eFdlYktpdCBBUEkgZm9yIHJldHJpZXZpbmcgZnJhbWUgYW5k
IHBhZ2UgVVJMcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcyODkwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAg
ICAgKiBXZWJCcm93c2VyU2hlbGwuY3BwOgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ond4
V2ViQnJvd3NlclNoZWxsKToKLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdl
YkZyYW1lOjpHZXRVUkwpOgotICAgICAgICAqIFdlYkZyYW1lLmg6Ci0gICAgICAgICogV2ViVmll
dy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldE1haW5GcmFtZVVSTCk6Ci0gICAgICAgICog
V2ViVmlldy5oOgotCi0yMDExLTEwLTE3ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+
Ci0KLSAgICAgICAgUGFzcyBhIEZyYW1lKiBwYXJhbWV0ZXIgaW4gRWRpdG9yQ2xpZW50OjpyZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MDI0OAotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4K
LQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOiBNYWtlIHVzZSBv
ZiB0aGUgbmV3bHkgYWRkZWQgRnJhbWUqIHBhcmFtZXRlci4KLSAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudFd4OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6Ci0KLTIwMTEtMTEtMTUgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBIb3N0V2luZG93IHNjcmVlblRvV2lu
ZG93L3dpbmRvd1RvU2NyZWVuIHNob3VsZCBiZSBzY3JlZW5Ub1Jvb3RWaWV3L3Jvb3RWaWV3VG9T
Y3JlZW4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcy
Mzk3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KLQotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50V3g6OnJvb3RWaWV3VG9TY3JlZW4pOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50V3g6OnNjcmVlblRvUm9vdFZpZXcpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21l
Q2xpZW50V3guaDoKLQotMjAxMS0xMS0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgotCi0gICAgICAgIEhvc3RXaW5kb3cgaW52YWxpZGF0aW9uIGZ1bmN0aW9ucyBzaG91
bGQgdXNlIHJvb3QgdmlldyBjb29yZGluYXRlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzMzgKLQotICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVy
bnN0ZWluLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6aW52YWxpZGF0ZVJvb3RWaWV3KToKLSAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjppbnZhbGlkYXRlQ29udGVudHNGb3JTbG93
U2Nyb2xsKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjppbnZhbGlkYXRlQ29u
dGVudHNBbmRSb290Vmlldyk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5oOgotCi0yMDExLTExLTAyICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgotCi0g
ICAgICAgIFhTU0F1ZGl0b3IgaXMgc2lsZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlkRGV0ZWN0WFNTKToKLSAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAxMS0xMC0y
OCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZW5h
bWUgYSBudW1iZXIgb2YgbWV0aG9kcyBtZW50aW9uaW5nIEphdmFTY3JpcHQgdG8ganVzdCBTY3Jp
cHQgaW5zdGVhZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzExMDUKLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgICog
V2ViU2V0dGluZ3MuY3BwOgotICAgICAgICAod3hXZWJTZXR0aW5nczo6U2V0SmF2YVNjcmlwdEVu
YWJsZWQpOgotICAgICAgICAod3hXZWJTZXR0aW5nczo6SXNKYXZhU2NyaXB0RW5hYmxlZCk6Ci0g
ICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNyZWF0ZSk6Ci0KLTIw
MTEtMDktMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBBbHdh
eXMgZW5hYmxlIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc2NwotCi0gICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVD
bGllbnRXeC5oOgotCi0yMDExLTA5LTE3ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21p
dW0ub3JnPgotCi0gICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50IEJhY2tGb3J3YXJkTGlzdC1yZWxh
dGVkIG1ldGhvZHMgYXJlIHVuc3VlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjgyOTMKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
LQotICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0aGF0IHdlcmUgYWRk
ZWQgYnkgcjUxNjI5LCBzaW5jZSBvbmx5ICAgICAgICAKLSAgICAgICAgdGhlIG9sZCAoc2luY2Ut
ZGVsZXRlZCkgQW5kcm9pZCBwb3J0IG5lZWRlZCB0aGVtLgotCi0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAxMS0wOS0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgotCi0gICAgICAgIFJlbmFtZSBFTkFCTEUoREFUQUJBU0UpIHRvIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODIwNQotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAg
ICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9DaHJvbWVDbGllbnRXeC5oOgotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAo
d3hXZWJWaWV3OjpDcmVhdGUpOgotICAgICAgICAod3hXZWJWaWV3OjpTZXREYXRhYmFzZURpcmVj
dG9yeSk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldERhdGFiYXNlRGlyZWN0b3J5KToKLSAgICAg
ICAgKHd4V2ViVmlldzo6U2V0RGF0YWJhc2VzRW5hYmxlZCk6Ci0gICAgICAgICh3eFdlYlZpZXc6
OkFyZURhdGFiYXNlc0VuYWJsZWQpOgotCi0yMDExLTA5LTA0ICBSb2JpbiBEdW5uICA8cm9iaW5A
YWxsZHVubi5jb20+Ci0KLSAgICAgICAgW3d4XSBFbmFibGUgd3hXZWJLaXQgdG8gcnVuIHVzaW5n
IHRoZSB3eEdDIENhaXJvIGJhY2tlbmQgb24gcGxhdGZvcm1zIG90aGVyIHRoYW4gR1RLLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc1NzcKLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICAqIFdlYkZyYW1lLmNw
cDoKLSAgICAgICAgKHd4V2ViRnJhbWVQcmludG91dDo6SW5pdGlhbGl6ZVdpdGhQYWdlU2l6ZSk6
Ci0gICAgICAgICh3eFdlYkZyYW1lUHJpbnRvdXQ6Ok9uQmVnaW5QcmludGluZyk6Ci0gICAgICAg
ICh3eFdlYkZyYW1lUHJpbnRvdXQ6Ok9uUHJpbnRQYWdlKToKLSAgICAgICAgKHd4V2ViRnJhbWU6
OlByaW50KToKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6T25Q
YWludCk6Ci0KLTIwMTEtMDgtMzAgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+Ci0KLSAgICAgICAgVGhlIHVudXNlZCBTY3JvbGxWaWV3KiBhcmd1bWVudCBjYW4g
YW5kIHNob3VsZCBiZSByZW1vdmVkIGZyb20KLSAgICAgICAgc2Nyb2xsUmVjdEludG9WaWV3Lgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxMTcKLQot
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICAqIFdlYktpdFN1cHBv
cnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojpz
Y3JvbGxSZWN0SW50b1ZpZXcpOgotCi0yMDExLTA4LTE3ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KLQotICAgICAgICBNYWtlIFdlYkNvcmUga2VlcCB0cmFjayBvZiB0aGUgY3VycmVu
dCBkZXZpY2Ugc2NhbGUgZmFjdG9yCi0KLSAgICAgICAgRml4ZXMgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvNjY0MTM+IFdlYkNvcmUgcmVxdWlyZXMgZXZlcnkgV2ViS2l0IHBvcnQgdG8ga2VlcCB0cmFj
ayBvZiB0aGUKLSAgICAgICAgZGV2aWNlIHNjYWxlIGZhY3RvcgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgotICAgICAg
ICBSZW1vdmVkIGRldmljZVNjYWxlRmFjdG9yLgotCi0yMDExLTA4LTE1ICBEbWl0cnkgVGl0b3Yg
IDxkaW1pY2hAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlIGRvZXMgbm90IGhhdmUgZW5vdWdoIHBhcmFtZXRl
cnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTY1
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgotCi0gICAgICAgICogV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50V3g6OnRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UpOgotICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDExLTA4LTEwICBB
ZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBDbGVhciB1cCBzY2FsZSBm
YWN0b3IgdGVybWlub2xvZ3kKLQotICAgICAgICBXZWJLaXQgYnkgYW5kIGxhcmdlIGRlYWxzIHdp
dGggdHdvIHNjYWxlIGZhY3RvcnM6IG9uZSBpbnRyaW5zaWMgdG8gdGhlIGRldmljZSBvbiB3aGlj
aCB0aGUKLSAgICAgICAgc29mdHdhcmUgaXMgcnVubmluZywgYW5kIG9uZSB0aGF0IGlzIHBlci1Q
YWdlIGFuZCBjYW4gYmUgY29udHJvbGxlZCB2aWEgQVBJIGNhbGxzLiBUaGlzCi0gICAgICAgIHBh
dGNoIG5hbWVzIHRoZSBmb3JtZXIgImRldmljZVNjYWxlRmFjdG9yIiBhbmQgdGhlIGxhdHRlciAi
cGFnZVNjYWxlRmFjdG9yIiwgYW5kIG1ha2VzIHRoZQotICAgICAgICBjb2RlIHVzZSB0aG9zZSBu
YW1lcy4gSXQgc2hvdWxkIGludHJvZHVjZSBubyBiZWhhdmlvciBjaGFuZ2VzLgotCi0gICAgICAg
IEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU1Nzg3PiBXZWJLaXQgdXNlcyBtdWx0aXBsZSBj
b25mbGljdGluZyBuYW1lcyB0byByZWZlciB0byB0aGUKLSAgICAgICAgZGV2aWNlIHNjYWxlIGZh
Y3RvcgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KLQotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQv
Q2hyb21lQ2xpZW50V3guaDoKLQotMjAxMS0wOC0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzI5Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgRG9uJ3QgaW5jbHVkZSBQbHVnaW5IYWx0
ZXJDbGllbnQuaCwgaXQncyBiZWVuIHJlbW92ZWQuCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoK
LQotMjAxMS0wOC0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KLQot
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgTm9kZSBwYXJhbWV0ZXIgZnJvbSB0aGUgSW5z
cGVjdG9yQ2xpZW50OjpoaWdobGlnaHQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1NTQ5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hh
dHNreS4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V3g6OmhpZ2hsaWdodCk6Ci0gICAgICAg
ICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oOgotCi0yMDExLTA3LTMwICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJlbW92ZSBpbmNs
dXNpb24gb2YgTWFpblRocmVhZC5oIGZyb20gVGhyZWFkaW5nLmgKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDgxCi0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgQWRkIG1pc3NpbmcgaW5jbHVkZSBzdGF0ZW1lbnRz
IGZvciBNYWluVGhyZWFkLgotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0KLTIwMTEtMDctMjYg
IFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgotCi0gICAgICAg
IEFkZCBzdXBwb3J0IGZvciBkb3dubG9hZD0nZmlsZW5hbWUnIGF0dHJpYnV0ZSBpbiBhbmNob3Jz
LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1ODAK
LQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50V3g6OnN0YXJ0RG93bmxvYWQpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDExLTA3LTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBh
cHBsZS5jb20+Ci0KLSAgICAgICAgUkVHUkVTU0lPTjogTW91c2UgY3Vyc29yIGRvZXNu4oCZdCBo
aWRlIHdoZW4gZnVsbCBzY3JlZW4gdmlkZW8gSFVEIGhpZGVzCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDYxNQotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpzZXRDdXJzb3JIaWRkZW5V
bnRpbE1vdXNlTW92ZXMpOiBBZGRlZCB0aGlzIHN0dWIuCi0KLTIwMTEtMDctMTIgIEpvc2VwaCBQ
ZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KLQotICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
IHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXItb3Jp
Z2luIHF1b3RhCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NDE3NwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToK
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0KLTIwMTEtMDctMDkg
IFJvYmluIER1bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZXZpbiBPbGxpdmllci4KLQotICAgICAgICBbd3hdIEluIGxvYWQgZXZlbnRzLCBzcGVjaWZ5IHRo
ZSB3eFdlYkZyYW1lIHRoYXQgc2VudCB0aGVtLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjMzCi0KLSAgICAgICAgKiBXZWJCcm93
c2VyU2hlbGwuY3BwOgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ok9uTG9hZEV2ZW50KToK
LSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpHZXROYW1lKToK
LSAgICAgICAgKiBXZWJGcmFtZS5oOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojpk
aXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cyk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ29tbWl0
TG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERp
ZEZpbmlzaERvY3VtZW50TG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFd4Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Ci0gICAgICAgICogV2ViVmll
dy5oOgotICAgICAgICAqIGJpbmRpbmdzL3B5dGhvbi93ZWJ2aWV3Lmk6Ci0KLTIwMTEtMDctMDkg
IFJvYmluIER1bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZXZpbiBPbGxpdmllci4KLQotICAgICAgICBNYWtlIHN1cmUgd3hQcmludERhdGEgZ3JhYnMgdGhl
IGRlZmF1bHQgcHJpbnQgc2V0dGluZ3MgdG8gY2FsY3VsYXRlIHBhZ2Ugd2lkdGgsIAotICAgICAg
ICBhbmQgcmVhZGp1c3RzIHNldHRpbmdzIGFmdGVyIHRoZSBwcmludCBkaWFsb2cgaXMgZGlzcGxh
eWVkLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0MjMyCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZy
YW1lUHJpbnRvdXQ6OkluaXRpYWxpemVXaXRoUGFnZVNpemUpOgotICAgICAgICAod3hXZWJGcmFt
ZVByaW50b3V0OjpPbkJlZ2luUHJpbnRpbmcpOgotICAgICAgICAod3hXZWJGcmFtZTo6UHJpbnQp
OgotCi0yMDExLTA3LTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgotCi0gICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXguIERvbid0IGV4cG9zZSB0aGUg
a2l0IGZ1bmN0aW9uIHRvIHRoZSBzd2lnIHdyYXBwZXJzLgotCi0gICAgICAgICogV2ViRnJhbWUu
aDoKLQotMjAxMS0wNi0yMCAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4uY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIE1ha2Ugc2hvd2luZyB0
aGUgZGlhbG9nIG9wdGlvbmFsLCBhbmQgYWRkIGhhbmRsaW5nIGZvciBKYXZhc2NyaXB0IHByaW50
KCkgY2FsbHMuCi0gICAgICAgIAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjMwMDgKLQotICAgICAgICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKGtp
dCk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpQcmludCk6Ci0gICAgICAgICogV2ViRnJhbWUuaDoK
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFd4OjpwcmludCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4Lmg6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFd4Ojp3ZWJGcmFtZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojp3
ZWJWaWV3KToKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlld1ByaW50
RnJhbWVFdmVudDo6d3hXZWJWaWV3UHJpbnRGcmFtZUV2ZW50KToKLSAgICAgICAgKiBXZWJWaWV3
Lmg6Ci0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dlYnZpZXcuaToKLQotMjAxMS0wNi0yMCAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBbd3hd
IFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIG1ldGhvZCByZW5hbWUuCi0KLSAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFd4Ojpsb2FkSWNvbkZvckZpbGVzKToKLQotMjAxMS0wNi0xOCAgRGltaXRyaSBHbGF6
a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgotCi0gICAgICAgIFNlcGFyYXRlIGNvbmNlcm5zIG9mIGxvYWRpbmcgZmlsZSBpY29u
cyBhbmQgY2hvb3NpbmcgZmlsZXMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MjkzMQotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y2hvb3NlSWNvbkZv
ckZpbGVzKTogUmVuYW1lZC4KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
Lmg6Ci0KLTIwMTEtMDYtMTggIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyQG1v
aWppLW1vYmlsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KLQot
ICAgICAgICBbbWlzY10gSlNDL3d0Zi90ZXh0LyouaCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIHZp
YSAjaW5jbHVkZSAiIgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjA4MzYKLQotICAgICAgICBBZGFtIEJhcnRoIHBvaW50ZWQgb3V0IHRoYXQgb25lIHNo
b3VsZCBub3QgaW5jbHVkZSBmaWxlcyBmcm9tCi0gICAgICAgIEphdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0IHVzaW5nICNpbmNsdWRlICJGaWxlLmgiLiBUaGlzIGNoYW5nZQotICAgICAgICBpcyBhZGRy
ZXNzaW5nIGl0LgotCi0gICAgICAgICogV2ViRWRpdC5jcHA6IEluY2x1ZGUgZmlsZSB2aWEgPHd0
Zi90ZXh0L0ZpbGUuaD4uCi0KLTIwMTEtMDYtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAg
ICAgIFJlbmFtZSBGcmFtZUxvYWRlckNsaWVudDo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJy
b3IgdG8gdXNlIHRoZSBwYXN0IHRlbnNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MjUxNgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6
OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IpOgotICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDExLTA1LTMxICBSb2JpbiBEdW5uICA8cm9i
aW5AYWxsZHVubi5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0K
LSAgICAgICAgW3d4XSBJbXBsZW1lbnQgcHJpbnRpbmcgc3VwcG9ydCBmb3Igd3hXaWRnZXRzIDIu
OS54IGFuZCBhYm92ZS4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTc5NgotCi0gICAgICAgICogV2ViQnJvd3NlclNoZWxsLmNwcDoK
LSAgICAgICAgKHd4V2ViQnJvd3NlclNoZWxsOjp3eFdlYkJyb3dzZXJTaGVsbCk6Ci0gICAgICAg
ICh3eFdlYkJyb3dzZXJTaGVsbDo6T25QcmludCk6Ci0gICAgICAgICogV2ViQnJvd3NlclNoZWxs
Lmg6Ci0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZVByaW50b3V0
Ojp3eFdlYkZyYW1lUHJpbnRvdXQpOgotICAgICAgICAod3hXZWJGcmFtZVByaW50b3V0OjpHZXRQ
YWdlQ291bnQpOgotICAgICAgICAod3hXZWJGcmFtZVByaW50b3V0OjpTZXRGaXJzdFBhZ2UpOgot
ICAgICAgICAod3hXZWJGcmFtZVByaW50b3V0OjpTZXRMYXN0UGFnZSk6Ci0gICAgICAgICh3eFdl
YkZyYW1lUHJpbnRvdXQ6OkluaXRpYWxpemVXaXRoUGFnZVNpemUpOgotICAgICAgICAod3hXZWJG
cmFtZVByaW50b3V0OjpPbkJlZ2luUHJpbnRpbmcpOgotICAgICAgICAod3hXZWJGcmFtZVByaW50
b3V0OjpHZXRQYWdlSW5mbyk6Ci0gICAgICAgICh3eFdlYkZyYW1lUHJpbnRvdXQ6Okhhc1BhZ2Up
OgotICAgICAgICAod3hXZWJGcmFtZVByaW50b3V0OjpPblByaW50UGFnZSk6Ci0gICAgICAgICh3
eFdlYkZyYW1lUHJpbnRvdXQ6Ok9uRW5kUHJpbnRpbmcpOgotICAgICAgICAod3hXZWJGcmFtZTo6
UHJpbnQpOgotICAgICAgICAqIFdlYkZyYW1lLmg6Ci0KLTIwMTEtMDUtMTMgIEpvbiBMZWUgIDxq
b25sZWVAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KLQot
ICAgICAgICBDYW4ndCBob3Jpem9udGFsbHkgc2Nyb2xsIGlmcmFtZXMgYW5kIG92ZXJmbG93IGJl
Y2F1c2Ugd2hlZWwgZXZlbnRzIGFyZSBhbHdheXMgYWNjZXB0ZWQKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzc5Ci0KLSAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRX
eDo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKTogRGVmYXVsdCBpbXBsIG9mIG5ldyBDaHJv
bWVDbGllbnQgbWV0aG9kCi0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6bnVtV2hl
ZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCk6IERlZmF1bHQgaW1wbCBvZiBuZXcgQ2hyb21lQ2xpZW50
IG1ldGhvZAotCi0yMDExLTA1LTA5ICBSb2JpbiBEdW5uICA8cm9iaW5AYWxsZHVubi5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgQ3JlYXRlIGVt
cHR5IGV2ZW50IGhhbmRsZXIgdG8gYXZvaWQgbmV3IG1vdXNlIGNhcHR1cmUgYXNzZXJ0IGFkZGVk
IGluIHd4IDIuOSBvbiB3eE1TVy4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQ4MAotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0g
ICAgICAgICh3eFdlYlZpZXc6Ok9uTW91c2VDYXB0dXJlTG9zdCk6Ci0gICAgICAgICogV2ViVmll
dy5oOgotCi0yMDExLTA1LTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIFJlbmFtZSBTZWxlY3Rp
b25Db250cm9sbGVyIHRvIEZyYW1lU2VsZWN0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDIzNAotCi0gICAgICAgICogV2ViRE9NU2VsZWN0aW9u
LmNwcDoKLSAgICAgICAgKiBXZWJET01TZWxlY3Rpb24uaDoKLSAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0VkaXRvckNsaWVudFd4LmNwcDoKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLQotMjAxMS0w
NS0wNCAgQ3JpcyBOZWNrYXIgIDxjZG5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgRXhwb3NlIFdlYlZpZXcgZGlyZWN0bHkgdGhyb3Vn
aCBDaHJvbWVDbGllbnQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTkwMgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5o
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OndlYlZpZXcpOgotCi0yMDExLTA1
LTA0ICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgS2lsemVyLgotCi0gICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRv
IEZyYW1lTG9hZGVyQ2xpZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTE0MwotCi0gICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2Ug
aW4gRnJhbWVMb2FkZXJDbGllbnQuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4Lmg6Ci0KLTIwMTEtMDQtMjMgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRo
ZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gRml4
ZWQgY2FwaXRhbGl6YXRpb24gZm9yIGNhc2Ugc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgotCi0gICAg
ICAgICogV2ViVmlldy5jcHA6Ci0KLTIwMTEtMDQtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICBB
ZGQgRnJhbWUqIHRvIHRoZSBhcmd1bWVudCBsaXN0cyBvZiBjYW5Db3B5Q3V0IGFuZCBjYW5QYXN0
ZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNTMK
LQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmNhbkNvcHlDdXQpOgotICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50V3g6OmNhblBhc3RlKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRv
ckNsaWVudFd4Lmg6Ci0KLTIwMTEtMDQtMTQgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9s
bGl2aWVycy5jb20+Ci0KLSAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeGVzIGZvciB3
eE1TVyBhbmQgd3ggMi45LjEuMS4KLSAgICAgICAgCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9D
aHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6c2V0
Q3Vyc29yKToKLQotMjAxMS0wNC0wNiAgTWFsY29sbSBNYWNMZW9kICA8bWFsY29sbS5tYWNsZW9k
QHRzaHdhbmVkamUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgot
Ci0gICAgICAgIFt3eF0gRml4IGN1cnNvciBoYW5kbGluZyBzbyB0aGF0IHdlIGFsd2F5cyBjYWxs
IHRoZSBjaHJvbWUgdG8gc2V0IGl0LgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3OTcyCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojpz
ZXRDdXJzb3IpOgotCi0yMDExLTA0LTA0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUu
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBbUmVm
YWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4
dENoZWNraW5nUmVzdWx0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjA4NQotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5o
OgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKToKLQotMjAxMS0wNC0wNCAgTWFsY29sbSBNYWNMZW9kICA8bW1hY2xlb2RAd2VibWFpbC5j
by56YT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICBN
b3ZlIHRvIHVzaW5nIEZyYW1lVmlldzo6cmVzaXplIHRvIGhhbmRsZSBjaGFuZ2VzIGluIHZpZXcg
c2l6ZS4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NzgwNQotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZp
ZXc6Ok9uU2l6ZSk6Ci0KLTIwMTEtMDQtMDQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KLQotICAgICAgICBS
RUdSRVNTSU9OIChXZWJLaXQyKTogQ2Fwcy1Mb2NrIGluZGljYXRvciBzb21ldGltZXMgZG9lc24n
dCBhcHBlYXIgaW4gV2ViS2l0MgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTEyMzAKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3ODA5ODk+Ci0KLSAg
ICAgICAgKiBXZWJWaWV3LmNwcDogKHd4V2ViVmlldzo6T25LZXlFdmVudHMpOiBNb3ZlZCBDYXBz
IExvY2sgaGFuZGxpbmcgZnJvbQotICAgICAgICBXZWJLaXRzIHRvIFdlYkNvcmUsIGJlY2F1c2Ug
V2ViS2l0IHNob3VsZG4ndCBiZSBzbWFydC4KLQotMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxl
dmFuQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQot
ICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCi0KLSAgICAgICAgVXBk
YXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCi0KLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgotICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0VGl0bGUpOgotICAgICAgICAqIFdlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDExLTAzLTI1ICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4K
LQotICAgICAgICBSRUdSRVNTSU9OIChyNzA3NDgpOiBsYXRlc3QgbmlnaHRseSBidWlsZHMga2ls
bHMgQUNfUXVpY2tUaW1lLmpzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00OTAxNgotCi0gICAgICAgIFVwZGF0ZSBvYmplY3RDb250ZW50VHlwZSgpIGlt
cGxlbWVudGF0aW9uIHRvIGhhbmRsZSB0aGUKLSAgICAgICAgc2hvdWxkUHJlZmVyUGx1Z0luc0Zv
ckltYWdlcyBmbGFnLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6Om9iamVjdENv
bnRlbnRUeXBlKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
aDoKLQotMjAxMS0wMy0yNCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KLQotICAgICAgICBbd3hdIEJ1aWxkIGZpeCwgcmVtb3ZlIG9sZCBjYWxsIGFuZCByZXBsYWNl
IGl0IHdpdGggY29ycmVjdCBvbmUuCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAg
KHd4V2ViVmlldzo6Q3JlYXRlKToKLQotMjAxMS0wMy0yNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjgxOTE2IGFuZCByODE5MTcuCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzgxOTE2Ci0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzgxOTE3
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzA3MQot
Ci0gICAgICAgIGJyb2tlIGEgdGVzdCBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3QgaGF2ZSBRdWlj
a1RpbWUgaW5zdGFsbGVkCi0gICAgICAgIChSZXF1ZXN0ZWQgYnkgZXN0ZXMgb24gI3dlYmtpdCku
Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6b2JqZWN0Q29udGVudFR5cGUpOgot
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDExLTAz
LTI0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KLQotICAgICAgICBSRUdSRVNTSU9OIChyNzA3NDgpOiBsYXRlc3Qgbmln
aHRseSBidWlsZHMga2lsbHMgQUNfUXVpY2tUaW1lLmpzCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTAxNgotCi0gICAgICAgIFVwZGF0ZSBvYmplY3RD
b250ZW50VHlwZSgpIGltcGxlbWVudGF0aW9uIHRvIGhhbmRsZSB0aGUKLSAgICAgICAgc2hvdWxk
UHJlZmVyUGx1Z0luc0ZvckltYWdlcyBmbGFnLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50V3g6Om9iamVjdENvbnRlbnRUeXBlKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guaDoKLQotMjAxMS0wMy0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQu
b3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAgICAg
ICAgUkVHUkVTU0lPTiAocjc5OTUzKTogQ2FuJ3QgdHlwZSBpbiBNUyBPdXRsb29rIDIwMTEKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NjY1Ci0KLSAg
ICAgICAgcjc5OTUzIHJlbW92ZWQgdGhlIFdlYlZpZXcgbGV2ZWwgZWRpdGFibGl0eSB3aGljaCBp
cyBwZXJzaXN0ZW50IG5vIG1hdHRlciB3aGV0aGVyCi0gICAgICAgIHVuZGVybHlpbmcgZG9jdW1l
bnQgaXRzZWxmIGlzIGNoYW5nZWQgYW5kIGVkaXRhYmlsaXR5IGdldHMgbG9zdC4gVGhlIHJlc29s
dXRpb24gaXMgdG8KLSAgICAgICAgc2V0IHRoaXMgV2ViVmlldyBlZGl0YWJsZSB2YWx1ZSB0byBX
ZWJDb3JlLiBUaGlzIGF2b2lkcyB0aGUgY2FsbGJhY2sgZnJvbSBXZWJDb3JlIHRvCi0gICAgICAg
IFdlYktpdCB3aGljaCB3YXMgdGhlIG1haW4gZ29hbCBpbiByNzk5NTMgdG8gaW1wcm92ZSBwZXJm
b3JtYW5jZS4KLQotICAgICAgICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKHd4V2ViRnJhbWU6
Ok1ha2VFZGl0YWJsZSk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpJc0VkaXRhYmxlKToKLQotMjAx
MS0wMy0xNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBJbnRyb2R1Y2UgV1RGX1VT
RV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFy
eSBpbXBvcnQvZXhwb3J0Ci0gICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhh
biBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAot
ICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQg
YnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KLSAgICAgICAgCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQotCi0gICAgICAgICogYmlu
ZGluZ3MvcHl0aG9uL3dlYnZpZXcuaToKLQotMjAxMS0wMy0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAg
ICAgICBSZXBsYWNlIFdlYktpdDIncyBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSB3aXRoIGRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NTgyNwotCi0gICAgICAgIFJlbmFtZWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUgdG8gZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZQotICAgICAgICBhbmQgcGFzcyB0aGUgZW50aXJlIHJlc3BvbnNlLCBpbnN0ZWFkIG9m
IGp1c3QgdGhlIE1JTUVUeXBlLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDExLTAzLTAzICBBbGV4ZXkgUHJvc2t1cnlha292
ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92aW5nIGFuIGluY2x1ZGUgb2YgV2ViQ29y
ZUtleWJvYXJkVUlNb2RlLmggdGhhdCBJdmUganVzdCBhZGRlZC4gSXQncyBhbHJlYWR5IGluY2x1
ZGVkCi0gICAgICAgIHZpYSBDaHJvbWVDbGllbnQuaAotCi0gICAgICAgICogV2ViS2l0U3VwcG9y
dC9DaHJvbWVDbGllbnRXeC5oOgotCi0yMDExLTAzLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAg
ICAgIFJFR1JFU1NJT04gKFdlYktpdDIpOiBUYWIga2V5cyBubyBsb25nZXIgb2JzZXJ2ZSBGdWxs
IEtleWJvYXJkIEFjY2VzcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTU2MzMKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NjMwMjM+Ci0KLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDogKFdlYkNvcmU6OkNocm9tZUNs
aWVudFd4OjprZXlib2FyZFVJTW9kZSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVD
bGllbnRXeC5oOgotICAgICAgICBJbXBsZW1lbnQga2V5Ym9hcmRVSU1vZGUoKSBpbnN0ZWFkIG9m
IHRhYnNUb0xpbmtzKCkuIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LCBzaW5jZQotICAgICAg
ICB0aGlzIHBsYXRmb3JtIGRvZXNuJ3Qgb2JzZXJ2ZSBvciBoYXZlIGZ1bGwga2V5Ym9hcmQgYWNj
ZXNzIHN0YXRlLgotCi0yMDExLTAzLTAxICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxp
dmllcnMuY29tPgotCi0gICAgICAgIFt3eF0gQnVpbGQgZml4IGFmdGVyIHJlbW92YWwgb2YgRnJh
bWU6OmlzQ29udGVudEVkaXRhYmxlLgotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAg
ICAod3hXZWJGcmFtZTo6SXNFZGl0YWJsZSk6Ci0KLTIwMTEtMDItMjggIENoYW5nIFNodSAgPGNz
aHVAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCi0KLSAg
ICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSBhbmQg
aXRzIGRlcGVuZGVuY2llcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU0MjkyCi0KLSAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1l
bnRhdGlvbi4gTWFrZSBXZWJLaXQgc3VwcG9ydCBkZXBlbmQgb24gRG9jdW1lbnQ6OmluRGVzaWdu
TW9kZS4KLQotICAgICAgICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKHd4V2ViRnJhbWU6Ond4
V2ViRnJhbWUpOgotICAgICAgICAod3hXZWJGcmFtZTo6TWFrZUVkaXRhYmxlKToKLSAgICAgICAg
KHd4V2ViRnJhbWU6OklzRWRpdGFibGUpOgotICAgICAgICAqIFdlYkZyYW1lLmg6Ci0gICAgICAg
ICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9FZGl0b3JDbGllbnRXeC5oOgotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAo
d3hXZWJWaWV3Ojp3eFdlYlZpZXcpOgotICAgICAgICAqIFdlYlZpZXcuaDoKLQotMjAxMS0wMi0y
NCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgRHJvcCB0aGUgIlU7ICIgZW5jcnlwdGlvbiBs
ZXZlbCBmcm9tIHRoZSBVc2VyIEFnZW50IHN0cmluZy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTY2Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRXeDo6dXNlckFnZW50KToKLQotMjAxMS0wMi0yMiAgTGFzemxvIEdvbWJvcyAgPGxhc3ps
by4xLmdvbWJvc0Bub2tpYS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KLQotICAgICAgICBEcm9wIHRoZSBsYW5ndWFnZSB0YWcgcGFydCBmcm9tIHRoZSBV
c2VyIEFnZW50IHN0cmluZwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQ1NjAKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojp1c2VyQWdl
bnQpOgotCi0yMDExLTAyLTE5ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRhLgotCi0gICAgICAgIEVuc3VyZSBs
b2FkaW5nIGhhcyBzdG9wcGVkIGluIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKLQotICAgICAg
ICBBZGQgYSBGcmFtZUxvYWRlckNsaWVudCBjYWxsYmFjayBmb3Igd2hldGhlciB0byBzdG9wIGxv
YWRpbmcgYmVmb3JlIGdvVG9JdGVtLgotCi0gICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbmF2aWdh
dGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC5odG1sCi0KLSAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRXeDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbSk6IEFk
ZGVkLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0y
MDExLTAyLTE3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0g
ICAgICAgIFt3eF0gQnVpbGQgZml4IGFmdGVyIG1vdmUgb2YgRG9jdW1lbnRXcml0ZXIgdG8gRG9j
dW1lbnRMb2FkZXIuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0TWFpbkRv
Y3VtZW50RXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyk6Ci0KLTIwMTEtMDEtMjYgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0g
ICAgICAgIFJlZmFjdG9yaW5nOiBFeHRyYWN0IFRleHRDaGVja2VyQ2xpZW50IGZyb20gRWRpdG9y
Q2xpZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MzIxMwotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgotICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnRleHRDaGVja2VyKToKLQotMjAxMS0wMi0wNyAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgotCi0gICAgICAgIEFkZCBFZGl0b3JDbGllbnQgY2FsbGJhY2tzIHRvIG92ZXJy
aWRlIGlzRE9NUGFzdGVBbGxvd2VkIGFuZCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNwotCi0g
ICAgICAgIEFkZGVkIHR3byBjYWxsYmFjayBmdW5jdGlvbnMsIGNhbkNvcHlDdXQgYW5kIGNhblBh
c3RlIHRvIEVkaXRvckNsaWVudC4gVGhleSBhcmUgY3VycmVudGx5Ci0gICAgICAgIG5vdCBpbXBs
ZW1lbnRlZC4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmNhbkNvcHlDdXQpOiBBZGRlZC4KLSAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpjYW5QYXN0ZSk6IEFkZGVkLgotICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKLQotMjAxMS0wMi0xMCAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCi0KLSAgICAgICAgVXBkYXRlIGNhbGxzIHRvIERvY3VtZW50V3JpdGVyLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0ODkKLQotICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpmaW5pc2hlZExvYWRpbmcpOgotCi0yMDExLTAyLTA4
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCi0KLSAgICAgICAgUmVtb3ZlIG9ycGhhbiBjb2RlIGZyb20gb2xkIHBhcnNl
cgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM5ODQK
LQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLQotMjAxMS0wMi0w
NyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IEFkYW0gUm9iZW4gYW5kIERhcmluIEFkbGVyLgotCi0gICAgICAgIFdlYktpdDI6IGRyYWcgYW5k
IGRyb3Agc3VwcG9ydCBvbiBXaW5kb3dzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI3NzUKLQotICAgICAgICBSZW1vdmVkIGNyZWF0ZURyYWdJbWFn
ZUZvckxpbmsgZnJvbSBEcmFnQ2xpZW50LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9EcmFn
Q2xpZW50V3guY3BwOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHJhZ0NsaWVudFd4Lmg6Ci0K
LTIwMTEtMDItMDcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBbd3hdIEZyYW1lTG9h
ZGVyQ2xpZW50IGNhbGxzIGxvYWRVUkxJbkNoaWxkRnJhbWUgb24gdGhlIGNoaWxkJ3MgZnJhbWUg
bG9hZGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
Mzg5NQotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNyZWF0ZUZyYW1lKTogVXNl
IG1fZnJhbWUgaW5zdGVhZCBvZiBjaGlsZEZyYW1lLgotCi0yMDExLTAyLTAzICBBZGFtIExhbmds
ZXkgIDxhZ2xAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
Ci0KLSAgICAgICAgUGx1bWIgbWl4ZWQgc2NyaXB0IFVSTCB0byBGcmFtZUxvYWRlckNsaWVudAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzODQKLQot
ICAgICAgICBSZWdyZXNzaW9ucyBjb3ZlcmVkIGJ5IGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRD
b250ZW50LyoKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
OgotCi0yMDExLTAyLTAyICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgotCi0gICAgICAgIFt3eF0gQnVpbGQgZml4ZXMgZm9yIHd4V2ViS2l0LgotCi0gICAgICAgICog
YmluZGluZ3MvcHl0aG9uL3dzY3JpcHQ6Ci0KLTIwMTEtMDEtMjggIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAg
ICAgIDxzZWxlY3Q+IGNhbid0IGRpc3BsYXkgcmlnaHQtdG8tbGVmdCAocnRsKSBsYW5ndWFnZXMK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzg1Ci0K
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFd4OjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0
aW5nRGlyZWN0aW9uKTogQWRkZWQuCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5oOgotCi0yMDExLTAxLTI3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBVc2UgRG9jdW1l
bnQ6OnVybCgpIGluc3RlYWQgb2YgRnJhbWVMb2FkZXI6OnVybCgpLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNjUKLQotICAgICAgICAqIFdlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6Ci0KLTIwMTEt
MDEtMTQgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgIFJlbmFtZSBjYWNoZSgpIHRvIG1lbW9y
eUNhY2hlKCkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUyNDMzCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6U2V0
Q2FjaGVQb2xpY3kpOgotCi0yMDExLTAxLTA5ICBYaWFuemh1IFdhbmcgPHBobml4d3h6QGdtYWls
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCi0KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDQxCi0gICAgICAgIGNyZWF0
ZVdpbmRvdyBtZXRob2Qgc2hvdWxkIG9ubHkgZG8gd2luZG93LWNyZWF0aW5nIHdpdGhvdXQgVVJM
IG5hdmlnYXRpb24KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyk6Ci0KLTIw
MTEtMDEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBSdWJi
ZXItc3RhbXBlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBNb3ZlIFdlYkNvcmUgdG8gU291
cmNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjA1
MAotCi0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dzY3JpcHQ6Ci0gICAgICAgICogd3Njcmlw
dDoKLQotMjAxMS0wMS0wMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIE1vdmUgSmF2YVNjcmlwdENv
cmUgdG8gU291cmNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MTYwNAotCi0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dzY3JpcHQ6Ci0gICAgICAg
ICogd3NjcmlwdDoKLSAgICAgICAgICAtIFBvaW50IHRvIEphdmFTY3JpcHRDb3JlIGluIGl0cyBu
ZXcgbG9jYXRpb24uCi0KLTIwMTAtMTItMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
LQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBXZWJLaXQyIG5l
ZWRzIHRvIG1pcnJvciB0aGUgZnJhbWUgdHJlZSBpbiB0aGUgVUlQcm9jZXNzCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTU0NgotCi0gICAgICAgIC0g
QWRkIGNsaWVudCBmdW5jdGlvbnMgdG8gbm90aWZ5IHRoYXQgYSBmcmFtZSBoYXMgYmVlbiBhZGRl
ZCBvcgotICAgICAgICAgIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSBjYWNoZS4KLQotICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRTYXZlVG9QYWdlQ2FjaGUpOgotICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUpOgotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDEwLTEyLTIw
ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KLQotICAgICAgICBVbnJldmlld2VkLgot
Ci0gICAgICAgIFJlbW92ZWQgYSBub24tdXRmOCBjaGFyYWN0ZXIgZnJvbSB0aGlzIGZpbGUuCi0g
ICAgICAgIExvb2tzIGxpa2UgaXQgd2FzIGFjY2lkZW50YWxseSBhZGRlZCBpbjoKLSAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzI2NjkKLSAgICAgICAgV2hpY2ggY2F1
c2VkIHRyb3VibGVzIGZvciB0aGUgY29udHJpYnV0b3Igd29ya2luZyBvbiBidWcgNTEzODIuCi0K
LTIwMTAtMTAtMjggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KLQotICAgICAgICBzcGVsbGNoZWNrIGRvZXMgbm90
IGNoZWNrIHBhc3RlZCB0ZXh0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDA5MgotCi0gICAgICAgIEFkZGVkIGEgc3R1YiBpbXBsZW1lbW50YXRpb24u
Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6Ci0gICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgotCi0yMDEw
LTEyLTA3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KLQotICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzMzOTIuCi0gICAgICAgIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzczMzkyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MDQ4OQotCi0gICAgICAgIFRoaXMgY29tbWl0IGNhdXNlZCBjcmFz
aGVzIG9uIHRoZSBHVEsrIGJvdHMKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojpm
aW5pc2hlZExvYWRpbmcpOgotCi0yMDEwLTEyLTA2ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJv
bWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBV
cGRhdGUgY2FsbHMgdG8gRG9jdW1lbnRXcml0ZXIuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQ4OQotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmZpbmlzaGVkTG9hZGluZyk6Ci0KLTIwMTAtMTItMDEgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgU3Vw
cG9ydCBtdWx0aXBsZSBjb3JyZWN0aW9uIGNhbmRpZGF0ZXMgcGFuZWwgZm9yIG1pc3NwZWxsZWQg
d29yZCBvbiBNYWMgT1MgWC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwMTM3Ci0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTY4MDU5PgotCi0gICAg
ICAgIEFkb3B0ZWQgbmV3IGZ1bmN0aW9uIHNpZ25hdHVyZSBkZWZpbmVkIGluIGJhc2UgY2xhc3Mu
Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpnZXRHdWVzc2VzRm9yV29yZCk6Ci0gICAgICAgICog
V2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgotCi0yMDEwLTExLTI0ICBQYXRyaWNrIEdh
bnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IENzYWJh
IE9zenRyb2dvbsOhYy4KLQotICAgICAgICBSZW1vdmUgQmFrZWZpbGUgYnVpbGQgc3lzdGVtIGZp
bGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTk4
MwotCi0gICAgICAgIHI1Mzc1NyBvbmx5IHJlbW92ZWQgdGhlIGNvbnRlbnQsIGJ1dCBub3QgdGhl
IGZpbGVzLgotICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhhdCBlbXB0eSBmaWxlcy4KLQot
ICAgICAgICAqIEJha2VmaWxlcy5ia2dlbjogUmVtb3ZlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9w
eXRob24vd3h3ZWJraXQtcHkuYmtsOiBSZW1vdmVkLgotICAgICAgICAqIGRlcGVuZGVuY2llcy5i
a2w6IFJlbW92ZWQuCi0gICAgICAgICogcHJlc2V0czogUmVtb3ZlZC4KLSAgICAgICAgKiBwcmVz
ZXRzL3d4d2Via2l0LmJrbDogUmVtb3ZlZC4KLSAgICAgICAgKiB3eHdlYmtpdC5ia2w6IFJlbW92
ZWQuCi0gICAgICAgICogd3h3ay1zZXR0aW5ncy5ia2w6IFJlbW92ZWQuCi0KLTIwMTAtMTEtMDgg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njg1Ci0gICAgICAgIE5vdGlmeSBVSSBwcm9jZXNzIGFib3V0IGZvY3VzZWQg
ZnJhbWUKLQotICAgICAgICBBZGRlZCBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3
IENocm9tZUNsaWVudCBtZXRob2QuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojpmb2N1c2VkRnJh
bWVDaGFuZ2VkKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0K
LTIwMTAtMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBSZW5hbWUgQ2FjaGUgdG8gTWVtb3J5
Q2FjaGUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5
MTU5Ci0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6U2V0Q2Fj
aGVQb2xpY3kpOgotICAgICAgICAqIFdlYlZpZXcuaDoKLQotMjAxMC0xMS0wMSAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENh
cmxzc29uLgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5Ci0gICAgICAgIENvbnRleHQgbWVu
dSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21l
Q2xpZW50V3guaDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpzaG93Q29udGV4
dE1lbnUpOgotCi0yMDEwLTEwLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIENoYW5nZSBCYWNrRm9y
d2FyZExpc3QgY2xpZW50cyB0byB1c2UgQmFja0ZvcndhcmRMaXN0SW1wbCB0byBwcmVwYXJlIGZv
ciBmdXJ0aGVyIHJlZmFjdG9yaW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODU3NAotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAo
d3hXZWJGcmFtZTo6Q2FuR29CYWNrKTogVXNlIGNhbkdvQmFja09yRm9yd2FyZC4KLSAgICAgICAg
KHd4V2ViRnJhbWU6OkNhbkdvRm9yd2FyZCk6IERpdHRvLgotCi0yMDEwLTEwLTI5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODU3NgotICAgICAgICBMZXQgV2ViS2l0MiBjbGllbnQga25vdyB3aGVuIGEgZnJhbWUgaXMg
YSBmcmFtZXNldAotCi0gICAgICAgIEFkZGVkIGEgYmxhbmsgaW1wbGVtZW50YXRpb24gb2YgdGhl
IG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRob2QuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6
ZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldCk6Ci0KLTIwMTAtMTAtMjYgIEplbm4gQnJhaXRod2Fp
dGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRp
dG92LgotCi0gICAgICAgIFJlc291cmNlIHRyYWNraW5nIGZhaWx1cmUgd2hlbiB0cnlpbmcgdG8g
bW92ZSBhIGZyYW1lIGJldHdlZW4gZG9jdW1lbnRzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDcxMwotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50V3g6OnRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UpOgotICAgICAgICBFbXB0eSBt
ZXRob2QuCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6Ci0K
LTIwMTAtMTAtMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgV2ViS2l0MiBuZWVkcyB0byBwYXNz
IHRoZSBjdXJyZW50IGV2ZW50IG1vZGlmaWVyIGZsYWdzIHdoZW4gcmVxdWVzdGluZyBhIG5ldyB3
aW5kb3cKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4
MTQwCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5kb3cpOgotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRXeDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guaDoKLSAgICAgICAgQWRkIE5hdmlnYXRpb25BY3Rpb24gcGFyYW1ldGVy
LgotCi0yMDEwLTEwLTEzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KLQotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM5ODcKLSAgICAgICAgU3dpdGNoIFhN
TEh0dHBSZXF1ZXN0LCBGaWxlUmVhZGVyLCBhbmQgRmlsZVJlYWRlclN5bmMgdG8gdXNlIGEgU3Ry
aW5nYnVpbGRlcgotICAgICAgICB0byBjb25zdHJ1Y3QgdGhlaXIgaW50ZXJuYWwgcmVzdWx0IHN0
cmluZy4gIFJlbW92ZSBTY3JpcHRTdHJpbmcgKHRoaXMgaXMgbm93Ci0gICAgICAgIHJlZHVuZGFu
dCkuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgot
Ci0yMDEwLTA5LTI4ICBKZW5uIEJyYWl0aHdhaXRlICA8amVubmJAY2hyb21pdW0ub3JnPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBUaXRvdi4KLQotICAgICAgICBBZGRlZCBvbGRQYWdl
IHBhcmFtIHRvIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0Rv
Y3VtZW50LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDY2NjMKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRUcmFuc2ZlckNoaWxk
RnJhbWVUb05ld0RvY3VtZW50KToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guaDoKLQotMjAxMC0wOS0yNCAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkx
MDAubmV0PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAg
W3d4XSBDaHJvbWVDbGllbnRXeDo6c2NhbGVGYWN0b3IgbXVzdCByZXR1cm4gMS4wCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjU0MgotCi0gICAgICAg
IFRoZSBkZWZhdWx0IHZhbHVlIG9mIENocm9tZUNsaWVudFd4OjpzY2FsZUZhY3RvciBtdXN0IGJl
IDEuMC4KLSAgICAgICAgT3RoZXJ3aXNlLCBjYW52YXMgZWxlbWVudCB3b24ndCBiZSBwYWludGVk
LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6c2NhbGVGYWN0b3IpOgotCi0yMDEwLTA5LTE3ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgotCi0gICAgICAgIFJFR1JFU1NJT04gKHI2MDEwNCk6IFpvb20gbGV2ZWwgaXMgdW5l
eHBlY3RlZGx5IHJlc2V0IG9uIHBhZ2UgcmVsb2FkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2MwotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgot
ICAgICAgICAod3hXZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6ZSk6Ci0gICAgICAgICh3eFdlYkZy
YW1lOjpEZWNyZWFzZVRleHRTaXplKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNp
emUpOgotICAgICAgICBDYWxsIGZ1bmN0aW9ucyBvbiBGcmFtZSBpbnN0ZWFkIG9mIEZyYW1lVmll
dy4KLQotMjAxMC0wOS0xNCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KLQotICAgICAgICBbd3hdIEJ1aWxkIGZpeCBhZnRlciBGcmFtZU5ldHdvcmtpbmdDb250ZXh0
IGNoYW5nZXMgYW5kIHNldFpvb21MZXZlbCBjaGFuZ2VzLgotCi0gICAgICAgICogV2ViRnJhbWUu
Y3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6ZSk6Ci0gICAgICAgICh3
eFdlYkZyYW1lOjpEZWNyZWFzZVRleHRTaXplKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OlJlc2V0
VGV4dFNpemUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpjcmVhdGVOZXR3b3Jr
aW5nQ29udGV4dCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
Lmg6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0V3guaDog
QWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0V3g6OmNyZWF0
ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0V3g6OmNvcmVGcmFt
ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0V3g6OkZyYW1lTmV0
d29ya2luZ0NvbnRleHRXeCk6Ci0KLTIwMTAtMDktMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNh
QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAg
IFBhc3RlIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlIGxpa2UgQ29weSBhbmQgQ3V0
IGZvciBNYWMgYWxzby4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ1NDk0Ci0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTM3PgotCi0gICAgICAg
IE9uIHRoZSBNYWMgcGxhdGZvcm0sIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcGFzdGUgb3Bl
cmF0aW9uIGlzIGFsbCBkb25lCi0gICAgICAgIGF0IHRoZSBXZWJLaXQgbGV2ZWwuIEluIG9yZGVy
IHRvIHN1cHBvcnQgaXQgb24gV2ViS2l0MiBpdCBpcyBuZWNlc3NhcnkgdG8KLSAgICAgICAgcmVm
YWN0b3IgdGhlIGNvZGUgYW5kIG1vdmUgdGhpcyBmdW5jdGlvbmFsaXR5IGF0IHRoZSBsZXZlbCBv
ZiBXZWJDb3JlIGxpa2UKLSAgICAgICAgd2UgYWxyZWFkeSBoYXZlIG9uIFdpbmRvd3MuCi0gICAg
ICAgIFRoZSBvcmlnaW5hbCBjb2RlIHJlbGllcyBvbiBzb21lIGluIEFwcEtpdCBmdW5jdGlvbnMg
dGhhdCBjYWxsIGJhY2sgaW50bwotICAgICAgICBXZWJLaXQgY2F1c2luZyBwcm9ibGVtcyBpbiBX
ZWJLaXQyLiBBbGwgdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIG1vdmVkCi0gICAgICAgIGF0
IHRoZSBsZXZlbCBvZiB0aGUgZWRpdG9yIGNsaWVudCB3aGVyZSBpdCBjYW4gYmUgZGVhbHQgd2l0
aCBhcHByb3ByaWF0ZWx5LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNhblNo
b3dNSU1FVHlwZUFzSFRNTCk6IEFkZGVkIHN0dWIuCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4Lmg6Ci0KLTIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCi0KLSAgICAg
ICAgTW92ZSBjb2RlIGZyb20gV2ViS2l0LWxheWVyIHRvIERvY3VtZW50TG9hZGVyCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTU2OQotCi0gICAgICAg
ICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNvbW1pdHRlZExvYWQpOgotCi0yMDEwLTA5LTEwICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCi0KLSAgICAgICAgTWFpbiByZXNvdXJjZSBieXRlcyBzaG91bGRuJ3QgYm91bmNl
IHRocm91Z2ggRnJhbWVMb2FkZXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ1NDk2Ci0KLSAgICAgICAgTm93IHJldHVybiB0aGUgYnl0ZXMgdG8gdGhl
IERvY3VtZW50TG9hZGVyLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNvbW1p
dHRlZExvYWQpOgotCi0yMDEwLTA5LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIE1vdmUgZnVuY3Rp
b25zIGZyb20gRnJhbWUgdG8gRWRpdG9yIGFzIHBsYW5uZWQKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MjE4Ci0KLSAgICAgICAgKiBXZWJGcmFtZS5j
cHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpGaW5kU3RyaW5nKToKLSAgICAgICAgQ2hhbmdlZCBj
YWxsIHNpdGVzIHRvIHVzZSBlZGl0b3IoKS4KLQotMjAxMC0wOC0zMSAgRGF2ZSBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg2MywgZGlzZW50
YW5nbGUgc3R5bGUgcmVjYWxjIGZyb20gbGF5b3V0LCBzbyB0aGF0Ci0gICAgICAgIHRoZSBmb3Jt
ZXIgY2FuIG9jY3VyIGluIG1vcmUgcGxhY2VzIHdpdGhvdXQgaGF2aW5nIHRvIGRvIHRoZSBsYXR0
ZXIuCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6T25QYWlu
dCk6Ci0KLTIwMTAtMDgtMjggIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+Ci0KLSAgICAgICAgW3d4XSBCdWlsZCBmaXggYWZ0ZXIgcGFyc2VNb2RlIC0+IGNvbXBhdGli
aWxpdHlNb2RlIHJlbmFtZS4KLSAgICAgICAgCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAg
ICAgICAod3hXZWJGcmFtZTo6R2V0Q29tcGF0aWJpbGl0eU1vZGUpOgotICAgICAgICAqIFdlYkZy
YW1lLmg6Ci0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldENv
bXBhdGliaWxpdHlNb2RlKToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0KLTIwMTAtMDgtMjYgIFJv
YmluIER1bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZp
biBPbGxpdmllci4KLQotICAgICAgICBBIGZldyB0d2Vha3MgdG8gdGhlIHd4V2ViVmlldyBlZGl0
aW5nIEFQSXMgYWZ0ZXIgYWRkaXRpb24gb2YgRE9NIGJpbmRpbmdzLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2NTYKLSAgICAgICAgCi0gICAgICAg
IDEuIGFkb3B0UmVmIGZpeCBmb3IgV2ViQ29yZTo6RWRpdENvbW1hbmQgd3JhcHBlciBBUEkuCi0g
ICAgICAgIDIuIEFkZCB0aGUgbWltZXR5cGUgYXMgYW4gYXJndW1lbnQgdG8gU2V0UGFnZVNvdXJj
ZSB0byBhbGxvdyBYSFRNTCBkb2N1bWVudHMgdG8gYmUgbG9hZGVkLgotICAgICAgICAzLiBBZGQg
bm90aWZpY2F0aW9uIGV2ZW50cyBmb3IgY29udGVudHMgLyBzZWxlY3Rpb24gY2hhbmdlZCBlZGl0
aW5nIGV2ZW50cy4KLSAgICAgICAgNC4gSW1wcm92ZWQgd3hQeXRob24gYmluZGluZyB0eXBlbWFw
cyBzdXBwb3J0IGZvciBET00gQVBJcy4KLSAgICAgICAgCi0gICAgICAgICogV2ViRWRpdC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlRWRpdENvbW1hbmRQcml2YXRlOjpXZWJDb3JlRWRpdENvbW1hbmRQ
cml2YXRlKToKLSAgICAgICAgKFdlYkNvcmVFZGl0Q29tbWFuZFByaXZhdGU6On5XZWJDb3JlRWRp
dENvbW1hbmRQcml2YXRlKToKLSAgICAgICAgKFdlYkNvcmVFZGl0Q29tbWFuZFByaXZhdGU6OmNv
bW1hbmQpOgotICAgICAgICAod3hXZWJFZGl0Q29tbWFuZDo6d3hXZWJFZGl0Q29tbWFuZCk6Ci0g
ICAgICAgICh3eFdlYkVkaXRDb21tYW5kOjp+d3hXZWJFZGl0Q29tbWFuZCk6Ci0gICAgICAgICh3
eFdlYkVkaXRDb21tYW5kOjpTZXROb2RlQXR0cmlidXRlKToKLSAgICAgICAgKHd4V2ViRWRpdENv
bW1hbmQ6OkFwcGx5KToKLSAgICAgICAgKiBXZWJFZGl0Lmg6Ci0gICAgICAgICogV2ViRnJhbWUu
Y3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6U2V0UGFnZVNvdXJjZSk6Ci0gICAgICAgICogV2Vi
RnJhbWUuaDoKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMp
OgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24pOgotICAgICAgICAqIFdlYlNldHRpbmdzLmg6Ci0gICAgICAgICogV2ViVmlldy5jcHA6
Ci0gICAgICAgICh3eFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudDo6d3hXZWJWaWV3Q29udGVu
dHNDaGFuZ2VkRXZlbnQpOgotICAgICAgICAod3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50
Ojp3eFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQpOgotICAgICAgICAod3hXZWJWaWV3OjpT
ZXRQYWdlU291cmNlKToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0gICAgICAgICogYmluZGluZ3Mv
cHl0aG9uL3dlYnZpZXcuaToKLQotMjAxMC0wOC0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9A
dGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBbd3hdIEJ1aWxkIGZpeCwgZG8gbm90IGJ1aWxk
IFdlYkNvcmUgYXMgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IGFzIHRoaXMgbGVhZHMgdG8KLSAgICAg
ICAgZXJyb3JzIGluIHRoZSBXaW4gYnVpbGQgdy9leHBvcnQgc3ltYm9scyBhbmQgY2F1c2VzIHBy
b2JsZW1zIHdpdGggRE9NIGJpbmRpbmdzCi0gICAgICAgIGRlYnVnZ2luZyBpbiBnZGIuCi0gICAg
ICAgIAotICAgICAgICAqIFdlYktpdERlZmluZXMuaDoKLSAgICAgICAgKiBiaW5kaW5ncy9weXRo
b24vd3NjcmlwdDoKLQotMjAxMC0wOC0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xs
aXZpZXJzLmNvbT4KLQotICAgICAgICB3eE1TVyBidWlsZCBmaXguIERvbid0IGJ1aWxkIHRoZSBQ
eXRob24gRE9NIGJpbmRpbmdzIHVudGlsIHdlIGdldCB0aGUgZXhwb3J0IGlzc3VlcwotICAgICAg
ICBzb3J0ZWQgb3V0LgotCi0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dlYnZpZXcuaToKLQot
MjAxMC0wOC0xMyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZwotCi0gICAgICAgIFVuaWZ5IFVTdHJpbmc6
OlVURjhTdHJpbmcoKSAmIFN0cmluZzo6dXRmOCgpIG1ldGhvZHMsCi0gICAgICAgIHJlbW92ZSBV
U3RyaW5nOjpjb3N0KCkgJiBtYWtlIGF0QXJyYXlJbmRleCBhIGZyZWUgZnVuY3Rpb24uCi0KLSAg
ICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgot
Ci0yMDEwLTA4LTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
LQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjUyOTUuCi0gICAgICAgIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzY1Mjk1Ci0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzk1MAotCi0gICAgICAgIEl0IGJyb2tlIDQgc3B1
dG5payB0ZXN0cyAoUmVxdWVzdGVkIGJ5IE9zc3kgb24gI3dlYmtpdCkuCi0KLSAgICAgICAgKiBX
ZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgotCi0yMDEwLTA4
LTEyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnCi0KLSAgICAgICAgVW5pZnkgVVN0cmluZzo6VVRGOFN0
cmluZygpICYgU3RyaW5nOjp1dGY4KCkgbWV0aG9kcywKLSAgICAgICAgcmVtb3ZlIFVTdHJpbmc6
OmNvc3QoKSAmIG1ha2UgYXRBcnJheUluZGV4IGEgZnJlZSBmdW5jdGlvbi4KLQotICAgICAgICAq
IFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKHd4V2ViRnJhbWU6OlJ1blNjcmlwdCk6Ci0KLTIwMTAt
MDgtMTEgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAg
ICAgW3d4XSBCdWlsZCBmaXguIFdlYkNvcmU6OlN0cmluZyAtPiBXVEY6OlN0cmluZyBmaXhlcy4K
LQotICAgICAgICAqIFdlYkVkaXQuY3BwOgotICAgICAgICAod3hXZWJFZGl0Q29tbWFuZDo6U2V0
Tm9kZUF0dHJpYnV0ZSk6Ci0KLTIwMTAtMDgtMTAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IFNhbSBXZWluaWcu
Ci0KLSAgICAgICAgQnVnIDQzNzg2IC0gTW92ZSBBdG9taWNTdHJpbmdIYXNoIGZyb20gV2ViQ29y
ZSB0byBXVEYKLSAgICAgICAgQWxzbyByZW1vdmUgZGVwcmVjYXRlZCBzdHJpbmcgaGVhZGVycyBm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC4KLQotICAgICAgICAqIFdlYkVkaXQuY3BwOgotCi0y
MDEwLTA4LTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KLQot
ICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0gV2VpbmlnCi0KLSAgICAgICAgQnVnIDQzNTk0
IC0gQWRkIHN0cmluZyBmb3J3YXJkcyB0byBGb3J3YXJkLmgKLSAgICAgICAgVGhpcyBhbGxvd3Mg
dXMgdG8gcmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb25zIGZvciB0aGVzZSBjbGFzc2VzIGZyb20K
LSAgICAgICAgV2ViQ29yZS9XZWJLaXQgKGEgc3RlcCBpbiBtb3ZpbmcgdGhlc2UgY2xhc3MgZnJv
bSBXZWJDb3JlOjogdG8gV1RGOjopLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4Lmg6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRX
eC5oOgotCi0yMDEwLTA4LTA2ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+Ci0K
LSAgICAgICAgUm9sbCBvdXQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjQ4MDEs
IHdoaWNoIGJyb2tlIHRoZSBTYWZhcmkgV2luZG93cyBCdWlsZC4KLSAgICAgICAgVW5yZXZpZXdl
ZC4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaDoKLQotMjAxMC0wOC0wNCAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBbd3hd
IEJ1aWxkIGZpeCBmb3IgZ2NjIG5vdCBpbXBvcnRpbmcgYWxsIHN5bWJvbHMgZnJvbSBjb252ZW5p
ZW5jZSBsaWJyYXJpZXMuCi0gICAgICAgIFdvcmtzIG9uIDEwLjYgb25seSBmb3IgTWFjIHVudGls
IHRoZSBidWlsZCBzeXN0ZW0gaXMgcmV3b3JrZWQuCi0gICAgICAgIAotICAgICAgICAqIGJpbmRp
bmdzL3B5dGhvbi93ZWJ2aWV3Lmk6Ci0KLTIwMTAtMDgtMDMgIE1hbGNvbG0gTWFjTGVvZCAgPG1t
YWNsZW9kQHdlYm1haWwuY28uemE+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZp
ZXIuCi0KLSAgICAgICAgRml4IGNyYXNoIGR1cmluZyBIaXRUZXN0IGNhbGwuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzM3MgotCi0gICAgICAgICog
V2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6SGl0VGVzdCk6Ci0gICAgICAgICog
V2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXdET01FbGVtZW50SW5mbzo6d3hXZWJWaWV3
RE9NRWxlbWVudEluZm8pOgotCi0yMDEwLTA3LTI3ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29z
dGluaUBvcGVuYm9zc2Eub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
LQotICAgICAgICBQb3B1cE1lbnUgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gdG8gV2ViS2l0
MgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI1OTIK
LQotICAgICAgICBBcyBDaHJvbWVDbGllbnQgd2FzIG1hZGUgcmVzcG9uc2libGUgZm9yIHByb3Zp
ZGluZyBQb3B1cE1lbnUgYW5kIFNlYXJjaFBvcHVwTWVudQotICAgICAgICBpbnN0YW5jZXMsIGNv
bmNyZXRlIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gQ2hyb21lQ2xpZW50IG5lZWRlZCB0byBi
ZSBjaGFuZ2VkIHRvCi0gICAgICAgIGltcGxlbWVudCB0aGUgbmV3IG1ldGhvZHMuCi0KLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFd4OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRlUG9wdXBNZW51KToKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLQotMjAxMC0wOC0wMiAgSmVy
ZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KLQotICAgICAgICBTcGVjdWxhdGl2ZSBy
ZXZlcnQgb2YgNjQ0MjUgZHVlIHRvIENocm9taXVtIGluc3RhYmlsaXR5Ci0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzM0NwotCi0gICAgICAgICogV2Vi
S2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9D
aHJvbWVDbGllbnRXeC5oOgotCi0yMDEwLTA3LTI3ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29z
dGluaUBvcGVuYm9zc2Eub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
LQotICAgICAgICBQb3B1cE1lbnUgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gdG8gV2ViS2l0
MgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI1OTIK
LQotICAgICAgICBBcyBDaHJvbWVDbGllbnQgd2FzIG1hZGUgcmVzcG9uc2libGUgZm9yIHByb3Zp
ZGluZyBQb3B1cE1lbnUgYW5kIFNlYXJjaFBvcHVwTWVudQotICAgICAgICBpbnN0YW5jZXMsIGNv
bmNyZXRlIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gQ2hyb21lQ2xpZW50IG5lZWRlZCB0byBi
ZSBjaGFuZ2VkIHRvCi0gICAgICAgIGltcGxlbWVudCB0aGUgbmV3IG1ldGhvZHMuCi0KLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFd4OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRlUG9wdXBNZW51KToKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLQotMjAxMC0wNy0zMSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjY0NDIyLgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC82NDQyMgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDMzMDQKLQotICAgICAgICBCdWlsZCBmaXhlcyBhcmUgbmVlZGVkIGZvciBTbm93
IExlb3BhcmQgYW5kIFdpbmRvd3MuCi0gICAgICAgIChSZXF1ZXN0ZWQgYnkgbGNhIG9uICN3ZWJr
aXQpLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAg
ICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgotCi0yMDEwLTA3LTI3ICBMdWl6
IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEZpc2hlci4KLQotICAgICAgICBQb3B1cE1lbnUgcmVmYWN0b3JpbmcgaW4g
cHJlcGFyYXRpb24gdG8gV2ViS2l0MgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDI1OTIKLQotICAgICAgICBBcyBDaHJvbWVDbGllbnQgd2FzIG1hZGUg
cmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBQb3B1cE1lbnUgYW5kIFNlYXJjaFBvcHVwTWVudQot
ICAgICAgICBpbnN0YW5jZXMsIGNvbmNyZXRlIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gQ2hy
b21lQ2xpZW50IG5lZWRlZCB0byBiZSBjaGFuZ2VkIHRvCi0gICAgICAgIGltcGxlbWVudCB0aGUg
bmV3IG1ldGhvZHMuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpzZWxlY3RJdGVtV3JpdGluZ0Rp
cmVjdGlvbklzTmF0dXJhbCk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3Jl
YXRlUG9wdXBNZW51KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
aDoKLQotMjAxMC0wNy0zMCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KLQotICAgICAgICBMaW1pdCBBcHBs
aWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3Rh
cykKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3
Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0KLTIwMTAt
MDctMjkgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAg
ICAgW3d4XSBCdWlsZCBmaXgsIGFkZCBmaWxlIG1pc3NpbmcgZnJvbSBET00gYmluZGluZ3MgY29t
bWl0LgotICAgICAgICAKLSAgICAgICAgKiBXZWJFZGl0LmNwcDogQWRkZWQuCi0gICAgICAgIChX
ZWJDb3JlOjopOgotICAgICAgICAod3hXZWJFZGl0Q29tbWFuZDo6d3hXZWJFZGl0Q29tbWFuZCk6
Ci0gICAgICAgICh3eFdlYkVkaXRDb21tYW5kOjp+d3hXZWJFZGl0Q29tbWFuZCk6Ci0gICAgICAg
ICh3eFdlYkVkaXRDb21tYW5kOjpTZXROb2RlQXR0cmlidXRlKToKLSAgICAgICAgKHd4V2ViRWRp
dENvbW1hbmQ6OkFwcGx5KToKLQotMjAxMC0wNy0yOCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9A
dGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBbd3hdIHd4UHl0aG9uIGJ1aWxkIGZpeCB0aGF0
IHdhcyBtaXNzZWQgaW4gbGFzdCBjb21taXQuCi0KLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24v
d2Vidmlldy5pOgotCi0yMDEwLTA3LTI4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxp
dmllcnMuY29tPgotCi0gICAgICAgIFt3eF0gQnVpbGQgZml4IGFmdGVyIHJlY2VudCBjaGFuZ2Vz
LgotCi0gICAgICAgICogV2ViRWRpdC5oOiBBZGRlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9weXRo
b24vd2Vidmlldy5pOgotCi0yMDEwLTA3LTI4ICBSb2JpbiBEdW5uICA8cm9iaW5AYWxsZHVubi5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgQWRk
IERPTSBiaW5kaW5ncyBzdXBwb3J0IGZvciB3eCBwb3J0LgotCi0gICAgICAgICogV2ViQnJvd3Nl
clNoZWxsLmNwcDoKLSAgICAgICAgKHd4V2ViQnJvd3NlclNoZWxsOjp3eFdlYkJyb3dzZXJTaGVs
bCk6Ci0gICAgICAgICh3eFdlYkJyb3dzZXJTaGVsbDo6T25FZGl0Q29tbWFuZCk6Ci0gICAgICAg
ICh3eFdlYkJyb3dzZXJTaGVsbDo6T25HZXRFZGl0Q29tbWFuZFN0YXRlKToKLSAgICAgICAgKiBX
ZWJCcm93c2VyU2hlbGwuaDoKLSAgICAgICAgKiBXZWJET01TZWxlY3Rpb24uY3BwOiBBZGRlZC4K
LSAgICAgICAgKHd4V2ViS2l0U2VsZWN0aW9uOjp3eFdlYktpdFNlbGVjdGlvbik6Ci0gICAgICAg
ICh3eFdlYktpdFNlbGVjdGlvbjo6R2V0Um9vdEVkaXRhYmxlRWxlbWVudCk6Ci0gICAgICAgICh3
eFdlYktpdFNlbGVjdGlvbjo6R2V0QXNSYW5nZSk6Ci0gICAgICAgICogV2ViRE9NU2VsZWN0aW9u
Lmg6IEFkZGVkLgotICAgICAgICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKHd4V2ViRnJhbWU6
OkdldFNlbGVjdGlvbkFzSFRNTCk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpHZXRTZWxlY3Rpb25B
c1RleHQpOgotICAgICAgICAod3hXZWJGcmFtZTo6R2V0U2VsZWN0aW9uKToKLSAgICAgICAgKHd4
V2ViRnJhbWU6OkV4ZWN1dGVFZGl0Q29tbWFuZCk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpHZXRF
ZGl0Q29tbWFuZFN0YXRlKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OkdldEVkaXRDb21tYW5kVmFs
dWUpOgotICAgICAgICAod3hXZWJGcmFtZTo6SGl0VGVzdCk6Ci0gICAgICAgICogV2ViRnJhbWUu
aDoKLSAgICAgICAgKiBXZWJLaXREZWZpbmVzLmg6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjopOgotICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50V3g6OnJlZG8pOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4
OjpmaW5pc2hlZExvYWRpbmcpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRX
eDo6c2V0TWFpbkRvY3VtZW50RXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6Ci0gICAgICAgICogV2ViVmlldy5jcHA6
Ci0gICAgICAgICh3eFdlYlZpZXdET01FbGVtZW50SW5mbzo6d3hXZWJWaWV3RE9NRWxlbWVudElu
Zm8pOgotICAgICAgICAod3hXZWJWaWV3RE9NRWxlbWVudEluZm86On53eFdlYlZpZXdET01FbGVt
ZW50SW5mbyk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNyZWF0ZSk6Ci0gICAgICAgICh3eFdlYlZp
ZXc6OkdldFNlbGVjdGlvbik6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldFNlbGVjdGlvbkFzSFRN
TCk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldFNlbGVjdGlvbkFzVGV4dCk6Ci0gICAgICAgICh3
eFdlYlZpZXc6OkV4ZWN1dGVFZGl0Q29tbWFuZCk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldEVk
aXRDb21tYW5kU3RhdGUpOgotICAgICAgICAod3hXZWJWaWV3OjpHZXRFZGl0Q29tbWFuZFZhbHVl
KToKLSAgICAgICAgKHd4V2ViVmlldzo6TWFrZUVkaXRhYmxlKToKLSAgICAgICAgKHd4V2ViVmll
dzo6SXNFZGl0YWJsZSk6Ci0gICAgICAgICogV2ViVmlldy5oOgotICAgICAgICAqIGJpbmRpbmdz
L3B5dGhvbi93ZWJ2aWV3Lmk6Ci0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dzY3JpcHQ6Ci0g
ICAgICAgICogd3NjcmlwdDoKLQotMjAxMC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2Nr
QGdvb2dsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgotCi0gICAg
ICAgIFBhZ2UgY2xpZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3Igdmlh
IHN0cnVjdHVyZSBvZiBwb2ludGVycwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDI4MzQKLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAo
d3hXZWJWaWV3OjpDcmVhdGUpOgotCi0yMDEwLTA3LTE2ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1
bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUkVH
UkVTU0lPTihyNjE0ODQpOiBCcm9rZSBmb2N1cyBiZWhhdmlvdXIgb24gUXQgYW5kIHByb2JhYmx5
IG90aGVyIHBsYXRmb3JtcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDIyNTMKLQotICAgICAgICBEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBFZGl0b3JD
bGllbnQ6OndpbGxTZXRJbnB1dE1ldGhvZFN0YXRlLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9y
dC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6
d2lsbFNldElucHV0TWV0aG9kU3RhdGUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9y
Q2xpZW50V3guaDoKLQotMjAxMC0wNy0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIFBhdGNoIGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIyMzIKLSAgICAgICAgTWFr
ZSBjaGFuZ2luZyBDdXJzb3JzIHdvcmsgaW4gV2ViS2l0Mi4KLQotICAgICAgICAqIFdlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
V3g6OnNldEN1cnNvcik6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5o
OgotICAgICAgICBDaGFuZ2UgcHJvdG90eXBlIHRvIG1hdGNoIG5ldyBvbmUuCi0KLTIwMTAtMDct
MDcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAg
W3d4XSBCdWlsZCBmaXggYWZ0ZXIgY2hhbmdlIGluIFBhZ2UgY29uc3RydWN0b3IuCi0KLSAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6Q3JlYXRlKToKLQotMjAxMC0w
Ni0yMSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICBCdWlsZCBmaXggYWZ0ZXIgY29udmVyc2lvbiBvZiBXZWJJbnRlcmZhY2VTeXN0ZW0gdG8gT2Jq
LUMrKy4KLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAqIHdzY3JpcHQ6Ci0KLTIw
MTAtMDYtMTUgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgotCi0gICAgICAgIE1vdmUgaXNBdmFpbGFibGUoKS9z
ZXRJc0F2YWlsYWJsZSgpIGZyb20gRGF0YWJhc2UvRGF0YWJhc2VTeW5jIHRvIEFic3RyYWN0RGF0
YWJhc2UuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTA0MQotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OlNldERh
dGFiYXNlc0VuYWJsZWQpOgotICAgICAgICAod3hXZWJWaWV3OjpBcmVEYXRhYmFzZXNFbmFibGVk
KToKLQotMjAxMC0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBNb3ZlIGZ1bmN0aW9ucyBvdXQg
b2YgRnJhbWUgY2xhc3MgdGhhdCB3ZXJlIG1hcmtlZCAibW92ZSB0byBDaHJvbWUiCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTYzNgotCi0gICAgICAg
ICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6U2hvdWxkQ2xvc2UpOiBDYWxs
IHNob3VsZENsb3NlIG9uIEZyYW1lTG9hZGVyIGluc3RlYWQKLSAgICAgICAgb2YgZ29pbmcgdGhy
b3VnaCBGcmFtZS4KLQotMjAxMC0wNi0xNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJv
bWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KLQotICAgICAg
ICBXZWJJbnNwZWN0b3I6IE9uIHRoZSB3YXkgdG8gUmVtb3RlIERlYnVnZ2luZyB3ZSB3YW50IHRv
IHRyYW5zZmVyIGRvbS90aW1lbGluZS9ldGMKLSAgICAgICAgZGF0YSBmcm9tIGluc3BlY3RlZCBw
YWdlIHRvIFdlYkluc3BlY3RvciBhcyBKU09OIHN0cmluZyB2aWEgaHR0cC4gVGhlIG5hdGl2ZQot
ICAgICAgICBzZXJpYWxpemF0aW9uIHRvIEpTT04gc3RyaW5nIGlzIHN1cHBvcnRlZCBieSBJbnNw
ZWN0b3JWYWx1ZSdzIGNsYXNzZXMuIFRoaXMgcGF0Y2gKLSAgICAgICAgaGFzIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBzZW5kTWVzc2FnZVRvRnJvbnRlbmQgZnVuY3Rpb24uIFdlYktpdCB2ZXJzaW9u
IG9mIGl0IHN0aWxsCi0gICAgICAgIHVzZXMgU2NyaXB0RnVuY3Rpb25DYWxsIGFuZCB3aWxsIGJl
IHN3aXRjaGVkIHRvIGFub3RoZXIgdHJhbnNwb3J0IGEgbGl0dGxlIGJpdCBsYXRlci4KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0Ci0KLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudFd4OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgotICAgICAgICAq
IFdlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaDoKLQotMjAxMC0wNi0wOSAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjYwODg5LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC82MDg4OQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDAzNjUKLQotICAgICAgICBndGsgYm90IGhhcyBzb21lIGtpbmQgb2YgbWVtb3J5IGNv
cnJ1cHRpb24gKFJlcXVlc3RlZCBieQotICAgICAgICBsb2lzbG8gb24gI3dlYmtpdCkuCi0KLSAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcDoKLSAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4Lmg6Ci0KLTIwMTAtMDYtMDcgIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFBh
dmVsIEZlbGRtYW4uCi0KLSAgICAgICAgV2ViSW5zcGVjdG9yOiBPbiB0aGUgd2F5IHRvIFJlbW90
ZSBEZWJ1Z2dpbmcgd2Ugd2FudCB0byB0cmFuc2ZlciBkb20vdGltZWxpbmUvZXRjCi0gICAgICAg
IGRhdGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSB0byBXZWJJbnNwZWN0b3IgYXMgSlNPTiBzdHJpbmcg
dmlhIGh0dHAuIFRoZSBuYXRpdmUKLSAgICAgICAgc2VyaWFsaXphdGlvbiB0byBKU09OIHN0cmlu
ZyBpcyBzdXBwb3J0ZWQgYnkgSW5zcGVjdG9yVmFsdWUncyBjbGFzc2VzLiBUaGlzIHBhdGNoCi0g
ICAgICAgIGhhcyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2VuZE1lc3NhZ2VUb0Zyb250ZW5kIGZ1
bmN0aW9uLiBXZWJLaXQgdmVyc2lvbiBvZiBpdCBzdGlsbAotICAgICAgICB1c2VzIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBhbmQgd2lsbCBiZSBzd2l0Y2hlZCB0byBhbm90aGVyIHRyYW5zcG9ydCBhIGxp
dHRsZSBiaXQgbGF0ZXIuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDEzNAotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRX
eC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4Lmg6
Ci0KLTIwMTAtMDUtMjcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+
Ci0KLSAgICAgICAgW3d4XSBCdWlsZCBmaXhlcyBmb3IgV2luZG93cyBhZnRlciByZWNlbnQgY2hh
bmdlcy4KLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3OjpDcmVh
dGUpOgotICAgICAgICAqIHdzY3JpcHQ6Ci0KLTIwMTAtMDUtMjYgIEtldmluIE9sbGl2aWVyICA8
a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgQnVpbGQgZml4IGFmdGVyIG5ldyBj
bGllbnQgYWRkZWQgdG8gUGFnZSBjb25zdHJ1Y3Rvci4KLQotICAgICAgICAqIFdlYlZpZXcuY3Bw
OgotICAgICAgICAod3hXZWJWaWV3OjpDcmVhdGUpOgotCi0yMDEwLTA1LTI0ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
LQotICAgICAgICBNb3ZlIHZpZXctcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBGcmFtZSB0byBGcmFt
ZVZpZXcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
MzY2Ci0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpDYW5J
bmNyZWFzZVRleHRTaXplKTogQ2hlY2sgRnJhbWVWaWV3IGlzIG5vdCBudWxsLgotICAgICAgICAo
d3hXZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6ZSk6IENhbGwgZnVuY3Rpb24gb24gRnJhbWVWaWV3
LgotICAgICAgICAod3hXZWJGcmFtZTo6Q2FuRGVjcmVhc2VUZXh0U2l6ZSk6IERpdHRvLgotICAg
ICAgICAod3hXZWJGcmFtZTo6RGVjcmVhc2VUZXh0U2l6ZSk6IERpdHRvLgotICAgICAgICAod3hX
ZWJGcmFtZTo6UmVzZXRUZXh0U2l6ZSk6IERpdHRvLgotCi0yMDEwLTA1LTExICBLZXZpbiBXYXR0
ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZp
biBPbGxpdmllci4KLQotICAgICAgICBMb2FkIGEgYmxhbmsgcGFnZSBvbiBjcmVhdGlvbiB0byBp
bml0aWFsaXplIFdlYkNvcmUgb2JqZWN0cyBwcm9wZXJseS4KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTMyCi0KLSAgICAgICAgKiBXZWJWaWV3LmNw
cDoKLSAgICAgICAgKHd4V2ViVmlldzo6Q3JlYXRlKToKLQotMjAxMC0wNS0wMyAgS2V2aW4gV2F0
dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2
aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgQnVpbGQgYW5kIHVzZSBNYWMncyBDb21wbGV4VGV4dENv
bnRyb2xsZXIgdG8gc3VwcG9ydCBjb21wbGV4IHRleHQgaW4gd3guCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODQ4MgotCi0gICAgICAgICogV2ViVmll
dy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNyZWF0ZSk6Ci0gICAgICAgICogd3NjcmlwdDoK
LQotMjAxMC0wNS0wMyAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgUHJvdmlkZSBh
Y2Nlc3MgdG8gR3JhbnRVbml2ZXJzYWxBY2Nlc3MgdG8gYWxsb3cgZW5hYmxpbmcgb2YgWFNTIHN1
cHBvcnQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODQ4MQotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6R3Jh
bnRVbml2ZXJzYWxBY2Nlc3MpOgotICAgICAgICAqIFdlYkZyYW1lLmg6Ci0gICAgICAgICogV2Vi
Vmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldFBhcnNlTW9kZSk6Ci0gICAgICAgICh3
eFdlYlZpZXc6OkdyYW50VW5pdmVyc2FsQWNjZXNzKToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0K
LTIwMTAtMDUtMDMgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9yZz4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCi0KLSAgICAgICAgW2Nocm9taXVtXSBBZGQgIndpbGxT
ZW5kU3VibWl0RXZlbnQiIGhvb2sgdG8gV2ViRnJhbWVDbGllbnQgYW5kIEZyYW1lTG9hZGVyQ2xp
ZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODM5
NwotCi0gICAgICAgIE5vIHRlc3RzIChmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQgb25seSB0aHJv
dWdoIG5hdGl2ZSBXZWJLaXQgQVBJLikKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5oOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6
ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KToKLQotMjAxMC0wNC0yNSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFr
LgotCi0gICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4MDk3Ci0gICAgICAgIERpc2VudGFuZ2xlIGluaXRpYWxpemluZyB0aGUgbWFpbiB0aHJl
YWQgZnJvbSBpbml0aWFsaXppbmcgdGhyZWFkaW5nCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoK
LSAgICAgICAgKHd4V2ViVmlldzo6Q3JlYXRlKTogQWRkIGNhbGwgdG8gaW5pdGlhbGl6ZU1haW5U
aHJlYWQuCi0KLTIwMTAtMDQtMjUgIEtldmluIFdhdHRlcnMgIDxrZXZpbndhdHRlcnNAZ21haWwu
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIFVw
ZGF0ZSBmb2N1cyBoYW5kbGluZyBjb2RlIHRvIG1hdGNoIGN1cnJlbnQgYXBwcm9hY2hlcyB1c2Vk
IGJ5IG90aGVyIHBsYXRmb3JtcywKLSAgICAgICAgYW5kIGZpeCBmb2N1cyBoYW5kbGluZyBmb3Ig
Y29ybmVyIGNhc2VzIHN1Y2ggYXMgd2hlbiBhIG1vdXNlIGRvd24gcG9wcyB1cCBhIGRpYWxvZy4K
LSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zODA4NgotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNy
ZWF0ZSk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9uVExXQWN0aXZhdGVkKToKLSAgICAgICAgKHd4
V2ViVmlldzo6T25QYWludCk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9uTW91c2VFdmVudHMpOgot
ICAgICAgICAod3hXZWJWaWV3OjpPblNldEZvY3VzKToKLSAgICAgICAgKHd4V2ViVmlldzo6T25L
aWxsRm9jdXMpOgotICAgICAgICAqIFdlYlZpZXcuaDoKLQotMjAxMC0wNC0yMCAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgotCi0gICAgICAgIEZhY3RvciBEb2N1bWVudFdyaXRlciBvdXQgb2YgRnJhbWVMb2FkZXIKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTc1Ci0KLSAg
ICAgICAgVXBkYXRlIHRoZXNlIGNhbGxzaXRlcyBiZWNhdXNlIHRoZSBtZXRob2QgbW92ZWQgdG8g
RG9jdW1lbnRXcml0ZXIuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6Y29tbWl0
dGVkTG9hZCk6Ci0KLTIwMTAtMDQtMjAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIENoYW5nZSBh
IHBhcmFtZXRlciB0eXBlIG9mIGNob29zZUljb25Gb3JGaWxlcygpCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzUwNAotCi0gICAgICAgICogV2ViS2l0
U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRXeDo6Y2hvb3NlSWNvbkZvckZpbGVzKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9t
ZUNsaWVudFd4Lmg6Ci0KLTIwMTAtMDQtMTkgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9s
bGl2aWVycy5jb20+Ci0KLSAgICAgICAgQnVpbGQgZml4LCBhZGQgc3R1YiBmb3IgbmV3IEZyYW1l
TG9hZGVyQ2xpZW50IG1ldGhvZC4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guaDoKLQotMjAxMC0wNC0xMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjU3NDY4
LgotICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC81NzQ2OAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc0MzMKLQotICAgICAg
ICBCcm9rZSB0aGUgd29ybGQuLi4gIE11c3QgaGF2ZSBhcHBsaWVkIHRoZSBwYXRjaCB3cm9uZwot
ICAgICAgICAoUmVxdWVzdGVkIGJ5IGFiYXJ0aCBvbiAjd2Via2l0KS4KLQotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFd4Ojpjb21taXR0ZWRMb2FkKToKLQotMjAxMC0wNC0xMSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgotCi0gICAgICAgIEZhY3RvciBEb2N1bWVudFdyaXRlciBvdXQgb2YgRnJhbWVMb2FkZXIK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTc1Ci0K
LSAgICAgICAgVXBkYXRlIHRoZXNlIGNhbGxzaXRlcyBiZWNhdXNlIHRoZSBtZXRob2QgbW92ZWQg
dG8gRG9jdW1lbnRXcml0ZXIuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6Y29t
bWl0dGVkTG9hZCk6Ci0KLTIwMTAtMDQtMDcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgotCi0gICAg
ICAgIFJlbW92ZWQgcmVkdW5kYW50IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRS
ZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QoKQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4Lmg6Ci0KLTIwMTAtMDMtMzEgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21pdW0u
b3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KLQotICAgICAgICBBZGRz
IEdlb2xvY2F0aW9uIHBhcmFtIGZvciBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Rm9yRnJhbWUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNTAzMQotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgotICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RGb3JGcmFtZSk6Ci0KLTIwMTAtMDMtMzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFy
cmFjbG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IFNhbSBXZWlu
aWcuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2
ODY2Ci0gICAgICAgIE1vdmUgQ1N0cmluZyB0byBXVEYKLQotICAgICAgICAqIFdlYkZyYW1lLmNw
cDoKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLQotMjAxMC0wMy0zMCAgS2V2aW4gT2xsaXZpZXIg
IDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBbd3hdIEJ1aWxkIGZpeCBhZnRl
ciBtZXRob2QgbmFtZSBjaGFuZ2UuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAg
ICh3eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgotCi0yMDEwLTAzLTI4ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIEJ1aWxkIGZpeC4gSW5jbHVkZSBXaW5kb3dz
S2V5Ym9hcmRDb2Rlcy5oIGluc3RlYWQgb2YgS2V5Ym9hcmRDb2Rlcy5oLgotCi0gICAgICAgICog
V2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0KLTIwMTAtMDMtMjQgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgotCi0gICAgICAgIE1ha2UgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgb3B0aW9uYWwu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA3Mgot
Ci0gICAgICAgIC0gUmVuYW1lIGljb25Gb3JGaWxlcygpIHRvIGNob29zZUljb25Gb3JGaWxlcygp
LgotICAgICAgICAtIENhbGwgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgZnJvbSBjaG9vc2VJ
Y29uRm9yRmlsZXMoKS4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmNob29zZUljb25Gb3JGaWxl
cyk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgotCi0yMDEwLTAz
LTIwICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAg
IFt3eF0gQnVpbGQgZml4ZXMgYWZ0ZXIgcmVjZW50IGNoYW5nZXMsIGluY2x1ZGluZyBtb3ZlIG9m
IHNldERhdGFiYXNlc0VuYWJsZWQgZnJvbSBTZXR0aW5ncy4KLQotICAgICAgICAqIFdlYkZyYW1l
LmNwcDoKLSAgICAgICAgKHd4V2ViRnJhbWU6OlJ1blNjcmlwdCk6Ci0gICAgICAgICogV2ViS2l0
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDbGllbnRXeDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKLSAgICAgICAgKiBXZWJTZXR0aW5n
cy5jcHA6Ci0gICAgICAgICogV2ViU2V0dGluZ3MuaDoKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoK
LSAgICAgICAgKHd4V2ViVmlldzo6Q3JlYXRlKToKLSAgICAgICAgKHd4V2ViVmlldzo6U2V0RGF0
YWJhc2VzRW5hYmxlZCk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkFyZURhdGFiYXNlc0VuYWJsZWQp
OgotICAgICAgICAqIFdlYlZpZXcuaDoKLQotMjAxMC0wMy0xNiAgWXVyeSBTZW1pa2hhdHNreSA8
eXVyeXNAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
Ci0KLSAgICAgICAgSW50cm9kdWNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHRoYXQgcHJvdmlk
ZXMgSW5zcGVjdG9yRnJvbnRlbmQgd2l0aCBhbiBpbnRlcmZhY2UgdG8gdGhlIGVtYmVkZGVyLiBJ
bnNwZWN0b3JDbGllbnQgbm93IHNlcnZlcyBhcyBhIGRlbGVnYXRlIGZvciBJbnNwZWN0b3JDb250
cm9sbGVyIGFuZCBkb2VzIG5vdCBjb250YWluIG1ldGhvZHMgZm9yIG1hbmFnaW5nIGluc3BlY3Rv
ciBmcm9udGVuZCB3aW5kb3cuIFRoYXQgYWxsb3dzIHRvIGNyZWF0ZSByZW1vdGUgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LgotCi0gICAgICAgIEludHJvZHVjZSBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCB0aGF0IHdvdWxkIHByb3ZpZGUgSW5zcGVjdG9yRnJvbnRlbmQgd2l0aCBhbiBpbnRlcmZhY2Ug
dG8gdGhlIGVtYmVkZGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNTAzNgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRX
eC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oOgotCi0y
MDEwLTAzLTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCi0KLSAgICAgICAgUmVtb3ZlIGludmFsaWRhdGVD
b250ZW50cywgaXQgaXNuJ3QgdXNlZCBhbmQgaXQgbmV2ZXIgbWFrZXMgc2Vuc2UgdG8gb25seSBp
bnZhbGlkYXRlIHRoZSBjb250ZW50cy4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21l
Q2xpZW50V3guY3BwOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoK
LQotMjAxMC0wMy0wMiAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0uY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IERhdmUgSHlhdHQuCi0KLSAgICAgICAgQWRhcHQgdGhlIHd4IHBvcnQgdG8gdGhl
IHJlZmFjdG9yaW5nIG9mIHJlcGFpbnQgbWV0aG9kcy4KLQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQyMTQKLQotICAgICAgICAqIFdlYktpdFN1cHBv
cnQvQ2hyb21lQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6
OmludmFsaWRhdGVDb250ZW50cyk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6
aW52YWxpZGF0ZVdpbmRvdyk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6aW52
YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRXeDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93KToKLSAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0KLTIwMTAtMDMtMDEgIEpha29iIFBldHNvdml0cyAg
PGpwZXRzb3ZpdHNAcmltLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgot
Ci0gICAgICAgIEFkYXB0IHRvIHRoZSBuZXcgWm9vbU1vZGUgZW51bS4KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzQ3Ci0KLSAgICAgICAgKiBXZWJG
cmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpJbmNyZWFzZVRleHRTaXplKToKLSAgICAg
ICAgKHd4V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUpOgotICAgICAgICAod3hXZWJGcmFtZTo6
UmVzZXRUZXh0U2l6ZSk6Ci0KLTIwMTAtMDItMjMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bn
b29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAg
IEFkZHMgQ2hyb21lQ2xpZW50OjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9y
RnJhbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0
OTYyCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgc28gdGhhdCBhIEdlb2xvY2F0
aW9uIG9iamVjdCBjYW4gY2FuY2VsIGFuCi0gICAgICAgIGFzeW5jaHJvbm91cyBwZXJtaXNzaW9u
IHJlcXVlc3QuIFRoaXMgYWxsb3dzIHRoZSBjaHJvbWUgY2xpZW50IHRvIGNhbmNlbAotICAgICAg
ICBhbnkgVUkgaXQgaXMgc2hvd2luZyBmb3IgdGhlIHBlcm1pc3Npb24gcmVxdWVzdC4KLQotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFd4OjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJh
bWUpOgotCi0yMDEwLTAyLTE3ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLCBEYXJpbiBGaXNoZXIsIFNpbW9uIEhh
dXNtYW5uLgotCi0gICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJl
dHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKLQotICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50
KToKLSAgICAgICAgQWRkZWQgZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBt
ZXRob2QuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoK
LQotMjAxMC0wMi0xNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgSW50cm9kdWNlcyBuZXcgSWNv
biBsb2FkaW5nIGludGVyZmFjZSBpbiBvcmRlciB0byBzdXBwb3J0Ci0gICAgICAgIGFzeW5jaHJv
bm91cyBsb2FkaW5nLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzIwNTQKLQotICAgICAgICBBZGQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgQ2hy
b21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6Omljb25G
b3JGaWxlcyk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgotCi0y
MDEwLTAyLTA0ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0g
ICAgICAgIEJ1aWxkIGZpeCBhZnRlciBjaGFuZ2VzIGluIHI1NDM0NS4KLQotICAgICAgICAqIFdl
YlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3OjpPbktleUV2ZW50cyk6Ci0KLTIwMTAtMDIt
MDQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCi0KLSAgICAgICAgUkVHUkVTU0lPTiAocjUzNzE4KTogV2hlbiBzY3Jv
bGxpbmcgYSB0YWxsIHdpbmRvdyBieSBwYWdlLCB0aGUgb3ZlcmxhcCBiZXR3ZWVuIHBhZ2VzIGlz
IHRvbyBiaWcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM0MzcxCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6T25L
ZXlFdmVudHMpOiBVc2UgU2Nyb2xsYmFyIG1ldGhvZCBpbnN0ZWFkIG9mIGNvbnN0YW50LgotCi0y
MDEwLTAyLTAzICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICBBZGQgd3hXZWJLaXRX
aW5kb3dGZWF0dXJlcyBhbmQgaGF2ZSBjcmVhdGVXaW5kb3cgc2VuZCBhIG5vdGlmaWNhdGlvbiBm
b3IgCi0gICAgICAgIGNsaWVudHMgdG8gaGFuZGxlLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTQyCi0KLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OndrRmVhdHVy
ZXNmb3JXaW5kb3dGZWF0dXJlcyk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6
Y3JlYXRlV2luZG93KToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0KLTIwMTAtMDEtMjcgIEtldmlu
IFdhdHRlcnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIEFkZCBhIHdheSB0byBnZXQgdGhlIHBhcnNlIG1v
ZGUgdG8gd3hXZWJLaXQgQVBJLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzQxCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0g
ICAgICAgICh3eFdlYkZyYW1lOjpHZXRQYXJzZU1vZGUpOgotICAgICAgICAqIFdlYkZyYW1lLmg6
Ci0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldFBhcnNlTW9k
ZSk6Ci0gICAgICAgICogV2ViVmlldy5oOgotCi0yMDEwLTAxLTIyICBLZXZpbiBXYXR0ZXJzICA8
a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxp
dmllci4KLQotICAgICAgICBbd3hdIFJlbW92ZSB0aGUgQmFrZWZpbGUgYnVpbGQgc3lzdGVtLCB3
aGljaCBpcyBubyBsb25nZXIgYmVpbmcgdXNlZC4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDAyMgotCi0gICAgICAgICogYmluZGlu
Z3MvcHl0aG9uL3d4d2Via2l0LXB5LmJrbDogUmVtb3ZlZC4KLSAgICAgICAgKiBkZXBlbmRlbmNp
ZXMuYmtsOiBSZW1vdmVkLgotICAgICAgICAqIHByZXNldHMvd3h3ZWJraXQuYmtsOiBSZW1vdmVk
LgotICAgICAgICAqIHd4d2Via2l0LmJrbDogUmVtb3ZlZC4KLSAgICAgICAgKiB3eHdrLXNldHRp
bmdzLmJrbDogUmVtb3ZlZC4KLQotMjAxMC0wMS0yMiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9A
dGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjUzNzE4LgotCi0g
ICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9uS2V5RXZlbnRzKToK
LQotMjAxMC0wMS0xNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAgICAgIE1v
dmUgdGhlIGNvZGUgYWRkaW5nIHRoZSBjaGlsZCBmcmFtZSB0byB0aGUgRnJhbWVUcmVlIGludG8g
d3hXZWJGcmFtZSBjb25zdHJ1Y3RvcgotICAgICAgICBzbyB0aGF0IGl0IGhhcHBlbnMgYmVmb3Jl
IHdlIGNhbGwgaW5pdCgpIG9uIHRoZSBuZXcgZnJhbWUuIEZpeGVzIGFzc2VydHMgY2hlY2tpbmcK
LSAgICAgICAgZnJhbWUgY291bnQgY29uc2lzdGVuY3kuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5j
cHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjp3eFdlYkZyYW1lKToKLSAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRXeDo6Y3JlYXRlRnJhbWUpOgotCi0yMDEwLTAxLTE0ICBLZXZpbiBPbGxpdmll
ciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIFt3eF0gQnVpbGQgZml4LCBt
aXNzaW5nIGhlYWRlci4KLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotCi0yMDEwLTAxLTA5ICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCi0KLSAgICAgICAgU2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkIG5lZWRzIHRv
IGJlIHJlbmFtZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyMDYzCi0KLSAgICAgICAgUmVuYW1lIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCB0
bwotICAgICAgICBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cy4KLQotICAgICAg
ICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKHd4V2ViRnJhbWU6OlJ1blNjcmlwdCk6Ci0KLTIw
MDktMTItMzAgIEtldmluIFdhdHRlcnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIEludHJvZHVjZSB3eFdl
YlNldHRpbmdzIEFQSSBpbnRlcmZhY2UgZm9yIGVkaXRpbmcgd3hXZWJWaWV3IC8gcGFnZSBzZXR0
aW5ncy4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjk1NgotCi0gICAgICAgICogV2ViQnJvd3NlclNoZWxsLmg6Ci0gICAgICAgICog
V2ViRnJhbWUuaDoKLSAgICAgICAgKiBXZWJLaXREZWZpbmVzLmg6IEFkZGVkLgotICAgICAgICAq
IFdlYlNldHRpbmdzLmNwcDogQWRkZWQuCi0gICAgICAgICh3eFdlYlNldHRpbmdzOjpTZXREZWZh
dWx0Rml4ZWRGb250U2l6ZSk6Ci0gICAgICAgICh3eFdlYlNldHRpbmdzOjpHZXREZWZhdWx0Rml4
ZWRGb250U2l6ZSk6Ci0gICAgICAgICh3eFdlYlNldHRpbmdzOjpTZXREZWZhdWx0Rm9udFNpemUp
OgotICAgICAgICAod3hXZWJTZXR0aW5nczo6R2V0RGVmYXVsdEZvbnRTaXplKToKLSAgICAgICAg
KHd4V2ViU2V0dGluZ3M6OlNldE1pbmltdW1Gb250U2l6ZSk6Ci0gICAgICAgICh3eFdlYlNldHRp
bmdzOjpHZXRNaW5pbXVtRm9udFNpemUpOgotICAgICAgICAod3hXZWJTZXR0aW5nczo6U2V0TG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5KToKLSAgICAgICAgKHd4V2ViU2V0dGluZ3M6OkxvYWRzSW1h
Z2VzQXV0b21hdGljYWxseSk6Ci0gICAgICAgICh3eFdlYlNldHRpbmdzOjpTZXRKYXZhU2NyaXB0
RW5hYmxlZCk6Ci0gICAgICAgICh3eFdlYlNldHRpbmdzOjpJc0phdmFTY3JpcHRFbmFibGVkKToK
LSAgICAgICAgKHd4V2ViU2V0dGluZ3M6OlNldERhdGFiYXNlc0VuYWJsZWQpOgotICAgICAgICAo
d3hXZWJTZXR0aW5nczo6QXJlRGF0YWJhc2VzRW5hYmxlZCk6Ci0gICAgICAgICh3eFdlYlNldHRp
bmdzOjpTZXRMb2NhbFN0b3JhZ2VQYXRoKToKLSAgICAgICAgKHd4V2ViU2V0dGluZ3M6OkdldExv
Y2FsU3RvcmFnZVBhdGgpOgotICAgICAgICAod3hXZWJTZXR0aW5nczo6U2V0RWRpdGFibGVMaW5r
QmVoYXZpb3IpOgotICAgICAgICAod3hXZWJTZXR0aW5nczo6R2V0RWRpdGFibGVMaW5rQmVoYXZp
b3IpOgotICAgICAgICAod3hXZWJTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQpOgotICAgICAg
ICAod3hXZWJTZXR0aW5nczo6QXJlUGx1Z2luc0VuYWJsZWQpOgotICAgICAgICAqIFdlYlNldHRp
bmdzLmg6IEFkZGVkLgotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3
OjpDcmVhdGUpOgotICAgICAgICAod3hXZWJWaWV3OjpHZXRXZWJTZXR0aW5ncyk6Ci0gICAgICAg
ICogV2ViVmlldy5oOgotICAgICAgICAqIGJpbmRpbmdzL3B5dGhvbi93ZWJ2aWV3Lmk6Ci0KLTIw
MDktMTItMjggIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCi0KLSAgICAgICAgVXNlIEpTX05PX0VY
UE9SVCBmb3IgSlNCYXNlLmguCi0KLSAgICAgICAgKiB3eHdrLXNldHRpbmdzLmJrbDoKLQotMjAw
OS0xMi0yMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAg
ICAgICBbd3hdIGJ1aWxkIGZpeGVzIGFmdGVyIHJlY2VudCBjaGFuZ2VzLgotCi0gICAgICAgICog
V2ViRnJhbWUuY3BwOiBBZGRlZCBtaXNzaW5nIGhlYWRlci4KLSAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0VkaXRvckNsaWVudFd4LmNwcDogQWRkZWQgbWlzc2luZyBoZWFkZXIuCi0gICAgICAgICog
V2ViVmlldy5jcHA6IFVwZGF0ZWQgUGFnZSBjb25zdHJ1Y3RvciBjYWxsLgotICAgICAgICAod3hX
ZWJWaWV3OjpDcmVhdGUpOgotCi0yMDA5LTEyLTA4ICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0
ZXJzQGdtYWlsLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQot
ICAgICAgICBbd3hdIE1hYyBwbHVnaW5zIHN1cHBvcnQuCi0gICAgICAgIAotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIyMzYKLQotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFd4OjpjcmVhdGVQbHVnaW4pOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDo6cmVkaXJlY3REYXRhVG9QbHVnaW4pOgotICAgICAgICAqIFdlYlZp
ZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3OjpDcmVhdGUpOgotCi0yMDA5LTEyLTAzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjE0MjM2PiBhbmQgaHR0cDovL3dl
YmtpdC5vcmcvYi8zMjA1MiAtIEltcGxlbWVudCBIVE1MNSBzdGF0ZSBvYmplY3QgaGlzdG9yeSBB
UEkKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFB1c2hTdGF0
ZVdpdGhpblBhZ2UpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlz
cGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKToKLSAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAwOS0xMi0wMyAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGRoY3AtMTcyLTI4LTE3NC0yMjAuc3BiLmNvcnAuZ29vZ2xl
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCi0KLSAgICAgICAg
V2ViIEluc3BlY3RvcjogU2ltcGxpZnkgdGhlIHNldHRpbmdzIHN1cHBvcnQgaW4gaW5zcGVjdG9y
IGNvbnRyb2xsZXIuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyMDc2Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFd4Ojpwb3B1bGF0ZVNldHRp
bmcpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V3g6OnN0b3JlU2V0dGluZyk6
Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oOgotCi0yMDA5LTEy
LTAzICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBCcmFkeSBFaWRzb24uCi0KLSAgICAgICAgW0FuZHJvaWRdIFRoZSBGcmFtZUxvYWRlckNsaWVu
dCBpcyB1bmF3YXJlIG9mIEJhY2tGb3J3YXJkTGlzdCBjaGFuZ2VzLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE5MTQKLQotICAgICAgICAqIFdlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbSk6IEFkZCBhbiBl
bXB0eSBpbXBsZW1lbnRhdGlvbi4gTWV0aG9kIGFkZGVkIHRvIEZyYW1lTG9hZGVyQ2xpZW50IGJ5
IEFuZHJvaWQgKHNlZSBidWcpLgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRX
eDo6ZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0pOiBkaXR0by4KLSAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJ
bmRleCk6IGRpdHRvLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5oOgotCi0yMDA5LTExLTIzICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
LQotICAgICAgICBJbmNsdWRlICJjb25maWcuaCIgdG8gbWVldCBDb2RpbmcgU3R5bGUgR3VpZGVs
aW5lcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3
OTIKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHJhZ0NsaWVudFd4LmNwcDoKLQotMjAwOS0x
MS0xOCAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgRW5hYmxlIHd4IHBsdWdpbiBz
dXBwb3J0IHVzaW5nIHRoZSBXaW5kb3dzIGltcGxlbWVudGF0aW9uIGFzIGEgYmFzZS4KLSAgICAg
ICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYz
NgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OkZyYW1lTG9hZGVyQ2xpZW50V3gp
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZmluaXNoZWRMb2FkaW5n
KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNvbW1pdHRlZExvYWQp
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6Y3JlYXRlUGx1Z2luKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnJlZGlyZWN0RGF0YVRvUGx1
Z2luKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnNob3VsZFVzZVBs
dWdpbkRvY3VtZW50KToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guaDoKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6Q3JlYXRl
KToKLQotMjAwOS0xMS0xMyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KLQotICAgICAgICB3eCBidWlsZCBmaXggYWZ0ZXIgcjUwOTIzIGNoYW5nZSB0byBleHRlcm5h
bFJlcHJlc2VudGF0aW9uLgotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hX
ZWJGcmFtZTo6R2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6Ci0KLTIwMDktMTEtMTMgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFVwZGF0ZSBmb3IgY2hhbmdlcyB0
byBGcmFtZUxvYWRlckNsaWVudAotCi0gICAgICAgIEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9i
LzMxMTI0PiBUZWxsIHRoZSBXZWJGcmFtZUxvYWREZWxlZ2F0ZSB3aGVuCi0gICAgICAgIHdpbmRv
dyBvYmplY3RzIGluIGlzb2xhdGVkIHdvcmxkcyBhcmUgY2xlYXJlZAotCi0gICAgICAgIFJldmll
d2VkIGJ5IERhdmUgSHlhdHQuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgotICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotICAgICAgICBSZXBsYWNlZCB3aW5kb3dPYmplY3RD
bGVhcmVkIHdpdGggdGhpcyBmdW5jdGlvbi4gRG9lcyBub3RoaW5nIGlmIHRoZQotICAgICAgICBw
YXNzZWQtaW4gd29ybGQgaXMgbm90IHRoZSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKS4KLQotMjAw
OS0xMS0xMCAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4uY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIEFkZCBzYW5pdHkgY2hlY2tzIHRvIFJ1
blNjcmlwdCB0byBlbnN1cmUgaXQgZG9lc24ndCBydW4gd2hlbiB0aGUgZG9jdW1lbnQgaGFzbid0
IHlldAotICAgICAgICBsb2FkZWQgbm9yIHdoZW4gSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4KLSAg
ICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTMwOQotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6UnVu
U2NyaXB0KToKLQotMjAwOS0xMS0wNCAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFp
bC5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAg
Rml4IGFuIGFzc2VydCBvbiBzaHV0ZG93biB3aGVuIHd4V2ViVmlldyBoYXMgY2FwdHVyZWQgdGhl
IG1vdXNlLAotICAgICAgICBhbmQgbWFrZSBzdXJlIHd4V2ViVmlldydzIHJpZ2h0IGNsaWNrIGhh
bmRsaW5nIGlzIG9ubHkgYWN0aXZlIHdoZW4gCi0gICAgICAgIHRoZSBXZWJDb3JlIHBvcHVwIG1l
bnUgaXMgdXNlZC4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMTEzMQotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3
eFdlYlZpZXc6On53eFdlYlZpZXcpOgotICAgICAgICAod3hXZWJWaWV3OjpPbkNvbnRleHRNZW51
RXZlbnRzKToKLSAgICAgICAgKHd4V2ViVmlldzo6T25NZW51U2VsZWN0RXZlbnRzKToKLQotMjAw
OS0xMS0wNCAgVmFkaW0gWmVpdGxpbiAgPHZhZGltQHd4d2lkZ2V0cy5vcmc+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgW3d4XSBTbWFsbCBjbGVhbnVwOiBh
dm9pZCB1bm5lY2Vzc2FyeSB3eFN0cmluZzo6bWJfc3RyKCkgY2FsbHMuCi0KLSAgICAgICAgKiBX
ZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpTZXRQYWdlU291cmNlKToKLSAgICAg
ICAgKHd4V2ViRnJhbWU6OkxvYWRVUkwpOgotCi0yMDA5LTEwLTMwICBFdmFuIFN0YWRlICA8ZXN0
YWRlQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KLQot
ICAgICAgICBOb3RpZnkgdGhlIGNocm9tZSB3aGVuIHRoZSBmb2N1c2VkIG5vZGUgaGFzIGNoYW5n
ZWQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDgz
MgotCi0gICAgICAgIEFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIG5ldyBDaHJvbWVDbGll
bnQgZnVuY3Rpb24uCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojpmb2N1c2VkTm9kZUNoYW5nZWQp
OgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLQotMjAwOS0xMC0y
MyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3
eCBidWlsZCBmaXguIFVwZGF0ZSB0aGUgZ2xvYmFsT2JqZWN0IGNhbGxzIGFmdGVyIGNoYW5nZXMu
Ci0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpSdW5TY3Jp
cHQpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojp3aW5kb3dPYmplY3RDbGVhcmVk
KToKLQotMjAwOS0xMC0yMSAgUGVkcm8gUm9tYW5vICA8cG1jbnI3MkBnbWFpbC5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgSW5jbHVkZSAnV2Vi
RnJhbWUuaCcgZGVjbGFyZWQgY2xhc3NlcyBpbiB3eFB5dGhvbiBiaW5kaW5ncy4KLSAgICAgICAg
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDUwNAot
Ci0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dlYnZpZXcuaToKLQotMjAwOS0xMC0xOCAgS2V2
aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkg
YSBwcm94eSBmb3Igd3hXZWJLaXQuCi0gICAgICAgIAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA0NDYKLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgot
ICAgICAgICAoY3VybFByb3h5VHlwZSk6Ci0gICAgICAgICh3eFdlYlZpZXc6OlNldFByb3h5SW5m
byk6Ci0gICAgICAgICogV2ViVmlldy5oOgotCi0yMDA5LTEwLTE4ICBLZXZpbiBXYXR0ZXJzICA8
a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxp
dmllci4KLQotICAgICAgICBBZGQgYmFzaWMgZGF0YWJhc2Ugc3VwcG9ydCB0byB3eCBBUEkKLSAg
ICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDQ0NQotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKLSAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6Q3JlYXRlKToKLSAgICAg
ICAgKHd4V2ViVmlldzo6U2V0RGF0YWJhc2VEaXJlY3RvcnkpOgotICAgICAgICAod3hXZWJWaWV3
OjpHZXREYXRhYmFzZURpcmVjdG9yeSk6Ci0gICAgICAgICogV2ViVmlldy5oOgotCi0yMDA5LTEw
LTE2ICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICBPcHRpb25hbGx5IGFsbG93IHRo
ZSB1c2VyIHRvIHpvb20gdGV4dCB1c2luZyB0aGUgbW91c2Ugd2hlZWwuCi0gICAgICAgIAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA0NDQKLQotICAg
ICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3Ojp3eFdlYlZpZXcpOgotICAg
ICAgICAod3hXZWJWaWV3OjpPbk1vdXNlRXZlbnRzKToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0K
LTIwMDktMTAtMTYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0K
LSAgICAgICAgd3hNU1cgbm9uLXByZWNvbXAgaGVhZGVycyBidWlsZCBmaXguCi0KLSAgICAgICAg
KiBXZWJWaWV3LmNwcDoKLQotMjAwOS0xMC0xNSAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4u
Y29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIFVw
ZGF0ZSB0aGUgd3hQeXRob24gc2ltcGxlLnB5IHNhbXBsZSB0byBtYXRjaCBjdXJyZW50IHd4V2Vi
S2l0IEFQSS4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDQwNgotCi0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3NhbXBsZXMvc2lt
cGxlLnB5OgotCi0yMDA5LTEwLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgTW92ZSBleGVjdXRl
U2NyaXB0IGZyb20gRnJhbWVMb2FkZXIgdG8gU2NyaXB0Q29udHJvbGxlcgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAyMDAKLQotICAgICAgICBVcGRh
dGUgQVBJIGNhbGwuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZy
YW1lOjpSdW5TY3JpcHQpOgotCi0yMDA5LTEwLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgRmFj
dG9yIFBvbGljeUNoZWNrZXIgb3V0IG9mIEZyYW1lTG9hZGVyCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE1NQotCi0gICAgICAgIE1vdmUgdGhlIHBv
bGljeSBjYWxsYmFjayB0byB0aGUgcG9saWN5IG9iamVjdC4KLQotICAgICAgICAqIFdlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFd4OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgot
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRXeDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKLQotMjAwOS0w
OS0yNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICB3eCBidWlsZCBmaXguIEFkZCBFbXB0eVBsdWdpbkhhbHRlckNsaWVudCB3aGVuIGNyZWF0aW5n
IHRoZSBQYWdlLgotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6
OkNyZWF0ZSk6Ci0KLTIwMDktMDktMjIgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2
aWVycy5jb20+Ci0KLSAgICAgICAgQnVpbGQgZml4IHRvIGVuc3VyZSB0aGUgaW1wb3J0IGxpYnJh
cnkgZ2V0cyBwcm9wZXJseSBpbnN0YWxsZWQgb24gV2luZG93cy4KLQotICAgICAgICAqIHdzY3Jp
cHQ6Ci0KLTIwMDktMDktMTcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3
ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgotCi0gICAg
ICAgIE1ha2UgUGxhdGZvcm1XaW5kb3cgcmV0dXJuIHNvbWV0aGluZyBlbHNlIHRoYW4gUGxhdGZv
cm1XaWRnZXQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5MDg1Ci0KLSAgICAgICAgUmVmbGVjdCB0aGUgcmVuYW1lIG9mIHBsYXRmb3JtV2luZG93IGFu
ZCBpdCdzIHJldHVybiB0eXBlLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6cGxhdGZvcm1QYWdl
Q2xpZW50KToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0gICAg
ICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRXeDo6aXNFZGl0YWJsZSk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRXeDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRXeDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRXeDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgotICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50V3g6OmNhblVuZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50V3g6OmNhblJlZG8pOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnVuZG8p
OgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlZG8pOgotCi0yMDA5LTA5LTE2
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIHd4
UHl0aG9uIGJpbmRpbmdzIGJ1aWxkIGZpeGVzIGFmdGVyIHJlY2VudCBjaGFuZ2VzLgotCi0gICAg
ICAgICogV2ViVmlldy5oOgotICAgICAgICAqIGJpbmRpbmdzL3B5dGhvbi93c2NyaXB0OgotCi0y
MDA5LTA5LTEzICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICBBbGxvdyBhIHdheSB0
byBzZXQgdGhlIGNhY2hlIHBvbGljeSB2aWEgd3ggQVBJLgotICAgICAgICAKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MjAwCi0KLSAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6U2V0Q2FjaGVQb2xpY3kpOgotICAgICAg
ICAod3hXZWJWaWV3OjpHZXRDYWNoZVBvbGljeSk6Ci0gICAgICAgICogV2ViVmlldy5oOgotCi0y
MDA5LTA5LTEzICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICBBbGxvdyB0aGUgdXNl
ciB0byBxdWVyeSBGcmFtZTo6c2hvdWxkQ2xvc2UgdmlhIHd4IEFQSS4KLSAgICAgICAgCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE5OQotCi0gICAg
ICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6U2hvdWxkQ2xvc2UpOgot
ICAgICAgICAqIFdlYkZyYW1lLmg6Ci0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3
eFdlYlZpZXc6OlNob3VsZENsb3NlKToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0KLTIwMDktMDkt
MTMgIEtldmluIFdhdHRlcnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIEZpeCBtb3VzZSBoYW5kbGluZyB3
aGVuIHRoZSBtb3VzZSBsZWF2ZXMgdGhlIHdpbmRvdyBkdXJpbmcgbW91c2UgZG93bi4KLSAgICAg
ICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE5
OAotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9uTW91c2VF
dmVudHMpOgotCi0yMDA5LTA5LTEzICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWls
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgY29uc29sZSBNZXNzYWdlTGV2ZWwgYXQgd3ggQVBJIGxldmVsLgotICAg
ICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5
MTk3Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjphZGRNZXNzYWdlVG9Db25zb2xlKToKLSAgICAg
ICAgKiBXZWJWaWV3Lmg6Ci0KLTIwMDktMDktMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBlcmljQHdlYmtpdC5vcmcuCi0KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Njk2Ci0KLSAgICAgICAg
U3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgbWl4ZWQgY29udGVudCBtZXRob2RzIG9mIEZyYW1lTG9h
ZGVyQ2xpZW50LiAKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6
OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4Lmg6Ci0KLTIwMDktMDktMDMgIEtldmluIFdhdHRlcnMgIDxrZXZpbndhdHRl
cnNAZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0g
ICAgICAgIFt3eF0gRnJhbWVzIHN1cHBvcnQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDQxCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAg
ICAgICh3eFdlYkZyYW1lOjp3eFdlYkZyYW1lKToKLSAgICAgICAgKHd4V2ViRnJhbWU6On53eFdl
YkZyYW1lKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OkdldEZyYW1lKToKLSAgICAgICAgKiBXZWJG
cmFtZS5oOgotICAgICAgICAqIFdlYkZyYW1lUHJpdmF0ZS5oOgotICAgICAgICAqIFdlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
V3g6OnBsYXRmb3JtV2luZG93KToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojpz
Y3JvbGwpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmlzRWRpdGFibGUpOgotICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgotICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgotICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKToKLSAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpjYW5VbmRvKToKLSAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFd4OjpjYW5SZWRvKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFd4Ojp1bmRvKToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpyZWRvKToK
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6RnJhbWVMb2FkZXJDbGllbnRXeCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRGcmFtZSk6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmZyYW1lTG9hZGVyRGVzdHJv
eWVkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNvbW1pdHRlZExv
YWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JNSU1FVHlwZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFd4OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6Y3Jl
YXRlRnJhbWUpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6dHJhbnNp
dGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4Lmg6Ci0gICAgICAgICogV2ViVmlldy5oOgotICAgICAgICAqIFdlYlZp
ZXdQcml2YXRlLmg6Ci0KLTIwMDktMDktMDIgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9s
bGl2aWVycy5jb20+Ci0KLSAgICAgICAgd2FmIGJ1aWxkIGZpeGVzIGZvciBXaW5kb3dzL01TVkMu
Ci0KLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24vd3NjcmlwdDoKLSAgICAgICAgKiB3c2NyaXB0
OgotCi0yMDA5LTA5LTAyICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLQotICAgICAgICB3eCBwb3J0
OiBDYWxsIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpLgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MTIKLQotICAgICAgICAqIFdlYlZpZXcuY3Bw
OgotICAgICAgICAod3hXZWJWaWV3OjpDcmVhdGUpOiBjYWxsIFdURjo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpCi0KLTIwMDktMDktMDIgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVy
cy5jb20+Ci0KLSAgICAgICAgd3ggYnVpbGQgZml4LiBVc2UgdGhlIDIgcGFyYW0gS1VSTCBjb25z
dHJ1Y3Rvci4KLQotICAgICAgICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKHd4V2ViRnJhbWU6
OlNldFBhZ2VTb3VyY2UpOgotCi0yMDA5LTA4LTMxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
d2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NTIKLSAgICAgICAg
UmVuYW1lIEtVUkwgc2luZ2xlIGFyZ3VtZW50IGNvbnN0cnVjdG9yIHRvIGF2b2lkIGNvbmZ1c2lv
bgotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOiAod3hXZWJGcmFtZTo6U2V0UGFnZVNvdXJjZSk6
IEFkYXB0IHRvIHRoZSBjaGFuZ2UuCi0KLTIwMDktMDgtMjggIEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgSG9sZ2VyIEZyZXl0aGVyLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTg4OQotICAgICAgICBbR1RLXSBzY3JvbGxiYXIgcG9saWN5IGZvciBt
YWluIGZyYW1lIGlzIG5vdCBpbXBsZW1lbnRhYmxlCi0KLSAgICAgICAgQWRkIGVtcHR5IGltcGxl
bWVudGF0aW9uIGZvciBuZXcgQ2hyb21lQ2xpZW50IG1ldGhvZC4KLQotICAgICAgICAqIFdlYktp
dFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFd4OjpzY3JvbGxiYXJzTW9kZURpZENoYW5nZSk6Ci0KLTIwMDktMDgtMTkgIEtldmluIFdhdHRl
cnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtldmlu
IE9sbGl2aWVyLgotCi0gICAgICAgIFVzZSBGcmFtZUxvYWRlcjo6bG9hZCgpIGZvciBsb2FkaW5n
IHBhZ2VzIGZyb20gYSBIVE1MIHBhZ2Ugc3RyaW5nIHRvIGFkZHJlc3MKLSAgICAgICAgYnVncyB3
aXRoIHVzaW5nIGJlZ2luL3dyaXRlL2VuZCBsb2FkaW5nLgotICAgICAgICAKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4NDg4Ci0KLSAgICAgICAgKiBX
ZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpTZXRQYWdlU291cmNlKToKLQotMjAw
OS0wOC0xMyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAg
ICAgICB3eCBidWlsZCBmaXguIE1ha2Ugc3VyZSB0aGF0IHRoZSB3eFdlYktpdCBkeW5hbWljIGxp
YnJhcnkgaXMgcmVidWlsdCB3aGVuZXZlcgotICAgICAgICB3ZWJjb3JlIG9yIGpzY29yZSBsaWJz
IGNoYW5nZS4KLQotICAgICAgICAqIHdzY3JpcHQ6Ci0KLTIwMDktMDgtMTIgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgd3hQeXRob24gYnVpbGQg
Zml4LCB0aGUgU1dJRyBkZWZpbmVzIG11c3QgYWxzbyBiZSBhdmFpbGFibGUgd2hlbiBjb21waWxp
bmcuCi0KLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24vd3NjcmlwdDoKLQotMjAwOS0wOC0wNSAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3IgYnVpbGRp
bmcgd3ggUHl0aG9uIGJpbmRpbmdzIHVzaW5nIHRoZSB3YWYgYnVpbGQgc3lzdGVtLgotICAgICAg
ICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjE5
Ci0KLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24vd3NjcmlwdDogQWRkZWQuCi0KLTIwMDktMDgt
MDQgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAg
d3ggYnVpbGQgZml4IGFmdGVyIEluc3BlY3RvckNsaWVudCBBUEkgY2hhbmdlLgotCi0gICAgICAg
ICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRXeDo6aW5zcGVjdG9yV2luZG93T2JqZWN0Q2xlYXJlZCk6Ci0gICAg
ICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oOgotCi0yMDA5LTA4LTAyICBL
ZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEphbiBBbG9uem8uCi0KLSAgICAgICAgU2NyaXB0IGZvciBidWlsZGluZyB0aGUgV2Vi
S2l0IGxpYnJhcnkgZm9yIHd4LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mjc2MTkKLQotICAgICAgICAqIHdzY3JpcHQ6IEFkZGVkLgotCi0yMDA5LTA3
LTI0ICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgQXBwbGljYXRpb25DYWNoZSBzaG91
bGQgaGF2ZSBzaXplIGxpbWl0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjcwMAotIAotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJlYWNoZWRNYXhBcHBD
YWNoZVNpemUpOgotICAgICAgICBBZGRzIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIHRoZSByZWFj
aGVkTWF4QXBwQ2FjaGVTaXplIGNhbGxiYWNrLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guaDoKLQotMjAwOS0wNy0yMSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3eCBidWlsZCBmaXguIE1pc3NpbmcgaGVhZGVyIGFk
ZGVkLgotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotCi0yMDA5LTA3LTIxICBLZXZpbiBPbGxp
dmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIHd4IGJ1aWxkIGZpeC4g
QWRkaW5nIGlzU3BlYWtpbmcoKSB0byBDb250ZXh0TWVudUNsaWVudFd4LgotCi0gICAgICAgICog
V2ViS2l0U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51Q2xpZW50V3g6OmlzU3BlYWtpbmcpOgotICAgICAgICAqIFdlYktpdFN1cHBv
cnQvQ29udGV4dE1lbnVDbGllbnRXeC5oOgotCi0yMDA5LTA3LTE2ICBYaWFvbWVpIEppICA8eGpp
QGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAg
ICAgICBGaXggdG9vbHRpcCBkb2VzIG5vdCBnZXQgaXRzIGRpcmVjdGlvbmFsaXR5IGZyb20gaXRz
IGVsZW1lbnQncyBkaXJlY3Rpb25hbGl0eS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI0MTg3Ci0KLSAgICAgICAgUGVyIG1pdHoncyBzdWdnZXN0aW9u
IGluIGNvbW1lbnQgIzYsIHdoaWxlIGdldHRpbmcgdGhlIHBsYWluLXRleHQgCi0gICAgICAgIHRp
dGxlLCB3ZSBhbHNvIGdldCB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIHRpdGxlLiBIb3cgdG8g
aGFuZGxlIAotICAgICAgICB0aGUgZGlyZWN0aW9uYWxpdHkgaXMgdXAgdG8gY2xpZW50cy4gQ2xp
ZW50cyBjb3VsZCBpZ25vcmUgaXQsIAotICAgICAgICBvciB1c2UgYXR0cmlidXRlIG9yIHVuaWNv
ZGUgY29udHJvbCBjaGFyYWN0ZXJzIHRvIGRpc3BsYXkgdGhlIHRpdGxlCi0gICAgICAgIGFzIHdo
YXQgdGhleSB3YW50LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6c2V0VG9vbFRpcCk6IEFkZCBk
aXJlY3Rpb25hbGl0eSBhcyAybmQgcGFyYW1ldGVyIHRvIHNldFRvb3BUaXAoKSAod2l0aG91dCBo
YW5kbGluZyBpdCB5ZXQpLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
aDogQWRkIGRpcmVjdGlvbmFsaXR5IGFzIDJuZCBwYXJhbWV0ZXIgdG8gc2V0VG9vbFRpcCgpLgot
Ci0yMDA5LTA3LTEyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AZ21haWwuY29tPgotCi0gICAg
ICAgIFNwZWN1bGF0aXZlIGJ1aWxkIGZpeCBhZnRlciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC80NTc4Ni4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLQotMjAwOS0w
Ny0wOSAgQmV0aCBEYWtpbiBhbmQgSm9uIEhvbmV5Y3V0dCA8YmRha2luQGFwcGxlLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgotCi0gICAgICAgIE1ha2UgV2lkZ2V0IFJl
ZkNvdW50ZWQgdG8gZml4OgotCi0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM4ODMxPiBSRUdS
RVNTSU9OIChUT1QpOiBJbiBNYWlsLCBhIGNyYXNoIG9jY3VycyAKLSAgICAgICAgYXQgV2ViQ29y
ZTo6V2lkZ2V0OjphZnRlck1vdXNlRG93bigpIGFmdGVyIGNsaWNraW5nIFRvIERvJ3MgY2xvc2Ug
Ci0gICAgICAgIGJveAotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk3ODgwND4gV0VSICMxNjog
UmVwcm8gQWNjZXNzIFZpb2xhdGlvbiBpbiAKLSAgICAgICAgV2ViQ29yZTo6UGx1Z2luVmlldzo6
YmluZGluZ0luc3RhbmNlICgxMzEwMTc4MDIzKQotICAgICAgICAtYW5kLQotICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjk5MTI1MT4gV0VSICMxMzogQ3Jhc2ggaW4gV2ViS2l0IQotICAgICAgICBX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCsyMDMgKDEzMTE0NjExNjkpIAotCi0g
ICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNyZWF0ZVBsdWdpbik6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKLSAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAwOS0wNi0w
OSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3
eCBidWlsZCBmaXgsIGFkZGluZyBKU0NvcmUvYXNzZW1ibGVyIHRvIHRoZSBsaXN0IG9mIGluY2x1
ZGUgZGlycy4KLQotICAgICAgICAqIHByZXNldHMvd3h3ZWJraXQuYmtsOgotCi0yMDA5LTA2LTAz
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIHd4
IGJ1aWxkIGZpeCwgcmVtb3ZlIG5vIGxvbmdlciBuZWVkZWQgZnVuY3Rpb24gY2FsbC4KLQotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQ
YWdlKToKLQotMjAwOS0wNi0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRXeDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6IFVzZSBGcmFtZVZpZXc6
OmNyZWF0ZQotICAgICAgICBhbmQgUmVmUHRyIGluc3RlYWQgb2YgdGhlIG9sZCAiY3JhenkiIHJl
ZmVyZW5jZSBjb3VudGluZy4KLQotMjAwOS0wNS0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgotCi0gICAgICAgIFBhcnQgMiBvZiAyOiBCdWcgMjU0OTU6IEltcGxlbWVudCBQ
YXNzT3duUHRyIGFuZCByZXBsYWNlIHVzZXMgb2Ygc3RkOjphdXRvX3B0cgotCi0gICAgICAgIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0OTU+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9t
ZUNsaWVudFd4Lmg6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRlSFRN
TFBhcnNlclF1aXJrcyk6IFJldHVybiBhCi0gICAgICAgIFBhc3NPd25QdHI8PiBpbnN0ZWFkIG9m
IGEgcmF3IEhUTUxQYXJzZXJRdWlya3MgcG9pbnRlci4KLQotMjAwOS0wNS0yMiAgS2V2aW4gV2F0
dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2
aW4gT2xsaXZpZXIuCi0gICAgICAgIAotICAgICAgICBUcmlwbGUtY2xpY2sgc3VwcG9ydCBmb3Ig
d3ggcG9ydC4gQWxzbywgc3dpdGNoIHRvIGFsbG9jYXRpbmcgR3JhcGhpY3NDb250ZXh0Ci0gICAg
ICAgIG9uIHRoZSBzdGFjayBpbiBPblBhaW50IHNpbmNlIHdlIG9ubHkgbmVlZCBpdCB3aXRoaW4g
dGhhdCBmdW5jdGlvbi4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTk2MgotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAg
ICh3eFdlYlZpZXc6Ok9uUGFpbnQpOgotICAgICAgICAoZ2V0RG91YmxlQ2xpY2tUaW1lKToKLSAg
ICAgICAgKHd4V2ViVmlldzo6T25Nb3VzZUV2ZW50cyk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9u
Q29udGV4dE1lbnVFdmVudHMpOgotICAgICAgICAqIFdlYlZpZXcuaDoKLSAgICAgICAgKiBXZWJW
aWV3UHJpdmF0ZS5oOgotCi0yMDA5LTA1LTIxICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVv
bGxpdmllcnMuY29tPgotCi0gICAgICAgIHd4IGJ1aWxkIGZpeCBhZnRlciBtZXRob2QgYWRkZWQg
dG8gRWRpdG9yQ2xpZW50LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRX
eC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6Z2V0QXV0b0NvcnJlY3RT
dWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRp
dG9yQ2xpZW50V3guaDoKLQotMjAwOS0wNS0yMCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIg
IDx6ZWNrZUBzZWxmaXNoLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
LQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MzQK
LQotICAgICAgICBNYWtlIENocm9tZUNsaWVudCBhIGludGVyZmFjZSBhZ2FpbgotCi0gICAgICAg
IFdpdGggcmVjZW50IGFkZGl0aW9ucyB0byBDaHJvbWVDbGllbnQuaCBlbXB0eSBkZWZhdWx0cyB3
ZXJlCi0gICAgICAgIGFkZGVkLiBUaGlzIGlzIGJhZCBmb3IgcG9ydGVycyBhcyB0aGVzZSBjaGFu
Z2VzIGdvIHVubm90aWNlZAotICAgICAgICBhbmQgYXQgcnVudGltZSBubyBub3RJbXBsZW1lbnRl
ZCB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgZ3JlcHBpbmcKLSAgICAgICAgZm9yIG5vdEltcGxlbWVu
dGVkIHdpbGwgbm90IHNob3cgYW55dGhpbmcuIENoYW5nZSB0aGlzIENsaWVudAotICAgICAgICB0
byBiZSBsaWtlIHRoZSBvdGhlciBDbGllbnRzIGFnYWluIGFuZCBhbHdheXMgaGF2ZSBwdXJlIHZp
cnR1YWxzCi0gICAgICAgIChidXQgZm9yIHN0dWZmIGluc2lkZSAjaWZkZWYgUExBVEZPUk0oTUFD
KSkuCi0KLSAgICAgICAgVXBkYXRlIHRoZSB2YXJpb3VzIFdlYktpdC8qIGltcGxlbWVudGF0aW9u
cyB0byBjb21waWxlIGFnYWluLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6c2V0Q3Vyc29yKToK
LSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJt
aXNzaW9uRm9yRnJhbWUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
aDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpzY3JvbGxSZWN0SW50b1ZpZXcp
OgotCi0yMDA5LTA1LTE4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgotCi0gICAgICAgIHd4IGJ1aWxkIGZpeC4gVXNlIHB5dGhvbi1jb25maWcgdG8gZ2V0IFB5dGhv
biBsaW5raW5nIGluZm8gb24gVW5peCBPU2VzLiAKLQotICAgICAgICAqIGJpbmRpbmdzL3B5dGhv
bi93eHdlYmtpdC1weS5ia2w6Ci0KLTIwMDktMDMtMjkgIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dp
YWsuCi0KLSAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZWNlaXZlZEVycm9y
IG5vdyBhc3NlcnRzIGlmIGVycm9yLmlzTnVsbCgpLCBzbwotICAgICAgICBtYWtlIHN1cmUgd3gg
ZG9lcyBub3QgY3JlYXRlIGVtcHR5IFJlc291cmNlRXJyb3IoKSBvYmplY3RzLgotICAgICAgICAK
LSAgICAgICAgQWxzbyBtYWtlIHN1cmUgd2UgZmlyZSBhIHN0YXRlIGNoYW5nZWQgZXZlbnQgdG8g
bm90aWZ5IHdoZW4gdGhlIGxvYWQgZmFpbHMuCi0gICAgICAgIAotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5MjcKLQotICAgICAgICAqIFdlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFd4OjpjYW5jZWxsZWRFcnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFd4OjpibG9ja2VkRXJyb3IpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRXeDo6Y2Fubm90U2hvd1VSTEVycm9yKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50V3g6OmludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yKToKLSAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmZpbGVEb2VzTm90RXhpc3RF
cnJvcik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnBs
dWdpbldpbGxIYW5kbGVMb2FkRXJyb3IpOgotICAgICAgICAqIFdlYlZpZXcuaDoKLQotMjAwOS0w
NS0wNyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICBGaXggZm9yIGJ1aWxkaW5nIHRoZSBQeXRob24gZXh0ZW5zaW9uLiAKLQotICAgICAgICAqIGJp
bmRpbmdzL3B5dGhvbi93eHdlYmtpdC1weS5ia2w6Ci0KLTIwMDktMDUtMDUgIEJlbiBNdXJkb2No
ICA8YmVubUBnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgot
ICAgICAgICAKLSAgICAgICAgQWRkICNpZiBFTkFCTEUoREFUQUJBU0UpIGd1YXJkcyBhcm91bmQg
ZGF0YWJhc2UgY29kZSBzbyB0b2dnbGluZyBFTkFCTEVfREFUQUJBU0Ugb2ZmIGRvZXMgbm90IGJy
ZWFrIGJ1aWxkcy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0Nzc2Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoK
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0KLTIwMDktMDQtMDEg
IG1pZ2dpbGluICA8bXIuZGlnZ2lsaW5AZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIEZ1bGwgS2V5Ym9hcmQgc2hvcnRjdXQgc3VwcG9y
dC4KLSAgICAgICAgSW1wbGVtZW50IHd4QnJvd3NlciBDdXQvQ29weS9QYXN0ZSBtZW51IGl0ZW1z
LgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0Nzk3Ci0KLSAgICAgICAgKiBXZWJCcm93c2VyU2hlbGwuY3BwOgotICAgICAgICAod3hX
ZWJCcm93c2VyU2hlbGw6Ok9uU2VhcmNoQ3RybEVudGVyKToKLSAgICAgICAgKHd4V2ViQnJvd3Nl
clNoZWxsOjpPbkN1dCk6Ci0gICAgICAgICh3eFdlYkJyb3dzZXJTaGVsbDo6T25Db3B5KToKLSAg
ICAgICAgKHd4V2ViQnJvd3NlclNoZWxsOjpPblBhc3RlKToKLSAgICAgICAgKiBXZWJCcm93c2Vy
U2hlbGwuaDoKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6Oik6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6aGFu
ZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
V3g6OmludGVycHJldEtleUV2ZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNs
aWVudFd4Lmg6Ci0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNh
bkN1dCk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNhblBhc3RlKToKLSAgICAgICAgKHd4V2ViVmll
dzo6UGFzdGUpOgotICAgICAgICAod3hXZWJWaWV3OjpPbktleUV2ZW50cyk6Ci0KLTIwMDktMDUt
MDUgIE1hY2xvbG0gTWFjTGVvZCAgPG1tYWNsZW9kQHdlYm1haWwuY28uemE+Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0gICAgICAgIAotICAgICAgICBIYXZlIHd4V2Vi
a2l0IG1ha2UgdXNlIG9mIGdjYyg0IGFuZCBncmVhdGVyKSBoaWRkZW4gdmlzaWJpbGl0eSBmZWF0
dXJlCi0gICAgICAgIAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQzNDUKLQotICAgICAgICAqIFdlYkZyYW1lLmg6Ci0gICAgICAgICogV2ViVmlldy5o
OgotCi0yMDA5LTA1LTAxICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLSAgICAgICAgCi0gICAgICAg
IFNUQVRFX0NIQU5HRUQgZXZlbnQgaXMgbm93IG5hbWVkIExPQUQKLSAgICAgICAgCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTU0OQotCi0gICAgICAg
ICogYmluZGluZ3MvcHl0aG9uL3NhbXBsZXMvc2ltcGxlLnB5OgotCi0yMDA5LTA1LTA0ICBLZXZp
biBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgotICAgICAgICAKLSAgICAgICAgSW5pdGlhbCBEUlQgaW1wbGVtZW50
YXRpb24gZm9yIHd4LgotCi0gICAgICAgICogQmFrZWZpbGVzLmJrZ2VuOgotCi0yMDA5LTA1LTAx
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUnViYmVyIFN0
YW1wZWQgYnkgU2FtIFdlaW5pZy4KLSAgICAgICAgCi0gICAgICAgIFJlbmFtZWQgSlNWYWx1ZVB0
ciA9PiBKU1ZhbHVlLgotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJG
cmFtZTo6UnVuU2NyaXB0KToKLQotMjAwOS0wNS0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCi0K
LSAgICAgICAgQWRkIGEgRnJhbWVMb2FkZXJDbGllbnQgY2FsbGJhY2sgZm9yIHRoZSBSZXNvdXJj
ZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MzQ3Ci0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRXeDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KToKLSAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAwOS0wNC0zMCAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3eCBidWls
ZCBmaXgsIHJlbW92ZSByZWZlcmVuY2VzIHRvIEpTQ29yZSBzaGFyZWQgbGlicmFyeS4KLQotICAg
ICAgICAqIGJpbmRpbmdzL3B5dGhvbi93eHdlYmtpdC1weS5ia2w6Ci0gICAgICAgICogd3h3ZWJr
aXQuYmtsOgotCi0yMDA5LTA0LTMwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
Ci0KLSAgICAgICAgUHJvdmlkZSBhIG1lY2hhbmlzbSB0byBjcmVhdGUgYSBxdWlya3MgZGVsZWdh
dGUgZm9yIEhUTUxQYXJzZXIKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KLQot
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFd4OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKTogQWRkZWQuICBUaGUK
LSAgICAgICAgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZhY3RvcnkgbWV0aG9kIHJl
dHVybnMgMC4KLQotMjAwOS0wNC0zMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCi0KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MzQyCi0gICAgICAgIEFk
ZCBNZXNzYWdlU291cmNlIGFuZCBNZXNzYWdlTGV2ZWwgcGFyYW1ldGVycyB0byB0aGUgQ2hyb21l
Q2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9D
aHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6YWRk
TWVzc2FnZVRvQ29uc29sZSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5oOgotCi0yMDA5LTA0LTI4ICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNv
bT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLSAgICAgICAgCi0gICAg
ICAgIEFkZCBhIGZ1bmN0aW9uIGZvciByZXNldHRpbmcgdGhlIHpvb20gZmFjdG9yIHRvIDEuMC4K
LSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNTQ0NwotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6
UmVzZXRUZXh0U2l6ZSk6Ci0gICAgICAgICogV2ViRnJhbWUuaDoKLSAgICAgICAgKiBXZWJWaWV3
LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6UmVzZXRUZXh0U2l6ZSk6Ci0gICAgICAgICogV2Vi
Vmlldy5oOgotCi0yMDA5LTA0LTI0ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmll
cnMuY29tPgotCi0gICAgICAgIHd4IGJ1aWxkIGZpeC4gU3dpdGNoaW5nIEpTQ29yZSBmcm9tIGEg
c3RhdGljIGxpYiB0byBhIGR5bmFtaWMgbGliCi0gICAgICAgIHRvIG1hdGNoIHRoZSBBcHBsZSBi
dWlsZCBhbmQgZml4IHN5bWJvbCBleHBvcnRzLgotCi0gICAgICAgICogYmluZGluZ3MvcHl0aG9u
L3d4d2Via2l0LXB5LmJrbDoKLSAgICAgICAgKiBwcmVzZXRzL3d4d2Via2l0LmJrbDoKLSAgICAg
ICAgKiB3eHdlYmtpdC5ia2w6Ci0KLTIwMDktMDQtMTUgIFJvYmluIER1bm4gIDxyb2JpbkBhbGxk
dW5uLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLSAgICAgICAg
Ci0gICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciB3eFdlYlZpZXdOZXdXaW5kb3dFdmVudC4K
LSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA0MwotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKLQotMjAwOS0wNC0wNCAgS2V2aW4gT2xsaXZpZXIg
IDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBCdWlsZCBmaXhlcyBmb3Igd3hN
YWMvVGlnZXIuCi0KLSAgICAgICAgKiBkZXBlbmRlbmNpZXMuYmtsOgotICAgICAgICAqIHd4d2st
c2V0dGluZ3MuYmtsOgotCi0yMDA5LTA0LTA0ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVv
bGxpdmllcnMuY29tPgotCi0gICAgICAgIHd4IGJ1aWxkIGZpeC4gQWRkIG1pc3NpbmcgaGVhZGVy
LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLQot
MjAwOS0wMy0zMCAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0gICAgICAgIAotICAgICAgICBBZGQg
ZXZlbnRzIHRvIGFsbG93IGFwcHMgdG8gb3ZlcnJpZGUgaGFuZGxpbmcgZm9yIEpTIHByb21wdHMg
YW5kIAotICAgICAgICB3aW5kb3cgb2JqZWN0IGNsZWFyZWQgZXZlbnRzLgotICAgICAgICAKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0OTQ4Ci0KLSAg
ICAgICAgKiBXZWJGcmFtZS5oOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJ1bkphdmFTY3JpcHRB
bGVydCk6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6cnVuSmF2YVNjcmlwdENv
bmZpcm0pOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJ1bkphdmFTY3JpcHRQ
cm9tcHQpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnBhZ2VEZXN0cm95ZWQpOgotICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OjpoYXNXZWJWaWV3KToKLSAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50V3g6OndpbmRvd09iamVjdENsZWFyZWQpOgotICAgICAgICAqIFdlYlZp
ZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3QWxlcnRFdmVudDo6d3hXZWJWaWV3QWxlcnRFdmVu
dCk6Ci0gICAgICAgICh3eFdlYlZpZXdDb25maXJtRXZlbnQ6Ond4V2ViVmlld0NvbmZpcm1FdmVu
dCk6Ci0gICAgICAgICh3eFdlYlZpZXdQcm9tcHRFdmVudDo6d3hXZWJWaWV3UHJvbXB0RXZlbnQp
OgotICAgICAgICAod3hXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50Ojp3eFdlYlZpZXdX
aW5kb3dPYmplY3RDbGVhcmVkRXZlbnQpOgotICAgICAgICAqIFdlYlZpZXcuaDoKLQotMjAwOS0w
My0yOCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICB3eCBidWlsZCBmaXguIFJlbW92ZSBjYWxsIHRvIG5vdyBwcml2YXRlIG1ldGhvZC4KLQotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KToKLQotMjAwOS0wMy0wMiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJz
LmNvbT4KLQotICAgICAgICBCdWlsZCBmaXhlcyBmb3Igd3hXaWRnZXRzIE1hYyB0cnVuayBidWls
ZC4KLQotICAgICAgICAqIFdlYlZpZXcuaDoKLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24vd2Vi
dmlldy5pOgotICAgICAgICAqIGJpbmRpbmdzL3B5dGhvbi93eHdlYmtpdC1weS5ia2w6Ci0gICAg
ICAgICogZGVwZW5kZW5jaWVzLmJrbDoKLSAgICAgICAgKiBwcmVzZXRzL3d4d2Via2l0LmJrbDoK
LQotMjAwOS0wMi0xMSAgRGltaXRyaSBEdXB1aXMtbGF0b3VyICA8ZHVwdWlzbGF0b3VyQGFwcGxl
LmNvbT4KLQotICAgICAgICBTdHViIG91dCBJbnNwZWN0b3JDbGllbnRXeDo6aGlkZGVuUGFuZWxz
LgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50V3g6OmhpZGRlblBhbmVscyk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRXeC5oOgotCi0yMDA5LTAyLTA2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+Ci0KLSAgICAgICAgQnVpbGQgZml4LgotCi0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50V3g6OnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKToKLSAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAwOS0wMi0wNSAgQWFy
b24gQm9vZG1hbiAgPGFhQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXZl
IEh5YXR0LgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcwOAotICAgICAgICBBZGRzIGRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpIGNhbGxiYWNr
IHRvIEZyYW1lTG9hZGVyQ2xpZW50LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6
OmRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSk6Ci0gICAgICAgIFN0dWIgb3V0IGRvY3VtZW50RWxl
bWVudEF2YWlsYWJsZSgpLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5oOgotICAgICAgICBEaXR0by4KLQotMjAwOS0wMi0wMiAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIEJ1aWxkIGZpeC4KLQotICAgICAgICAqIFdlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFd4Ojp1cGRhdGVHbG9iYWxIaXN0b3J5Rm9yUmVkaXJlY3RXaXRob3V0SGlz
dG9yeUl0ZW0pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6Y3JlYXRl
UGx1Z2luKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5oOgotCi0yMDA5LTAyLTAyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
Ci0KLSAgICAgICAgQnVpbGQgZml4LgotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAg
ICAod3hXZWJGcmFtZTo6TG9hZFVSTCk6Ci0KLTIwMDktMDEtMzEgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgotCi0gICAgICAgIEJ1aWxkIGZpeC4KLQotICAgICAgICAqIFdlYlZpZXcu
Y3BwOgotICAgICAgICAod3hXZWJWaWV3OjpPblNpemUpOiBjYWxsIHNlbmRSZXNpemVFdmVudCBv
biBFdmVudEhhbmRsZXIuCi0KLTIwMDktMDEtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KLQotICAgICAgICBCdWlsZCBmaXggZm9yIFd4OiBGaW5pc2ggZGUtUmVmQ291bnQt
aW5nIEZyYW1lTG9hZGVyQ2xpZW50V3gKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4
OjpyZWYpOiBSZW1vdmVkLgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6
ZGVyZWYpOiBSZW1vdmVkLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5oOiBEaXR0by4KLQotMjAwOS0wMS0yOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgotCi0gICAgICAgIEJ1ZyAyMzQ5MDogUmVtb3ZlIGluaXRpYWxSZWZDb3VudCBhcmd1
bWVudCBmcm9tIFJlZkNvdW50ZWQgY2xhc3MKLQotICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDkwPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgotCi0gICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50V3ggaXMgbm8gbG9uZ2VyIGEgUmVm
Q291bnRlZCBjbGFzcy4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpGcmFtZUxv
YWRlckNsaWVudFd4KTogUmVtb3ZlZCBjYWxsCi0gICAgICAgIHRvIHRoZSBSZWZDb3VudGVkPEZy
YW1lTG9hZGVyQ2xpZW50V3g+KDApIHN1cGVyIGNvbnN0cnVjdG9yLgotICAgICAgICAqIFdlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOiBEb24ndCBpbmNsdWRlIFJlZkNvdW50ZWQu
aAotICAgICAgICBhbmQgc3RvcCBpbmhlcml0aW5nIGZyb20gUmVmQ291bnRlZDxGcmFtZUxvYWRl
ckNsaWVudFd4Pi4KLQotMjAwOS0wMS0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbgotCi0gICAgICAgIFJld29y
ayBGcmFtZUxvYWRlckNsaWVudCB0byB3b3JrIG9uIGEgQ2FjaGVkRnJhbWUgYmFzaXMgaW5zdGVh
ZCBvZiBDYWNoZWRQYWdlCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2F2ZVBs
YXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRXeDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKToKLSAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAwOS0wMS0yMyAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3eCBidWls
ZCBmaXgsIGFkZCBtaXNzaW5nIGluY2x1ZGUgZGlyLgotCi0gICAgICAgICogcHJlc2V0cy93eHdl
YmtpdC5ia2w6Ci0KLTIwMDktMDEtMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQot
ICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KLQotICAgICAgICBS
ZW1vdmUgdGVtcG9yYXJ5IG9wZXJhdG9yLT4gZnJvbSBKU1ZhbHVlUHRyLgotCi0gICAgICAgICog
V2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6UnVuU2NyaXB0KToKLQotMjAwOS0w
MS0xNCAgbWlnZ2lsaW4gIDxtci5kaWdnaWxpbkBnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgRml4aW5nIHd4IGNvbXBpbGF0aW9uIGZv
ciB3eCAyLjkvdHJ1bmsuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdl
YkZyYW1lOjpTZXRQYWdlU291cmNlKToKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLQotMjAwOS0w
MS0xMiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICB3eCBidWlsZCBmaXguIEpTVmFsdWUqIC0+IEpTVmFsdWVQdHIuCi0KLSAgICAgICAgKiBXZWJG
cmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgotCi0yMDA5LTAxLTA1
ICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCi0KLSAgICAgICAgQnVpbGQgZml4IGZvciBjb250ZW50
c1NpemVDaGFuZ2VkCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojpjb250ZW50c1NpemVDaGFuZ2Vk
KToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0KLTIwMDgtMTIt
MTkgIG1pZ2dpbGluICA8bXIuZGlnZ2lsaW5AZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIEFkZCBDb250ZXh0IE1lbnUgc3VwcG9ydCB0
byB3eCBiaW5kaW5ncy4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY3NQotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9Db250ZXh0
TWVudUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50V3g6
OmNvbnRleHRNZW51RGVzdHJveWVkKToKLSAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xp
ZW50V3g6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKLSAgICAgICAgKiBXZWJWaWV3
LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6T25Nb3VzZUV2ZW50cyk6Ci0gICAgICAgICh3eFdl
YlZpZXc6Ok9uQ29udGV4dE1lbnVFdmVudHMpOgotICAgICAgICAod3hXZWJWaWV3OjpPbk1lbnVT
ZWxlY3RFdmVudHMpOgotICAgICAgICAqIFdlYlZpZXcuaDoKLQotCi0yMDA4LTEyLTE5ICBLZXZp
biBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIHd4IGJ1aWxk
IGZpeGVzIGFmdGVyIHJlY2VudCBjaGFuZ2VzLgotCi0gICAgICAgICogcHJlc2V0cy93eHdlYmtp
dC5ia2w6Ci0KLTIwMDgtMTItMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIC0gc3R1YiBvdXQgRnJh
bWVMb2FkZXJDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkuCi0KLSAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDA4LTEyLTE4
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSm9o
biBTdWxsaXZhbi4KLQotICAgICAgICBTdHViIG91dCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQotCi0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KToKLSAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAwOC0xMi0x
MyAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgRXhwb3NlIGZpbmRTdHJpbmcgaW4g
d3hXZWJWaWV3IGFzIEZpbmRTdHJpbmcuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDU4Ci0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAg
ICAgKHd4V2ViVmlldzo6RmluZFN0cmluZyk6Ci0gICAgICAgICogV2ViVmlldy5oOgotCi0yMDA4
LTEyLTA5ICBCcmV0dCBXaWxzb24gIDxicmV0dHdAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IERhdmUgSHlhdHQuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTc3Ci0KLSAgICAgICAgQWRkIGEgY2FsbGJhY2sgb24gQ2hyb21l
Q2xpZW50IHRoYXQgdGhlIHN0YXRlIG9mIGZvcm0gZWxlbWVudHMgb24KLSAgICAgICAgdGhlIHBh
Z2UgaGFzIGNoYW5nZWQuIFRoaXMgaXMgdG8gYWxsb3cgY2xpZW50cyBpbXBsZW1lbnRpbmcgc2Vz
c2lvbgotICAgICAgICBzYXZpbmcgdG8ga25vdyB3aGVuIHRoZSBjdXJyZW50IHN0YXRlIGlzIGRp
cnR5LgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmZvcm1TdGF0ZURpZENoYW5nZSk6Ci0KLTIwMDgt
MTItMDIgIEtldmluIFdhdHRlcnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotCi0gICAgICAgIEFkZCBIaXRUZXN0IHRvIHd4
V2ViVmlldyAoYW5kIHd4V2ViRnJhbWUpLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDU5Ci0KLSAgICAgICAgKiBXZWJGcmFtZS5j
cHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpIaXRUZXN0KToKLSAgICAgICAgKiBXZWJGcmFtZS5o
OgotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3OjpIaXRUZXN0KToK
LSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0KLTIwMDgtMTEtMjQgIERhcmluIEZpc2hlciAgPGRhcmlu
QGNocm9taXVtLm9yZz4KLQotICAgICAgICBGaXggYnVzdGFnZS4KLQotICAgICAgICBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MwotCi0gICAgICAgICogV2ViS2l0
U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRXeDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6Ci0KLTIwMDgtMTEtMjQgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCi0K
LSAgICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NzAK
LSAgICAgICAgICByZW1vdmUgdW5uZWVkZWQgVVJMIGFyZ3VtZW50IGZyb20gRnJhbWVMb2FkZXJD
bGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFd4Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KTogUmVtb3ZlIGFyZ3VtZW50LgotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOiBEaXR0by4KLQotMjAwOC0xMS0yMSAg
S2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgTWFpbnRhaW4gYW4gRWRpdENvbW1hbmQg
c3RhY2sgaW4gV2ViRnJhbWVQcml2YXRlLCBhbmQgZXhwb3NlIFVuZG8gYW5kCi0gICAgICAgIFJl
ZG8gaW4gd3hXZWJWaWV3LgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDAzCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAg
ICAgICh3eFdlYkZyYW1lOjp3eFdlYkZyYW1lKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OlVuZG8p
OgotICAgICAgICAod3hXZWJGcmFtZTo6UmVkbyk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpDYW5V
bmRvKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OkNhblJlZG8pOgotICAgICAgICAqIFdlYkZyYW1l
Lmg6Ci0gICAgICAgICogV2ViRnJhbWVQcml2YXRlLmg6IEFkZGVkLgotICAgICAgICAoV2ViRnJh
bWVQcml2YXRlOjpXZWJGcmFtZVByaXZhdGUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmNyZWF0
ZVdpbmRvdyk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0Q29tbWFuZFd4Lmg6IEFkZGVk
LgotICAgICAgICAoRWRpdENvbW1hbmRXeDo6RWRpdENvbW1hbmRXeCk6Ci0gICAgICAgIChFZGl0
Q29tbWFuZFd4Ojp+RWRpdENvbW1hbmRXeCk6Ci0gICAgICAgIChFZGl0Q29tbWFuZFd4OjplZGl0
Q29tbWFuZCk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6
Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVk
byk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6Y2FuVW5kbyk6Ci0gICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6Y2FuUmVkbyk6Ci0gICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRXeDo6dW5kbyk6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6
cmVkbyk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgotICAgICAg
ICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3OjpPbk1vdXNlRXZlbnRzKToKLSAg
ICAgICAgKHd4V2ViVmlldzo6T25LZXlFdmVudHMpOgotICAgICAgICAqIFdlYlZpZXdQcml2YXRl
Lmg6Ci0KLTIwMDgtMTEtMTkgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KLQot
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KLQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDUKLSAgICAgICAgRGVmaW5lIFNjcmlwdFZh
bHVlIGFzIGEgdGhpbiBjb250YWluZXIgZm9yIGEgSlNDOjpWYWx1ZSouCi0KLSAgICAgICAgKiBX
ZWJGcmFtZS5jcHA6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgotCi0yMDA4LTEx
LTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KLSAgICAgICAgCi0gICAgICAgIFVwZGF0ZWQgZm9yIEphdmFTY3Jp
cHRDb3JlIHJlbmFtZXMuCi0KLSAgICAgICAgKiBwcmVzZXRzL3d4d2Via2l0LmJrbDoKLQotMjAw
OC0xMS0xNyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCi0gICAgICAgIAotICAgICAgICBVcGRhdGVkIGZvciBKYXZh
U2NyaXB0Q29yZSByZW5hbWVzLgotCi0gICAgICAgICogcHJlc2V0cy93eHdlYmtpdC5ia2w6Ci0K
LTIwMDgtMTEtMTcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAg
ICBOb3QgcmV2aWV3ZWQuCi0gICAgICAgIAotICAgICAgICBUcnkgdG8gZml4IHd4IGJ1aWxkLgot
Ci0gICAgICAgICogcHJlc2V0cy93eHdlYmtpdC5ia2w6Ci0KLTIwMDgtMTEtMTUgIEtldmluIFdh
dHRlcnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
dmluIE9sbGl2aWVyLgotCi0gICAgICAgIEFkZCBBUEkgZm9yIHNldHRpbmcgdHJhbnNwYXJlbnQg
d2VidmlldyBiYWNrZ3JvdW5kLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgxCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAg
ICAgICAgKHd4V2ViVmlldzo6U2V0VHJhbnNwYXJlbnQpOgotICAgICAgICAod3hXZWJWaWV3OjpJ
c1RyYW5zcGFyZW50KToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0KLTIwMDgtMTEtMTEgIENhbWVy
b24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgotCi0gICAgICAgIFJlbW92ZSBwb2ludGxlc3MgZGVwZW5kZW5jaWVzIG9uIHRo
ZSBkZWxldGVkIGtqcyBkaXJlY3RvcnkuCi0KLSAgICAgICAgKiBwcmVzZXRzL3d4d2Via2l0LmJr
bDoKLQotMjAwOC0xMS0wOCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KLQotICAgICAgICB3eCBidWlsZCBmaXhlcyBhZnRlciBhZGRpdGlvbiBvZiBKU0NvcmUgcGFy
c2VyIGFuZCBieWNvbXBpbGVyIGRpcnMuIAotCi0gICAgICAgICogcHJlc2V0cy93eHdlYmtpdC5i
a2w6Ci0KLTIwMDgtMTEtMDUgIENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgot
Ci0gICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgTW92ZSBt
b3JlIGZpbGVzIHRvIHRoZSBydW50aW1lIHN1YmRpcmVjdG9yeSBvZiBKYXZhU2NyaXB0Q29yZS4K
LQotICAgICAgICAqIFdlYkZyYW1lLmNwcDoKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLQotMjAw
OC0xMC0zMSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAg
ICAgICB3eE1TVyBidWlsZCBmaXguIE1pc3NpbmcgaGVhZGVyLgotCi0gICAgICAgICogV2ViS2l0
U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0KLTIwMDgtMTAtMjkgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgd3ggYnVpbGQgZml4ZXMgYWZ0
ZXIgYWRkaXRpb24gb2YgcnVudGltZSBhbmQgSW1hZ2VCdWZmZXIgY2hhbmdlcy4KLQotICAgICAg
ICAqIHByZXNldHMvd3h3ZWJraXQuYmtsOgotCi0yMDA4LTEwLTI4ICBDYW1lcm9uIFp3YXJpY2gg
IDx6d2FyaWNoQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCi0K
LSAgICAgICAgTW92ZSBGb3J3YXJkaW5nSGVhZGVycyB0byB0aGVpciBjb3JyZWN0IGxvY2F0aW9u
IGFmdGVyIHRoZSBjcmVhdGlvbiBvZgotICAgICAgICB0aGUgcnVudGltZSBkaXJlY3RvcnkgaW4g
SmF2YVNjcmlwdENvcmUuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICogV2Vi
Vmlldy5jcHA6Ci0KLTIwMDgtMTAtMjcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2
aWVycy5jb20+Ci0KLSAgICAgICAgd3ggYnVpbGQgZml4IG9uIExpbnV4L0dUSy4gRW5hYmxlIHN1
cHBvcnQgZm9yICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9YWVouaD4gc3R5bGUgaW5jbHVkZXMu
Ci0KLSAgICAgICAgKiBwcmVzZXRzL3d4d2Via2l0LmJrbDoKLQotMjAwOC0xMC0yNSAgS2V2aW4g
T2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3eCBidWlsZCBm
aXguCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0KLTIwMDgt
MTAtMjQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBEYW4gQmVybnN0ZWluLgotCi0gICAgICAgIEZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NTkKLSAgICAgICAgTGF5ZXJpbmcgdmlvbGF0aW9uOiBGaWxlQ2hv
b3NlciBzaG91bGQgbm90IGRlcGVuZCBvbiBEb2N1bWVudC9GcmFtZS9QYWdlCi0KLSAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFd4OjpydW5PcGVuUGFuZWwpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guaDoKLQotMjAwOC0xMC0yNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgotCi0gICAgICAgIEJ1aWxkIGZpeC4KLQotICAgICAgICBSZXZpZXdlZCBieSBHcmVn
IEJvbHNpbmdhLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6cG9wdWxhdGVTZXR0aW5n
KTogQ2hhbmdlZAotICAgICAgICBJbnNwZWN0b3JDbGllbnQ6OiB0byBJbnNwZWN0b3JDbGllbnRX
eDo6LgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V3g6OnN0b3JlU2V0dGluZyk6
IERpdHRvLgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V3g6OnJlbW92ZVNldHRp
bmcpOiBEaXR0by4KLQotMjAwOC0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgU3R1YiBvdXQgbmV3IEluc3BlY3RvckNsaWVudCBtZXRob2RzLgot
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg1Ngot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgICogV2ViS2l0U3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQ6OnBvcHVsYXRlU2V0dGluZyk6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudDo6c3RvcmVTZXR0aW5nKTogRGl0dG8uCi0gICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnQ6OnJlbW92ZVNldHRpbmcpOiBEaXR0by4KLSAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4Lmg6Ci0KLTIwMDgtMTAtMjQgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIC0gZmluaXNoIHJvbGxpbmcgb3V0IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczMgotCi0gICAgICAgICog
V2ViRnJhbWUuY3BwOiAod3hXZWJGcmFtZTo6UnVuU2NyaXB0KTogVXNlIEpTVmFsdWUqIGluc3Rl
YWQgb2YgSlNWYWx1ZVB0ci4KLQotMjAwOC0xMC0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBS
ZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDQuICBJdCBpcyBubyBs
b25nZXIgdXNlZCBieSBhbnkgcG9ydC4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4Lmg6Ci0KLTIwMDgtMTAtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgotCi0gICAgICAgIC0gbmV4dCBzdGVw
IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczMgotICAgICAg
ICAgIGltcHJvdmUgcGVyZm9ybWFuY2UgYnkgZWxpbWluYXRpbmcgSlNWYWx1ZSBhcyBhIGJhc2Ug
Y2xhc3MgZm9yIEpTQ2VsbAotCi0gICAgICAgIFJlbW92ZSBtb3N0IHVzZXMgb2YgSlNWYWx1ZSwg
d2hpY2ggd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHBhdGNoLgotCi0gICAgICAgICogV2Vi
RnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6UnVuU2NyaXB0KTogVXNlIEpTVmFsdWVQ
dHIuCi0KLTIwMDgtMTAtMTcgIEtldmluIFdhdHRlcnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29t
PgotICAgICAgICAKLSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIKLQotICAgICAg
ICBGaXggd3ggcG9ydCdzIHNjcm9sbGJhciBhbmQgZHJhd2luZyBoYW5kbGluZyBhZnRlciByZWNl
bnQgY2hhbmdlcy4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTcyMAotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3
eFdlYlZpZXc6Ok9uUGFpbnQpOgotICAgICAgICAod3hXZWJWaWV3OjpPblNpemUpOgotCi0yMDA4
LTEwLTA5ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAg
ICAgIHd4IGJ1aWxkIGZpeGVzLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6cmVwYWludCk6Ci0g
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6c2Nyb2xsKToKLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0gICAgICAgICogcHJlc2V0cy93eHdlYmtpdC5i
a2w6Ci0KLTIwMDgtMTAtMDYgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgotCi0gICAg
ICAgIEVuYWJsZSB2aWV3bGVzcyBNYWMgV2ViS2l0IHRvIHBhaW50IHNvbWUgYmFzaWMgcGFnZXMu
Ci0gICAgICAgIAotICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnCi0KLSAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAqIFdlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgotCi0yMDA4LTEwLTAzICBEYXZpZCBIeWF0dCAg
PGh5YXR0QGFwcGxlLmNvbT4KLQotICAgICAgICAgUmVtb3ZlIGFkZFRvRGlydHlSZWdpb24uCi0g
ICAgICAgIAotICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQKLQotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgotCi0yMDA4LTEwLTAyICBLZXZpbiBPbGxp
dmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIHd4IGJ1aWxkIGZpeGVz
IGFmdGVyIEZyYW1lL1Njcm9sbFZpZXcgY2hhbmdlcy4KLQotICAgICAgICAqIFdlYlZpZXcuY3Bw
OgotICAgICAgICAod3hXZWJWaWV3OjpPblBhaW50KToKLQotMjAwOC0xMC0wMSAgRGF2aWQgSHlh
dHQgIDxoeWF0dEBhcHBsZS5jb20+Ci0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjgyCi0gICAgICAgIAotICAgICAgICBNYWtlIGNvbnRlbnRzVG9T
Y3JlZW4vc2NyZWVuVG9Db250ZW50cyBjcm9zcy1wbGF0Zm9ybS4gIE9ubHkgaW1wbGVtZW50ZWQg
YnkgTWFjL1dpbiByaWdodCBub3cuCi0gICAgCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9i
ZW4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OndpbmRvd1RvU2NyZWVuKToKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFd4OjpzY3JlZW5Ub1dpbmRvdyk6Ci0gICAgICAgICogV2ViS2l0
U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgotCi0yMDA4LTA5LTMwICBEYXZlIEh5YXR0ICA8aHlh
dHRAYXBwbGUuY29tPgotCi0gICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjUwCi0gICAgICAgIAotICAgICAgICBSZW5hbWUgdXBkYXRlQ29udGVudHMgdG8g
cmVwYWludENvbnRlbnRSZWN0YW5nbGUgYW5kIG1ha2UgaXQgY3Jvc3MtcGxhdGZvcm0gYnkgYWx3
YXlzIHNlbmRpbmcKLSAgICAgICAgcmVwYWludHMgdXAgdGhyb3VnaCB0aGUgQ2hyb21lQ2xpZW50
LgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyCi0KLSAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFd4OjpyZXBhaW50KToKLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6
Ci0KLTIwMDgtMDktMjYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+
Ci0KLSAgICAgICAgd3ggYnVpbGQgZml4ZXMgYWZ0ZXIgV2lkZ2V0L1Njcm9sbFZpZXcgY2hhbmdl
cy4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojp0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKToKLQotMjAwOC0wOS0yMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgotICAg
ICAgICAKLSAgICAgICAgRml4IG1lbW9yeSBsZWFrLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA1Ci0KLSAgICAgICAgKiBXZWJW
aWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6T25QYWludCk6Ci0KLTIwMDgtMDktMjAgIEtl
dmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgd3ggYnVp
bGQgZml4ZXMuIEFkZGVkL3JlbW92ZWQgYnVpbGQgc291cmNlcywgYW5kIG5hdGl2ZVdpbmRvdy0+
cGxhdGZvcm1XaWRnZXQgdXBkYXRlcy4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9y
Q2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmlzRWRpdGFi
bGUpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojp0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKToKLQotMjAwOC0wOS0wNyAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNo
QHV3YXRlcmxvby5jYT4KLQotICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4K
LQotICAgICAgICBCdWcgMjA3MDQ6IFJlcGxhY2UgdGhlIEtKUyBuYW1lc3BhY2UKLSAgICAgICAg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwND4KLQotICAgICAg
ICBSZW5hbWUgdGhlIEtKUyBuYW1lc3BhY2UgdG8gSlNDLgotCi0gICAgICAgICogV2ViRnJhbWUu
Y3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6UnVuU2NyaXB0KToKLQotMjAwOC0wOS0wNCAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3eCBidWls
ZCBmaXhlcy4KLSAgICAgICAgCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnBsdWdp
bldpbGxIYW5kbGVMb2FkRXJyb3IpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5oOgotCi0yMDA4LTA4LTE4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVv
bGxpdmllcnMuY29tPgotCi0gICAgICAgIEJ1aWxkIGZpeCBmb3IgV2luLiBEb24ndCBpbmNsdWRl
IHRoZSBsaWJ4bWwvbGlieHNsdCBkaXJlY3RvcmllcyBpbiB0aGUKLSAgICAgICAgaW5jbHVkZSBw
YXRoLCBpdCBwaWNrcyB1cCB0aGUgd3JvbmcgUGF0dGVybi5oIGluIHRoYXQgY2FzZS4KLQotICAg
ICAgICAqIGRlcGVuZGVuY2llcy5ia2w6Ci0KLTIwMDgtMDgtMTIgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgotCi0gICAgICAgIEFkZCBhIHN0dWIgZm9yIEluc3BlY3RvckNs
aWVudDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0luc3BlY3RvckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFd4OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6Ci0gICAgICAgIENhbGwgbm90SW1wbGVtZW50
ZWQoKS4KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4Lmg6Ci0KLTIw
MDgtMDgtMDYgIEtldmluIFdhdHRlcnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotICAgICAgICAKLSAgICAgICAgQ3JlYXRl
IGEgd3hXZWJGcmFtZSBBUEkgdG8gbWF0Y2ggb3RoZXIgcG9ydHMgYW5kIHRvIHByZXBhcmUgZm9y
IGZyYW1lcyBzdXBwb3J0LgotICAgICAgICBBbHNvIGZpeGVzIGEgZnJhbWUgbGVhayBpbiB3eCBw
b3J0IG9uIHRydW5rLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDQxCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6IEFkZGVkLgot
ICAgICAgICAod3hXZWJGcmFtZTo6d3hXZWJGcmFtZSk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjp+
d3hXZWJGcmFtZSk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpHZXRGcmFtZSk6Ci0gICAgICAgICh3
eFdlYkZyYW1lOjpTdG9wKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OlJlbG9hZCk6Ci0gICAgICAg
ICh3eFdlYkZyYW1lOjpHZXRQYWdlU291cmNlKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OlNldFBh
Z2VTb3VyY2UpOgotICAgICAgICAod3hXZWJGcmFtZTo6R2V0SW5uZXJUZXh0KToKLSAgICAgICAg
KHd4V2ViRnJhbWU6OkdldEFzTWFya3VwKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OkdldEV4dGVy
bmFsUmVwcmVzZW50YXRpb24pOgotICAgICAgICAod3hXZWJGcmFtZTo6UnVuU2NyaXB0KToKLSAg
ICAgICAgKHd4V2ViRnJhbWU6OkxvYWRVUkwpOgotICAgICAgICAod3hXZWJGcmFtZTo6R29CYWNr
KToKLSAgICAgICAgKHd4V2ViRnJhbWU6OkdvRm9yd2FyZCk6Ci0gICAgICAgICh3eFdlYkZyYW1l
OjpDYW5Hb0JhY2spOgotICAgICAgICAod3hXZWJGcmFtZTo6Q2FuR29Gb3J3YXJkKToKLSAgICAg
ICAgKHd4V2ViRnJhbWU6OkNhbkluY3JlYXNlVGV4dFNpemUpOgotICAgICAgICAod3hXZWJGcmFt
ZTo6SW5jcmVhc2VUZXh0U2l6ZSk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpDYW5EZWNyZWFzZVRl
eHRTaXplKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUpOgotICAgICAg
ICAod3hXZWJGcmFtZTo6TWFrZUVkaXRhYmxlKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OkNhbkNv
cHkpOgotICAgICAgICAod3hXZWJGcmFtZTo6Q29weSk6Ci0gICAgICAgICh3eFdlYkZyYW1lOjpD
YW5DdXQpOgotICAgICAgICAod3hXZWJGcmFtZTo6Q3V0KToKLSAgICAgICAgKHd4V2ViRnJhbWU6
OkNhblBhc3RlKToKLSAgICAgICAgKHd4V2ViRnJhbWU6OlBhc3RlKToKLSAgICAgICAgKiBXZWJG
cmFtZS5oOiBBZGRlZC4KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmll
dzo6d3hXZWJWaWV3KToKLSAgICAgICAgKHd4V2ViVmlldzo6Q3JlYXRlKToKLSAgICAgICAgKHd4
V2ViVmlldzo6fnd4V2ViVmlldyk6Ci0gICAgICAgICh3eFdlYlZpZXc6OlN0b3ApOgotICAgICAg
ICAod3hXZWJWaWV3OjpSZWxvYWQpOgotICAgICAgICAod3hXZWJWaWV3OjpHZXRQYWdlU291cmNl
KToKLSAgICAgICAgKHd4V2ViVmlldzo6U2V0UGFnZVNvdXJjZSk6Ci0gICAgICAgICh3eFdlYlZp
ZXc6OkdldElubmVyVGV4dCk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldEFzTWFya3VwKToKLSAg
ICAgICAgKHd4V2ViVmlldzo6R2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6Ci0gICAgICAgICh3
eFdlYlZpZXc6OlJ1blNjcmlwdCk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkxvYWRVUkwpOgotICAg
ICAgICAod3hXZWJWaWV3OjpHb0JhY2spOgotICAgICAgICAod3hXZWJWaWV3OjpHb0ZvcndhcmQp
OgotICAgICAgICAod3hXZWJWaWV3OjpDYW5Hb0JhY2spOgotICAgICAgICAod3hXZWJWaWV3OjpD
YW5Hb0ZvcndhcmQpOgotICAgICAgICAod3hXZWJWaWV3OjpDYW5JbmNyZWFzZVRleHRTaXplKToK
LSAgICAgICAgKHd4V2ViVmlldzo6SW5jcmVhc2VUZXh0U2l6ZSk6Ci0gICAgICAgICh3eFdlYlZp
ZXc6OkNhbkRlY3JlYXNlVGV4dFNpemUpOgotICAgICAgICAod3hXZWJWaWV3OjpEZWNyZWFzZVRl
eHRTaXplKToKLSAgICAgICAgKHd4V2ViVmlldzo6T25QYWludCk6Ci0gICAgICAgICh3eFdlYlZp
ZXc6Ok9uU2l6ZSk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9uTW91c2VFdmVudHMpOgotICAgICAg
ICAod3hXZWJWaWV3OjpDYW5Db3B5KToKLSAgICAgICAgKHd4V2ViVmlldzo6Q29weSk6Ci0gICAg
ICAgICh3eFdlYlZpZXc6OkNhbkN1dCk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkN1dCk6Ci0gICAg
ICAgICh3eFdlYlZpZXc6OkNhblBhc3RlKToKLSAgICAgICAgKHd4V2ViVmlldzo6UGFzdGUpOgot
ICAgICAgICAod3hXZWJWaWV3OjpPbktleUV2ZW50cyk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9u
U2V0Rm9jdXMpOgotICAgICAgICAod3hXZWJWaWV3OjpPbktpbGxGb2N1cyk6Ci0gICAgICAgICog
V2ViVmlldy5oOgotICAgICAgICAqIHd4d2Via2l0LmJrbDoKLQotMjAwOC0wNy0yNyAgS2V2aW4g
V2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KLQotICAgICAgICBBZGQgdG9vbHRpcCBzdXBwb3J0IHRvIHRoZSB3eCBwb3J0
LgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMTczCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpzZXRUb29sVGlwKToKLSAgICAgICAg
KiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6T25Nb3VzZUV2ZW50cyk6IFVzZSBt
b3VzZU1vdmVkIGluc3RlYWQgb2YgaGFuZGxlTW91c2VNb3ZlRXZlbnQuCi0KLTIwMDgtMDctMjEg
IEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgd3gg
YnVpbGQgZml4LiBGaXggcHRocmVhZCBsaW5rYWdlIHVuZGVyIExpbnV4LgotCi0gICAgICAgICog
ZGVwZW5kZW5jaWVzLmJrbDoKLQotMjAwOC0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgLSBnaXZlIEZyYW1lIG9iamVjdCBmdW5jdGlvbnMgc2hvcnRlciBu
YW1lczogc2NyaXB0UHJveHkoKSAtPiBzY3JpcHQoKSwKLSAgICAgICAgICBzZWxlY3Rpb25Db250
cm9sbGVyKCkgLT4gc2VsZWN0aW9uKCksIGFuaW1hdGlvbkNvbnRyb2xsZXIoKSAtPiBhbmltYXRp
b24oKQotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6Ci0gICAg
ICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OlJ1blNjcmlwdCk6Ci0gICAg
ICAgICh3eFdlYlZpZXc6Ok9uU2V0Rm9jdXMpOgotICAgICAgICAod3hXZWJWaWV3OjpPbktpbGxG
b2N1cyk6Ci0KLTIwMDgtMDYtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIC0gbmV3IG5hbWVzIGZvciBhIGZldyBrZXkgSmF2YVNjcmlwdENvcmUgZmlsZXMKLQot
ICAgICAgICAqIFdlYlZpZXcuY3BwOgotCi0yMDA4LTA2LTE0ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KLQotICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0uCi0KLSAgICAgICAg
LSBuZXcgbmFtZXMgZm9yIGtqc19iaW5kaW5nLmggYW5kIGtqc19wcm94eS5oCi0KLSAgICAgICAg
KiBXZWJWaWV3LmNwcDoKLQotMjAwOC0wNi0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+Ci0KLSAgICAgICAgLSB0cnkgdG8gZml4IHd4IGJ1aWxkLCBhZ2FpbgotCi0gICAgICAgICog
V2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNyZWF0ZSk6IFVzZSBjcmVhdGUgZnVu
Y3Rpb24gaW5zdGVhZCBvZiBuZXcuCi0KLTIwMDgtMDYtMTQgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbS4KLQotICAgICAgICAtIG1vcmUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjU3Ci0gICAgICAgICAg
c3RhcnQgcmVmIGNvdW50cyBhdCAxIGluc3RlYWQgb2YgMCBmb3Igc3BlZWQKLQotICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OjpjcmVhdGVEb2N1bWVudExvYWRlcik6IFVzZSBjcmVhdGUg
ZnVuY3Rpb24KLSAgICAgICAgaW5zdGVhZCBvZiBuZXcuCi0KLTIwMDgtMDYtMTMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIC0gdHJ5IHRvIGZpeCBidWlsZAotCi0g
ICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6IEFkZCBtaXNzaW5n
IGFyZ3VtZW50LgotCi0yMDA4LTA2LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgotCi0gICAgICAgIC0gdXBkYXRl
ZCBmb3IgYWRkaXRpb24gb2YgRm9ybVN0YXRlIGFyZ3VtZW50IHRvIGFjdGlvbiBwb2xpY3kgZnVu
Y3Rpb25zCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKLQotMjAw
OC0wNi0xMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAg
ICAgICB3eCBMaW51eCBidWlsZCBmaXguIE9ubHkgdXNlIC11bmRlZmluZWQgZHluYW1pY19sb29r
dXAgZmxhZyB1bmRlciBNYWMuCi0KLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24vd3h3ZWJraXQt
cHkuYmtsOgotCi0yMDA4LTA1LTI4ICBSb2JpbiBEdW5uICA8cm9iaW5AYWxsZHVubi5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCi0KLSAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgbmV3IHd4IGV2ZW50IHR5cGUgYW5kIGNvZGUgdG8gc2VuZCBpdCB3aGVuIGEgbmV3
IHRpdGxlIGlzIHNldAotICAgICAgICBieSB0aGUgcGFnZSBiZWluZyBsb2FkZWQuCi0gICAgICAg
IAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjcK
LQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZSk6Ci0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXdSZWNlaXZlZFRp
dGxlRXZlbnQ6Ond4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCk6Ci0gICAgICAgICogV2ViVmll
dy5oOgotICAgICAgICAqIGJpbmRpbmdzL3B5dGhvbi93ZWJ2aWV3Lmk6Ci0KLTIwMDgtMDUtMjgg
IFJvYmluIER1bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBL
ZXZpbiBPbGxpdmllci4KLSAgICAgICAgCi0gICAgICAgIFRoaXMgcGF0Y2ggdHdlYWtzIHRoZSB3
eFdlYlZpZXcgY2xhc3MgdG8gbWFrZSBpdCBjb25mb3JtIHRvIG5vcm1hbCB3eCBwYXR0ZXJucwot
ICAgICAgICBmb3Igd2lkZ2V0IGNsYXNzZXMuICBJdCBhZGRzIGEgZGVmYXVsdCBjdG9yIGFuZCB0
aGUgQ3JlYXRlIG1ldGhvZCBzbyBpdCBjYW4gdXNlCi0gICAgICAgIHRoZSAyLXBoYXNlIGNyZWF0
ZSBwYXR0ZXJuLCBhZGRzIHd4UlRUSSBtYWNyb3Mgd2hpY2ggaXMgaW1wb3J0YW50IGZvciB3eFB5
dGhvbgotICAgICAgICBhbmQgWFJDLCBhbmQgZml4ZXMgdGhlIExvYWRVUkwgbWV0aG9kIHRvIHBh
c3MgYSB3eFN0cmluZyByZWZlcmVuY2UgdG8gc2F2ZSBhCi0gICAgICAgIGNvcHkuCi0gICAgICAg
IAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjgK
LQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3Ojp3eFdlYlZpZXcp
OgotICAgICAgICAod3hXZWJWaWV3OjpDcmVhdGUpOgotICAgICAgICAod3hXZWJWaWV3OjpMb2Fk
VVJMKToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0KLTIwMDgtMDUtMjcgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgd3ggYnVpbGQgZml4LiBBY2Np
ZGVudGx5IGxlZnQgYSBjb3VwbGUgZml4ZXMgb3V0IG9mIHRoZSBwcmV2aW91cyBjb21taXQuCi0K
LSAgICAgICAgKiBwcmVzZXRzL3d4d2Via2l0LmJrbDoKLQotMjAwOC0wNS0xNiAgS2V2aW4gT2xs
aXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KLSAgICAgICAgCi0gICAgICAgIFJlbmFtZSB3eFdlYkZyYW1lIC0+IHd4V2Vi
QnJvd3NlclNoZWxsIGluIHByZXBhcmF0aW9uIHRvIGludHJvZHVjZSBhIFdlYkZyYW1lCi0gICAg
ICAgIGNvdW50ZXJwYXJ0IGluIHd4IHBvcnQuIChGcmFtZSB0eXBpY2FsbHkgbWVhbnMgJ3RvcCBs
ZXZlbCB3aW5kb3cnIGluIHd4IHRlcm1zLikKLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0MQotCi0gICAgICAgICogV2ViQnJvd3Nl
clNoZWxsLmNwcDogQ29waWVkIGZyb20gV2ViS2l0L3d4L1dlYkZyYW1lLmNwcC4KLSAgICAgICAg
KHd4V2ViQnJvd3NlclNoZWxsOjp3eFdlYkJyb3dzZXJTaGVsbCk6Ci0gICAgICAgICh3eFdlYkJy
b3dzZXJTaGVsbDo6fnd4V2ViQnJvd3NlclNoZWxsKToKLSAgICAgICAgKHd4V2ViQnJvd3NlclNo
ZWxsOjpTaG93RGVidWdNZW51KToKLSAgICAgICAgKHd4V2ViQnJvd3NlclNoZWxsOjpPblF1aXQp
OgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ok9uQWJvdXQpOgotICAgICAgICAod3hXZWJC
cm93c2VyU2hlbGw6Ok9uTG9hZEZpbGUpOgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ok9u
TG9hZEV2ZW50KToKLSAgICAgICAgKHd4V2ViQnJvd3NlclNoZWxsOjpPbkJlZm9yZUxvYWQpOgot
ICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ok9uQWRkcmVzc0JhckVudGVyKToKLSAgICAgICAg
KHd4V2ViQnJvd3NlclNoZWxsOjpPblNlYXJjaEN0cmxFbnRlcik6Ci0gICAgICAgICh3eFdlYkJy
b3dzZXJTaGVsbDo6T25CYWNrKToKLSAgICAgICAgKHd4V2ViQnJvd3NlclNoZWxsOjpPbkZvcndh
cmQpOgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ok9uU3RvcCk6Ci0gICAgICAgICh3eFdl
YkJyb3dzZXJTaGVsbDo6T25SZWxvYWQpOgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ok9u
TWFrZVRleHRMYXJnZXIpOgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ok9uTWFrZVRleHRT
bWFsbGVyKToKLSAgICAgICAgKHd4V2ViQnJvd3NlclNoZWxsOjpPbkdldFNvdXJjZSk6Ci0gICAg
ICAgICh3eFdlYkJyb3dzZXJTaGVsbDo6T25TZXRTb3VyY2UpOgotICAgICAgICAod3hXZWJCcm93
c2VyU2hlbGw6Ok9uQnJvd3NlKToKLSAgICAgICAgKHd4V2ViQnJvd3NlclNoZWxsOjpPbkVkaXQp
OgotICAgICAgICAod3hXZWJCcm93c2VyU2hlbGw6Ok9uUnVuU2NyaXB0KToKLSAgICAgICAgKiBX
ZWJCcm93c2VyU2hlbGwuaDogQ29waWVkIGZyb20gV2ViS2l0L3d4L1dlYkZyYW1lLmguCi0gICAg
ICAgICogV2ViRnJhbWUuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIFdlYkZyYW1lLmg6IFJlbW92
ZWQuCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Y3JlYXRlV2luZG93KToKLSAgICAgICAgKiBiaW5k
aW5ncy9weXRob24vd2Vidmlldy5pOgotICAgICAgICAqIHd4d2Via2l0LmJrbDoKLQotMjAwOC0w
NS0yMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICB3eCBidWlsZCBmaXguIFVwZGF0ZSBjb2RlIGFmdGVyIHJlbW92YWwgb2YgRG9jdW1lbnQ6OnRv
U3RyaW5nKCkuCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6
R2V0UGFnZVNvdXJjZSk6Ci0KLTIwMDgtMDUtMTUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRo
ZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgd3ggYnVpbGQgZml4LiBBZGQgcmVuZGVyaW5nL3N0
eWxlIHRvIGluY2x1ZGVzIGRpci4KLQotICAgICAgICAqIHByZXNldHMvd3h3ZWJraXQuYmtsOgot
Ci0yMDA4LTA1LTExICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgot
Ci0gICAgICAgIFByZXZpb3VzIGNvbW1pdCBtYWRlIGJkYXNoIHNhZC4gUmVzdG9yZSBoYXBwaW5l
c3Mgc3RhdGUgYnkgZml4aW5nIG1pc3NlZCBzdHlsZSBpc3N1ZS4gCi0KLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6Ci0KLTIw
MDgtMDUtMTEgIFJvYmluIER1bm4gIDxyb2JpbkBhbGxkdW5uLmNvbT4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBLZXZpbiBPbGxpdmllci4KLSAgICAgICAgCi0gICAgICAgIEZpeCBzY3JvbGxpbmcg
aXNzdWVzIGJ5IGltcGxlbWVudGluZyB0cmFuc2l0aW9uVG9Db21taXR0ZWROZXdQYWdlKCkgc28g
dGhlIHNjcm9sbAotICAgICAgICBwb3NpdGlvbnMgYXJlIHJlc2V0IHdoZW4gYSBuZXcgcGFnZSBp
cyBsb2FkZWQsIGFuZCBhbHNvIG1haW50YWluZWQgc28gdGhhdCBiYWNrCi0gICAgICAgIGFuZCBu
ZXh0IHJlc3RvcmUgdGhlIHNjcm9sbCBwb3NpdGlvbnMgYXMgd2VsbC4gVGhpcyBhbHNvIHNpbXBs
aWZpZXMgdGhlIGxvZ2ljCi0gICAgICAgIGZvciBpbml0aWFsaXppbmcgYW5kIG1hbmFnaW5nIHd4
V2ViVmlldy4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODk5MgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFdl
YlZpZXcpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hE
aWRIYW5kbGVPbmxvYWRFdmVudHMpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRXeDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6Ci0gICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgot
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGaW5pc2hE
b2N1bWVudExvYWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6cG9z
dFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNyZWF0ZUZyYW1lKToKLSAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnRyYW5zaXRpb25Ub0NvbW1pdHRl
ZEZvck5ld1BhZ2UpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5oOgotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3Ojp3eFdlYlZp
ZXcpOgotICAgICAgICAod3hXZWJWaWV3Ojp+d3hXZWJWaWV3KToKLSAgICAgICAgKHd4V2ViVmll
dzo6R2V0UGFnZVNvdXJjZSk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldElubmVyVGV4dCk6Ci0g
ICAgICAgICh3eFdlYlZpZXc6OkdldEV4dGVybmFsUmVwcmVzZW50YXRpb24pOgotICAgICAgICAo
d3hXZWJWaWV3OjpPblBhaW50KToKLSAgICAgICAgKHd4V2ViVmlldzo6T25TaXplKToKLSAgICAg
ICAgKHd4V2ViVmlldzo6T25Nb3VzZUV2ZW50cyk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNhbkNv
cHkpOgotICAgICAgICAod3hXZWJWaWV3OjpDYW5DdXQpOgotICAgICAgICAod3hXZWJWaWV3OjpD
YW5QYXN0ZSk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9uS2V5RXZlbnRzKToKLSAgICAgICAgKiBX
ZWJWaWV3UHJpdmF0ZS5oOgotICAgICAgICAoV2ViVmlld1ByaXZhdGU6OldlYlZpZXdQcml2YXRl
KToKLQotMjAwOC0wNS0wNCAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4uY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgotICAgICAgICAKLSAgICAgICAgQWxsb3cg
ZXZlbnRzIHRvIHNwZWNpZnkgdGhlIElEIG9mIHRoZSBwYXJ0aWN1bGFyIHd4V2ViVmlldyB0aGV5
IGFyZSB0byBiZSBzZW50IHRvLgotICAgICAgICAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjU5Ci0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0g
ICAgICAgICh3eFdlYkZyYW1lOjp3eFdlYkZyYW1lKToKLSAgICAgICAgKiBXZWJWaWV3LmNwcDoK
LSAgICAgICAgKHd4V2ViVmlld0xvYWRFdmVudDo6d3hXZWJWaWV3TG9hZEV2ZW50KToKLSAgICAg
ICAgKHd4V2ViVmlld0JlZm9yZUxvYWRFdmVudDo6d3hXZWJWaWV3QmVmb3JlTG9hZEV2ZW50KToK
LSAgICAgICAgKHd4V2ViVmlld05ld1dpbmRvd0V2ZW50Ojp3eFdlYlZpZXdOZXdXaW5kb3dFdmVu
dCk6Ci0gICAgICAgICh3eFdlYlZpZXdSaWdodENsaWNrRXZlbnQ6Ond4V2ViVmlld1JpZ2h0Q2xp
Y2tFdmVudCk6Ci0gICAgICAgICh3eFdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50Ojp3eFdlYlZp
ZXdDb25zb2xlTWVzc2FnZUV2ZW50KToKLSAgICAgICAgKiBXZWJWaWV3Lmg6Ci0gICAgICAgICog
YmluZGluZ3MvcHl0aG9uL3dlYnZpZXcuaToKLQotMjAwOC0wNC0yNyAgUm9iaW4gRHVubiAgPHJv
YmluQGFsbGR1bm4uY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgot
ICAgICAgICAKLSAgICAgICAgQWRkIG1ldGhvZHMgdG8gY2hlY2sgaWYgdGhlcmUgaXMgYSBwcmV2
aW91cy9uZXh0IHBhZ2UgaW4gdGhlIGhpc3RvcnkuIEFsc28gc29tZQotICAgICAgICBjb2Rpbmcg
c3R5bGUgY2xlYW51cC4KLSAgICAgICAgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODc1NwotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAg
ICh3eFdlYlZpZXc6OkdvQmFjayk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdvRm9yd2FyZCk6Ci0g
ICAgICAgICh3eFdlYlZpZXc6OkNhbkdvQmFjayk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkNhbkdv
Rm9yd2FyZCk6Ci0gICAgICAgICogV2ViVmlldy5oOgotCi0yMDA4LTA0LTI0ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2FtLgot
Ci0gICAgICAgIENoYW5nZSBzb21lIFN0cmluZyBhcmd1bWVudHMgdG8gYmUgY29uc3QgcmVmZXJl
bmNlcyBpbnN0ZWFkLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6c2hvdWxkSW5zZXJ0VGV4dCk6
Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgotCi0yMDA4LTA0LTIz
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFscCBUb2tlci4KLSAgICAgICAgCi0gICAgICAgIFR5cG8gZml4IHRvIHJlc3Rv
cmUgdGV4dCBlbnRyeS4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3gu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmhhbmRsZUtleWJvYXJkRXZl
bnQpOgotCi0yMDA4LTA0LTE5ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMu
Y29tPgotCi0gICAgICAgIHd4IGJ1aWxkIGZpeC4gcmVuZGVyZXIoKSAtPiBjb250ZW50UmVuZGVy
ZXIoKQotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldEV4
dGVybmFsUmVwcmVzZW50YXRpb24pOgotICAgICAgICAod3hXZWJWaWV3OjpPblBhaW50KToKLQot
MjAwOC0wNC0xOCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQot
ICAgICAgICB3eCBidWlsZCBmaXguIFdlIG5lZWQgdG8gdXNlIEVOQUJMRV9ET01fU1RPUkFHRSBu
b3cuCi0KLSAgICAgICAgKiB3eHdrLXNldHRpbmdzLmJrbDoKLQotMjAwOC0wNC0wNSAgS2V2aW4g
T2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBSdWJiZXIgc3Rh
bXBlZCBieSBNYXJrIFJvd2UuCi0KLSAgICAgICAgRG9uJ3QgYXNzdW1lIHd4V2ViS2l0IHRvIGJl
IHBhcnQgb2YgdGhlIHd4IHBhY2thZ2UuIFRoaXMgYWxsb3dzCi0gICAgICAgIHVzIHRvIHJ1biBp
dCBmcm9tIGFueSBkaXJlY3Rvcnkgb24gdGhlIFBZVEhPTlBBVEggcmF0aGVyIHRoYW4KLSAgICAg
ICAgaGF2aW5nIHRvIGNvcHkgZmlsZXMgaW50byB0aGUgd3hQeXRob24gZGlyZWN0b3J5LgotCi0g
ICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dlYnZpZXcuaToKLQotMjAwOC0wMy0yNSAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4K
LQotICAgICAgICBSZW1vdmUgbmV3bHkgb2Jzb2xldGUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9k
cwotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAwOC0wMy0x
NiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3
eCBidWlsZCBmaXguIE1ha2Ugc3VyZSB3ZSBsaW5rIHBuZy9qcGVnIGxpYnJhcmllcyBiZWZvcmUK
LSAgICAgICAgd3ggbGlicmFyaWVzIHRvIGdldCB0aGUgcmlnaHQgc3ltYm9scy4KLQotICAgICAg
ICAqIHd4d2Via2l0LmJrbDoKLSAgICAgICAgKiB3eHdrLXNldHRpbmdzLmJrbDoKLQotMjAwOC0w
My0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICBSdWJiZXIgc3RhbXBlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBBZGQgc2V0LXdlYmtp
dC1jb25maWd1cmF0aW9uIHN1cHBvcnQgZm9yIHd4IHBvcnQsIGFuZCBjZW50cmFsaXplCi0gICAg
ICAgIGJ1aWxkIGRpciBsb2NhdGlvbiBzZXR0aW5nLgotCi0gICAgICAgIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkwCi0KLSAgICAgICAgKiBiaW5kaW5ncy9weXRo
b24vd3h3ZWJraXQtcHkuYmtsOgotICAgICAgICAqIHByZXNldHMvd3h3ZWJraXQuYmtsOgotICAg
ICAgICAqIHd4d2Via2l0LmJrbDoKLSAgICAgICAgKiB3eHdrLXNldHRpbmdzLmJrbDoKLQotMjAw
OC0wMy0xMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+Ci0KLSAgICAgICAgTWFrZSB0
aGUgem9vbSBmYWN0b3IgYSBmbG9hdCBhbmQgbm90IGEgcGVyY2VudC4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBhbnR0aQotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZp
ZXc6OkluY3JlYXNlVGV4dFNpemUpOgotICAgICAgICAod3hXZWJWaWV3OjpEZWNyZWFzZVRleHRT
aXplKToKLQotMjAwOC0wMy0wMyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJz
LmNvbT4KLQotICAgICAgICB3eCBidWlsZCBmaXggYWZ0ZXIgRnJhbWU6OnNldFpvb21GYWN0b3Ig
QVBJIGNoYW5nZS4KLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3
OjpJbmNyZWFzZVRleHRTaXplKToKLSAgICAgICAgKHd4V2ViVmlldzo6RGVjcmVhc2VUZXh0U2l6
ZSk6Ci0KLTIwMDgtMDItMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IFNhbS4KLQotICAgICAgICAtIHJlbW92ZSBzZXBhcmF0ZSBjbGllbnQg
Y2FsbHMgZm9yICJzdGFuZGFyZCIgYW5kICJyZWxvYWQnIGhpc3RvcnkKLQotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFd4Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToKLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKLQotMjAwOC0wMi0yMyAgS2V2aW4gT2xs
aXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KLQotICAgICAgICBNb3ZlIHRleHQgZHJhd2luZyBpbnRvIHd4Y29kZSwgYXMg
d2UgbmVlZCBwbGF0Zm9ybS1kZXBlbmRlbnQKLSAgICAgICAgQVBJcyBmb3IgZHJhd2luZyBub24t
a2VybmVkIHRleHQsIHdoaWNoIHd4IGRvZXNuJ3QgeWV0IGhhdmUuCi0gICAgICAgIChCdXQgaG9w
ZWZ1bGx5IHdpbGwsIG9uY2UgdGhlc2UgQVBJcyBhcmUgZmxlc2hlZCBvdXQgb24gYWxsIAotICAg
ICAgICBwbGF0Zm9ybXMhKQotCi0gICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3Mzk2Ci0KLSAgICAgICAgKiB3eHdlYmtpdC5ia2w6Ci0gICAgICAgIFdlIG5l
ZWQgdG8gZGlyZWN0bHkgbGluayBhZ2FpbnN0IEdESSsgb24gV2luZG93cyBzaW5jZSB3ZSBub3cK
LSAgICAgICAgZGlyZWN0bHkgY2FsbCBHREkrIEFQSXMuCi0KLTIwMDgtMDItMTQgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgICogV2ViVmlldy5jcHA6IFJlbW92ZWQg
dXNlIG9mIERlcHJlY2F0ZWRTdHJpbmcgdG8ga2VlcCB0aGlzIGNvbXBpbGluZy4KLQotMjAwOC0w
Mi0xMSAgS2V2aW4gT2xsaXZpZXIgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIEEgY291cGxlIHF1aWNrIHd4IGZp
eGVzLgotICAgICAgICAKLSAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczMjEKLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3
OjpPblBhaW50KToKLSAgICAgICAgTWFrZSBzdXJlIHd4R0NEQyBoYXMgaXRzIHBhaW50IG9yaWdp
biBzZXQgcHJvcGVybHkgYWZ0ZXIKLSAgICAgICAgdGhlIG1vdmUgdG8gd3hXaW5kb3cgZm9yIHNj
cm9sbGluZy4KLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24vd2Vidmlldy5pOgotICAgICAgICBV
cGRhdGUgdGhlIHd4UHl0aG9uIGJpbmRpbmdzIGFmdGVyIGV2ZW50IHJlbmFtZS4KLQotMjAwOC0w
Mi0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYy4KLQotICAgICAgICAtIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjU2Ci0gICAgICAgICAgZWxpbWluYXRlIGRlZmF1bHQgcmVmLiBjb3VudCBvZiAwIGlu
IFJlZkNvdW50ZWQgY2xhc3MKLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpGcmFt
ZUxvYWRlckNsaWVudFd4KToKLSAgICAgICAgU2V0IHRoZSBjb3VudCB0byAwIGV4cGxpY2l0bHkg
KG9uZSBzdHJheSBjbGllbnQgSSBtaXNzZWQgaW4gbXkgbGFzdCBwYXNzKS4KLQotMjAwOC0wMi0w
MyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBUeXBvIGZpeC4gRG9uJ3QgdXNlIHRo
ZSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgYWZ0ZXIgdGhlCi0gICAgICAgIHdob2xlIHBh
Z2UgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRXeDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgotCi0yMDA4LTAyLTAzICBLZXZp
biBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIEJ1aWxkIGZp
eCBmb3IgbGFzdCB3eCBjb21taXQgKGEgY291cGxlIHRoaW5ncyB3ZXJlIG5vdCBjb21taXR0ZWQp
LiAKLSAgICAgICAgQWxzbyBmaXggc29tZSBzdHlsZSBpc3N1ZXMuCi0KLSAgICAgICAgKiBXZWJW
aWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6d3hXZWJWaWV3KToKLSAgICAgICAgKHd4V2Vi
Vmlldzo6T25QYWludCk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9uU2l6ZSk6Ci0gICAgICAgICh3
eFdlYlZpZXc6OkNhbkNvcHkpOgotICAgICAgICAod3hXZWJWaWV3OjpDb3B5KToKLSAgICAgICAg
KHd4V2ViVmlldzo6Q2FuQ3V0KToKLSAgICAgICAgKHd4V2ViVmlldzo6Q3V0KToKLSAgICAgICAg
KHd4V2ViVmlldzo6Q2FuUGFzdGUpOgotICAgICAgICAod3hXZWJWaWV3OjpQYXN0ZSk6Ci0gICAg
ICAgICh3eFdlYlZpZXc6Ok9uS2V5RXZlbnRzKToKLSAgICAgICAgKHd4V2ViVmlldzo6T25TZXRG
b2N1cyk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9uS2lsbEZvY3VzKToKLSAgICAgICAgKHd4V2Vi
Vmlldzo6T25BY3RpdmF0ZSk6Ci0gICAgICAgICogV2ViVmlldy5oOgotCi0yMDA4LTAxLTMxICBL
ZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gUm9iZW4uCi0KLSAgICAgICAgT24gTVNXLCB0aGUgd3ggcG9ydCBpbnRlcm5h
bGx5IHVzZXMgY2FsbGJhY2tzIGZvciB3eFRpbWVyLCBzbyB0aGUKLSAgICAgICAgd3ggcG9ydCBz
dWZmZXJzIGZyb20gdGhlIHNhbWUgY3Jhc2ggcHJvYmxlbSB0aGF0IHdhcyBmaXhlZAotICAgICAg
ICBpbiByMjg1MDAgZm9yIHRoZSBXaW5kb3dzIHBvcnQuIEZvciBub3csIHVzZSB0aGUgU2hhcmVk
VGltZXJXaW4uY3BwCi0gICAgICAgIGltcGwuIGZvciB3eCB0b28gb24gTVNXLCB1bnRpbCBhIHZl
cnNpb24gb2Ygd3ggaXMgcmVsZWFzZWQgdGhhdAotICAgICAgICBmaXhlcyB0aGUgaXNzdWUgYnkg
cmV3b3JraW5nIHd4VGltZXIuCi0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4
V2ViVmlldzo6d3hXZWJWaWV3KToKLQotMjAwOC0wMS0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KLQotICAgICAg
ICAtIHVwZGF0ZWQgZm9yIGNoYW5nZXMgdG8gQ2hyb21lQ2xpZW50IGRhdGFiYXNlIGZ1bmN0aW9u
cwotCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6Ci0KLTIwMDgtMDEtMTYgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFVwZGF0ZWQgZm9yIFdlYkNvcmUg
bWV0aG9kIHJlbmFtZXMuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKLSAgICAgICAgKHd4V2ViVmlldzo6T25TZXRGb2N1cyk6Ci0g
ICAgICAgICh3eFdlYlZpZXc6Ok9uS2lsbEZvY3VzKToKLSAgICAgICAgKHd4V2ViVmlldzo6T25B
Y3RpdmF0ZSk6Ci0KLTIwMDgtMDEtMTIgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2
aWVycy5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAg
d3hXZWJLaXQgQVBJIGNoYW5nZXMgaW4gcHJlcGFyYXRpb24gZm9yIERSVCBpbXBsZW1lbnRhdGlv
bi4gCi0gICAgICAgIFNwZWNpZmljYWxseToKLQotICAgICAgICAtIEFkZCBDT05TT0xFX01FU1NB
R0UgY2FsbGJhY2sgc28gY2xpZW50cyBjYW4gY2hvb3NlIGhvdyB0byBoYW5kbGUKLSAgICAgICAg
Y29uc29sZSBtZXNzYWdlcy4KLSAgICAgICAgLSBBZGQgbW9yZSBsb2FkIGV2ZW50cywgYW5kIHJl
bmFtZSB3eFdlYlZpZXdTdGF0ZUNoYW5nZWRFdmVudCB0byAKLSAgICAgICAgd3hXZWJWaWV3TG9h
ZEV2ZW50IHRvIHJlZmxlY3QgdGhhdCBhbGwgJ3N0YXRlcycgYXJlIGxvYWQgc3RhdGVzLgotICAg
ICAgICAtIEFkZCB3eFdlYlZpZXcgaW1wbHMuIGZvciBHZXRJbm5lclRleHQoKSwgR2V0QXNNYXJr
dXAoKSBhbmQgCi0gICAgICAgIEdldEV4dGVybmFsUmVwcmVzZW50YXRpb24oKQotCi0gICAgICAg
ICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hXZWJGcmFtZTo6T25Mb2FkRXZlbnQpOgotICAg
ICAgICAqIFdlYkZyYW1lLmg6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Q2hyb21lQ2xpZW50V3gp
OgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmFkZE1lc3NhZ2VUb0NvbnNvbGUp
OgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLSAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNw
YXRjaERpZENvbW1pdExvYWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRX
eDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgotICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOgotICAg
ICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3TG9hZEV2ZW50Ojp3eFdlYlZp
ZXdMb2FkRXZlbnQpOgotICAgICAgICAod3hXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudDo6d3hX
ZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudCk6Ci0gICAgICAgICh3eFdlYlZpZXc6Ond4V2ViVmll
dyk6Ci0gICAgICAgICh3eFdlYlZpZXc6OkdldFBhZ2VTb3VyY2UpOgotICAgICAgICAod3hXZWJW
aWV3OjpHZXRJbm5lclRleHQpOgotICAgICAgICAod3hXZWJWaWV3OjpHZXRBc01hcmt1cCk6Ci0g
ICAgICAgICh3eFdlYlZpZXc6OkdldEV4dGVybmFsUmVwcmVzZW50YXRpb24pOgotICAgICAgICAq
IFdlYlZpZXcuaDoKLQotMjAwOC0wMS0xMiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xs
aXZpZXJzLmNvbT4KLQotICAgICAgICB3eCBidWlsZCBmaXguIEFkZCBXZWJDb3JlL2ljdS9pbmNs
dWRlIGRpciBmb3IgT1MgWCBib3hlcyB3aXRoCi0gICAgICAgIG9ubHkgc3RvY2sgSUNVIGluc3Rh
bGxlZC4KLQotICAgICAgICAqIGRlcGVuZGVuY2llcy5ia2w6Ci0KLTIwMDgtMDEtMTAgIE1hY2ll
aiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0u
Ci0KLSAgICAgICAgLSByZW1vdmUgU2VjdXJpdHlPcmlnaW5EYXRhIGFuZCBmb2xkIGl0cyBmdW5j
dGlvbmFsaXR5IGludG8gU2VjdXJpdHlPcmlnaW4KLQotICAgICAgICAqIFdlYktpdFN1cHBvcnQv
Q2hyb21lQ2xpZW50V3guY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJl
cXVlc3RRdW90YUluY3JlYXNlRm9yTmV3RGF0YWJhc2UpOgotICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50V3g6OnJlcXVlc3RRdW90YUluY3JlYXNlRm9yRGF0YWJhc2VPcGVyYXRpb24pOgot
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKLQotMjAwNy0xMi0xNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgLSB0cnkgdG8gZml4IHRo
ZSBidWlsZAotCi0gICAgICAgICogV2ViVmlldy5jcHA6Ci0gICAgICAgICh3eFdlYlZpZXc6Ok9u
S2V5RXZlbnRzKTogQWRkIGEgV2ViQ29yZSBwcmVmaXguCi0KLTIwMDctMTItMTYgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgotCi0gICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDYyCi0gICAgICAgIFJFR1JFU1NJT046IGFjY2VzcyBrZXlzIGJyb2tlbiBvbiBXaW5kb3dz
Ci0KLSAgICAgICAgKiBXZWJWaWV3LmNwcDogKHd4V2ViVmlldzo6T25LZXlFdmVudHMpOiBDYWxs
IGhhbmRsZUFjY2Vzc0tleSgpIGFzIGFwcHJvcHJpYXRlLgotCi0yMDA3LTEyLTE0ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkuCi0K
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudFd4OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogU3dpdGNoZWQgZnJv
bSBFZGl0b3I6OmV4ZWNDb21tYW5kCi0gICAgICAgIHRvIEVkaXRvcjo6Y29tbWFuZC4KLQotMjAw
Ny0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZwotCi0gICAgICAgIEFzIHBhcnQgb2YgZG9pbmcgc29tZSBDYWNo
ZWRQYWdlIGFuZCBjbGllbnQgY2xlYW51cCwga2VlcCBXeCBidWlsZGluZwotCi0gICAgICAgICog
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZFBhZ2UpOgotICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
RnJvbUNhY2hlZFBhZ2UpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6
dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6Ci0KLTIwMDctMTItMTIgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KLQotICAgICAgICBCdWlsZCBmaXguCi0KLSAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4
OjpjcmVhdGVXaW5kb3cpOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50V3g6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6Ci0gICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlm
aWNhdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRDaGFu
Z2VUaXRsZSk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgotCi0yMDA3LTEyLTA3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KLQotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUzNTYzNj4KLSAgICAgICAgSGF2
ZSB0byBwcmVzcyA0IHRpbWVzIGluc3RlYWQgb2YgMiB0aW1lcyB0byBnZXQgdGhlIGV4cGVjdGVk
IHJlc3VsdCBvZiBeXiB3aXRoIGdlcm1hbiBrZXlib2FyZC4KLQotICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkxNgotICAgICAgICBKYXZhU2NyaXB0IGRl
dGVjdHMgVGFiIGFzIGEgY2hhcmFjdGVyIGlucHV0IG9uIGEgdGV4dGZpZWxkIHZhbGlkYXRpb24K
LQotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bik6Ci0gICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6Ci0gICAg
ICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgotICAgICAgICBVcGRhdGVkIGZv
ciBjcm9zcy1wbGF0Zm9ybSBjaGFuZ2VzIGFzIG11Y2ggYXMgaXQgd2FzIHBvc3NpYmxlIHdpdGhv
dXQgYSB3eCBidWlsZCBlbnZpcm9ubWVudC4KLSAgICAgICAgVGhlIGtleWJvYXJkIGV2ZW50IG1v
ZGVsIG9mIHd4IGlzIHNpbWlsYXIgdG8gV2luZG93cyBvbmUsIHNvIGZ1cnRoZXIgZml4ZXMgY2Fu
IGJlIG1vZGVsZWQKLSAgICAgICAgYWZ0ZXIgdGhlIFdpbmRvd3MgcG9ydC4KLQotMjAwNy0xMi0w
NiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBG
aXggcGFnZSBsZWFrIGNhdXNlZCBiZWNhdXNlIHRoZSBGcmFtZSdzIHBhZ2UgcG9pbnRlciBpcyAw
IGJ5IHRoZSAKLSAgICAgICAgdGltZSB3ZSBjYWxsIGRlbGV0ZSBvbiBpdC4gU3RvcmUgYSByZWZl
cmVuY2UgdG8gdGhlIHBhZ2UgaW5zdGVhZAotICAgICAgICBhbmQgZGVsZXRlIGl0IHRoYXQgd2F5
LgotCi0gICAgICAgIEFsc28sIHNtYWxsIGZpeCB0byBjYWxsIFByZXBhcmVEQyhnY2RjKSB3aGVu
IHVzaW5nIHd4R0NEQyBiZWNhdXNlCi0gICAgICAgIG9uIExpbnV4IHRoZSB3eEdDREMgZ2NkYyhk
YykgY29uc3RydWN0b3Igd2lsbCBub3QgcmV0YWluIHRoZQotICAgICAgICBjaGFuZ2VzIG1hZGUg
dG8gZGMgYnkgUHJlcGFyZURDKGRjKS4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAod3hXZWJWaWV3Ojp3eFdlYlZp
ZXcpOgotICAgICAgICAod3hXZWJWaWV3Ojp+d3hXZWJWaWV3KToKLSAgICAgICAgKHd4V2ViVmll
dzo6T25QYWludCk6Ci0gICAgICAgICogV2ViVmlld1ByaXZhdGUuaDoKLSAgICAgICAgKFdlYlZp
ZXdQcml2YXRlOjpXZWJWaWV3UHJpdmF0ZSk6Ci0KLTIwMDctMTItMDYgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0KLSAgICAgICAgTGludXggYnVpbGQgZml4IC0g
ZW5zdXJlIHRoYXQgd2ViY29yZSBpcyBsaW5rZWQgYmVmb3JlIGpzY29yZQotICAgICAgICBzbyB0
aGF0IHRoZSBsaW5rZXIgd2lsbCBrbm93IHdoaWNoIHN5bWJvbHMgaXQgbmVlZHMgdG8gbGluayBp
bi4KLSAgICAgICAgQWxzbyBmaXggTVNWQyBwcm9qZWN0IGZpbGUgbmFtZSB0eXBvIGZvciBzYW1w
bGUgYXBwLgotCi0gICAgICAgICogQmFrZWZpbGVzLmJrZ2VuOgotICAgICAgICAqIHd4d2Via2l0
LmJrbDoKLQotMjAwNy0xMi0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gRGVja2VyLgotCi0gICAgICAgICogV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDogUmVtb3ZlZCBvYnNvbGV0ZSBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
OiBEaXR0by4KLQotMjAwNy0xMi0wMyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0g
ICAgICAgIHd4IGJ1aWxkIGZpeC4KLQotICAgICAgICAqIFdlYlZpZXcuY3BwOgotICAgICAgICAo
d3hXZWJWaWV3OjpSdW5TY3JpcHQpOgotCi0yMDA3LTExLTMwICBLZXZpbiBPbGxpdmllciAgPGtl
dmlub0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIHd4IGJ1aWxkIGZpeC4gQWRkIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3ggdG8gaW5jbHVkZXMuCi0KLSAgICAgICAgKiB3eHdlYmtp
dC5ia2w6Ci0KLTIwMDctMTEtMzAgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVy
cy5jb20+Ci0KLSAgICAgICAgRml4IG1ldGhvZCBzaWduYXR1cmVzIHRvIGJlIG1lbWJlcnMgb2Yg
Q2xpZW50Q2hyb21lV3ggY2xhc3MuCi0KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZXF1ZXN0UXVv
dGFJbmNyZWFzZUZvck5ld0RhdGFiYXNlKToKLSAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFd4OjpyZXF1ZXN0UXVvdGFJbmNyZWFzZUZvckRhdGFiYXNlT3BlcmF0aW9uKToKLQotMjAwNy0x
MS0zMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAg
ICBCdWlsZCBmaXguIEFkZCBwbGF0Zm9ybS90ZXh0IHRvIGluY2x1ZGVzIGZvciB0YXJnZXRzIHRo
YXQKLSAgICAgICAgbmVlZCBXZWJDb3JlIGhlYWRlcnMuCi0KLSAgICAgICAgKiBwcmVzZXRzL3d4
d2Via2l0LmJrbDoKLQotMjAwNy0xMS0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+Ci0KLSAgICAgICAgS2VlcCBpdCBidWlsZGluZyB3aXRoIG5ldyBjbGllbnQgbWV0aG9kCi0K
LSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6cmVxdWVzdFF1b3RhSW5jcmVhc2VGb3JOZXdEYXRhYmFzZSk6
Ci0gICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnJlcXVlc3RRdW90YUluY3JlYXNlRm9y
RGF0YWJhc2VPcGVyYXRpb24pOgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaDoKLQotMjAwNy0xMS0yNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJz
LmNvbT4KLQotICAgICAgICB3eCBidWlsZCBmaXguIERvbid0IGdldCB4c2x0LWNvbmZpZyBvcHRp
b25zIGF0IGJha2UgdGltZSwgZG8gaXQKLSAgICAgICAgYXQgbWFrZSB0aW1lLgotCi0gICAgICAg
ICogZGVwZW5kZW5jaWVzLmJrbDoKLQotMjAwNy0xMS0yMyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZp
bm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICB3eCBidWlsZCBmaXguIEluY2x1ZGUgY29u
ZmlnLmggaW4gV2ViRnJhbWUvV2ViVmlldyB0byBlbnN1cmUKLSAgICAgICAgV2ViQ29yZSBoZWFk
ZXJzIGFyZSBwcm9wZXJseSBjb25maWd1cmVkLCBmaXggdW5pY29kZS91dGY4LmggYW5kCi0gICAg
ICAgIGNvbmZpZy5oIGluY2x1ZGUgb3JkZXJpbmcgaXNzdWVzLCBjZW50cmFsaXplIHd4IHByb2pl
Y3Qgb3B0aW9ucyB0byAKLSAgICAgICAgZW5zdXJlIHByb3BlciBjb25maWd1cmF0aW9uLCBhbmQg
Zml4IHd4d2Via2l0LXB5dGhvbiB0YXJnZXQgc28gdGhhdAotICAgICAgICBpdCBsaW5rcyBhZ2Fp
bnN0IHd4IGxpYnMuCi0KLSAgICAgICAgKiBXZWJGcmFtZS5jcHA6Ci0gICAgICAgICogV2ViVmll
dy5jcHA6Ci0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3d4d2Via2l0LXB5LmJrbDoKLSAgICAg
ICAgKiBkZXBlbmRlbmNpZXMuYmtsOgotICAgICAgICAqIHByZXNldHMvd3h3ZWJraXQuYmtsOgot
ICAgICAgICAqIHd4d2Via2l0LmJrbDoKLSAgICAgICAgKiB3eHdrLXNldHRpbmdzLmJrbDoKLQot
MjAwNy0xMS0yMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQot
ICAgICAgICB3eCBidWlsZCBmaXggZm9yIFdpbmRvd3MuIERvbid0IHVzZSBXZWJDb3JlL21vdmUt
anMtaGVhZGVycy5zaCBhcwotICAgICAgICBpdCBpbmRpc2NyaW1pbmF0ZWx5IGNvcGllcyBhbnkg
aGVhZGVycyBpbnNpZGUgSmF2YVNjcmlwdENvcmUsCi0gICAgICAgIHdoaWNoIGluY2x1ZGVzIFRp
Z2VyIElDVSBoZWFkZXJzLiAKLQotICAgICAgICAqIHByZXNldHMvd3h3ZWJraXQuYmtsOgotICAg
ICAgICBSZW1vdmUgV2ViQ29yZS9pbmNsdWRlIHJlZmVyZW5jZSBhbmQgYWRkIEpTQ29yZSBoZWFk
ZXIgZGlycyBuZWVkZWQKLSAgICAgICAgaW5zdGVhZC4KLQotMjAwNy0xMS0xOSAgS2V2aW4gT2xs
aXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLQotICAgICAgICBBZGQgcGNyZSBkaXJl
Y3RvcnkgdG8gSlNDb3JlIGluY2x1ZGVzLCBhbmQgdXBkYXRlIHRoZSB3eCBwb3J0Ci0gICAgICAg
IHRvIHJlZmxlY3QgdGhlIFNoYXJlZCAtPiBSZWZDb3VudGVkIG5hbWUgY2hhbmdlLiBBbHNvLCBm
aXgKLSAgICAgICAgV2ViRnJhbWUuY3BwIHRvIHJlLWVuYWJsZSBjb2RlIHRoYXQgc2hvdWxkIG5l
dmVyIGhhdmUgYmVlbiAKLSAgICAgICAgY29tbWl0dGVkIGRpc2FibGVkLiAKLQotICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtLgotCi0gICAgICAgICogV2ViRnJhbWUuY3BwOgotICAgICAgICAod3hX
ZWJGcmFtZTo6d3hXZWJGcmFtZSk6Ci0gICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnJl
Zik6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkZXJlZik6Ci0gICAg
ICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6Ci0gICAgICAgICogcHJl
c2V0cy93eHdlYmtpdC5ia2w6Ci0KLTIwMDctMTEtMTcgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KLQotICAgICAg
ICBCdWcgMTM0NzA6IGkxOG46IFRoZSBXZWIgSW5zcGVjdG9yIGlzIG5vdCBsb2NhbGl6YWJsZQot
ICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ3MAotCi0g
ICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6bG9jYWxpemVkU3RyaW5nc1VSTCk6IEVtcHR5IHN0
dWIuCi0gICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oOiBBZGRlZCBs
b2NhbGl6ZWRTdHJpbmdzVVJMLgotCi0yMDA3LTExLTA4ICBLZXZpbiBPbGxpdmllciAgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgotCi0gICAgICAgIEluaXRpYWwgY29tbWl0IG9mIHd4IGltcGxl
bWVudGF0aW9uIG9mIFdlYktpdC4gVGhpcyBpbmNsdWRlcwotICAgICAgICB0aGUgd3hXZWJGcmFt
ZSBhbmQgd3hXZWJWaWV3IHd4IGZyb250IGVuZCBjbGFzc2VzLCB0aGUgCi0gICAgICAgIFdlYktp
dFN1cHBvcnQgZGlyZWN0b3J5IGNvbnRhaW5pbmcgaW1wbGVtZW50YXRpb25zIG9mIGludGVyZmFj
ZXMKLSAgICAgICAgdXNlZCBieSBXZWJDb3JlIHRvIHRhbGsgd2l0aCB0aGUgd3hXZWJLaXQgZnJv
bnQgZW5kLCBhbmQgdGhlIAotICAgICAgICBsYW5ndWFnZSBiaW5kaW5ncyBmb3Igd3hXZWJLaXQg
KGJpbmRpbmdzIGRpciksIGN1cnJlbnRseQotICAgICAgICBvbmx5IGNvbnRhaW5pbmcgYmluZGlu
Z3MgYW5kIGEgc2FtcGxlIGFwcCBmb3Igd3hQeXRob24uCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
TWFyayBSb3dlLgotCi0gICAgICAgICogQmFrZWZpbGVzLmJrZ2VuOiBBZGRlZC4KLSAgICAgICAg
KiBXZWJGcmFtZS5jcHA6IEFkZGVkLgotICAgICAgICAqIFdlYkZyYW1lLmg6IEFkZGVkLgotICAg
ICAgICAqIFdlYktpdFN1cHBvcnQ6IEFkZGVkLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guY3BwOiBBZGRlZC4KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4Lmg6IEFkZGVkLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRXeC5jcHA6IEFkZGVkLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRXeC5oOiBBZGRlZC4KLSAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0RyYWdDbGllbnRXeC5jcHA6
IEFkZGVkLgotICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHJhZ0NsaWVudFd4Lmg6IEFkZGVkLgot
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwOiBBZGRlZC4KLSAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6IEFkZGVkLgotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6IEFkZGVkLgotICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOiBBZGRlZC4KLSAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcDogQWRkZWQuCi0gICAgICAgICogV2ViS2l0
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oOiBBZGRlZC4KLSAgICAgICAgKiBXZWJWaWV3LmNw
cDogQWRkZWQuCi0gICAgICAgICogV2ViVmlldy5oOiBBZGRlZC4KLSAgICAgICAgKiBXZWJWaWV3
UHJpdmF0ZS5oOiBBZGRlZC4KLSAgICAgICAgKiBiaW5kaW5nczogQWRkZWQuCi0gICAgICAgICog
YmluZGluZ3MvcHl0aG9uOiBBZGRlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24vc2FtcGxl
czogQWRkZWQuCi0gICAgICAgICogYmluZGluZ3MvcHl0aG9uL3NhbXBsZXMvc2ltcGxlLnB5OiBB
ZGRlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9weXRob24vd2Vidmlldy5pOiBBZGRlZC4KLSAgICAg
ICAgKiBiaW5kaW5ncy9weXRob24vd3h3ZWJraXQtcHkuYmtsOiBBZGRlZC4KLSAgICAgICAgKiBk
ZXBlbmRlbmNpZXMuYmtsOiBBZGRlZC4KLSAgICAgICAgKiBwcmVzZXRzOiBBZGRlZC4KLSAgICAg
ICAgKiBwcmVzZXRzL3d4d2Via2l0LmJrbDogQWRkZWQuCi0gICAgICAgICogd3h3ZWJraXQuYmts
OiBBZGRlZC4KLSAgICAgICAgKiB3eHdrLXNldHRpbmdzLmJrbDogQWRkZWQuCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViQnJvd3NlclNoZWxsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d3gvV2ViQnJvd3NlclNoZWxsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFj
OTc0OTJlMzA1MzRlYzkzNDE4Yzk5ZjE2ZTU1MDQxMGMxN2JiYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkJyb3dzZXJT
aGVsbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBLZXZpbiBPbGxpdmllciAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICog
VGhpcyBjbGFzcyBwcm92aWRlcyBhIGRlZmF1bHQgbmV3IHdpbmRvdyBpbXBsZW1lbnRhdGlvbiBm
b3IgV2ViVmlldyBjbGllbnRzCi0gKiB3aG8gZG9uJ3Qgd2FudC9uZWVkIHRvIHJvbGwgdGhlaXIg
b3duIGJyb3dzZXIgZnJhbWUgVUkuCi0gKi8KLSAKLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgInd4L3d4cHJlYy5oIgotI2lmbmRlZiBXWF9QUkVDT01QCi0gICAgI2luY2x1ZGUgInd4
L3d4LmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgInd4L2FydHByb3YuaCIKLQotI2luY2x1ZGUgIldl
YkJyb3dzZXJTaGVsbC5oIgotI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViVmll
dy5oIgotI2luY2x1ZGUgIldlYlZpZXdQcml2YXRlLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1QYWdlU291cmNlVmlld0ZyYW1lOjpQYWdlU291cmNlVmlld0ZyYW1lKGNvbnN0IHd4U3RyaW5n
JiBzb3VyY2UpCi0gICAgICAgIDogd3hGcmFtZShOVUxMLCB3eElEX0FOWSwgXygiUGFnZSBTb3Vy
Y2UgVmlldyIpLCB3eERlZmF1bHRQb3NpdGlvbiwgd3hTaXplKDYwMCwgNTAwKSkKLXsKLSAgICB3
eFRleHRDdHJsKiBjb250cm9sID0gbmV3IHd4VGV4dEN0cmwodGhpcywgLTEsIHNvdXJjZSwgd3hE
ZWZhdWx0UG9zaXRpb24sIHd4RGVmYXVsdFNpemUsIHd4VEVfTVVMVElMSU5FKTsKLX0KLQotZW51
bSB7Ci0gICAgSURfTE9BREZJTEUgPSB3eElEX0hJR0hFU1QgKyAxLAotICAgIElEX1RFWFRDVFJM
ID0gd3hJRF9ISUdIRVNUICsgMiwKLSAgICBJRF9CQUNLID0gd3hJRF9ISUdIRVNUICsgMywKLSAg
ICBJRF9GT1JXQVJEID0gd3hJRF9ISUdIRVNUICsgNCwKLSAgICBJRF9UT0dHTEVfQkVGT1JFX0xP
QUQgPSB3eElEX0hJR0hFU1QgKyA1LAotICAgIElEX01BS0VfVEVYVF9MQVJHRVIgPSB3eElEX0hJ
R0hFU1QgKyA2LAotICAgIElEX01BS0VfVEVYVF9TTUFMTEVSID0gd3hJRF9ISUdIRVNUICsgNywK
LSAgICBJRF9TVE9QID0gd3hJRF9ISUdIRVNUICsgOCwKLSAgICBJRF9SRUxPQUQgPSB3eElEX0hJ
R0hFU1QgKyA5LAotICAgIElEX0dFVF9TT1VSQ0UgPSB3eElEX0hJR0hFU1QgKyAxMCwKLSAgICBJ
RF9TRVRfU09VUkNFID0gd3hJRF9ISUdIRVNUICsgMTEsCi0gICAgSURfU0VBUkNIQ1RSTCA9IHd4
SURfSElHSEVTVCArIDEyLAotICAgIElEX0xPQURVUkwgPSB3eElEX0hJR0hFU1QgKyAxMywKLSAg
ICBJRF9ORVdfV0lORE9XID0gd3hJRF9ISUdIRVNUICsgMTQsCi0gICAgSURfQlJPV1NFID0gd3hJ
RF9ISUdIRVNUICsgMTUsCi0gICAgSURfRURJVCA9IHd4SURfSElHSEVTVCArIDE2LAotICAgIElE
X1JVTl9TQ1JJUFQgPSB3eElEX0hJR0hFU1QgKyAxNywKLSAgICBJRF9XRUJWSUVXID0gd3hJRF9I
SUdIRVNUICsgMTgsCi0gICAgSURfRURJVF9DT01NQU5EID0gd3hJRF9ISUdIRVNUICsgMTksCi0g
ICAgSURfR0VUX0VESVRfQ09NTUFORF9TVEFURSA9IHd4SURfSElHSEVTVCArIDIwCi19OwotCi1C
RUdJTl9FVkVOVF9UQUJMRShXZWJCcm93c2VyU2hlbGwsIHd4RnJhbWUpCi0gICAgRVZUX01FTlUo
d3hJRF9DVVQsIFdlYkJyb3dzZXJTaGVsbDo6T25DdXQpCi0gICAgRVZUX01FTlUod3hJRF9DT1BZ
LCBXZWJCcm93c2VyU2hlbGw6Ok9uQ29weSkKLSAgICBFVlRfTUVOVSh3eElEX1BBU1RFLCBXZWJC
cm93c2VyU2hlbGw6Ok9uUGFzdGUpCi0gICAgRVZUX01FTlUod3hJRF9FWElULCAgV2ViQnJvd3Nl
clNoZWxsOjpPblF1aXQpCi0gICAgRVZUX01FTlUod3hJRF9BQk9VVCwgV2ViQnJvd3NlclNoZWxs
OjpPbkFib3V0KQotICAgIEVWVF9NRU5VKElEX0xPQURGSUxFLCBXZWJCcm93c2VyU2hlbGw6Ok9u
TG9hZEZpbGUpCi0gICAgRVZUX1RFWFRfRU5URVIoSURfVEVYVENUUkwsIFdlYkJyb3dzZXJTaGVs
bDo6T25BZGRyZXNzQmFyRW50ZXIpCi0gICAgRVZUX1RFWFRfRU5URVIoSURfU0VBUkNIQ1RSTCwg
V2ViQnJvd3NlclNoZWxsOjpPblNlYXJjaEN0cmxFbnRlcikKLSAgICBFVlRfV0VCVklFV19MT0FE
KElEX1dFQlZJRVcsIFdlYkJyb3dzZXJTaGVsbDo6T25Mb2FkRXZlbnQpCi0gICAgRVZUX1dFQlZJ
RVdfQkVGT1JFX0xPQUQoSURfV0VCVklFVywgV2ViQnJvd3NlclNoZWxsOjpPbkJlZm9yZUxvYWQp
Ci0gICAgRVZUX01FTlUoSURfQkFDSywgV2ViQnJvd3NlclNoZWxsOjpPbkJhY2spCi0gICAgRVZU
X01FTlUoSURfRk9SV0FSRCwgV2ViQnJvd3NlclNoZWxsOjpPbkZvcndhcmQpCi0gICAgRVZUX01F
TlUoSURfU1RPUCwgV2ViQnJvd3NlclNoZWxsOjpPblN0b3ApCi0gICAgRVZUX01FTlUoSURfUkVM
T0FELCBXZWJCcm93c2VyU2hlbGw6Ok9uUmVsb2FkKQotICAgIEVWVF9NRU5VKElEX01BS0VfVEVY
VF9MQVJHRVIsIFdlYkJyb3dzZXJTaGVsbDo6T25NYWtlVGV4dExhcmdlcikKLSAgICBFVlRfTUVO
VShJRF9NQUtFX1RFWFRfU01BTExFUiwgV2ViQnJvd3NlclNoZWxsOjpPbk1ha2VUZXh0U21hbGxl
cikKLSAgICBFVlRfTUVOVShJRF9HRVRfU09VUkNFLCBXZWJCcm93c2VyU2hlbGw6Ok9uR2V0U291
cmNlKQotICAgIEVWVF9NRU5VKElEX1NFVF9TT1VSQ0UsIFdlYkJyb3dzZXJTaGVsbDo6T25TZXRT
b3VyY2UpCi0gICAgRVZUX01FTlUoSURfQlJPV1NFLCBXZWJCcm93c2VyU2hlbGw6Ok9uQnJvd3Nl
KQotICAgIEVWVF9NRU5VKElEX0VESVQsIFdlYkJyb3dzZXJTaGVsbDo6T25FZGl0KQotICAgIEVW
VF9NRU5VKElEX1JVTl9TQ1JJUFQsIFdlYkJyb3dzZXJTaGVsbDo6T25SdW5TY3JpcHQpCi0gICAg
RVZUX01FTlUoSURfRURJVF9DT01NQU5ELCBXZWJCcm93c2VyU2hlbGw6Ok9uRWRpdENvbW1hbmQp
Ci0gICAgRVZUX01FTlUoSURfR0VUX0VESVRfQ09NTUFORF9TVEFURSwgV2ViQnJvd3NlclNoZWxs
OjpPbkdldEVkaXRDb21tYW5kU3RhdGUpCi0gICAgRVZUX01FTlUod3hJRF9QUklOVCwgV2ViQnJv
d3NlclNoZWxsOjpPblByaW50KQotRU5EX0VWRU5UX1RBQkxFKCkKLQotCi1XZWJCcm93c2VyU2hl
bGw6OldlYkJyb3dzZXJTaGVsbChjb25zdCB3eFN0cmluZyYgdGl0bGUsIGNvbnN0IHd4U3RyaW5n
JiB1cmwpIDogCi0gICAgICAgIHd4RnJhbWUoTlVMTCwgd3hJRF9BTlksIHRpdGxlLCB3eERlZmF1
bHRQb3NpdGlvbiwgd3hTaXplKDYwMCwgNTAwKSksCi0gICAgICAgIG1fY2hlY2tCZWZvcmVMb2Fk
KGZhbHNlKQotewotICAgIC8vIGNyZWF0ZSBhIG1lbnUgYmFyCi0gICAgd3hNZW51ICpmaWxlTWVu
dSA9IG5ldyB3eE1lbnU7Ci0gICAgZmlsZU1lbnUtPkFwcGVuZChJRF9ORVdfV0lORE9XLCBfVCgi
TmV3IFdpbmRvd1x0Q1RSTCtOIikpOwotICAgIGZpbGVNZW51LT5BcHBlbmQoSURfTE9BREZJTEUs
IF9UKCJPcGVuIEZpbGUuLi5cdENUUkwrTyIpKTsKLSAgICBmaWxlTWVudS0+QXBwZW5kKElEX0xP
QURVUkwsIF8oIk9wZW4gTG9jYXRpb24uLi5cdENUUkwrTCIpKTsKLSAgICBmaWxlTWVudS0+QXBw
ZW5kU2VwYXJhdG9yKCk7Ci0gICAgZmlsZU1lbnUtPkFwcGVuZCh3eElEX1BSSU5ULCBfKCJQcmlu
dC4uLiIpKTsKLSAgICBmaWxlTWVudS0+QXBwZW5kKHd4SURfRVhJVCwgX1QoIkUmeGl0XHRBbHQt
WCIpLCBfVCgiUXVpdCB0aGlzIHByb2dyYW0iKSk7Ci0gICAgCi0gICAgd3hNZW51ICplZGl0TWVu
dSA9IG5ldyB3eE1lbnU7Ci0gICAgZWRpdE1lbnUtPkFwcGVuZCh3eElEX0NVVCwgX1QoIkN1dFx0
Q1RSTCtYIikpOwotICAgIGVkaXRNZW51LT5BcHBlbmQod3hJRF9DT1BZLCBfVCgiQ29weVx0Q1RS
TCtDIikpOwotICAgIGVkaXRNZW51LT5BcHBlbmQod3hJRF9QQVNURSwgX1QoIlBhc3RlXHRDVFJM
K1YiKSk7Ci0KLSAgICB3eE1lbnUqIHZpZXdNZW51ID0gbmV3IHd4TWVudTsKLSAgICB2aWV3TWVu
dS0+QXBwZW5kUmFkaW9JdGVtKElEX0JST1dTRSwgXygiQnJvd3NlIikpOwotICAgIHZpZXdNZW51
LT5BcHBlbmRSYWRpb0l0ZW0oSURfRURJVCwgXygiRWRpdCIpKTsKLSAgICB2aWV3TWVudS0+QXBw
ZW5kU2VwYXJhdG9yKCk7Ci0gICAgdmlld01lbnUtPkFwcGVuZChJRF9TVE9QLCBfKCJTdG9wIikp
OwotICAgIHZpZXdNZW51LT5BcHBlbmQoSURfUkVMT0FELCBfKCJSZWxvYWQgUGFnZSIpKTsKLSAg
ICB2aWV3TWVudS0+QXBwZW5kKElEX01BS0VfVEVYVF9TTUFMTEVSLCBfKCJNYWtlIFRleHQgU21h
bGxlclx0Q1RSTCstIikpOwotICAgIHZpZXdNZW51LT5BcHBlbmQoSURfTUFLRV9URVhUX0xBUkdF
UiwgXygiTWFrZSBUZXh0IEJpZ2dlclx0Q1RSTCsrIikpOwotICAgIHZpZXdNZW51LT5BcHBlbmRT
ZXBhcmF0b3IoKTsKLSAgICB2aWV3TWVudS0+QXBwZW5kKElEX0dFVF9TT1VSQ0UsIF8oIlZpZXcg
UGFnZSBTb3VyY2UiKSk7Ci0gICAgdmlld01lbnUtPkFwcGVuZFNlcGFyYXRvcigpOwotICAgIAot
ICAgIG1fZGVidWdNZW51ID0gbmV3IHd4TWVudTsKLSAgICBtX2RlYnVnTWVudS0+U2V0VGl0bGUo
XygiJkRlYnVnIikpOwotICAgIG1fZGVidWdNZW51LT5BcHBlbmQoSURfU0VUX1NPVVJDRSwgXygi
VGVzdCBTZXRQYWdlU291cmNlIikpOwotICAgIG1fZGVidWdNZW51LT5BcHBlbmQoSURfUlVOX1ND
UklQVCwgXygiVGVzdCBSdW5TY3JpcHQiKSk7Ci0gICAgbV9kZWJ1Z01lbnUtPkFwcGVuZChJRF9F
RElUX0NPTU1BTkQsIF8oIlRlc3QgRWRpdENvbW1hbmQ6OkV4ZWN1dGUiKSk7Ci0gICAgbV9kZWJ1
Z01lbnUtPkFwcGVuZChJRF9HRVRfRURJVF9DT01NQU5EX1NUQVRFLCBfKCJUZXN0IEVkaXRDb21t
YW5kOjpHZXRTdGF0ZSIpKTsKLQotICAgIC8vIHRoZSAiQWJvdXQiIGl0ZW0gc2hvdWxkIGJlIGlu
IHRoZSBoZWxwIG1lbnUKLSAgICB3eE1lbnUgKmhlbHBNZW51ID0gbmV3IHd4TWVudTsKLSAgICBo
ZWxwTWVudS0+QXBwZW5kKHd4SURfQUJPVVQsIF9UKCImQWJvdXQuLi5cdEYxIiksIF9UKCJTaG93
IGFib3V0IGRpYWxvZyIpKTsKLQotICAgIC8vIG5vdyBhcHBlbmQgdGhlIGZyZXNobHkgY3JlYXRl
ZCBtZW51IHRvIHRoZSBtZW51IGJhci4uLgotICAgIHd4TWVudUJhciAqbWVudUJhciA9IG5ldyB3
eE1lbnVCYXIoKTsKLSAgICBtZW51QmFyLT5BcHBlbmQoZmlsZU1lbnUsIF9UKCImRmlsZSIpKTsK
LSAgICBtZW51QmFyLT5BcHBlbmQoZWRpdE1lbnUsIF9UKCImRWRpdCIpKTsKLSAgICBtZW51QmFy
LT5BcHBlbmQodmlld01lbnUsIF9UKCImVmlldyIpKTsKLSAgICBtZW51QmFyLT5BcHBlbmQoaGVs
cE1lbnUsIF9UKCImSGVscCIpKTsKLQotICAgIC8vIC4uLiBhbmQgYXR0YWNoIHRoaXMgbWVudSBi
YXIgdG8gdGhlIGZyYW1lCi0gICAgU2V0TWVudUJhcihtZW51QmFyKTsKLSAgICAKLSAgICB3eFRv
b2xCYXIqIHRvb2xiYXIgPSBDcmVhdGVUb29sQmFyKCk7Ci0gICAgdG9vbGJhci0+U2V0VG9vbEJp
dG1hcFNpemUod3hTaXplKDMyLCAzMikpOwotICAgIAotICAgIHd4Qml0bWFwIGJhY2sgPSB3eEFy
dFByb3ZpZGVyOjpHZXRCaXRtYXAod3hBUlRfR09fQkFDSywgd3hBUlRfVE9PTEJBUiwgd3hTaXpl
KDMyLDMyKSk7Ci0gICAgdG9vbGJhci0+QWRkVG9vbChJRF9CQUNLLCBiYWNrLCB3eFQoIkJhY2si
KSk7Ci0gICAgCi0gICAgd3hCaXRtYXAgZm9yd2FyZCA9IHd4QXJ0UHJvdmlkZXI6OkdldEJpdG1h
cCh3eEFSVF9HT19GT1JXQVJELCB3eEFSVF9UT09MQkFSLCB3eFNpemUoMzIsMzIpKTsKLSAgICB0
b29sYmFyLT5BZGRUb29sKElEX0ZPUldBUkQsIGZvcndhcmQsIHd4VCgiTmV4dCIpKTsKLQotICAg
IGFkZHJlc3NCYXIgPSBuZXcgd3hUZXh0Q3RybCh0b29sYmFyLCBJRF9URVhUQ1RSTCwgX1QoIiIp
LCB3eERlZmF1bHRQb3NpdGlvbiwgd3hTaXplKDQwMCwgLTEpLCB3eFRFX1BST0NFU1NfRU5URVIp
OwotICAgIHRvb2xiYXItPkFkZENvbnRyb2woYWRkcmVzc0Jhcik7Ci0gICAgCi0gICAgc2VhcmNo
Q3RybCA9IG5ldyB3eFNlYXJjaEN0cmwodG9vbGJhciwgSURfU0VBUkNIQ1RSTCwgXygiU2VhcmNo
IiksIHd4RGVmYXVsdFBvc2l0aW9uLCB3eFNpemUoMjAwLCAtMSksIHd4VEVfUFJPQ0VTU19FTlRF
Uik7Ci0gICAgdG9vbGJhci0+QWRkQ29udHJvbChzZWFyY2hDdHJsKTsKLSAgICB0b29sYmFyLT5S
ZWFsaXplKCk7Ci0gICAgCi0gICAgU2V0VG9vbEJhcih0b29sYmFyKTsKLQotICAgIC8vIENyZWF0
ZSB0aGUgV2ViVmlldyBXaW5kb3cKLSAgICB3ZWJ2aWV3ID0gbmV3IFdlYlZpZXcoKHd4V2luZG93
Kil0aGlzLCB1cmwsIElEX1dFQlZJRVcsIHd4RGVmYXVsdFBvc2l0aW9uLCB3eFNpemUoMjAwLCAy
MDApKTsKLSAgICB3ZWJ2aWV3LT5TZXRCYWNrZ3JvdW5kQ29sb3VyKCp3eFdISVRFKTsKLQotICAg
IC8vIGNyZWF0ZSBhIHN0YXR1cyBiYXIganVzdCBmb3IgZnVuIChieSBkZWZhdWx0IHdpdGggMSBw
YW5lIG9ubHkpCi0gICAgQ3JlYXRlU3RhdHVzQmFyKDIpOwotfQotCi1XZWJCcm93c2VyU2hlbGw6
On5XZWJCcm93c2VyU2hlbGwoKQotewotICAgIGlmIChtX2RlYnVnTWVudSAmJiBHZXRNZW51QmFy
KCktPkZpbmRNZW51KF8oIiZEZWJ1ZyIpKSA9PSB3eE5PVF9GT1VORCkKLSAgICAgICAgZGVsZXRl
IG1fZGVidWdNZW51OwotfQotCi12b2lkIFdlYkJyb3dzZXJTaGVsbDo6U2hvd0RlYnVnTWVudShi
b29sIHNob3cpCi17Ci0gICAgaW50IGRlYnVnTWVudSA9IEdldE1lbnVCYXIoKS0+RmluZE1lbnUo
XygiJkRlYnVnIikpOwotICAgIGlmIChzaG93ICYmIGRlYnVnTWVudSA9PSB3eE5PVF9GT1VORCkg
ewotICAgICAgICBpbnQgcHJldk1lbnUgPSBHZXRNZW51QmFyKCktPkZpbmRNZW51KF8oIiZWaWV3
IikpOwotICAgICAgICBpZiAocHJldk1lbnUgIT0gd3hOT1RfRk9VTkQpCi0gICAgICAgICAgICBH
ZXRNZW51QmFyKCktPkluc2VydCgoc2l6ZV90KXByZXZNZW51KzEsIG1fZGVidWdNZW51LCBfKCIm
RGVidWciKSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKCFzaG93ICYmIGRlYnVnTWVudSAhPSB3eE5P
VF9GT1VORCkgewotICAgICAgICBHZXRNZW51QmFyKCktPlJlbW92ZShkZWJ1Z01lbnUpOwotICAg
IH0KLX0KLQotLy8gZXZlbnQgaGFuZGxlcnMKLQotdm9pZCBXZWJCcm93c2VyU2hlbGw6Ok9uUXVp
dCh3eENvbW1hbmRFdmVudCYgV1hVTlVTRUQoZXZlbnQpKQotewotICAgIC8vIHRydWUgaXMgdG8g
Zm9yY2UgdGhlIGZyYW1lIHRvIGNsb3NlCi0gICAgQ2xvc2UodHJ1ZSk7Ci19Ci0KLXZvaWQgV2Vi
QnJvd3NlclNoZWxsOjpPbkFib3V0KHd4Q29tbWFuZEV2ZW50JiBXWFVOVVNFRChldmVudCkpCi17
Ci0gICAgd3hTdHJpbmcgbXNnOwotICAgIG1zZy5QcmludGYoX1QoIlRoaXMgaXMgdGhlIEFib3V0
IGRpYWxvZyBvZiB0aGUgV2ViS2l0IHNhbXBsZS5cbiIpCi0gICAgICAgICAgICAgICBfVCgiV2Vs
Y29tZSB0byAlcyIpLCB3eFZFUlNJT05fU1RSSU5HKTsKLQotICAgIHd4TWVzc2FnZUJveChtc2cs
IF9UKCJBYm91dCBXZWJLaXQgU2FtcGxlIiksIHd4T0sgfCB3eElDT05fSU5GT1JNQVRJT04sIHRo
aXMpOwotCi19Ci0KLXZvaWQgV2ViQnJvd3NlclNoZWxsOjpPbkxvYWRGaWxlKHd4Q29tbWFuZEV2
ZW50JiBXWFVOVVNFRChldmVudCkpCi17Ci0gICAgd3hGaWxlRGlhbG9nKiBkaWFsb2cgPSBuZXcg
d3hGaWxlRGlhbG9nKHRoaXMsIHd4VCgiQ2hvb3NlIGEgZmlsZSIpKTsKLSAgICBpZiAoZGlhbG9n
LT5TaG93TW9kYWwoKSA9PSB3eElEX09LKSB7ICAKLSAgICAgICAgd3hTdHJpbmcgcGF0aCA9IGRp
YWxvZy0+R2V0UGF0aCgpLlByZXBlbmQod3hUKCJmaWxlOi8vIikpOwotICAgICAgICAKLSAgICAg
ICAgaWYgKHdlYnZpZXcpCi0gICAgICAgICAgICB3ZWJ2aWV3LT5Mb2FkVVJMKHBhdGgpOwotICAg
IH0KLX0KLQotdm9pZCBXZWJCcm93c2VyU2hlbGw6Ok9uTG9hZEV2ZW50KFdlYlZpZXdMb2FkRXZl
bnQmIGV2ZW50KQotewotICAgIGlmIChHZXRTdGF0dXNCYXIoKSAhPSBOVUxMKXsKLSAgICAgICAg
aWYgKGV2ZW50LkdldFN0YXRlKCkgPT0gV0VCVklFV19MT0FEX05FR09USUFUSU5HKSB7Ci0gICAg
ICAgICAgICBHZXRTdGF0dXNCYXIoKS0+U2V0U3RhdHVzVGV4dChfKCJDb250YWN0aW5nICIpICsg
ZXZlbnQuR2V0VVJMKCkpOwotICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LkdldFN0YXRlKCkgPT0g
V0VCVklFV19MT0FEX1RSQU5TRkVSUklORykgewotICAgICAgICAgICAgR2V0U3RhdHVzQmFyKCkt
PlNldFN0YXR1c1RleHQoXygiTG9hZGluZyAiKSArIGV2ZW50LkdldFVSTCgpKTsKLSAgICAgICAg
ICAgIGlmIChldmVudC5HZXRGcmFtZSgpID09IHdlYnZpZXctPkdldE1haW5GcmFtZSgpKQotICAg
ICAgICAgICAgICAgIGFkZHJlc3NCYXItPlNldFZhbHVlKGV2ZW50LkdldFVSTCgpKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChldmVudC5HZXRTdGF0ZSgpID09IFdFQlZJRVdfTE9BRF9PTkxPQURfSEFO
RExFRCkgewotICAgICAgICAgICAgR2V0U3RhdHVzQmFyKCktPlNldFN0YXR1c1RleHQoXygiTG9h
ZCBjb21wbGV0ZS4iKSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuR2V0RnJhbWUoKSA9PSB3ZWJ2
aWV3LT5HZXRNYWluRnJhbWUoKSkKLSAgICAgICAgICAgICAgICBTZXRUaXRsZSh3ZWJ2aWV3LT5H
ZXRQYWdlVGl0bGUoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuR2V0U3RhdGUoKSA9PSBX
RUJWSUVXX0xPQURfRkFJTEVEKSB7Ci0gICAgICAgICAgICBHZXRTdGF0dXNCYXIoKS0+U2V0U3Rh
dHVzVGV4dChfKCJGYWlsZWQgdG8gbG9hZCAiKSArIGV2ZW50LkdldFVSTCgpKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotdm9pZCBXZWJCcm93c2VyU2hlbGw6Ok9uQmVmb3JlTG9hZChXZWJWaWV3
QmVmb3JlTG9hZEV2ZW50JiBteUV2ZW50KQotewotICAgIGlmIChtX2NoZWNrQmVmb3JlTG9hZCkg
ewotICAgICAgICBpbnQgcmVwbHkgPSB3eE1lc3NhZ2VCb3goXygiV291bGQgeW91IGxpa2UgdG8g
Y29udGludWUgbG9hZGluZyAiKSArIG15RXZlbnQuR2V0VVJMKCkgKyB3eFQoIj8iKSwgXygiQ29u
dGludWUgTG9hZGluZz8iKSwgd3hZRVNfTk8pOyAKLSAgICAgICAgaWYgKHJlcGx5ID09IHd4Tk8p
IHsKLSAgICAgICAgICAgIG15RXZlbnQuQ2FuY2VsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXZvaWQgV2ViQnJvd3NlclNoZWxsOjpPbkFkZHJlc3NCYXJFbnRlcih3eENvbW1hbmRFdmVudCYg
ZXZlbnQpCi17Ci0gICAgaWYgKHdlYnZpZXcpCi0gICAgICAgIHdlYnZpZXctPkxvYWRVUkwoYWRk
cmVzc0Jhci0+R2V0VmFsdWUoKSk7Ci19Ci0KLXZvaWQgV2ViQnJvd3NlclNoZWxsOjpPblNlYXJj
aEN0cmxFbnRlcih3eENvbW1hbmRFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKHdlYnZpZXcpIHsK
LSAgICAgICAgd2Vidmlldy0+TG9hZFVSTCh3eFN0cmluZzo6Rm9ybWF0KHd4VCgiaHR0cDovL3d3
dy5nb29nbGUuY29tL3NlYXJjaD9ybHM9ZW4mcT0lcyZpZT1VVEYtOCZvZT1VVEYtOCIpLCBzZWFy
Y2hDdHJsLT5HZXRWYWx1ZSgpLndjX3N0cigpKSk7Ci0gICAgfQotfQotCi12b2lkIFdlYkJyb3dz
ZXJTaGVsbDo6T25DdXQod3hDb21tYW5kRXZlbnQmIGV2ZW50KQotewotICAgIGlmICh3ZWJ2aWV3
ICYmIHdlYnZpZXctPkNhbkN1dCgpKQotICAgICAgICB3ZWJ2aWV3LT5DdXQoKTsKLX0KLQotdm9p
ZCBXZWJCcm93c2VyU2hlbGw6Ok9uQ29weSh3eENvbW1hbmRFdmVudCYgZXZlbnQpCi17Ci0gICAg
aWYgKHdlYnZpZXcgJiYgd2Vidmlldy0+Q2FuQ29weSgpKQotICAgICAgICB3ZWJ2aWV3LT5Db3B5
KCk7Ci19Ci0KLXZvaWQgV2ViQnJvd3NlclNoZWxsOjpPblBhc3RlKHd4Q29tbWFuZEV2ZW50JiBl
dmVudCkKLXsKLSAgICBpZiAod2VidmlldyAmJiB3ZWJ2aWV3LT5DYW5QYXN0ZSgpKQotICAgICAg
ICB3ZWJ2aWV3LT5QYXN0ZSgpOwotfQotCi12b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25CYWNrKHd4
Q29tbWFuZEV2ZW50JiBldmVudCkKLXsKLSAgICBpZiAod2VidmlldykKLSAgICAgICAgd2Vidmll
dy0+R29CYWNrKCk7Ci19Ci0KLXZvaWQgV2ViQnJvd3NlclNoZWxsOjpPbkZvcndhcmQod3hDb21t
YW5kRXZlbnQmIGV2ZW50KQotewotICAgIGlmICh3ZWJ2aWV3KQotICAgICAgICB3ZWJ2aWV3LT5H
b0ZvcndhcmQoKTsKLX0KLQotdm9pZCBXZWJCcm93c2VyU2hlbGw6Ok9uU3RvcCh3eENvbW1hbmRF
dmVudCYgbXlFdmVudCkKLXsKLSAgICBpZiAod2VidmlldykKLSAgICAgICAgd2Vidmlldy0+U3Rv
cCgpOwotfQotCi12b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25SZWxvYWQod3hDb21tYW5kRXZlbnQm
IG15RXZlbnQpCi17Ci0gICAgaWYgKHdlYnZpZXcpCi0gICAgICAgIHdlYnZpZXctPlJlbG9hZCgp
OwotfQotCi12b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25NYWtlVGV4dExhcmdlcih3eENvbW1hbmRF
dmVudCYgbXlFdmVudCkKLXsKLSAgICBpZiAod2VidmlldykgewotICAgICAgICBpZiAod2Vidmll
dy0+Q2FuSW5jcmVhc2VUZXh0U2l6ZSgpKQotICAgICAgICAgICAgd2Vidmlldy0+SW5jcmVhc2VU
ZXh0U2l6ZSgpOwotICAgIH0KLX0KLQotdm9pZCBXZWJCcm93c2VyU2hlbGw6Ok9uTWFrZVRleHRT
bWFsbGVyKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KQotewotICAgIGlmICh3ZWJ2aWV3KSB7Ci0g
ICAgICAgIGlmICh3ZWJ2aWV3LT5DYW5EZWNyZWFzZVRleHRTaXplKCkpCi0gICAgICAgICAgICB3
ZWJ2aWV3LT5EZWNyZWFzZVRleHRTaXplKCk7Ci0gICAgfQotfQotCi12b2lkIFdlYkJyb3dzZXJT
aGVsbDo6T25HZXRTb3VyY2Uod3hDb21tYW5kRXZlbnQmIG15RXZlbnQpCi17Ci0gICAgaWYgKHdl
YnZpZXcpIHsKLSAgICAgICAgUGFnZVNvdXJjZVZpZXdGcmFtZSogcGFnZVNvdXJjZUZyYW1lID0g
bmV3IFBhZ2VTb3VyY2VWaWV3RnJhbWUod2Vidmlldy0+R2V0UGFnZVNvdXJjZSgpKTsKLSAgICAg
ICAgcGFnZVNvdXJjZUZyYW1lLT5TaG93KCk7Ci0gICAgfQotfQotCi12b2lkIFdlYkJyb3dzZXJT
aGVsbDo6T25TZXRTb3VyY2Uod3hDb21tYW5kRXZlbnQmIGV2ZW50KQotewotICAgIGlmICh3ZWJ2
aWV3KQotICAgICAgICB3ZWJ2aWV3LT5TZXRQYWdlU291cmNlKHd4U3RyaW5nKHd4VCgiPHA+SGVs
bG8gV29ybGQhPC9wPiIpKSk7Ci19Ci0KLXZvaWQgV2ViQnJvd3NlclNoZWxsOjpPbkJyb3dzZSh3
eENvbW1hbmRFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKHdlYnZpZXcpCi0gICAgICAgIHdlYnZp
ZXctPk1ha2VFZGl0YWJsZSghZXZlbnQuSXNDaGVja2VkKCkpOwotfQotCi12b2lkIFdlYkJyb3dz
ZXJTaGVsbDo6T25FZGl0KHd4Q29tbWFuZEV2ZW50JiBldmVudCkKLXsKLSAgICBpZiAod2Vidmll
dykKLSAgICAgICAgd2Vidmlldy0+TWFrZUVkaXRhYmxlKGV2ZW50LklzQ2hlY2tlZCgpKTsKLX0K
LQotdm9pZCBXZWJCcm93c2VyU2hlbGw6Ok9uUnVuU2NyaXB0KHd4Q29tbWFuZEV2ZW50JiBteUV2
ZW50KQotewotICAgIGlmICh3ZWJ2aWV3KSB7Ci0gICAgICAgIHd4VGV4dEVudHJ5RGlhbG9nKiBk
aWFsb2cgPSBuZXcgd3hUZXh0RW50cnlEaWFsb2codGhpcywgXygiVHlwZSBpbiBhIEphdmFTY3Jp
cHQgdG8gZXhlY3R1dGUuIikpOwotICAgICAgICBpZiAoZGlhbG9nLT5TaG93TW9kYWwoKSA9PSB3
eElEX09LKQotICAgICAgICAgICAgd3hNZXNzYWdlQm94KHd4VCgiUmVzdWx0IGlzOiAiKSArIHdl
YnZpZXctPlJ1blNjcmlwdChkaWFsb2ctPkdldFZhbHVlKCkpKTsKLSAgICAKLSAgICAgICAgZGlh
bG9nLT5EZXN0cm95KCk7Ci0gICAgfQotfQotCi12b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25FZGl0
Q29tbWFuZCh3eENvbW1hbmRFdmVudCYgbXlFdmVudCkKLXsKLSAgICBpZiAod2Vidmlldykgewot
ICAgICAgICBpZiAoIXdlYnZpZXctPklzRWRpdGFibGUoKSkgewotICAgICAgICAgICAgd3hNZXNz
YWdlQm94KHd4VCgiUGxlYXNlIGVuYWJsZSBlZGl0aW5nIGJlZm9yZSBydW5uaW5nIGVkaXRpbmcg
Y29tbWFuZHMuIikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICB3eFRleHRFbnRyeURpYWxvZyogZGlhbG9nID0gbmV3IHd4VGV4dEVudHJ5RGlhbG9n
KHRoaXMsIF8oIlR5cGUgaW4gYSBlZGl0aW5nIGNvbW1hbmQgdG8gZXhlY3R1dGUuIikpOwotICAg
ICAgICBpZiAoZGlhbG9nLT5TaG93TW9kYWwoKSA9PSB3eElEX09LKSB7Ci0gICAgICAgICAgICBi
b29sIHJlc3VsdCA9IHdlYnZpZXctPkV4ZWN1dGVFZGl0Q29tbWFuZChkaWFsb2ctPkdldFZhbHVl
KCkpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICAgICAgd3hNZXNzYWdl
Qm94KHd4VCgiRWRpdGluZyBjb21tYW5kIGZhaWxlZC4iKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZGlhbG9nLT5EZXN0cm95KCk7Ci0gICAgfQotfQotCi12b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25H
ZXRFZGl0Q29tbWFuZFN0YXRlKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KQotewotICAgIGlmICh3
ZWJ2aWV3KSB7Ci0gICAgICAgIGlmICghd2Vidmlldy0+SXNFZGl0YWJsZSgpKSB7Ci0gICAgICAg
ICAgICB3eE1lc3NhZ2VCb3god3hUKCJQbGVhc2UgZW5hYmxlIGVkaXRpbmcgYmVmb3JlIHJ1bm5p
bmcgZWRpdGluZyBjb21tYW5kcy4iKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHd4VGV4dEVudHJ5RGlhbG9nKiBkaWFsb2cgPSBuZXcgd3hUZXh0
RW50cnlEaWFsb2codGhpcywgXygiVHlwZSBpbiBhIGVkaXRpbmcgY29tbWFuZCB3aG9zZSBzdGF0
ZSB5b3Ugd2FudCB0byBnZXQuIikpOwotICAgICAgICBpZiAoZGlhbG9nLT5TaG93TW9kYWwoKSA9
PSB3eElEX09LKSB7Ci0gICAgICAgICAgICBFZGl0U3RhdGUgcmVzdWx0ID0gd2Vidmlldy0+R2V0
RWRpdENvbW1hbmRTdGF0ZShkaWFsb2ctPkdldFZhbHVlKCkpOwotICAgICAgICAgICAgaWYgKHJl
c3VsdCA9PSBFZGl0U3RhdGVUcnVlKQotICAgICAgICAgICAgICAgIHd4TWVzc2FnZUJveCh3eFQo
IlN0YXRlIGlzIHRydWUuIikpOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0ID09IEVkaXRT
dGF0ZUZhbHNlKQotICAgICAgICAgICAgICAgIHd4TWVzc2FnZUJveCh3eFQoIlN0YXRlIGlzIGZh
bHNlLiIpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCA9PSBFZGl0U3RhdGVNaXhlZCkK
LSAgICAgICAgICAgICAgICB3eE1lc3NhZ2VCb3god3hUKCJTdGF0ZSBpcyBtaXhlZC4iKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZGlhbG9nLT5EZXN0cm95KCk7Ci0gICAgfQotfQotCi12b2lkIFdl
YkJyb3dzZXJTaGVsbDo6T25QcmludCh3eENvbW1hbmRFdmVudCYgbXlFdmVudCkKLXsKLSAgICBp
ZiAod2VidmlldyAmJiB3ZWJ2aWV3LT5HZXRNYWluRnJhbWUoKSkKLSAgICAgICAgd2Vidmlldy0+
R2V0TWFpbkZyYW1lKCktPlByaW50KCk7Ci19Ci0gICAgCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYkJyb3dzZXJTaGVsbC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJCcm93c2Vy
U2hlbGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEzMDQ0NmRhNjU4Y2ViNzZh
NGJiMDFiN2VkMDI2M2U4YzIzZmYwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkJyb3dzZXJTaGVsbC5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgS2V2aW4g
T2xsaXZpZXIgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotICoKLSAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLSAKLSNpZm5kZWYgV2ViQnJvd3NlclNoZWxsX2gKLSNkZWZpbmUgV2ViQnJv
d3NlclNoZWxsX2gKLQotI2luY2x1ZGUgInd4L3d4cHJlYy5oIgotI2lmbmRlZiBXWF9QUkVDT01Q
Ci0gICAgI2luY2x1ZGUgInd4L3d4LmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgIldlYktpdERlZmlu
ZXMuaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSA8d3gvc3JjaGN0cmwuaD4KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdYRExMSU1QRVhQX1dFQktJVCBXZWJCcm93c2Vy
U2hlbGwgOiBwdWJsaWMgd3hGcmFtZQotewotcHVibGljOgotICAgIC8vIGN0b3IocykKLSNpZiBT
V0lHCi0gICAgJXB5dGhvbkFwcGVuZCBXZWJCcm93c2VyU2hlbGwgInNlbGYuX3NldE9PUkluZm8o
c2VsZikiCi0jZW5kaWYKLSAgICBXZWJCcm93c2VyU2hlbGwoY29uc3Qgd3hTdHJpbmcmIHRpdGxl
LCBjb25zdCB3eFN0cmluZyYgdXJsID0gImFib3V0OmJsYW5rIik7Ci0KLSNpZm5kZWYgU1dJRwot
ICAgIH5XZWJCcm93c2VyU2hlbGwoKTsKLSNlbmRpZgotCi0gICAgdm9pZCBTaG93RGVidWdNZW51
KGJvb2wgc2hvdyA9IHRydWUpOwotICAgIFdlYlZpZXcqIHdlYnZpZXc7Ci0KLXByb3RlY3RlZDoK
LQotICAgIC8vIGV2ZW50IGhhbmRsZXJzICh0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIF9ub3RfIGJl
IHZpcnR1YWwpCi0gICAgdm9pZCBPbkN1dCh3eENvbW1hbmRFdmVudCYpOwotICAgIHZvaWQgT25D
b3B5KHd4Q29tbWFuZEV2ZW50Jik7Ci0gICAgdm9pZCBPblBhc3RlKHd4Q29tbWFuZEV2ZW50Jik7
Ci0gICAgdm9pZCBPblF1aXQod3hDb21tYW5kRXZlbnQmKTsKLSAgICB2b2lkIE9uQWJvdXQod3hD
b21tYW5kRXZlbnQmKTsKLSAgICB2b2lkIE9uTG9hZEZpbGUod3hDb21tYW5kRXZlbnQmKTsKLSAg
ICB2b2lkIE9uQWRkcmVzc0JhckVudGVyKHd4Q29tbWFuZEV2ZW50Jik7Ci0gICAgdm9pZCBPblNl
YXJjaEN0cmxFbnRlcih3eENvbW1hbmRFdmVudCYpOwotICAgIHZvaWQgT25Mb2FkRXZlbnQoV2Vi
Vmlld0xvYWRFdmVudCYgZXZlbnQpOwotICAgIHZvaWQgT25CZWZvcmVMb2FkKFdlYlZpZXdCZWZv
cmVMb2FkRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uQmFjayh3eENvbW1hbmRFdmVudCYpOwot
ICAgIHZvaWQgT25Gb3J3YXJkKHd4Q29tbWFuZEV2ZW50Jik7Ci0gICAgdm9pZCBPblN0b3Aod3hD
b21tYW5kRXZlbnQmKTsKLSAgICB2b2lkIE9uUmVsb2FkKHd4Q29tbWFuZEV2ZW50Jik7Ci0gICAg
dm9pZCBPbkJyb3dzZSh3eENvbW1hbmRFdmVudCYpOwotICAgIHZvaWQgT25FZGl0KHd4Q29tbWFu
ZEV2ZW50Jik7Ci0gICAgdm9pZCBPblByaW50KHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KTsKLSAg
ICAKLSAgICB2b2lkIE9uTWFrZVRleHRMYXJnZXIod3hDb21tYW5kRXZlbnQmKTsKLSAgICB2b2lk
IE9uTWFrZVRleHRTbWFsbGVyKHd4Q29tbWFuZEV2ZW50Jik7Ci0gICAgdm9pZCBPbkdldFNvdXJj
ZSh3eENvbW1hbmRFdmVudCYpOwotICAgIAotICAgIC8vIGRlYnVnIG1lbnUgaXRlbXMKLSAgICB2
b2lkIE9uU2V0U291cmNlKHd4Q29tbWFuZEV2ZW50Jik7Ci0gICAgdm9pZCBPblJ1blNjcmlwdCh3
eENvbW1hbmRFdmVudCYpOwotICAgIHZvaWQgT25FZGl0Q29tbWFuZCh3eENvbW1hbmRFdmVudCYp
OwotICAgIHZvaWQgT25HZXRFZGl0Q29tbWFuZFN0YXRlKHd4Q29tbWFuZEV2ZW50Jik7Ci0KLXBy
aXZhdGU6Ci0gICAgd3hUZXh0Q3RybCogYWRkcmVzc0JhcjsKLSAgICB3eFNlYXJjaEN0cmwqIHNl
YXJjaEN0cmw7Ci0KLSAgICBib29sIG1fY2hlY2tCZWZvcmVMb2FkOwotICAgIHd4TWVudSogbV9k
ZWJ1Z01lbnU7Ci0gICAgLy8gYW55IGNsYXNzIHdpc2hpbmcgdG8gcHJvY2VzcyB3eFdpbmRvd3Mg
ZXZlbnRzIG11c3QgdXNlIHRoaXMgbWFjcm8KLSNpZm5kZWYgU1dJRwotICAgIERFQ0xBUkVfRVZF
TlRfVEFCTEUoKQotI2VuZGlmCi19OwotCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgUGFnZVNv
dXJjZVZpZXdGcmFtZSA6IHB1YmxpYyB3eEZyYW1lCi17Ci1wdWJsaWM6Ci0gICAgUGFnZVNvdXJj
ZVZpZXdGcmFtZShjb25zdCB3eFN0cmluZyYgc291cmNlKTsKLX07Ci0KLX0KLQotI2VuZGlmIC8v
IGlmbmRlZiBXZWJCcm93c2VyU2hlbGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9X
ZWJET01TZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC93eC9XZWJET01TZWxlY3Rpb24uY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjFhZjA4M2U2ZWJjMjE3YjM3ZjE3OGNk
NmZhZjJiM2Q5ODVkYzUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViRE9NU2VsZWN0aW9uLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggS2V2aW4gT2xsaXZp
ZXIgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLSAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJET01TZWxlY3Rpb24u
aCIKLQotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgot
I2luY2x1ZGUgIldlYkRPTUVsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJET01SYW5nZS5oIgotCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaW5jbHVkZSAid3gvd3hwcmVjLmgiCi0jaWZuZGVm
IFdYX1BSRUNPTVAKLSAgICAjaW5jbHVkZSAid3gvd3guaCIKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotSU1QTEVNRU5UX0RZTkFNSUNfQ0xBU1MoV2ViS2l0U2VsZWN0aW9uLCB3eE9i
amVjdCkKLQotV2ViS2l0U2VsZWN0aW9uOjpXZWJLaXRTZWxlY3Rpb24oY29uc3QgV2ViS2l0U2Vs
ZWN0aW9uJiBvdGhlcikKLXsKLSAgICBtX3NlbGVjdGlvbiA9IG90aGVyLm1fc2VsZWN0aW9uOwot
fQotCi1XZWJET01FbGVtZW50KiBXZWJLaXRTZWxlY3Rpb246OkdldFJvb3RFZGl0YWJsZUVsZW1l
bnQoKSBjb25zdAotewotICAgIGlmIChtX3NlbGVjdGlvbikKLSAgICAgICAgcmV0dXJuIG5ldyBX
ZWJET01FbGVtZW50KG1fc2VsZWN0aW9uLT5yb290RWRpdGFibGVFbGVtZW50KCkpOwotICAgICAg
ICAKLSAgICByZXR1cm4gMDsKLX0KLQotV2ViRE9NUmFuZ2UqIFdlYktpdFNlbGVjdGlvbjo6R2V0
QXNSYW5nZSgpCi17Ci0gICAgaWYgKG1fc2VsZWN0aW9uKSB7Ci0gICAgICAgIFdURjo6UmVmUHRy
PFdlYkNvcmU6OlJhbmdlPiByYW5nZSA9IG1fc2VsZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgp
OwotICAgICAgICAvLyBrZWVwIGl0IGFsaXZlIHVudGlsIGl0IHJlYWNoZXMgV2ViS2l0RE9NUmFu
Z2UsIHdoaWNoIHRha2VzIG93bmVyc2hpcAotICAgICAgICAKLSAgICAgICAgaWYgKHJhbmdlKSB7
Ci0gICAgICAgICAgICByYW5nZS0+cmVmKCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkRP
TVJhbmdlKHJhbmdlLmdldCgpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAgICAgCi0gICAgcmV0
dXJuIDA7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViRE9NU2VsZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYkRPTVNlbGVjdGlvbi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNDZhZDY4ZWM5ZjdkYjljYmI1ODdjMjMwNzAzNjU3N2IxZWU1ODNk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViRE9NU2VsZWN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEtldmluIE9sbGl2aWVyIDxrZXZpbm9AdGhlb2xs
aXZpZXJzLmNvbT4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaWZuZGVm
IFdlYkRPTVNlbGVjdGlvbl9oCi0jZGVmaW5lIFdlYkRPTVNlbGVjdGlvbl9oCi0KLSNpbmNsdWRl
ICJ3eC93eHByZWMuaCIKLSNpZm5kZWYgV1hfUFJFQ09NUAotICAgICNpbmNsdWRlICJ3eC93eC5o
IgotI2VuZGlmCi0KLSNpbmNsdWRlICJXZWJLaXREZWZpbmVzLmgiCi0KLWNsYXNzIFdlYkRPTUVs
ZW1lbnQ7Ci1jbGFzcyBXZWJET01SYW5nZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBGcmFtZVNlbGVjdGlvbjsKLQotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV1hE
TExJTVBFWFBfV0VCS0lUIFdlYktpdFNlbGVjdGlvbiA6IHB1YmxpYyB3eE9iamVjdCB7Ci0jaWZu
ZGVmIFNXSUcKLURFQ0xBUkVfRFlOQU1JQ19DTEFTUyhXZWJLaXRET01TZWxlY3Rpb24pCi0jZW5k
aWYKLQotcHVibGljOgotICAgIFdlYktpdFNlbGVjdGlvbigpIHsgfQotICAgIFdlYktpdFNlbGVj
dGlvbihXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uKQotICAgICAgICA6IG1fc2Vs
ZWN0aW9uKHNlbGVjdGlvbikgCi0gICAgICAgIHsgfQotICAgICAgICAKLSAgICBXZWJLaXRTZWxl
Y3Rpb24oY29uc3QgV2ViS2l0U2VsZWN0aW9uJik7Ci0gICAgfldlYktpdFNlbGVjdGlvbigpIHsg
bV9zZWxlY3Rpb24gPSAwOyB9Ci0KLSAgICBXZWJET01FbGVtZW50KiBHZXRSb290RWRpdGFibGVF
bGVtZW50KCkgY29uc3Q7Ci0gICAgV2ViRE9NUmFuZ2UqIEdldEFzUmFuZ2UoKTsKLQotcHJpdmF0
ZToKLSAgICBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiogbV9zZWxlY3Rpb247Ci0KLX07Ci0KLX0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkVkaXQuY3BwIGIvU291
cmNlL1dlYktpdC93eC9XZWJFZGl0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjQ2MjU4MjdiMDMxOTAwZTRmMWMwNTZkYTA2ODAzNDgwY2NlMDBiYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkVkaXQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJFZGl0LmgiCi0KLSNpbmNsdWRlICJDb21wb3NpdGVFZGl0Q29tbWFu
ZC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0KLSNpbmNsdWRlICJX
ZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYkRPTUVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViQ29yZUVkaXRDb21tYW5kOiBwdWJsaWMgQ29t
cG9zaXRlRWRpdENvbW1hbmQKLXsKLXB1YmxpYzoKLSAgICBXZWJDb3JlRWRpdENvbW1hbmQoV2Vi
Q29yZTo6RG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5k
KGRvY3VtZW50KQotICAgICAgICB7IH0KLSAgICAgICAgCi0gICAgdm9pZCBzZXRFbGVtZW50QXR0
cmlidXRlKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSAKLSAgICB7IAotICAgICAgICBz
ZXROb2RlQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSwgdmFsdWUpOyAKLSAgICB9Ci0gICAg
Ly8gY29tcG9zaXRlIGNvbW1hbmRzIGFyZSBhcHBsaWVkIGFzIHRoZXkgYXJlIGFkZGVkLCBzbyB3
ZSBkb24ndAotICAgIC8vIG5lZWQgZG9BcHBseSB0byBkbyBhbnl0aGluZy4KLSAgICB2aXJ0dWFs
IHZvaWQgZG9BcHBseSgpIHt9Ci19OwotCi19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBXZWJDb3JlRWRpdENvbW1hbmRQcml2YXRlIHsKLXB1YmxpYzoKLSAgICBXZWJDb3JlRWRpdENv
bW1hbmRQcml2YXRlKCkKLSAgICAgICAgOiBtX3B0cigwKQotICAgIHsgfQotICAgIAotICAgIFdl
YkNvcmVFZGl0Q29tbWFuZFByaXZhdGUoV2ViQ29yZTo6V2ViQ29yZUVkaXRDb21tYW5kKiBwdHIp
Ci0gICAgICAgIDogbV9wdHIoYWRvcHRSZWYocHRyKSkKLSAgICB7IH0KLSAgICAKLSAgICB+V2Vi
Q29yZUVkaXRDb21tYW5kUHJpdmF0ZSgpIHsgfQotICAgIAotICAgIFdlYkNvcmU6OldlYkNvcmVF
ZGl0Q29tbWFuZCogY29tbWFuZCgpIHsgcmV0dXJuIG1fcHRyLmdldCgpOyB9Ci0gICAgICAgIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpXZWJDb3JlRWRpdENvbW1hbmQ+IG1fcHRyOwotfTsKLQotV2Vi
RWRpdENvbW1hbmQ6OldlYkVkaXRDb21tYW5kKFdlYkZyYW1lKiB3ZWJmcmFtZSkKLXsKLSAgICBp
ZiAod2ViZnJhbWUpIHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gd2ViZnJhbWUt
PkdldEZyYW1lKCk7Ci0gICAgICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSkKLSAg
ICAgICAgICAgIG1faW1wbCA9IG5ldyBXZWJDb3JlRWRpdENvbW1hbmRQcml2YXRlKG5ldyBXZWJD
b3JlOjpXZWJDb3JlRWRpdENvbW1hbmQoZnJhbWUtPmRvY3VtZW50KCkpKTsKLSAgICB9Ci19Ci0K
LVdlYkVkaXRDb21tYW5kOjp+V2ViRWRpdENvbW1hbmQoKQotewotICAgIC8vIHRoZSBpbXBsLiBp
cyByZWYtY291bnRlZCwgc28gZG9uJ3QgZGVsZXRlIGl0IGFzIGl0IG1heSBiZSBpbiBhbiB1bmRv
L3JlZG8gc3RhY2sKLSAgICBkZWxldGUgbV9pbXBsOwotICAgIG1faW1wbCA9IDA7Ci19Ci0KLXZv
aWQgV2ViRWRpdENvbW1hbmQ6OlNldE5vZGVBdHRyaWJ1dGUoV2ViRE9NRWxlbWVudCogZWxlbWVu
dCwgY29uc3Qgd3hTdHJpbmcmIG5hbWUsIGNvbnN0IHd4U3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBp
ZiAobV9pbXBsICYmIG1faW1wbC0+Y29tbWFuZCgpKQotICAgICAgICBtX2ltcGwtPmNvbW1hbmQo
KS0+c2V0RWxlbWVudEF0dHJpYnV0ZShlbGVtZW50LT5pbXBsKCksIFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWUoV1RGOjpudWxsQXRvbSwgV1RGOjpTdHJpbmcobmFtZSksIFdURjo6bnVsbEF0b20pLCBX
VEY6OlN0cmluZyh2YWx1ZSkpOwotfQotCi12b2lkIFdlYkVkaXRDb21tYW5kOjpBcHBseSgpCi17
Ci0gICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmNvbW1hbmQoKSkKLSAgICAgICAgbV9pbXBsLT5j
b21tYW5kKCktPmFwcGx5KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gv
V2ViRWRpdC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJFZGl0LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDc2ZjFhYTI0MWZhYWJhOWEzNDE4NWYwMGQ1MDBiYTYwMmU3OTVlMjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC93eC9XZWJFZGl0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEtldmluIE9sbGl2aWVyIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4K
LSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaWZuZGVmIFdYV0VCRURJVF9I
Ci0jZGVmaW5lIFdYV0VCRURJVF9ICi0KLSNpbmNsdWRlICJ3eC93eHByZWMuaCIKLSNpZm5kZWYg
V1hfUFJFQ09NUAotICAgICNpbmNsdWRlICJ3eC93eC5oIgotI2VuZGlmCi0KLSNpbmNsdWRlICJX
ZWJLaXREZWZpbmVzLmgiCi0KLWNsYXNzIFdlYkRPTUVsZW1lbnQ7Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKLSAgICBjbGFzcyBXZWJDb3Jl
RWRpdENvbW1hbmQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJDb3JlRWRp
dENvbW1hbmRQcml2YXRlOwotY2xhc3MgV2ViRnJhbWU7Ci0KLWNsYXNzIFdYRExMSU1QRVhQX1dF
QktJVCBXZWJFZGl0Q29tbWFuZAotewotICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDb21wb3Np
dGVFZGl0Q29tbWFuZDsKLSAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6V2ViQ29yZUVkaXRDb21t
YW5kOwotCi1wdWJsaWM6Ci0gICAgV2ViRWRpdENvbW1hbmQoV2ViRnJhbWUqKTsKLSAgICB+V2Vi
RWRpdENvbW1hbmQoKTsKLSAgICAKLSAgICB2b2lkIFNldE5vZGVBdHRyaWJ1dGUoV2ViRE9NRWxl
bWVudCosIGNvbnN0IHd4U3RyaW5nJiwgY29uc3Qgd3hTdHJpbmcmKTsKLSAgICB2b2lkIEFwcGx5
KCk7Ci0gICAgCi1wcml2YXRlOgotICAgIFdlYkNvcmVFZGl0Q29tbWFuZFByaXZhdGUqIG1faW1w
bDsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1NzRiZDBmNTFiZTkyYmI3Y2M0ZDNlYzY5YzhjNDY1NmZjNWNmMzZiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvd3gvV2ViRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzI3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgS2V2aW4gT2xsaXZpZXIgIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiRWRpdG9yLmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkV2ZW50
SGFuZGxlci5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkZvcm1TdGF0ZS5o
IgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgotI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRXeC5oIgot
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJIb3N0V2luZG93LmgiCi0jaW5jbHVk
ZSAiSFRNTEZvcm1FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAibWFya3VwLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlByaW50
Q29udGV4dC5oIgotI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKLSNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiU3Vic3RpdHV0
ZURhdGEuaCIKLSNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLQotI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2luY2x1
ZGUgIkVkaXRvckNsaWVudFd4LmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRXeC5oIgot
Ci0jaW5jbHVkZSAid3gvd3hwcmVjLmgiCi0jaWZuZGVmIFdYX1BSRUNPTVAKLSAgICAjaW5jbHVk
ZSAid3gvd3guaCIKLSNlbmRpZgotCi0jaW5jbHVkZSAiV2ViRE9NTm9kZS5oIgotCi0jaW5jbHVk
ZSAiV2ViRE9NU2VsZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJX
ZWJWaWV3LmgiCi0jaW5jbHVkZSAiV2ViRnJhbWVQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViVmll
d1ByaXZhdGUuaCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgPHd4L2RlZnMu
aD4KLSNpbmNsdWRlIDx3eC9kYy5oPgotI2luY2x1ZGUgPHd4L2RjYnVmZmVyLmg+Ci0jaW5jbHVk
ZSA8d3gvZGNncmFwaC5oPgotI2luY2x1ZGUgPHd4L2dyYXBoaWNzLmg+Ci0jaW5jbHVkZSA8d3gv
cHJpbnQuaD4KLSNpbmNsdWRlIDx3eC9wcmludGRsZy5oPgotCi0vLyBNYXRjaCBTYWZhcmkncyBt
aW4vbWF4IHpvb20gc2l6ZXMgYnkgZGVmYXVsdAotI2RlZmluZSBNaW5pbXVtVGV4dFNpemVNdWx0
aXBsaWVyICAgICAgIDAuNWYKLSNkZWZpbmUgTWF4aW11bVRleHRTaXplTXVsdGlwbGllciAgICAg
ICAzLjBmCi0jZGVmaW5lIFRleHRTaXplTXVsdGlwbGllclJhdGlvICAgICAgICAgMS4yZgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotLy8gd2UgbmVlZCB3
eEdyYXBoaWNzQ29udGV4dCBhbmQgd3hQcmludGVyREMgdG8gd29yayB0b2dldGhlciwgCi0vLyB3
aGljaCByZXF1aXJlcyB3eCAyLjkueC4KLSNpZiB3eENIRUNLX1ZFUlNJT04oMiwgOSwgMSkKLWNs
YXNzIHd4V2ViRnJhbWVQcmludG91dCA6IHB1YmxpYyB3eFByaW50b3V0IHsKLXB1YmxpYzoKLSAg
ICB3eFdlYkZyYW1lUHJpbnRvdXQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKSA6Ci0gICAgICAgIG1f
ZnJhbWUoZnJhbWUpLAotICAgICAgICBtX3ByaW50Q29udGV4dChmcmFtZSksCi0gICAgICAgIG1f
cGFnZVdpZHRoKDAuMCksCi0gICAgICAgIG1fZnJvbVBhZ2UoMSksCi0gICAgICAgIG1fdG9QYWdl
KDEpLAotICAgICAgICBtX2lzUHJpbnRpbmcoZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIH53
eFdlYkZyYW1lUHJpbnRvdXQoKSAKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzUHJpbnRpbmcpCi0g
ICAgICAgICAgICBtX3ByaW50Q29udGV4dC5lbmQoKTsKLSAgICB9Ci0gIAotICAgIGludCBHZXRQ
YWdlQ291bnQoKSB7IHJldHVybiBtX3ByaW50Q29udGV4dC5wYWdlQ291bnQoKTsgfQotICAgIHZv
aWQgU2V0Rmlyc3RQYWdlKGludCBwYWdlKSB7IG1fZnJvbVBhZ2UgPSBwYWdlOyB9Ci0gICAgdm9p
ZCBTZXRMYXN0UGFnZShpbnQgcGFnZSkgeyBtX3RvUGFnZSA9IHBhZ2U7IH0KLQotICAgIHZvaWQg
SW5pdGlhbGl6ZVdpdGhQYWdlU2l6ZSh3eFJlY3QgcGFnZVJlY3QsIGJvb2wgaXNNTSA9IHRydWUp
Ci0gICAgewotICAgICAgICBpZiAoaXNNTSkgewotICAgICAgICAgICAgZG91YmxlIG1tVG9Qb2lu
dHMgPSAyLjgzNDY7Ci0gICAgICAgICAgICAvLyBjb252ZXJ0IG1tIHRvIHBvaW50cwotICAgICAg
ICAgICAgcGFnZVJlY3QueCA9IHBhZ2VSZWN0LnggKiBtbVRvUG9pbnRzOwotICAgICAgICAgICAg
cGFnZVJlY3QueSA9IHBhZ2VSZWN0LnkgKiBtbVRvUG9pbnRzOwotICAgICAgICAgICAgcGFnZVJl
Y3Qud2lkdGggPSBwYWdlUmVjdC53aWR0aCAqIG1tVG9Qb2ludHM7Ci0gICAgICAgICAgICBwYWdl
UmVjdC5oZWlnaHQgPSBwYWdlUmVjdC5oZWlnaHQgKiBtbVRvUG9pbnRzOwotICAgICAgICB9Ci0g
ICAgICAgIG1fcGFnZVdpZHRoID0gcGFnZVJlY3Qud2lkdGg7Ci0gICAgICAgIG1fcHJpbnRDb250
ZXh0LmJlZ2luKG1fcGFnZVdpZHRoLCBwYWdlUmVjdC5oZWlnaHQpOwotICAgICAgICAvLyBpc1By
aW50aW5nIGlzIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSBQcmludENvbnRleHQsIHNvIHdl
IG5lZWQgdGhpcyB3aGVuIHdlIGNhbGwgYmVnaW4uCi0gICAgICAgIG1faXNQcmludGluZyA9IHRy
dWU7Ci0KLSAgICAgICAgZmxvYXQgcGFnZUhlaWdodCA9IHBhZ2VSZWN0LmhlaWdodDsKLSAgICAg
ICAgbV9wcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0cyhXZWJDb3JlOjpGbG9hdFJlY3QocGFn
ZVJlY3QpLCAvKiBoZWFkZXJIZWlnaHQgKi8gMCwgLyogZm9vdGVySGVpZ2h0ICovIDAsIC8qIHVz
ZXJTY2FsZUZhY3RvciAqLyAxLjAsIHBhZ2VIZWlnaHQpOwotICAgIH0KLSAgICAKLSAgICB2b2lk
IE9uUHJlcGFyZVByaW50aW5nKCkKLSAgICB7Ci0gICAgICAgIHd4UHJpbnRlckRDKiBwZGMgPSBk
eW5hbWljX2Nhc3Q8d3hQcmludGVyREMqPihHZXREQygpKTsKLSAgICAgICAgcGRjLT5TZXRNYXBN
b2RlKHd4TU1fUE9JTlRTKTsKLSAgICAgICAgaW50IHBpeGVsc1cgPSAwOwotICAgICAgICBpbnQg
cGl4ZWxzSCA9IDA7Ci0gICAgICAgIHBkYy0+R2V0U2l6ZSgmcGl4ZWxzVywgJnBpeGVsc0gpOwot
ICAgICAgICBwaXhlbHNXID0gcGRjLT5EZXZpY2VUb0xvZ2ljYWxYUmVsKHBpeGVsc1cpOwotICAg
ICAgICBwaXhlbHNIID0gcGRjLT5EZXZpY2VUb0xvZ2ljYWxZUmVsKHBpeGVsc0gpOwotI2lmIF9f
V1hNU1dfXwotICAgICAgICAvLyBvbiBXaW5kb3dzLCB0aGUgY29udGV4dCBoYXMgbm8gbWFyZ2lu
cywgc28gYWRkIHRoZW0gb3Vyc2VsdmVzLgotICAgICAgICBwaXhlbHNXIC09IDMwOwotICAgICAg
ICBwaXhlbHNIIC09IDMwOwotI2VuZGlmCi0gICAgICAgIEluaXRpYWxpemVXaXRoUGFnZVNpemUo
d3hSZWN0KDAsIDAsIHBpeGVsc1csIHBpeGVsc0gpLCBmYWxzZSk7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgR2V0UGFnZUluZm8oaW50ICptaW5QYWdlLCBpbnQgKm1heFBhZ2UsIGludCAqcGFnZUZy
b20sIGludCAqcGFnZVRvKQotICAgIHsKLSAgICAgICAgaWYgKG1pblBhZ2UpCi0gICAgICAgICAg
ICAqbWluUGFnZSA9IDE7Ci0gICAgICAgIGlmIChtYXhQYWdlKQotICAgICAgICAgICAgKm1heFBh
Z2UgPSBtX3ByaW50Q29udGV4dC5wYWdlQ291bnQoKTsKLSAgICAgICAgaWYgKHBhZ2VGcm9tKQot
ICAgICAgICAgICAgKnBhZ2VGcm9tID0gbV9mcm9tUGFnZTsKLSAgICAgICAgaWYgKHBhZ2VUbykK
LSAgICAgICAgICAgICpwYWdlVG8gPSBtX3RvUGFnZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBI
YXNQYWdlKGludCBwYWdlTnVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBhZ2VOdW0gPD0gbV9w
cmludENvbnRleHQucGFnZUNvdW50KCkgJiYgcGFnZU51bSA+PSBtX2Zyb21QYWdlICYmIHBhZ2VO
dW0gPD0gbV90b1BhZ2U7Ci0gICAgfQotICAgIAotICAgIGJvb2wgT25QcmludFBhZ2UoaW50IHBh
Z2VOdW0pCi0gICAgewotICAgICAgICB3eFByaW50ZXJEQyogcGRjID0gZHluYW1pY19jYXN0PHd4
UHJpbnRlckRDKj4oR2V0REMoKSk7Ci0gICAgICAgIHd4R3JhcGhpY3NSZW5kZXJlciogcmVuZGVy
ZXIgPSAwOwotI2lmIHd4Q0hFQ0tfVkVSU0lPTigyLCA5LCAyKSAmJiBkZWZpbmVkKHd4VVNFX0NB
SVJPKSAmJiB3eFVTRV9DQUlSTwotICAgICAgICByZW5kZXJlciA9IHd4R3JhcGhpY3NSZW5kZXJl
cjo6R2V0Q2Fpcm9SZW5kZXJlcigpOwotI2VuZGlmCi0gICAgICAgIGlmICghcmVuZGVyZXIpCi0g
ICAgICAgICAgICByZW5kZXJlciA9IHd4R3JhcGhpY3NSZW5kZXJlcjo6R2V0RGVmYXVsdFJlbmRl
cmVyKCk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJlcik7Ci0gICAgICAgIHd4R3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gcmVuZGVyZXItPkNyZWF0ZUNvbnRleHQoKnBkYyk7Ci0gICAgICAgIHd4
R0NEQyBnY2RjKGNvbnRleHQpOwotI2lmIF9fV1hNU1dfXwotICAgICAgICAvLyBzZWUgY29tbWVu
dCBhYm92ZSBhYm91dCBXaW5kb3dzIGNvbnRleHRzIG5vdCBoYXZpbmcgbWFyZ2lucyBzZXQuCi0g
ICAgICAgIGdjZGMuU2V0RGV2aWNlT3JpZ2luKDE1LCAxNSk7Ci0jZW5kaWYKLSAgICAgICAgaWYg
KCFnY2RjLklzT2soKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQgY3R4KCZnY2RjKTsKLSAgICAgICAgbV9wcmludENvbnRleHQu
c3Bvb2xQYWdlKGN0eCwgcGFnZU51bSAtIDEsIG1fcGFnZVdpZHRoKTsKLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICB2b2lkIE9uRW5kUHJpbnRpbmcoKQot
ICAgIHsKLSAgICAgICAgbV9wcmludENvbnRleHQuZW5kKCk7Ci0gICAgICAgIG1faXNQcmludGlu
ZyA9IGZhbHNlOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgZmxvYXQgbV9wYWdlV2lkdGg7
Ci0gICAgaW50IG1fZnJvbVBhZ2U7Ci0gICAgaW50IG1fdG9QYWdlOwotICAgIGJvb2wgbV9pc1By
aW50aW5nOwotICAgIFdlYkNvcmU6OkZyYW1lICptX2ZyYW1lOwotICAgIFdlYkNvcmU6OlByaW50
Q29udGV4dCBtX3ByaW50Q29udGV4dDsKLX07Ci0jZW5kaWYKLQotV2ViRnJhbWUqIGtpdChXZWJD
b3JlOjpGcmFtZSogZnJhbWUpCi17Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAg
IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3gqIGxvYWRlckNsaWVudCA9IGR5bmFtaWNfY2Fz
dDxXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KSk7Ci0gICAgaWYgKGxvYWRlckNsaWVudCkKLSAgICAgICAgcmV0dXJuIGxvYWRlckNsaWVudC0+
d2ViRnJhbWUoKTsKLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotV2ViRnJhbWU6OldlYkZyYW1l
KFdlYlZpZXcqIGNvbnRhaW5lciwgV2ViRnJhbWUqIHBhcmVudCwgV2ViVmlld0ZyYW1lRGF0YSog
ZGF0YSkgOgotICAgIG1fdGV4dE1hZ25pZmllcigxLjApLAotICAgIG1faXNJbml0aWFsaXplZChm
YWxzZSksCi0gICAgbV9iZWluZ0Rlc3Ryb3llZChmYWxzZSkKLXsKLQotICAgIG1faW1wbCA9IG5l
dyBXZWJGcmFtZVByaXZhdGUoKTsKLSAKLSAgICBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIHBhcmVudEZyYW1lID0gMDsKLSAgICAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBwYXJl
bnRGcmFtZSA9IGRhdGEtPm93bmVyRWxlbWVudDsKLSAgICB9Ci0gICAgCi0gICAgV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRXeCogbG9hZGVyQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50V3goKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IG5ld0ZyYW1lID0gV2Vi
Q29yZTo6RnJhbWU6OmNyZWF0ZShjb250YWluZXItPm1faW1wbC0+cGFnZSwgcGFyZW50RnJhbWUs
IGxvYWRlckNsaWVudCk7Ci0KLSAgICBtX2ltcGwtPmZyYW1lID0gbmV3RnJhbWUuZ2V0KCk7Ci0K
LSAgICBpZiAoZGF0YSkKLSAgICAgICAgbmV3RnJhbWUtPnRyZWUoKS0+c2V0TmFtZShkYXRhLT5u
YW1lKTsKLQotICAgIC8vIFN1YmZyYW1lcyBleHBlY3QgdG8gYmUgYWRkZWQgdG8gdGhlIEZyYW1l
VHJlZSBiZWZvcmUgaW5pdCBpcyBjYWxsZWQuCi0gICAgaWYgKHBhcmVudEZyYW1lKQotICAgICAg
ICBwYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dHJlZSgpLT5hcHBlbmRDaGlsZChu
ZXdGcmFtZS5nZXQoKSk7Ci0gICAgCi0gICAgbG9hZGVyQ2xpZW50LT5zZXRGcmFtZSh0aGlzKTsK
LSAgICBsb2FkZXJDbGllbnQtPnNldFdlYlZpZXcoY29udGFpbmVyKTsKLSAgICAKLSAgICBpZiAo
ZGF0YSAmJiBkYXRhLT5vd25lckVsZW1lbnQpCi0gICAgICAgIG1faW1wbC0+ZnJhbWUtPnJlZigp
OwotCi0gICAgbV9pbXBsLT5mcmFtZS0+aW5pdCgpOwotICAgICAgICAKLSAgICBtX2lzSW5pdGlh
bGl6ZWQgPSB0cnVlOwotfQotCi1XZWJGcmFtZTo6fldlYkZyYW1lKCkKLXsKLSAgICBpZiAobV9p
bXBsKQotICAgICAgICBkZWxldGUgbV9pbXBsOwotfQotCi13eFN0cmluZyBXZWJGcmFtZTo6R2V0
TmFtZSgpCi17Ci0gICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJh
bWUtPnRyZWUoKSkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPnRyZWUoKS0+bmFtZSgp
LnN0cmluZygpOwotICAgIHJldHVybiB3eEVtcHR5U3RyaW5nOwotfQotCi1XZWJDb3JlOjpGcmFt
ZSogV2ViRnJhbWU6OkdldEZyYW1lKCkKLXsKLSAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1
cm4gbV9pbXBsLT5mcmFtZTsKLSAgICAgICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgV2Vi
RnJhbWU6OlN0b3AoKQotewotICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUt
PmxvYWRlcigpKQotICAgICAgICBtX2ltcGwtPmZyYW1lLT5sb2FkZXIoKS0+c3RvcCgpOwotfQot
Ci12b2lkIFdlYkZyYW1lOjpSZWxvYWQoKQotewotICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1f
aW1wbC0+ZnJhbWUtPmxvYWRlcigpKQotICAgICAgICBtX2ltcGwtPmZyYW1lLT5sb2FkZXIoKS0+
cmVsb2FkKCk7Ci19Ci0KLXd4U3RyaW5nIFdlYkZyYW1lOjpHZXRQYWdlU291cmNlKCkKLXsKLSAg
ICBpZiAobV9pbXBsLT5mcmFtZSkgewotICAgICAgICBpZiAobV9pbXBsLT5mcmFtZS0+dmlldygp
ICYmIG1faW1wbC0+ZnJhbWUtPnZpZXcoKS0+bGF5b3V0UGVuZGluZygpKQotICAgICAgICAgICAg
bV9pbXBsLT5mcmFtZS0+dmlldygpLT5sYXlvdXQoKTsKLSAgICAKLSAgICAgICAgV2ViQ29yZTo6
RG9jdW1lbnQqIGRvYyA9IG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgICAgIAotICAg
ICAgICBpZiAoZG9jKSB7Ci0gICAgICAgICAgICB3eFN0cmluZyBzb3VyY2UgPSBjcmVhdGVNYXJr
dXAoZG9jKTsKLSAgICAgICAgICAgIHJldHVybiBzb3VyY2U7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHd4RW1wdHlTdHJpbmc7Ci19Ci0KLXZvaWQgV2ViRnJhbWU6OlNldFBhZ2VTb3Vy
Y2UoY29uc3Qgd3hTdHJpbmcmIHNvdXJjZSwgY29uc3Qgd3hTdHJpbmcmIGJhc2VVcmwsIGNvbnN0
IHd4U3RyaW5nJiBtaW1ldHlwZSkKLXsKLSAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwt
PmZyYW1lLT5sb2FkZXIoKSkgewotICAgICAgICBXZWJDb3JlOjpLVVJMIHVybChXZWJDb3JlOjpL
VVJMKCksIGJhc2VVcmwpOwotCi0gICAgICAgIGNvbnN0IHd4Q2hhckJ1ZmZlciBjaGFyQnVmZmVy
KHNvdXJjZS51dGY4X3N0cigpKTsKLSAgICAgICAgY29uc3QgY2hhciogY29udGVudHMgPSBjaGFy
QnVmZmVyOwotCi0gICAgICAgIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLCBz
dHJsZW4oY29udGVudHMpKTsKLSAgICAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3Rp
dHV0ZURhdGEoc2hhcmVkQnVmZmVyLCBtaW1ldHlwZSwgV1RGOjpTdHJpbmcoIlVURi04IiksIFdl
YkNvcmU6OmJsYW5rVVJMKCksIHVybCk7Ci0KLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+bG9hZGVy
KCktPnN0b3AoKTsKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+bG9hZGVyKCktPmxvYWQoV2ViQ29y
ZTo6RnJhbWVMb2FkUmVxdWVzdChtX2ltcGwtPmZyYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QodXJsKSwgc3Vic3RpdHV0ZURhdGEpKTsKLSAgICB9Ci19Ci0KLXd4U3RyaW5nIFdlYkZyYW1l
OjpHZXRJbm5lclRleHQoKQotewotICAgIGlmIChtX2ltcGwtPmZyYW1lLT52aWV3KCkgJiYgbV9p
bXBsLT5mcmFtZS0+dmlldygpLT5sYXlvdXRQZW5kaW5nKCkpCi0gICAgICAgIG1faW1wbC0+ZnJh
bWUtPnZpZXcoKS0+bGF5b3V0KCk7Ci0gICAgICAgIAotICAgIFdlYkNvcmU6OkVsZW1lbnQgKmRv
Y3VtZW50RWxlbWVudCA9IG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpOwotICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQtPmlubmVyVGV4dCgpOwotfQotCi13eFN0
cmluZyBXZWJGcmFtZTo6R2V0QXNNYXJrdXAoKQotewotICAgIGlmICghbV9pbXBsLT5mcmFtZSB8
fCAhbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHd4RW1wdHlTdHJp
bmc7Ci0KLSAgICByZXR1cm4gY3JlYXRlTWFya3VwKG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCkp
OwotfQotCi13eFN0cmluZyBXZWJGcmFtZTo6R2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpCi17
Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUtPnZpZXcoKSAmJiBtX2ltcGwtPmZyYW1lLT52aWV3KCkt
PmxheW91dFBlbmRpbmcoKSkKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+dmlldygpLT5sYXlvdXQo
KTsKLQotICAgIHJldHVybiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKG1faW1wbC0+ZnJhbWUpOwot
fQotCi13eFN0cmluZyBXZWJGcmFtZTo6R2V0U2VsZWN0aW9uQXNIVE1MKCkKLXsKLSAgICBpZiAo
bV9pbXBsLT5mcmFtZSkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPnNlbGVjdGlvbigp
LT50b05vcm1hbGl6ZWRSYW5nZSgpLT50b0hUTUwoKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHd4
RW1wdHlTdHJpbmc7Ci19Ci0KLXd4U3RyaW5nIFdlYkZyYW1lOjpHZXRTZWxlY3Rpb25Bc1RleHQo
KQotewotICAgIGlmIChtX2ltcGwtPmZyYW1lKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFt
ZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCktPnRleHQoKTsKLSAgICAgICAgCi0g
ICAgcmV0dXJuIHd4RW1wdHlTdHJpbmc7Ci19Ci0KLVdlYktpdFNlbGVjdGlvbiBXZWJGcmFtZTo6
R2V0U2VsZWN0aW9uKCkKLXsKLSAgICBpZiAobV9pbXBsLT5mcmFtZSkKLSAgICAgICAgcmV0dXJu
IFdlYktpdFNlbGVjdGlvbihtX2ltcGwtPmZyYW1lLT5zZWxlY3Rpb24oKSk7Ci0gICAgICAgIAot
ICAgIHJldHVybiAwOwotfQotCi13eFN0cmluZyBXZWJGcmFtZTo6UnVuU2NyaXB0KGNvbnN0IHd4
U3RyaW5nJiBqYXZhc2NyaXB0KQotewotICAgIHd4U3RyaW5nIHJldHVyblZhbHVlID0gd3hFbXB0
eVN0cmluZzsKLSAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5sb2FkZXIo
KSkgewotICAgICAgICBib29sIGhhc0xvYWRlZCA9IG1faW1wbC0+ZnJhbWUtPmxvYWRlcigpLT5m
cmFtZUhhc0xvYWRlZCgpOwotICAgICAgICB3eEFTU0VSVF9NU0coaGFzTG9hZGVkLCB3eFQoIkRv
Y3VtZW50IG11c3QgYmUgbG9hZGVkIGJlZm9yZSBjYWxsaW5nIFJ1blNjcmlwdC4iKSk7Ci0gICAg
ICAgIGlmIChoYXNMb2FkZWQpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBtX2ltcGwtPmZyYW1lLT5zY3JpcHQoKTsKLSAgICAgICAgICAgIGJv
b2wganNFbmFibGVkID0gY29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoV2ViQ29yZTo6QWJv
dXRUb0V4ZWN1dGVTY3JpcHQpOyAKLSAgICAgICAgICAgIHd4QVNTRVJUX01TRyhqc0VuYWJsZWQs
IHd4VCgiUnVuU2NyaXB0IHJlcXVpcmVzIEphdmFTY3JpcHQgdG8gYmUgZW5hYmxlZC4iKSk7Ci0g
ICAgICAgICAgICBpZiAoanNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IGNvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHQoamF2YXNjcmlwdCwgdHJ1ZSkuanNW
YWx1ZSgpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2ltcGwtPmZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFs
T2JqZWN0KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHd4U3RyaW5nKHJlc3VsdC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykudXRmOCgpLmRhdGEoKSwgd3hDb252VVRGOCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKLX0KLQotYm9vbCBXZWJGcmFtZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0
IHd4U3RyaW5nJiBjb21tYW5kLCBjb25zdCB3eFN0cmluZyYgcGFyYW1ldGVyKQotewotICAgIGlm
IChtX2ltcGwtPmZyYW1lICYmIElzRWRpdGFibGUoKSkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmQpLmV4ZWN1dGUocGFyYW1ldGVyKTsKLX0K
LQotRWRpdFN0YXRlIFdlYkZyYW1lOjpHZXRFZGl0Q29tbWFuZFN0YXRlKGNvbnN0IHd4U3RyaW5n
JiBjb21tYW5kKSBjb25zdAotewotICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIElzRWRpdGFibGUo
KSkgeyAKLSAgICAgICAgV2ViQ29yZTo6VHJpU3RhdGUgc3RhdGUgPSBtX2ltcGwtPmZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kKS5zdGF0ZSgpOwotICAgICAgICBpZiAoc3RhdGUgPT0g
V2ViQ29yZTo6VHJ1ZVRyaVN0YXRlKQotICAgICAgICAgICAgcmV0dXJuIEVkaXRTdGF0ZVRydWU7
Ci0gICAgICAgIGlmIChzdGF0ZSA9PSBXZWJDb3JlOjpGYWxzZVRyaVN0YXRlKQotICAgICAgICAg
ICAgcmV0dXJuIEVkaXRTdGF0ZUZhbHNlOwotCi0gICAgICAgIHJldHVybiBFZGl0U3RhdGVNaXhl
ZDsKLSAgICB9Ci0gICAgICAgIAotICAgIHJldHVybiBFZGl0U3RhdGVGYWxzZTsKLX0KLQotd3hT
dHJpbmcgV2ViRnJhbWU6OkdldEVkaXRDb21tYW5kVmFsdWUoY29uc3Qgd3hTdHJpbmcmIGNvbW1h
bmQpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgSXNFZGl0YWJsZSgpKQotICAg
ICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZCkudmFs
dWUoKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHd4RW1wdHlTdHJpbmc7Ci19Ci0KLQotYm9vbCBX
ZWJGcmFtZTo6RmluZFN0cmluZyhjb25zdCB3eFN0cmluZyYgc3RyaW5nLCBib29sIGZvcndhcmQs
IGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCB3cmFwU2VsZWN0aW9uLCBib29sIHN0YXJ0SW5TZWxl
Y3Rpb24pCi17Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUpCi0gICAgICAgIHJldHVybiBtX2ltcGwt
PmZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyhzdHJpbmcsIGZvcndhcmQsIGNhc2VTZW5zaXRp
dmUsIHdyYXBTZWxlY3Rpb24sIHN0YXJ0SW5TZWxlY3Rpb24pOwotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi12b2lkIFdlYkZyYW1lOjpMb2FkVVJMKGNvbnN0IHd4U3RyaW5nJiB1cmwpCi17Ci0g
ICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+bG9hZGVyKCkpIHsKLSAgICAg
ICAgV2ViQ29yZTo6S1VSTCBrdXJsID0gV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIHVy
bCwgV2ViQ29yZTo6VVRGOEVuY29kaW5nKCkpOwotICAgICAgICAvLyBOQjogVGhpcyBpcyBhbiB1
Z2x5IGZpeCwgYnV0IENVUkwgd29uJ3QgbG9hZCBzdWItcmVzb3VyY2VzIGlmIHRoZQotICAgICAg
ICAvLyBwcm90b2NvbCBpcyBvbWl0dGVkOyBzYWRseSwgaXQgd2lsbCBub3QgZW1pdCBhbiBlcnJv
ciwgZWl0aGVyLCBzbwotICAgICAgICAvLyB0aGVyZSdzIG5vIHdheSBmb3IgdXMgdG8gY2F0Y2gg
dGhpcyBwcm9ibGVtIHRoZSBjb3JyZWN0IHdheSB5ZXQuCi0gICAgICAgIGlmIChrdXJsLnByb3Rv
Y29sKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBpcyBpdCBhIGZpbGUgb24gZGlzaz8K
LSAgICAgICAgICAgIGlmICh3eEZpbGVFeGlzdHModXJsKSkgewotICAgICAgICAgICAgICAgIGt1
cmwuc2V0UHJvdG9jb2woImZpbGUiKTsKLSAgICAgICAgICAgICAgICBrdXJsLnNldFBhdGgoIi8v
IiArIGt1cmwucGF0aCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGt1cmwuc2V0UHJvdG9jb2woImh0dHAiKTsKLSAgICAgICAgICAgICAgICBr
dXJsLnNldFBhdGgoIi8vIiArIGt1cmwucGF0aCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBtX2ltcGwtPmZyYW1lLT5sb2FkZXIoKS0+bG9hZChrdXJsLCBmYWxzZSk7Ci0g
ICAgfQotfQotCi13eFN0cmluZyBXZWJGcmFtZTo6R2V0VVJMKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7Ci0gICAgCi0gICAg
cmV0dXJuIHd4RW1wdHlTdHJpbmc7Ci19Ci0KLQotYm9vbCBXZWJGcmFtZTo6R29CYWNrKCkKLXsK
LSAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5wYWdlKCkpCi0gICAgICAg
IHJldHVybiBtX2ltcGwtPmZyYW1lLT5wYWdlKCktPmdvQmFjaygpOwotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIFdlYkZyYW1lOjpHb0ZvcndhcmQoKQotewotICAgIGlmIChtX2ltcGwt
PmZyYW1lICYmIG1faW1wbC0+ZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZnJhbWUtPnBhZ2UoKS0+Z29Gb3J3YXJkKCk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgV2ViRnJhbWU6OkNhbkdvQmFjaygpCi17Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9p
bXBsLT5mcmFtZS0+cGFnZSgpKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+cGFnZSgp
LT5jYW5Hb0JhY2tPckZvcndhcmQoLTEpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29s
IFdlYkZyYW1lOjpDYW5Hb0ZvcndhcmQoKQotewotICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1f
aW1wbC0+ZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPnBhZ2Uo
KS0+Y2FuR29CYWNrT3JGb3J3YXJkKDEpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IFdlYkZyYW1lOjpVbmRvKCkKLXsKLSAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZy
YW1lLT5lZGl0b3IoKSAmJiBDYW5VbmRvKCkpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1l
LT5lZGl0b3IoKS0+dW5kbygpOwotfQotCi12b2lkIFdlYkZyYW1lOjpSZWRvKCkKLXsKLSAgICBp
ZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5lZGl0b3IoKSAmJiBDYW5SZWRvKCkp
Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5lZGl0b3IoKS0+cmVkbygpOwotfQotCi1i
b29sIFdlYkZyYW1lOjpDYW5VbmRvKCkKLXsKLSAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2lt
cGwtPmZyYW1lLT5lZGl0b3IoKSkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPmVkaXRv
cigpLT5jYW5VbmRvKCk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViRnJhbWU6
OkNhblJlZG8oKQotewotICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUtPmVk
aXRvcigpKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCktPmNhblJlZG8o
KTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJGcmFtZTo6Q2FuSW5jcmVhc2VU
ZXh0U2l6ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFt
ZS0+dmlldygpKSB7Ci0gICAgICAgIGlmIChtX3RleHRNYWduaWZpZXIqVGV4dFNpemVNdWx0aXBs
aWVyUmF0aW8gPD0gTWF4aW11bVRleHRTaXplTXVsdGlwbGllcikKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWU6Oklu
Y3JlYXNlVGV4dFNpemUoKQotewotICAgIGlmIChDYW5JbmNyZWFzZVRleHRTaXplKCkpIHsKLSAg
ICAgICAgbV90ZXh0TWFnbmlmaWVyID0gbV90ZXh0TWFnbmlmaWVyKlRleHRTaXplTXVsdGlwbGll
clJhdGlvOwotICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3RvcihtX3RleHRN
YWduaWZpZXIpOwotICAgIH0KLX0KLQotYm9vbCBXZWJGcmFtZTo6Q2FuRGVjcmVhc2VUZXh0U2l6
ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+dmll
dygpKSB7Ci0gICAgICAgIGlmIChtX3RleHRNYWduaWZpZXIvVGV4dFNpemVNdWx0aXBsaWVyUmF0
aW8gPj0gTWluaW11bVRleHRTaXplTXVsdGlwbGllcikKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWU6OkRlY3JlYXNl
VGV4dFNpemUoKQoteyAgICAgICAgCi0gICAgaWYgKENhbkRlY3JlYXNlVGV4dFNpemUoKSkgewot
ICAgICAgICBtX3RleHRNYWduaWZpZXIgPSBtX3RleHRNYWduaWZpZXIvVGV4dFNpemVNdWx0aXBs
aWVyUmF0aW87Ci0gICAgICAgIG1faW1wbC0+ZnJhbWUtPnNldFRleHRab29tRmFjdG9yKG1fdGV4
dE1hZ25pZmllcik7Ci0gICAgfQotfQotCi12b2lkIFdlYkZyYW1lOjpSZXNldFRleHRTaXplKCkK
LXsKLSAgICBtX3RleHRNYWduaWZpZXIgPSAxLjA7Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUpCi0g
ICAgICAgIG1faW1wbC0+ZnJhbWUtPnNldFRleHRab29tRmFjdG9yKG1fdGV4dE1hZ25pZmllcik7
Ci19Ci0KLXZvaWQgV2ViRnJhbWU6Ok1ha2VFZGl0YWJsZShib29sIGVuYWJsZSkKLXsKLSAgICBp
ZiAoZW5hYmxlICE9IElzRWRpdGFibGUoKSAmJiBtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJh
bWUtPnBhZ2UoKSkKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+cGFnZSgpLT5zZXRFZGl0YWJsZShl
bmFibGUpOwotfQotCi1ib29sIFdlYkZyYW1lOjpJc0VkaXRhYmxlKCkgY29uc3QKLXsKLSAgICBp
ZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJldHVy
biBtX2ltcGwtPmZyYW1lLT5wYWdlKCktPmlzRWRpdGFibGUoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgV2ViRnJhbWU6OkNhbkNvcHkoKQotewotICAgIGlmIChtX2ltcGwtPmZyYW1l
ICYmIG1faW1wbC0+ZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgcmV0dXJuIChtX2ltcGwtPmZyYW1l
LT5lZGl0b3IoKS0+Y2FuQ29weSgpIHx8IG1faW1wbC0+ZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRN
TENvcHkoKSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWU6OkNvcHko
KQotewotICAgIGlmIChDYW5Db3B5KCkpCi0gICAgICAgIG1faW1wbC0+ZnJhbWUtPmVkaXRvcigp
LT5jb3B5KCk7Ci19Ci0KLWJvb2wgV2ViRnJhbWU6OkNhbkN1dCgpCi17Ci0gICAgaWYgKG1faW1w
bC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+dmlldygpKQotICAgICAgICByZXR1cm4gKG1faW1w
bC0+ZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQoKSB8fCBtX2ltcGwtPmZyYW1lLT5lZGl0b3IoKS0+
Y2FuREhUTUxDdXQoKSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWU6
OkN1dCgpCi17Ci0gICAgaWYgKENhbkN1dCgpKQotICAgICAgICBtX2ltcGwtPmZyYW1lLT5lZGl0
b3IoKS0+Y3V0KCk7Ci19Ci0KLWJvb2wgV2ViRnJhbWU6OkNhblBhc3RlKCkKLXsKLSAgICBpZiAo
bV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT52aWV3KCkpCi0gICAgICAgIHJldHVybiAo
bV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgfHwgbV9pbXBsLT5mcmFtZS0+ZWRp
dG9yKCktPmNhbkRIVE1MUGFzdGUoKSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQg
V2ViRnJhbWU6OlBhc3RlKCkKLXsKLSAgICBpZiAoQ2FuUGFzdGUoKSkKLSAgICAgICAgbV9pbXBs
LT5mcmFtZS0+ZWRpdG9yKCktPnBhc3RlKCk7Ci0KLX0KLQotdm9pZCBXZWJGcmFtZTo6UHJpbnQo
Ym9vbCBzaG93RGlhbG9nKQotewotI2lmIHd4Q0hFQ0tfVkVSU0lPTigyLCA5LCAxKQotICAgIGlm
ICghbV9pbXBsLT5mcmFtZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHd4UHJpbnREaWFs
b2dEYXRhIHByaW50ZGF0YTsKLSAgICBwcmludGRhdGEuR2V0UHJpbnREYXRhKCkuU2V0UHJpbnRN
b2RlKHd4UFJJTlRfTU9ERV9QUklOVEVSKTsKLSAgICBwcmludGRhdGEuR2V0UHJpbnREYXRhKCku
U2V0Tm9Db3BpZXMoMSk7Ci0jaWYgd3hDSEVDS19WRVJTSU9OKDIsIDksIDIpCi0gICAgcHJpbnRk
YXRhLkdldFByaW50RGF0YSgpLkNvbnZlcnRGcm9tTmF0aXZlKCk7Ci0jZW5kaWYKLQotICAgIC8v
IG1ha2Ugc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcGFwZXIgdHlwZSwgaWYgd2UgZG9uJ3QsIHRoZSB0
byAvIGZyb20gcGFnZXMgd2lsbCBib3RoIGJlIDAKLSAgICAvLyBhbmQgdGhlIGRpYWxvZyB3b24n
dCBzaG93LgotICAgIGlmIChwcmludGRhdGEuR2V0UHJpbnREYXRhKCkuR2V0UGFwZXJJZCgpID09
IHd4UEFQRVJfTk9ORSkKLSAgICAgICAgcHJpbnRkYXRhLkdldFByaW50RGF0YSgpLlNldFBhcGVy
SWQod3hQQVBFUl9MRVRURVIpOwotCi0gICAgd3hQYWdlU2V0dXBEaWFsb2dEYXRhIHBhZ2VTZXR1
cChwcmludGRhdGEuR2V0UHJpbnREYXRhKCkpOwotCi0gICAgd3hSZWN0IHBhcGVyU2l6ZSA9IHBh
Z2VTZXR1cC5HZXRQYXBlclNpemUoKTsKLSAgICAvLyBUaGUgcGFwZXIgc2l6ZSBpbmNsdWRlcyB0
aGUgbm9uLXByaW50YWJsZSBhcmVhcyBvZiB0aGUgcGFnZS4KLSAgICAvLyBHdWVzc3RpbWF0ZSB0
aGUgcHJpbnRhYmxlIHBhZ2UgbWFyZ2lucyB1bnRpbCB3ZSBmaW5kIGEgd2F5IHRvIHByZWNpc2Vs
eQotICAgIC8vIGNhbGN1bGF0ZSB0aGUgbWFyZ2lucyB1c2VkIGJ5IHRoZSBkZXZpY2UgY29udGV4
dCBvbiBNYWMuCi0gICAgcGFwZXJTaXplLkRlZmxhdGUoMTUsIDE1KTsKLQotICAgIHd4V2ViRnJh
bWVQcmludG91dCogcHJpbnRvdXQgPSBuZXcgd3hXZWJGcmFtZVByaW50b3V0KG1faW1wbC0+ZnJh
bWUpOwotICAgIHByaW50b3V0LT5Jbml0aWFsaXplV2l0aFBhZ2VTaXplKHBhcGVyU2l6ZSk7Ci0g
ICAgCi0gICAgaW50IHBhZ2VzID0gcHJpbnRvdXQtPkdldFBhZ2VDb3VudCgpOwotICAgIEFTU0VS
VChwYWdlcyA+IDApOwotCi0gICAgcHJpbnRkYXRhLlNldE1pblBhZ2UoMSk7Ci0gICAgcHJpbnRk
YXRhLlNldE1heFBhZ2UocGFnZXMpOwotICAgIHByaW50ZGF0YS5TZXRGcm9tUGFnZSgxKTsKLSAg
ICBwcmludGRhdGEuU2V0VG9QYWdlKHBhZ2VzKTsKLQotICAgIGJvb2wgc2hvdWxkUHJpbnQgPSB0
cnVlOwotICAgIGlmIChzaG93RGlhbG9nKSB7Ci0gICAgICAgIHd4UHJpbnREaWFsb2cgZGlhbG9n
KDAsICZwcmludGRhdGEpOwotICAgICAgICBzaG91bGRQcmludCA9IChkaWFsb2cuU2hvd01vZGFs
KCkgPT0gd3hJRF9PSyk7Ci0gICAgICAgIGlmIChzaG91bGRQcmludCkgewotICAgICAgICAgICAg
cHJpbnRkYXRhID0gZGlhbG9nLkdldFByaW50RGlhbG9nRGF0YSgpOyAgICAgICAgICAgIAotICAg
ICAgICAgICAgcHJpbnRvdXQtPlNldEZpcnN0UGFnZShwcmludGRhdGEuR2V0RnJvbVBhZ2UoKSk7
Ci0gICAgICAgICAgICBwcmludG91dC0+U2V0TGFzdFBhZ2UocHJpbnRkYXRhLkdldFRvUGFnZSgp
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoc2hvdWxkUHJpbnQpIHsKLSAgICAg
ICAgd3hQcmludGVyIHByaW50ZXIoJnByaW50ZGF0YSk7Ci0gICAgICAgIHByaW50ZXIuUHJpbnQo
MCwgcHJpbnRvdXQsIGZhbHNlKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHByaW50b3V0KQotICAg
ICAgICBkZWxldGUgcHJpbnRvdXQ7Ci0gICAgICAgIAotI2Vsc2UKLSAgICB3eEZBSUxfTVNHKHd4
VCgiUHJpbnRpbmcgaXMgb25seSBzdXBwb3J0ZWQgaW4gd3hXaWRnZXRzIDIuOS4xIGFuZCBhYm92
ZS4iKSk7Ci0jZW5kaWYKLX0KLQotV2ViVmlld0RPTUVsZW1lbnRJbmZvIFdlYkZyYW1lOjpIaXRU
ZXN0KGNvbnN0IHd4UG9pbnQmIHBvcykgY29uc3QKLXsKLSAgICBXZWJWaWV3RE9NRWxlbWVudElu
Zm8gZG9tSW5mbzsKLQotICAgIGlmIChtX2ltcGwtPmZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAg
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKHBvcykpOwotICAgICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpKSB7Ci0gICAg
ICAgICAgICBkb21JbmZvLlNldExpbmsocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygp
KTsKLSAgICAgICAgICAgIGRvbUluZm8uU2V0VGV4dChyZXN1bHQudGV4dENvbnRlbnQoKSk7Ci0g
ICAgICAgICAgICBkb21JbmZvLlNldEltYWdlU3JjKHJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCku
c3RyaW5nKCkpOwotICAgICAgICAgICAgZG9tSW5mby5TZXRTZWxlY3RlZChyZXN1bHQuaXNTZWxl
Y3RlZCgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBkb21JbmZvOwotfQotCi1i
b29sIFdlYkZyYW1lOjpTaG91bGRDbG9zZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW1wbC0+ZnJh
bWUpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5sb2FkZXIoKS0+c2hvdWxkQ2xvc2Uo
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1XZWJLaXRDb21wYXRpYmlsaXR5TW9kZSBXZWJG
cmFtZTo6R2V0Q29tcGF0aWJpbGl0eU1vZGUoKSBjb25zdAotewotICAgIGlmIChtX2ltcGwtPmZy
YW1lICYmIG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAoV2ViS2l0
Q29tcGF0aWJpbGl0eU1vZGUpbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGF0aWJpbGl0
eU1vZGUoKTsKLQotICAgIHJldHVybiBRdWlya3NNb2RlOwotfQotCi12b2lkIFdlYkZyYW1lOjpH
cmFudFVuaXZlcnNhbEFjY2VzcygpCi17Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBs
LT5mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS0+Z3JhbnRVbml2ZXJzYWxBY2Nlc3MoKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC93eC9XZWJG
cmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjA3ZmJlZWZiZjIxMzMwZDUw
MThhOWM4NmU3NzhkMzBlMDVjYjY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDE5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEtldmluIE9sbGl2aWVy
IDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0gCi0jaWZuZGVmIFdlYkZyYW1lX2gKLSNkZWZpbmUgV2ViRnJhbWVfaAotCi0jaW5jbHVk
ZSAid3gvd3hwcmVjLmgiCi0jaWZuZGVmIFdYX1BSRUNPTVAKLSAgICAjaW5jbHVkZSAid3gvd3gu
aCIKLSNlbmRpZgotCi0jaW5jbHVkZSAiV2ViS2l0RGVmaW5lcy5oIgotCi1jbGFzcyBXZWJET01F
bGVtZW50OwotY2xhc3MgV2ViRE9NTm9kZTsKLQotI2luY2x1ZGUgIldlYkRPTVNlbGVjdGlvbi5o
IgotCi1jbGFzcyBFbGVtZW50OwotCi1jbGFzcyBXZWJGcmFtZVByaXZhdGU7Ci1jbGFzcyBXZWJW
aWV3RnJhbWVEYXRhOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQ2hyb21lQ2xp
ZW50V3g7Ci0gICAgY2xhc3MgRWRpdG9yQ2xpZW50V3g7Ci0gICAgY2xhc3MgRnJhbWVMb2FkZXJD
bGllbnRXeDsKLSAgICBjbGFzcyBGcmFtZTsgICAgCi19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJWaWV3OwotCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0RPTUVs
ZW1lbnRJbmZvCi17Ci1wdWJsaWM6Ci0gICAgV2ViVmlld0RPTUVsZW1lbnRJbmZvKCk7Ci0gICAg
V2ViVmlld0RPTUVsZW1lbnRJbmZvKGNvbnN0IFdlYlZpZXdET01FbGVtZW50SW5mbyYgb3RoZXIp
OwotCi0gICAgfldlYlZpZXdET01FbGVtZW50SW5mbygpOwotCi0gICAgd3hTdHJpbmcgR2V0VGFn
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZTsgfQotICAgIHZvaWQgU2V0VGFnTmFtZShj
b25zdCB3eFN0cmluZyYgbmFtZSkgeyBtX3RhZ05hbWUgPSBuYW1lOyB9Ci0KLSAgICBib29sIElz
U2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2VsZWN0ZWQ7IH0KLSAgICB2b2lkIFNldFNl
bGVjdGVkKGJvb2wgc2VsKSB7IG1faXNTZWxlY3RlZCA9IHNlbDsgfQotCi0gICAgd3hTdHJpbmcg
R2V0VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQotICAgIHZvaWQgU2V0VGV4dChjb25z
dCB3eFN0cmluZyYgdGV4dCkgeyBtX3RleHQgPSB0ZXh0OyB9Ci0KLSAgICB3eFN0cmluZyBHZXRJ
bWFnZVNyYygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTcmM7IH0KLSAgICB2b2lkIFNldEltYWdl
U3JjKGNvbnN0IHd4U3RyaW5nJiBzcmMpIHsgbV9pbWFnZVNyYyA9IHNyYzsgfQotCi0gICAgd3hT
dHJpbmcgR2V0TGluaygpIGNvbnN0IHsgcmV0dXJuIG1fbGluazsgfQotICAgIHZvaWQgU2V0TGlu
ayhjb25zdCB3eFN0cmluZyYgbGluaykgeyBtX2xpbmsgPSBsaW5rOyB9Ci0gICAgCi0gICAgV2Vi
RE9NTm9kZSogR2V0SW5uZXJOb2RlKCkgeyByZXR1cm4gbV9pbm5lck5vZGU7IH0KLSAgICB2b2lk
IFNldElubmVyTm9kZShXZWJET01Ob2RlKiBub2RlKSB7IG1faW5uZXJOb2RlID0gbm9kZTsgfQot
ICAgIAotICAgIFdlYkRPTUVsZW1lbnQqIEdldFVSTEVsZW1lbnQoKSB7IHJldHVybiBtX3VybEVs
ZW1lbnQ7IH0KLSAgICB2b2lkIFNldFVSTEVsZW1lbnQoV2ViRE9NRWxlbWVudCogdXJsKSB7IG1f
dXJsRWxlbWVudCA9IHVybDsgfQotCi1wcml2YXRlOgotICAgIFdlYkRPTU5vZGUqIG1faW5uZXJO
b2RlOwotICAgIFdlYkRPTUVsZW1lbnQqIG1fdXJsRWxlbWVudDsKLSAgICBib29sIG1faXNTZWxl
Y3RlZDsKLSAgICB3eFN0cmluZyBtX3RhZ05hbWU7Ci0gICAgd3hTdHJpbmcgbV90ZXh0OwotICAg
IHd4U3RyaW5nIG1faW1hZ2VTcmM7Ci0gICAgd3hTdHJpbmcgbV9saW5rOwotfTsKLQotLy8gYmFz
ZWQgb24gZW51bXMgaW4gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAotZW51bSBXZWJLaXRDb21wYXRp
YmlsaXR5TW9kZSB7IFF1aXJrc01vZGUsIExpbWl0ZWRRdWlya3NNb2RlLCBOb1F1aXJrc01vZGUg
fTsKLQotY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIFdlYkZyYW1lCi17Ci1wdWJsaWM6Ci0gICAg
Ly8gQ2hyb21lQ2xpZW50V3ggbmVlZHMgdG8gZ2V0IHRoZSBQYWdlKiBzdG9yZWQgYnkgdGhlIFdl
YlZpZXcKLSAgICAvLyBmb3IgdGhlIGNyZWF0ZVdpbmRvdyBmdW5jdGlvbi4gCi0gICAgZnJpZW5k
IGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OwotICAgIGZyaWVuZCBjbGFzcyBXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OwotICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpFZGl0b3JD
bGllbnRXeDsKLSAgICBmcmllbmQgY2xhc3MgV2ViVmlldzsKLQotcHVibGljOgotICAgIFdlYkZy
YW1lKFdlYlZpZXcqIGNvbnRhaW5lciwgV2ViRnJhbWUqIHBhcmVudCA9IDAsIFdlYlZpZXdGcmFt
ZURhdGEqIGRhdGEgPSAwKTsKLSAgICAKLSAgICB+V2ViRnJhbWUoKTsKLSAgICAKLSAgICB2b2lk
IExvYWRVUkwoY29uc3Qgd3hTdHJpbmcmIHVybCk7Ci0gICAgd3hTdHJpbmcgR2V0VVJMKCkgY29u
c3Q7Ci0gICAgYm9vbCBHb0JhY2soKTsKLSAgICBib29sIEdvRm9yd2FyZCgpOwotICAgIHZvaWQg
U3RvcCgpOwotICAgIHZvaWQgUmVsb2FkKCk7Ci0gICAgdm9pZCBQcmludChib29sIHNob3dEaWFs
b2cgPSB0cnVlKTsKLSAgICAKLSAgICBib29sIENhbkdvQmFjaygpOwotICAgIGJvb2wgQ2FuR29G
b3J3YXJkKCk7Ci0gICAgCi0gICAgYm9vbCBDYW5DdXQoKTsKLSAgICBib29sIENhbkNvcHkoKTsK
LSAgICBib29sIENhblBhc3RlKCk7Ci0gICAgCi0gICAgdm9pZCBDdXQoKTsKLSAgICB2b2lkIENv
cHkoKTsKLSAgICB2b2lkIFBhc3RlKCk7Ci0gICAgCi0gICAgYm9vbCBDYW5VbmRvKCk7Ci0gICAg
Ym9vbCBDYW5SZWRvKCk7Ci0gICAgCi0gICAgdm9pZCBVbmRvKCk7Ci0gICAgdm9pZCBSZWRvKCk7
Ci0gICAgCi0gICAgd3hTdHJpbmcgR2V0TmFtZSgpOwotICAgIAotICAgIHd4U3RyaW5nIEdldFBh
Z2VTb3VyY2UoKTsKLSAgICB2b2lkIFNldFBhZ2VTb3VyY2UoY29uc3Qgd3hTdHJpbmcmIHNvdXJj
ZSwgY29uc3Qgd3hTdHJpbmcmIGJhc2VVcmwgPSB3eEVtcHR5U3RyaW5nLCBjb25zdCB3eFN0cmlu
ZyYgbWltZXR5cGUgPSB3eFQoInRleHQvaHRtbCIpKTsKLSAgICAKLSAgICB3eFN0cmluZyBHZXRJ
bm5lclRleHQoKTsKLSAgICB3eFN0cmluZyBHZXRBc01hcmt1cCgpOwotICAgIHd4U3RyaW5nIEdl
dEV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKLSAgICAKLSAgICBXZWJLaXRTZWxlY3Rpb24gR2V0
U2VsZWN0aW9uKCk7Ci0gICAgd3hTdHJpbmcgR2V0U2VsZWN0aW9uQXNIVE1MKCk7Ci0gICAgd3hT
dHJpbmcgR2V0U2VsZWN0aW9uQXNUZXh0KCk7Ci0gICAgCi0gICAgd3hTdHJpbmcgUnVuU2NyaXB0
KGNvbnN0IHd4U3RyaW5nJiBqYXZhc2NyaXB0KTsKLSAgICBib29sIEV4ZWN1dGVFZGl0Q29tbWFu
ZChjb25zdCB3eFN0cmluZyYgY29tbWFuZCwgY29uc3Qgd3hTdHJpbmcmIHBhcmFtZXRlciA9IHd4
RW1wdHlTdHJpbmcpOwotICAgIEVkaXRTdGF0ZSBHZXRFZGl0Q29tbWFuZFN0YXRlKGNvbnN0IHd4
U3RyaW5nJiBjb21tYW5kKSBjb25zdDsKLSAgICB3eFN0cmluZyBHZXRFZGl0Q29tbWFuZFZhbHVl
KGNvbnN0IHd4U3RyaW5nJiBjb21tYW5kKSBjb25zdDsKLSAgICAKLSAgICBib29sIEZpbmRTdHJp
bmcoY29uc3Qgd3hTdHJpbmcmIHN0cmluZywgYm9vbCBmb3J3YXJkID0gdHJ1ZSwKLSAgICAgICAg
Ym9vbCBjYXNlU2Vuc2l0aXZlID0gZmFsc2UsIGJvb2wgd3JhcFNlbGVjdGlvbiA9IHRydWUsCi0g
ICAgICAgIGJvb2wgc3RhcnRJblNlbGVjdGlvbiA9IHRydWUpOwotICAgIAotICAgIGJvb2wgQ2Fu
SW5jcmVhc2VUZXh0U2l6ZSgpIGNvbnN0OwotICAgIHZvaWQgSW5jcmVhc2VUZXh0U2l6ZSgpOwot
ICAgIGJvb2wgQ2FuRGVjcmVhc2VUZXh0U2l6ZSgpIGNvbnN0OwotICAgIHZvaWQgRGVjcmVhc2VU
ZXh0U2l6ZSgpOwotICAgIHZvaWQgUmVzZXRUZXh0U2l6ZSgpOwotICAgIHZvaWQgTWFrZUVkaXRh
YmxlKGJvb2wgZW5hYmxlKTsKLSAgICBib29sIElzRWRpdGFibGUoKSBjb25zdDsKLSAgICAKLSAg
ICBXZWJDb3JlOjpGcmFtZSogR2V0RnJhbWUoKTsKLQotICAgIFdlYlZpZXdET01FbGVtZW50SW5m
byBIaXRUZXN0KGNvbnN0IHd4UG9pbnQmIHBvc3QpIGNvbnN0OwotICAgIAotICAgIGJvb2wgU2hv
dWxkQ2xvc2UoKSBjb25zdDsKLSAgICAKLSAgICBXZWJLaXRDb21wYXRpYmlsaXR5TW9kZSBHZXRD
b21wYXRpYmlsaXR5TW9kZSgpIGNvbnN0OwotICAgIAotICAgIHZvaWQgR3JhbnRVbml2ZXJzYWxB
Y2Nlc3MoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgZmxvYXQgbV90ZXh0TWFnbmlmaWVyOwotICAg
IGJvb2wgbV9pc0luaXRpYWxpemVkOwotICAgIGJvb2wgbV9iZWluZ0Rlc3Ryb3llZDsKLSAgICBX
ZWJGcmFtZVByaXZhdGUqIG1faW1wbDsKLSAgICAKLX07Ci0KLSNpZm5kZWYgU1dJRwotV2ViRnJh
bWUqIGtpdChXZWJDb3JlOjpGcmFtZSopOwotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vIGlmbmRl
ZiBXZWJGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZVByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmVlNDYxZDIyMmFkZDBjYTY5NTcxOWJhYzAzYThhZjQyOTA5ZmY4OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3d4L1dlYkZyYW1lUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBLZXZpbiBPbGxpdmllci4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLSAKLSNpZm5kZWYgV1hXRUJGUkFNRVBSSVZBVEVfSAotI2RlZmluZSBXWFdFQkZSQU1F
UFJJVkFURV9ICi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKLQotY2xh
c3MgV2ViRnJhbWVQcml2YXRlIHsKLQotcHVibGljOgotICAgIFdlYkZyYW1lUHJpdmF0ZSgpIDoK
LSAgICAgICAgICAgIGZyYW1lKDApCi0gICAge30KLSAgICAKLSAgICBXZWJDb3JlOjpGcmFtZSog
ZnJhbWU7Ci19OwotCi1jbGFzcyBXZWJWaWV3RnJhbWVEYXRhCi17Ci1wdWJsaWM6Ci0gICAgV2Vi
Q29yZTo6S1VSTCB1cmw7Ci0gICAgV1RGOjpTdHJpbmcgbmFtZTsKLSAgICBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudDsKLSAgICAKLSAgICBXVEY6OlN0cmluZyBy
ZWZlcnJlcjsKLSAgICBib29sIGFsbG93c1Njcm9sbGluZzsKLSAgICBpbnQgbWFyZ2luV2lkdGg7
Ci0gICAgaW50IG1hcmdpbkhlaWdodDsgICAgCi19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0RGVmaW5lcy5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRE
ZWZpbmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZTQyMTY3YzRiMDc4ZDFi
ZGZhMzA0ZGJkOWZiYzIyMGJhYTNlMGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJLaXREZWZpbmVzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEtldmluIE9s
bGl2aWVyIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0gCi0jaWZuZGVmIFdlYktpdERlZmluZXNfaAotI2RlZmluZSBXZWJLaXREZWZp
bmVzX2gKLQotI2lmbmRlZiBTV0lHCi0KLSNpZiAhd3hDSEVDS19WRVJTSU9OKDIsIDksIDApICYm
IHd4Q0hFQ0tfR0NDX1ZFUlNJT04oNCwgMCkKLSNkZWZpbmUgV1hETExJTVBFWFBfV0VCS0lUIF9f
YXR0cmlidXRlX18gKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQotI2VsaWYgZGVmaW5lZChXWE1B
S0lOR0RMTF9XRUJLSVQpCi0jZGVmaW5lIFdYRExMSU1QRVhQX1dFQktJVCBXWEVYUE9SVAotI2Vs
c2UKLSNkZWZpbmUgV1hETExJTVBFWFBfV0VCS0lUIFdYSU1QT1JUCi0jZW5kaWYKLQotI2Vsc2UK
LSNkZWZpbmUgV1hETExJTVBFWFBfV0VCS0lUCi0jZW5kaWYgLy8gU1dJRwotCi0vLyBlbnVtcwot
ZW51bSBFZGl0U3RhdGUgeyBFZGl0U3RhdGVUcnVlLCBFZGl0U3RhdGVGYWxzZSwgRWRpdFN0YXRl
TWl4ZWQgfTsKLQotI2VuZGlmIC8vIFdlYktpdERlZmluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDkwNjA4OTYzYzMwOTYzNzg5ODllMTQwYTViYjMzZTJkNzUzYjIwMTAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQ5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEtldmluIE9sbGl2aWVyIDxr
ZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50V3guaCIKLSNpbmNsdWRlICJDb25zb2xlLmgiCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
LSNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKLSNlbmRpZgotI2luY2x1ZGUgIkZpbGVDaG9v
c2VyLmgiCi0jaW5jbHVkZSAiRmlsZUljb25Mb2FkZXIuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKLSNp
bmNsdWRlICJJY29uLmgiCi0jaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRl
ICJQb3B1cE1lbnVXeC5oIgotI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudVd4LmgiCi0jaW5jbHVk
ZSAiV2luZG93RmVhdHVyZXMuaCIKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlIDx3
eC93eHByZWMuaD4KLSNpZm5kZWYgV1hfUFJFQ09NUAotICAgICNpbmNsdWRlIDx3eC93eC5oPgot
I2VuZGlmCi0jaW5jbHVkZSA8d3gvdGV4dGRsZy5oPgotI2luY2x1ZGUgPHd4L3Rvb2x0aXAuaD4K
LQotI2luY2x1ZGUgIldlYkJyb3dzZXJTaGVsbC5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNp
bmNsdWRlICJXZWJWaWV3UHJpdmF0ZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdlYktpdFdpbmRvd0ZlYXR1cmVzIHdrRmVhdHVy
ZXNmb3JXaW5kb3dGZWF0dXJlcyhjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCi17Ci0g
ICAgV2ViS2l0V2luZG93RmVhdHVyZXMgd2tGZWF0dXJlczsKLSAgICB3a0ZlYXR1cmVzLm1lbnVC
YXJWaXNpYmxlID0gZmVhdHVyZXMubWVudUJhclZpc2libGU7Ci0gICAgd2tGZWF0dXJlcy5zdGF0
dXNCYXJWaXNpYmxlID0gZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZTsKLSAgICB3a0ZlYXR1cmVz
LnRvb2xCYXJWaXNpYmxlID0gZmVhdHVyZXMudG9vbEJhclZpc2libGU7Ci0gICAgd2tGZWF0dXJl
cy5sb2NhdGlvbkJhclZpc2libGUgPSBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGU7Ci0gICAg
d2tGZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxl
OwotICAgIHdrRmVhdHVyZXMucmVzaXphYmxlID0gZmVhdHVyZXMucmVzaXphYmxlOwotICAgIHdr
RmVhdHVyZXMuZnVsbHNjcmVlbiA9IGZlYXR1cmVzLmZ1bGxzY3JlZW47Ci0gICAgd2tGZWF0dXJl
cy5kaWFsb2cgPSBmZWF0dXJlcy5kaWFsb2c7Ci0gICAgCi0gICAgcmV0dXJuIHdrRmVhdHVyZXM7
Ci19Ci0KLUNocm9tZUNsaWVudFd4OjpDaHJvbWVDbGllbnRXeChXZWJWaWV3KiB3ZWJWaWV3KQot
ewotICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7Ci19Ci0KLUNocm9tZUNsaWVudFd4Ojp+Q2hyb21l
Q2xpZW50V3goKQotewotfQotCi12b2lkIENocm9tZUNsaWVudFd4OjpjaHJvbWVEZXN0cm95ZWQo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnNl
dFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi1GbG9hdFJlY3QgQ2hyb21lQ2xpZW50V3g6OndpbmRvd1JlY3QoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdCgpOwotfQotCi1GbG9hdFJlY3QgQ2hy
b21lQ2xpZW50V3g6OnBhZ2VSZWN0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBGbG9hdFJlY3QoKTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRXeDo6Zm9jdXMoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnVuZm9jdXMo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50V3g6OmNh
blRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRXeDo6dGFrZUZvY3VzKEZvY3Vz
RGlyZWN0aW9uKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xp
ZW50V3g6OmZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKikKLXsKLX0KLQotdm9pZCBDaHJvbWVDbGll
bnRXeDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopCi17Ci19Ci0KLVBhZ2UqIENocm9tZUNs
aWVudFd4OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29u
c3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKLXsK
LSAgICBQYWdlKiBteVBhZ2UgPSAwOwotICAgIFdlYlZpZXdOZXdXaW5kb3dFdmVudCB3a0V2ZW50
KG1fd2ViVmlldyk7Ci0gICAgCi0gICAgV2ViS2l0V2luZG93RmVhdHVyZXMgd2tGZWF0dXJlcyA9
IHdrRmVhdHVyZXNmb3JXaW5kb3dGZWF0dXJlcyhmZWF0dXJlcyk7Ci0gICAgd2tFdmVudC5TZXRX
aW5kb3dGZWF0dXJlcyh3a0ZlYXR1cmVzKTsKLSAgICAKLSAgICBpZiAobV93ZWJWaWV3LT5HZXRF
dmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpKSB7Ci0gICAgICAgIGlmIChXZWJW
aWV3KiB3ZWJWaWV3ID0gd2tFdmVudC5HZXRXZWJWaWV3KCkpIHsKLSAgICAgICAgICAgIFdlYlZp
ZXdQcml2YXRlKiBpbXBsID0gd2ViVmlldy0+bV9pbXBsOwotICAgICAgICAgICAgaWYgKGltcGwp
Ci0gICAgICAgICAgICAgICAgbXlQYWdlID0gaW1wbC0+cGFnZTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICByZXR1cm4gbXlQYWdlOwotfQotCi1QYWdlKiBDaHJvbWVDbGllbnRXeDo6Y3Jl
YXRlTW9kYWxEaWFsb2coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIENocm9tZUNsaWVudFd4
OjpzaG93KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIENocm9tZUNsaWVu
dFd4OjpjYW5SdW5Nb2RhbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnJ1bk1vZGFsKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIENocm9tZUNsaWVudFd4OjpzZXRUb29sYmFyc1Zpc2li
bGUoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIENocm9tZUNsaWVu
dFd4Ojp0b29sYmFyc1Zpc2libGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi12b2lkIENocm9tZUNsaWVudFd4OjpzZXRTdGF0dXNiYXJWaXNpYmxl
KGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRX
eDo6c3RhdHVzYmFyVmlzaWJsZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnNldFNjcm9sbGJhcnNWaXNpYmxl
KGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRX
eDo6c2Nyb2xsYmFyc1Zpc2libGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi12b2lkIENocm9tZUNsaWVudFd4OjpzZXRNZW51YmFyVmlzaWJsZShi
b29sKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50V3g6
Om1lbnViYXJWaXNpYmxlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRXeDo6c2V0UmVzaXphYmxlKGJvb2wpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRXeDo6YWRkTWVzc2Fn
ZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VMZXZlbCBsZXZlbCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNv
dXJjZUlEKQotewotICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgV2ViVmlld0NvbnNvbGVN
ZXNzYWdlRXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOwotICAgICAgICB3a0V2ZW50LlNldE1lc3Nh
Z2UobWVzc2FnZSk7Ci0gICAgICAgIHdrRXZlbnQuU2V0TGluZU51bWJlcihsaW5lTnVtYmVyKTsK
LSAgICAgICAgd2tFdmVudC5TZXRTb3VyY2VJRChzb3VyY2VJRCk7Ci0gICAgICAgIHdrRXZlbnQu
U2V0TGV2ZWwoc3RhdGljX2Nhc3Q8V2ViVmlld0NvbnNvbGVNZXNzYWdlTGV2ZWw+KGxldmVsKSk7
Ci0gICAgICAgIG1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2
ZW50KTsKLSAgICB9Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50V3g6OmNhblJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRXeDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KGNvbnN0IFN0cmluZyYgc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGcmFtZSogZnJhbWUpCi17Ci0gICAgd3hNZXNzYWdlRGlhbG9nIGRp
YWxvZyhOVUxMLCBzdHJpbmcsIHd4VCgiQ29uZmlybSBBY3Rpb24/IiksIHd4WUVTX05PKTsKLSAg
ICByZXR1cm4gZGlhbG9nLlNob3dNb2RhbCgpID09IHd4WUVTOwotfQotCi12b2lkIENocm9tZUNs
aWVudFd4OjpjbG9zZVdpbmRvd1Nvb24oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LS8qCi0gICAgU2l0ZXMgZm9yIHRlc3RpbmcgcHJvbXB0czogCi0gICAgQWxlcnQgLSBqdXN0IHR5
cGUgaW4gYSBiYWQgd2ViIGFkZHJlc3Mgb3IgaHR0cDovL3d3dy5odG1saXRlLmNvbS9KUzAwMi5w
aHAKLSAgICBQcm9tcHQgLSBodHRwOi8vd3d3Lmh0bWxpdGUuY29tL0pTMDA3LnBocAotICAgIENv
bmZpcm0gLSBodHRwOi8vd3d3Lmh0bWxpdGUuY29tL0pTMDA2LnBocAotKi8KLQotdm9pZCBDaHJv
bWVDbGllbnRXeDo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCi17Ci0gICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICBXZWJWaWV3QWxlcnRF
dmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0TWVzc2FnZShzdHJp
bmcpOwotICAgICAgICBpZiAoIW1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NF
dmVudCh3a0V2ZW50KSkKLSAgICAgICAgICAgIHd4TWVzc2FnZUJveChzdHJpbmcsIHd4VCgiSmF2
YVNjcmlwdCBBbGVydCIpLCB3eE9LKTsKLSAgICB9Ci19Ci0KLWJvb2wgQ2hyb21lQ2xpZW50V3g6
OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcp
Ci17Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAg
ICAgIFdlYlZpZXdDb25maXJtRXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOwotICAgICAgICB3a0V2
ZW50LlNldE1lc3NhZ2Uoc3RyaW5nKTsKLSAgICAgICAgaWYgKG1fd2ViVmlldy0+R2V0RXZlbnRI
YW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHdr
RXZlbnQuR2V0UmV0dXJuQ29kZSgpID09IHd4SURfWUVTOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIHd4TWVzc2FnZURpYWxvZyBkaWFsb2coTlVMTCwgc3RyaW5nLCB3eFQoIkphdmFTY3Jp
cHQgQ29uZmlybSIpLCB3eFlFU19OTyk7Ci0gICAgICAgICAgICBkaWFsb2cuQ2VudHJlKCk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSAoZGlhbG9nLlNob3dNb2RhbCgpID09IHd4SURfWUVTKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIENocm9tZUNsaWVu
dFd4OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpCi17Ci0gICAg
aWYgKG1fd2ViVmlldykgewotICAgICAgICBXZWJWaWV3UHJvbXB0RXZlbnQgd2tFdmVudChtX3dl
YlZpZXcpOwotICAgICAgICB3a0V2ZW50LlNldE1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAgIHdr
RXZlbnQuU2V0UmVzcG9uc2UoZGVmYXVsdFZhbHVlKTsKLSAgICAgICAgaWYgKG1fd2ViVmlldy0+
R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KSkgewotICAgICAgICAgICAg
cmVzdWx0ID0gd2tFdmVudC5HZXRSZXNwb25zZSgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB3eFRleHRFbnRyeURpYWxv
ZyBkaWFsb2coTlVMTCwgbWVzc2FnZSwgd3hUKCJKYXZhU2NyaXB0IFByb21wdCIpLCB3eEVtcHR5
U3RyaW5nLCB3eE9LIHwgd3hDQU5DRUwpOwotICAgICAgICAgICAgZGlhbG9nLkNlbnRyZSgpOwot
ICAgICAgICAgICAgaWYgKGRpYWxvZy5TaG93TW9kYWwoKSA9PSB3eElEX09LKSB7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gZGlhbG9nLkdldFZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi12b2lkIENocm9tZUNsaWVudFd4OjpzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0
cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBDaHJvbWVDbGllbnRX
eDo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUtleWJvYXJkVUlNb2RlIENocm9tZUNsaWVudFd4Ojpr
ZXlib2FyZFVJTW9kZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gS2V5
Ym9hcmRBY2Nlc3NEZWZhdWx0OwotfQotCi1JbnRSZWN0IENocm9tZUNsaWVudFd4Ojp3aW5kb3dS
ZXNpemVyUmVjdCgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
SW50UmVjdCgpOwotfQotCi12b2lkIENocm9tZUNsaWVudFd4OjppbnZhbGlkYXRlUm9vdFZpZXco
Y29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBpbW1lZGlhdGUpCi17Ci0gICAgaWYgKGltbWVkaWF0
ZSkKLSAgICAgICAgbV93ZWJWaWV3LT5VcGRhdGUoKTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRX
eDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JiByZWN0LCBi
b29sIGltbWVkaWF0ZSkKLXsKLSAgICBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290VmlldyhyZWN0
LCBpbW1lZGlhdGUpOwotfQotCi12b2lkIENocm9tZUNsaWVudFd4OjppbnZhbGlkYXRlQ29udGVu
dHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIGltbWVkaWF0ZSkKLXsKLSAg
ICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93ZWJWaWV3LT5SZWZy
ZXNoUmVjdChyZWN0KTsKLQotICAgIGlmIChpbW1lZGlhdGUpIHsKLSAgICAgICAgbV93ZWJWaWV3
LT5VcGRhdGUoKTsKLSAgICB9Ci19Ci0KLUludFJlY3QgQ2hyb21lQ2xpZW50V3g6OnJvb3RWaWV3
VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiByZWN0OwotfQotCi1JbnRQb2ludCBDaHJvbWVDbGllbnRXeDo6c2Ny
ZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gcG9pbnQ7Ci19Ci0KLVBsYXRmb3JtUGFnZUNsaWVudCBD
aHJvbWVDbGllbnRXeDo6cGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV93ZWJWaWV3OwotfQotCi12b2lkIENocm9tZUNsaWVudFd4Ojpjb250ZW50c1NpemVDaGFuZ2Vk
KEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBDaHJvbWVDbGllbnRXeDo6c2Nyb2xsQmFja2luZ1N0b3JlKGludCBkeCwgaW50
IGR5LCAKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc2Nyb2xsVmlld1JlY3Qs
IAotICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIENocm9tZUNsaWVudFd4Ojp1cGRhdGVCYWNraW5n
U3RvcmUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50
V3g6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25l
ZCBtb2RpZmllckZsYWdzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ2hy
b21lQ2xpZW50V3g6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0aXAsIFRleHREaXJlY3Rpb24p
Ci17Ci0gICAgd3hUb29sVGlwKiB0b29sdGlwID0gbV93ZWJWaWV3LT5HZXRUb29sVGlwKCk7Ci0g
ICAgaWYgKCF0b29sdGlwIHx8IHRvb2x0aXAtPkdldFRpcCgpICE9IHd4U3RyaW5nKHRpcCkpCi0g
ICAgICAgIG1fd2ViVmlldy0+U2V0VG9vbFRpcCh0aXApOwotfQotCi12b2lkIENocm9tZUNsaWVu
dFd4OjpwcmludChGcmFtZSogZnJhbWUpCi17Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0ga2l0
KGZyYW1lKTsKLSAgICBpZiAod2ViRnJhbWUpIHsKLSAgICAgICAgV2ViVmlld1ByaW50RnJhbWVF
dmVudCBldmVudChtX3dlYlZpZXcpOwotICAgICAgICBldmVudC5TZXRXZWJGcmFtZSh3ZWJGcmFt
ZSk7Ci0gICAgICAgIGlmICghbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2
ZW50KGV2ZW50KSkKLSAgICAgICAgICAgIHdlYkZyYW1lLT5QcmludCh0cnVlKTsKLSAgICB9Ci19
Ci0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotdm9pZCBDaHJvbWVDbGllbnRXeDo6ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgRGF0YWJhc2VEZXRhaWxzKQot
ewotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKLQotICAg
IGlmIChXZWJGcmFtZSogd2ViRnJhbWUgPSBtX3dlYlZpZXctPkdldE1haW5GcmFtZSgpKQotICAg
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gd2ViRnJhbWUtPkdldEZyYW1lKCkpCi0gICAgICAgICAg
ICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAg
ICAgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNFbnRyeUZvck9yaWdpbihk
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAgICAgICAgICAgICAgICAgIERhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBx
dW90YSk7Ci19Ci0jZW5kaWYKLQotdm9pZCBDaHJvbWVDbGllbnRXeDo6cmVhY2hlZE1heEFwcENh
Y2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnNjcm9sbChjb25zdCBJbnRTaXplJiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFJlY3QmKQotewotICAgIG1fd2ViVmlldy0+UmVmcmVzaCgpOwotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnJ1bk9wZW5QYW5l
bChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgQ2hyb21lQ2xpZW50V3g6OmxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRmlsZUljb25Mb2FkZXIqIGxvYWRlcikKLXsKLSAgICBs
b2FkZXItPm5vdGlmeUZpbmlzaGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMp
KTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnRXeDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vy
c29yKQotewotICAgIGlmIChtX3dlYlZpZXcgJiYgY3Vyc29yLmltcGwoKSkKLSAgICAgICAgbV93
ZWJWaWV3LT5TZXRDdXJzb3IoKmN1cnNvci5pbXBsKCkpOwotfQotCi1ib29sIENocm9tZUNsaWVu
dFd4OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCi17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIENocm9tZUNsaWVudFd4OjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9s
bG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVBh
c3NSZWZQdHI8UG9wdXBNZW51PiBDaHJvbWVDbGllbnRXeDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCogY2xpZW50KSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9w
dXBNZW51V3goY2xpZW50KSk7Ci19Ci0KLVBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBDaHJv
bWVDbGllbnRXeDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51V3goY2xp
ZW50KSk7Ci19Ci0gICAgCi1ib29sIENocm9tZUNsaWVudFd4OjpoYXNPcGVuZWRQb3B1cCgpIGNv
bnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhODU1N2VjMzYyNTU1OGU5ODNmNGQyMzRhZDNj
YWQ1OGRhYTg5OWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBLZXZp
biBPbGxpdmllciA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDaHJvbWVDbGllbnRXeF9ICi0j
ZGVmaW5lIENocm9tZUNsaWVudFd4X0gKLQotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2lu
Y2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUg
IldlYlZpZXcuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBDaHJvbWVDbGllbnRXeCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewotcHVi
bGljOgotICAgIENocm9tZUNsaWVudFd4KFdlYlZpZXcqKTsKLSAgICB2aXJ0dWFsIH5DaHJvbWVD
bGllbnRXeCgpOwotICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2aXJ0dWFsIEZsb2F0UmVj
dCB3aW5kb3dSZWN0KCk7Ci0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBwYWdlUmVjdCgpOwotCi0g
ICAgdmlydHVhbCB2b2lkIGZvY3VzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoKTsKLQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pOwotICAgIHZpcnR1
YWwgdm9pZCB0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pOwotCi0gICAgdmlydHVhbCB2b2lkIGZv
Y3VzZWROb2RlQ2hhbmdlZChOb2RlKik7Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzZWRGcmFtZUNo
YW5nZWQoRnJhbWUqKTsKLQotICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwg
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYpOwotICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlTW9kYWxEaWFsb2coRnJh
bWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNob3coKTsK
LQotICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpOwotICAgIHZpcnR1YWwgdm9pZCBydW5N
b2RhbCgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29sKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U3RhdHVzYmFyVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJs
ZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpOwotICAg
IHZpcnR1YWwgYm9vbCBzY3JvbGxiYXJzVmlzaWJsZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNl
dE1lbnViYXJWaXNpYmxlKGJvb2wpOwotICAgIHZpcnR1YWwgYm9vbCBtZW51YmFyVmlzaWJsZSgp
OwotCi0gICAgdmlydHVhbCB2b2lkIHNldFJlc2l6YWJsZShib29sKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VMZXZlbCBsZXZlbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KCk7Ci0gICAgdmlydHVhbCBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGcmFtZSogZnJhbWUpOwotCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigp
OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25z
dCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUq
LCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChG
cmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUs
IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25z
dCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgp
OwotICAgIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1v
ZGUoKTsKLQotICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCYWNraW5nU3RvcmUoaW50IGR4LCBpbnQgZHksIGNvbnN0
IEludFJlY3QmIHNjcm9sbFZpZXdSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgSW50UmVjdCYsIGJvb2wpOwotICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiwgYm9vbCk7
Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3Qg
SW50UmVjdCYsIGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpOwotCi0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4o
Y29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBs
YXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVD
aGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lk
IHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2Rp
ZmllckZsYWdzKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYs
IFRleHREaXJlY3Rpb24pOwotCi0gICAgdmlydHVhbCB2b2lkIHByaW50KEZyYW1lKik7Ci0KLSNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNl
UXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcmLCBEYXRhYmFzZURldGFpbHMpOwotI2VuZGlmCi0K
LSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVl
ZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCk7Ci0gICAgdmlydHVh
bCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZp
bGVJY29uTG9hZGVyKik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNv
bnN0IE5vZGUqKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29y
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29s
KSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgSW50UmVj
dCYpIGNvbnN0IHsgfQotCi0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0
aW9uSXNOYXR1cmFsKCk7Ci0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xs
b3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBN
ZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRJ
bkRpcmVjdGlvbihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25l
ZCkgeyB9Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgV2ViVmlldyogbV93ZWJWaWV3OwotfTsKLQotfQotI2VuZGlmIC8vIENo
cm9tZUNsaWVudFd4X0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudFd4LmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudFd4LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGI3M2I2MThjZDg0ZThhNzFlZDI5NDM1NDllNWVjNTgxMDA4ZGUzNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRXeC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEtldmluIE9sbGl2aWVyIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudFd4LmgiCi0jaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJDb250ZXh0TWVudS5oIgotI2luY2x1ZGUg
PHN0ZGlvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ29udGV4dE1lbnVDbGllbnRXeDo6
fkNvbnRleHRNZW51Q2xpZW50V3goKQotewotfQotCi12b2lkIENvbnRleHRNZW51Q2xpZW50V3g6
OmNvbnRleHRNZW51RGVzdHJveWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLQotUGxhdGZv
cm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRXeDo6Z2V0Q3VzdG9tTWVudUZyb21E
ZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUpCi17Ci0gICAgcmV0dXJuIG1lbnUtPnJlbGVh
c2VQbGF0Zm9ybURlc2NyaXB0aW9uKCk7Ci19Ci0KLXZvaWQgQ29udGV4dE1lbnVDbGllbnRXeDo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRleHRNZW51KikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIENvbnRleHRNZW51Q2xpZW50V3g6
OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgQ29udGV4dE1lbnVDbGllbnRXeDo6Y29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgSGl0
VGVzdFJlc3VsdCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBDb250ZXh0
TWVudUNsaWVudFd4OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIENvbnRleHRNZW51Q2xpZW50V3g6Omxvb2tVcEluRGlj
dGlvbmFyeShGcmFtZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBDb250
ZXh0TWVudUNsaWVudFd4OjpzcGVhayhjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgQ29udGV4dE1lbnVDbGllbnRXeDo6c3RvcFNwZWFraW5nKCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIENvbnRleHRNZW51Q2xpZW50V3g6Omlz
U3BlYWtpbmcoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRXeC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50V3guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAzMGMxZDJjODU2
OGQ2ODdjYTFiZDk2MjE1YmNmOTJlNWM4MDg3OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRXeC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBLZXZpbiBPbGxpdmllciA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+
Ci0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbnRleHRNZW51
Q2xpZW50V3hfaAotI2RlZmluZSBDb250ZXh0TWVudUNsaWVudFd4X2gKLQotI2luY2x1ZGUgIkNv
bnRleHRNZW51Q2xpZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDb250ZXh0TWVudUNsaWVudFd4IDogcHVi
bGljIENvbnRleHRNZW51Q2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Db250ZXh0TWVu
dUNsaWVudFd4KCk7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCk7Ci0K
LSAgICB2aXJ0dWFsIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIGdldEN1c3RvbU1lbnVGcm9tRGVm
YXVsdEl0ZW1zKENvbnRleHRNZW51Kik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbnRleHRNZW51Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZG93
bmxvYWRVUkwoY29uc3QgS1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VUb0NsaXBi
b2FyZChjb25zdCBIaXRUZXN0UmVzdWx0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhH
b29nbGUoY29uc3QgRnJhbWUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5
KEZyYW1lKik7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpOwotICAgIHZp
cnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygp
OwotfTsKLQotfQotCi0jZW5kaWYgLy8gQ29udGV4dE1lbnVDbGllbnRXeF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRHJhZ0NsaWVudFd4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9EcmFnQ2xpZW50V3guY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3NTc0NGJhMDRhMzgyZWRmNGZhYjc5NmJmOGJkYzkxNDMzNWEwMDlk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9EcmFnQ2xpZW50V3guY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
RHJhZ0NsaWVudFd4LmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi0jaW5jbHVk
ZSA8c3RkaW8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EcmFnRGVzdGluYXRpb25BY3Rp
b24gRHJhZ0NsaWVudFd4OjphY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSopCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55OwotfQot
Ci12b2lkIERyYWdDbGllbnRXeDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERyYWdEYXRhKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIERyYWdDbGllbnRXeDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3Vy
Y2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERyYWdDbGllbnRXeDo6ZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLURyYWdTb3VyY2VBY3Rpb24gRHJhZ0Ns
aWVudFd4OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uQW55Owot
fQotCi12b2lkIERyYWdDbGllbnRXeDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiBkcmFnSW1hZ2Us
IAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdp
biwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIENs
aXBib2FyZCosIAotICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUqLCBib29sIGxpbmtEcmFn
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9EcmFnQ2xpZW50V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9EcmFnQ2xpZW50V3guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDU0MjVjNDlmNTZjMTQxNzNiYjM1N2NlN2Y5NWM2MmRmZTNmN2Q1NS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRHJhZ0NsaWVudFd4LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCi0jaW5jbHVkZSAiRHJhZ0RhdGEuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEcmFnQ2xpZW50V3ggOiBwdWJsaWMgV2Vi
Q29yZTo6RHJhZ0NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6
RHJhZ0RhdGEqKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9u
KFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2Vi
Q29yZTo6Q2xpcGJvYXJkKik7Ci0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlv
bkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSopOwotICAgIHZpcnR1
YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7Ci0gICAgICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoV2Vi
Q29yZTo6RHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRy
YWdJbWFnZU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGV2ZW50UG9zLCBXZWJDb3Jl
OjpDbGlwYm9hcmQqLCBXZWJDb3JlOjpGcmFtZSosIGJvb2wgbGlua0RyYWcgPSBmYWxzZSk7Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdENv
bW1hbmRXeC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRDb21tYW5kV3gu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVkZWVkZDY0ZjA1Y2Y4MTgzZWIyMWUw
OTJlNDlkNjE0NmQ1MDdlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdENvbW1hbmRXeC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBL
ZXZpbiBPbGxpdmllci4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSNpZm5kZWYgV1hFRElUQ09N
TUFORF9ICi0jZGVmaW5lIFdYRURJVENPTU1BTkRfSAotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICBjbGFzcyBFZGl0Q29tbWFuZDsKLX0KLQotY2xhc3MgRWRpdENvbW1hbmRXeCAKLXsKLXB1Ymxp
YzoKLSAgICBFZGl0Q29tbWFuZFd4KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFu
ZD4gY29tbWFuZCkgCi0gICAgewotICAgICAgICBtX2VkaXRDb21tYW5kID0gY29tbWFuZDsKLSAg
ICB9Ci0gICAgCi0gICAgfkVkaXRDb21tYW5kV3goKSB7fQotICAgIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpFZGl0Q29tbWFuZD4gZWRpdENvbW1hbmQoKSB7IHJldHVybiBtX2VkaXRDb21tYW5k
OyB9Ci0gICAgCi1wcml2YXRlOgotICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5k
PiBtX2VkaXRDb21tYW5kOwotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwIGIvU291cmNlL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjhjZjZiODI2OTE4NjBjY2NkZTk1NGE2ODg5NWFlMWM4NWQwMmZiYi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTc1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgS2V2aW4gT2xsaXZpZXIgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFZGl0b3JDbGllbnRXeC5oIgotCi0jaW5jbHVkZSAi
RWRpdENvbW1hbmQuaCIKLSNpbmNsdWRlICJFZGl0b3IuaCIKLSNpbmNsdWRlICJGb2N1c0NvbnRy
b2xsZXIuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgotI2luY2x1
ZGUgIktleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1
ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRl
ICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViRnJhbWVQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgIldlYlZpZXdQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN0
cmxLZXkgPSAxIDw8IDA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgQWx0S2V5ID0gMSA8PCAxOwot
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFNoaWZ0S2V5ID0gMSA8PCAyOwotCi1zdHJ1Y3QgS2V5RG93
bkVudHJ5IHsKLSAgICB1bnNpZ25lZCB2aXJ0dWFsS2V5OwotICAgIHVuc2lnbmVkIG1vZGlmaWVy
czsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotfTsKLQotc3RydWN0IEtleVByZXNzRW50cnkgewot
ICAgIHVuc2lnbmVkIGNoYXJDb2RlOwotICAgIHVuc2lnbmVkIG1vZGlmaWVyczsKLSAgICBjb25z
dCBjaGFyKiBuYW1lOwotfTsKLQotc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBrZXlEb3duRW50
cmllc1tdID0gewotICAgIHsgVktfTEVGVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlTGVm
dCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfTEVGVCwg
ICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAg
ICAgICAgICAgICB9LAotICAgIHsgVktfTEVGVCwgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3Zl
V29yZExlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfTEVG
VCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgICB9LAotICAgIHsgVktfUklHSFQsICAwLCAgICAgICAgICAgICAgICAgICJN
b3ZlUmlnaHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktf
UklHSFQsICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUklHSFQsICBDdHJsS2V5LCAgICAgICAgICAg
ICJNb3ZlV29yZFJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsg
VktfUklHSFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2Vs
ZWN0aW9uIiAgICAgICAgICAgICB9LAotICAgIHsgVktfVVAsICAgICAwLCAgICAgICAgICAgICAg
ICAgICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
IHsgVktfVVAsICAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rp
b24iICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUFJJT1IsICBTaGlmdEtleSwgICAg
ICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LAot
ICAgIHsgVktfRE9XTiwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfRE9XTiwgICBTaGlmdEtleSwg
ICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICB9
LAotICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAotICAgIHsgVktfUFJJT1IsICAwLCAgICAg
ICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgIHsgVktfTkVYVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24i
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfSE9NRSwgICAwLCAg
ICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgIHsgVktfSE9NRSwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9CZWdp
bm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICB9LAotICAgIHsgVktfSE9NRSwgICBD
dHJsS2V5LCAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiAgICAgICAgICAg
ICAgICAgICB9LAotICAgIHsgVktfSE9NRSwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotCi0gICAgeyBWS19FTkQs
ICAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1v
dmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgIH0sCi0gICAgeyBWS19F
TkQsICAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAgIEN0cmxLZXkgfCBTaGlmdEtleSwg
Ik1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgIH0sCi0KLSAgICB7
IFZLX0JBQ0ssICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAg
ICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICB7IFZLX0RFTEVURSwgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0JBQ0ssICAgQ3RybEtleSwgICAg
ICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICB7IFZLX0RFTEVURSwgQ3RybEtleSwgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAKLSAgICB7ICdCJywgICAgICAgQ3Ry
bEtleSwgICAgICAgICAgICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICB7ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRh
bGljIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQotICAgIHsgVktfRVNDQVBF
LCAwLCAgICAgICAgICAgICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgIC8vRklYTUU6IHRoaXMnbGwgbmV2ZXIgaGFwcGVuLiBXZSBjYW4g
dHJhc2ggaXQgb3IgbWFrZSBpdCBhIG5vcm1hbCBwZXJpb2QKLSAgICB7IFZLX09FTV9QRVJJT0Qs
IEN0cmxLZXksICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICB7IFZLX1RBQiwgICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFi
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1RBQiwgICAg
U2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVSTiwgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0
TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVS
TiwgQ3RybEtleSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVSTiwgQWx0S2V5LCAgICAgICAgICAgICAiSW5z
ZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JF
VFVSTiwgU2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ0EnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAg
ICJTZWxlY3RBbGwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsg
J1onLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJVbmRvIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1onLCAgICAgICBDdHJsS2V5IHwgU2hpZnRL
ZXksICJSZWRvIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotfTsK
LQotc3RhdGljIGNvbnN0IEtleVByZXNzRW50cnkga2V5UHJlc3NFbnRyaWVzW10gPSB7Ci0gICAg
eyAnXHQnLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydFRhYiIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyAnXHQnLCAgIFNoaWZ0S2V5LCAgICAgICAgICAg
Ikluc2VydEJhY2t0YWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyAn
XHInLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgeyAnXHInLCAgIEN0cmxLZXksICAgICAgICAgICAgIklu
c2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyAnXHIn
LCAgIEFsdEtleSwgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgeyAnXHInLCAgIEFsdEtleSB8IFNoaWZ0S2V5LCAgIkluc2Vy
dE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi19OwotCi1FZGl0b3JD
bGllbnRXeDo6fkVkaXRvckNsaWVudFd4KCkKLXsKLSAgICBtX3BhZ2UgPSBOVUxMOwotfQotCi12
b2lkIEVkaXRvckNsaWVudFd4OjpzZXRQYWdlKFBhZ2UqIHBhZ2UpCi17Ci0gICAgbV9wYWdlID0g
cGFnZTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRXeDo6cGFnZURlc3Ryb3llZCgpCi17Ci0gICAg
ZGVsZXRlIHRoaXM7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50V3g6OnNob3VsZERlbGV0ZVJhbmdl
KFJhbmdlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIEVkaXRvckNsaWVudFd4OjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKQotewotICAg
IGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fcGFnZS0+
c2V0dGluZ3MoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7Ci19Ci0KLWJvb2wgRWRpdG9y
Q2xpZW50V3g6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpCi17Ci0gICAgaWYg
KCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9wYWdlLT5zZXR0
aW5ncygpLT5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7Ci19Ci0KLWJvb2wgRWRp
dG9yQ2xpZW50V3g6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBFZGl0b3JDbGll
bnRXeDo6dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50V3g6OmlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgRWRpdG9yQ2xpZW50V3g6OnRvZ2dsZUdyYW1tYXJDaGVja2luZygpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotaW50IEVkaXRvckNsaWVudFd4OjpzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9v
bCBFZGl0b3JDbGllbnRXeDo6c2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCgpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50
V3g6OnNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRXeDo6c2hvdWxkRW5kRWRp
dGluZyhSYW5nZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBFZGl0b3JDbGllbnRXeDo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiwgUmFuZ2Uq
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdG9ySW5zZXJ0QWN0
aW9uKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgRWRpdG9yQ2xpZW50V3g6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2Uq
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdG9ySW5zZXJ0QWN0
aW9uKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgRWRpdG9yQ2xpZW50V3g6OnNob3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0eVNldCosCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSopCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRX
eDo6c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoUmFuZ2UqLCBSYW5nZSopCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRX
eDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShSYW5nZSogZnJvbVJhbmdlLCBSYW5nZSogdG9S
YW5nZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVBZmZpbml0eSwgYm9vbCBz
dGlsbFNlbGVjdGluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIEVkaXRvckNsaWVudFd4OjpkaWRCZWdpbkVkaXRpbmcoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50V3g6OnJlc3BvbmRUb0NoYW5n
ZWRDb250ZW50cygpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgCi0gICAgaWYgKGZyYW1lKSB7Ci0gICAg
ICAgIFdlYktpdDo6V2ViVmlldyogd2ViS2l0V2luID0gZHluYW1pY19jYXN0PFdlYktpdDo6V2Vi
Vmlldyo+KGZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkp
OwotICAgICAgICBpZiAod2ViS2l0V2luKSB7Ci0gICAgICAgICAgICBXZWJLaXQ6OldlYlZpZXdD
b250ZW50c0NoYW5nZWRFdmVudCB3a0V2ZW50KHdlYktpdFdpbik7Ci0gICAgICAgICAgICB3ZWJL
aXRXaW4tPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tFdmVudCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50V3g6OmRpZEVuZEVkaXRpbmcoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50V3g6OmRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEVkaXRvckNsaWVudFd4Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29y
ZTo6UmFuZ2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xp
ZW50V3g6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBW
ZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudFd4OjpkaWRT
ZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50V3g6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxV
bmRvU3RlcD4gc3RlcCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLQotICAgIGlmIChmcmFtZSkgewotICAgICAg
ICBXZWJWaWV3KiB3ZWJLaXRXaW4gPSBkeW5hbWljX2Nhc3Q8V2ViVmlldyo+KGZyYW1lLT52aWV3
KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOwotICAgICAgICBpZiAod2Vi
S2l0V2luKQotICAgICAgICAgICAgd2ViS2l0V2luLT5tX2ltcGwtPnVuZG9TdGFjay5hcHBlbmQo
c3RlcCk7Ci0gICAgfQotfQotCi12b2lkIEVkaXRvckNsaWVudFd4OjpyZWdpc3RlclJlZG9TdGVw
KFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBpZiAoZnJh
bWUpIHsKLSAgICAgICAgV2ViVmlldyogd2ViS2l0V2luID0gZHluYW1pY19jYXN0PFdlYlZpZXcq
PihmcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKLSAg
ICAgICAgaWYgKHdlYktpdFdpbikKLSAgICAgICAgICAgIHdlYktpdFdpbi0+bV9pbXBsLT5yZWRv
U3RhY2suYXBwZW5kKHN0ZXApOwotICAgIH0KLX0KLQotdm9pZCBFZGl0b3JDbGllbnRXeDo6Y2xl
YXJVbmRvUmVkb09wZXJhdGlvbnMoKQotewotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIAotICAgIGlmIChmcmFt
ZSkgewotICAgICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDxX
ZWJLaXQ6OldlYlZpZXcqPihmcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFn
ZUNsaWVudCgpKTsKLSAgICAgICAgaWYgKHdlYktpdFdpbikgewotICAgICAgICAgICAgd2ViS2l0
V2luLT5tX2ltcGwtPnJlZG9TdGFjay5jbGVhcigpOwotICAgICAgICAgICAgd2ViS2l0V2luLT5t
X2ltcGwtPnVuZG9TdGFjay5jbGVhcigpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIEVk
aXRvckNsaWVudFd4OjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLX0KLQotYm9vbCBFZGl0b3JDbGllbnRXeDo6
Y2FuUGFzdGUoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKLXsKLSAgICByZXR1cm4g
ZGVmYXVsdFZhbHVlOwotfQotCi1ib29sIEVkaXRvckNsaWVudFd4OjpjYW5VbmRvKCkgY29uc3QK
LXsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKLQotICAgIGlmIChmcmFtZSkgewotICAgICAgICBXZWJLaXQ6OldlYlZp
ZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDxXZWJLaXQ6OldlYlZpZXcqPihmcmFtZS0+dmll
dygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKLSAgICAgICAgaWYgKHdl
YktpdFdpbikgewotICAgICAgICAgICAgcmV0dXJuIHdlYktpdFdpbi0+bV9pbXBsLT51bmRvU3Rh
Y2suc2l6ZSgpICE9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1ib29sIEVkaXRvckNsaWVudFd4OjpjYW5SZWRvKCkgY29uc3QKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLQot
ICAgIGlmIChmcmFtZSkgewotICAgICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYktpdFdpbiA9IGR5
bmFtaWNfY2FzdDxXZWJLaXQ6OldlYlZpZXcqPihmcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCkt
PnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKLSAgICAgICAgaWYgKHdlYktpdFdpbiAmJiB3ZWJLaXRX
aW4pIHsKLSAgICAgICAgICAgIHJldHVybiB3ZWJLaXRXaW4tPm1faW1wbC0+cmVkb1N0YWNrLnNp
emUoKSAhPSAwOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9p
ZCBFZGl0b3JDbGllbnRXeDo6dW5kbygpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBpZiAoZnJhbWUp
IHsKLSAgICAgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJLaXRXaW4gPSBkeW5hbWljX2Nhc3Q8V2Vi
S2l0OjpXZWJWaWV3Kj4oZnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VD
bGllbnQoKSk7Ci0gICAgICAgIGlmICh3ZWJLaXRXaW4pIHsKLSAgICAgICAgICAgIHdlYktpdFdp
bi0+bV9pbXBsLT51bmRvU3RhY2subGFzdCgpLT51bmFwcGx5KCk7Ci0gICAgICAgICAgICB3ZWJL
aXRXaW4tPm1faW1wbC0+dW5kb1N0YWNrLnJlbW92ZSgtLXdlYktpdFdpbi0+bV9pbXBsLT51bmRv
U3RhY2suZW5kKCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEVkaXRvckNsaWVudFd4
OjpyZWRvKCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLQotICAgIGlmIChmcmFtZSkgeyAgICAKLSAgICAgICAg
V2ViS2l0OjpXZWJWaWV3KiB3ZWJLaXRXaW4gPSBkeW5hbWljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3
Kj4oZnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7Ci0g
ICAgICAgIGlmICh3ZWJLaXRXaW4pIHsKLSAgICAgICAgICAgIHdlYktpdFdpbi0+bV9pbXBsLT5y
ZWRvU3RhY2subGFzdCgpLT5yZWFwcGx5KCk7Ci0gICAgICAgICAgICB3ZWJLaXRXaW4tPm1faW1w
bC0+cmVkb1N0YWNrLnJlbW92ZSgtLXdlYktpdFdpbi0+bV9pbXBsLT5yZWRvU3RhY2suZW5kKCkp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIEVkaXRvckNsaWVudFd4OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKLXsKLSAgICBOb2RlKiBub2Rl
ID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgRnJh
bWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBBU1NFUlQoZnJhbWUp
OwotCi0gICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBrZXlFdmVudCA9IGV2ZW50LT5r
ZXlFdmVudCgpOwotCi0gICAgLy9OQjogdGhpcyBpcyB3aGF0IHdpbmRvd3MgZG9lcywgYnV0IHRo
ZXkgYWxzbyBoYXZlIGEga2V5cHJlc3MgZXZlbnQgZm9yIEFsdCtFbnRlciB3aGljaCBjbGVhcmx5
IHdvbid0IGdldCBoaXQgd2l0aCB0aGlzCi0gICAgaWYgKCFrZXlFdmVudCB8fCBrZXlFdmVudC0+
YWx0S2V5KCkpICAvLyBkbyBub3QgdHJlYXQgdGhpcyBhcyB0ZXh0IGlucHV0IGlmIEFsdCBpcyBk
b3duCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5k
ID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7Ci0K
LSAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7
Ci0gICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0
IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhl
Y3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKLSAgICAgICAgLy8gc28gd2UgbGVh
dmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5n
LiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBpZiBub3QgdG8gbGV0IGEgQ0hBUiBldmVudCBi
ZSBnZW5lcmF0ZWQKLSAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFy
YWN0ZXIsIG9yIEVudGVyKS4KLSAgICAgICAgcmV0dXJuICFjb21tYW5kLmlzVGV4dEluc2VydGlv
bigpICYmIGNvbW1hbmQuZXhlY3V0ZShldmVudCk7Ci0gICAgfQotCi0gICAgIGlmIChjb21tYW5k
LmV4ZWN1dGUoZXZlbnQpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIERvbid0IGlu
c2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNhbiByZXN1bHQgaW4gdW5l
eHBlY3RlZCBiZWhhdmlvdXIKLSAgICBpZiAoZXZlbnQtPmNoYXJDb2RlKCkgPCAnICcpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRl
eHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOwotfQotCi1jb25zdCBjaGFyKiBF
ZGl0b3JDbGllbnRXeDo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZ0
KQotewotICAgIEFTU0VSVChldnQtPmtleUV2ZW50KCktPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpSYXdLZXlEb3duIHx8IGV2dC0+a2V5RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OkNoYXIpOwotCi0gICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25D
b21tYW5kc01hcCA9IDA7Ci0gICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtl
eVByZXNzQ29tbWFuZHNNYXAgPSAwOwotCi0gICAgaWYgKCFrZXlEb3duQ29tbWFuZHNNYXApIHsK
LSAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFy
Kj47Ci0gICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0
IGNoYXIqPjsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1hTSVpFT0Yoa2V5
RG93bkVudHJpZXMpOyBpKyspCi0gICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChr
ZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0
dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgV1hTSVpFT0Yoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQotICAgICAgICAgICAg
a2V5UHJlc3NDb21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmllcnMgPDwg
MTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tpXS5uYW1l
KTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOwotICAgIGlmIChldnQtPnNo
aWZ0S2V5KCkpCi0gICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKLSAgICBpZiAoZXZ0LT5h
bHRLZXkoKSkKLSAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtleTsKLSAgICBpZiAoZXZ0LT5jdHJs
S2V5KCkpCi0gICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OwotCi0gICAgaWYgKGV2dC0+a2V5
RXZlbnQoKS0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKLSAgICAgICAg
aW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+a2V5Q29kZSgpOwotICAgICAgICBy
ZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7Ci0gICAg
fQotCi0gICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+Y2hhckNvZGUoKTsK
LSAgICByZXR1cm4gbWFwS2V5ID8ga2V5UHJlc3NDb21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAw
OwotfQotCi0KLXZvaWQgRWRpdG9yQ2xpZW50V3g6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihL
ZXlib2FyZEV2ZW50KiBldmVudCkKLXsKLS8vIE5PVEU6IHdlIGRvbid0IGN1cnJlbnRseSBuZWVk
IHRvIGhhbmRsZSB0aGlzLiBXaGVuIGtleSBldmVudHMgb2NjdXIsCi0vLyBib3RoIHRoaXMgbWV0
aG9kIGFuZCBoYW5kbGVLZXlib2FyZEV2ZW50IGdldCBhIGNoYW5jZSBhdCBoYW5kbGluZyB0aGVt
LgotLy8gV2UgbWlnaHQgdXNlIHRoaXMgbWV0aG9kIGxhdGVyIG9uIGZvciBJTUUtc3BlY2lmaWMg
aGFuZGxpbmcuCi19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50V3g6OmhhbmRsZUtleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKGhhbmRsZUVkaXRpbmdLZXlib2FyZEV2
ZW50KGV2ZW50KSkKLSAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci19Ci0KLXZv
aWQgRWRpdG9yQ2xpZW50V3g6OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50KikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudFd4Ojp0ZXh0Rmll
bGREaWRFbmRFZGl0aW5nKEVsZW1lbnQqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRWRpdG9yQ2xpZW50V3g6OnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChFbGVtZW50KikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIEVkaXRvckNsaWVudFd4Ojpkb1Rl
eHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZlbnQqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEVkaXRvckNs
aWVudFd4Ojp0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50V3g6OnRleHREaWRDaGFuZ2VJ
blRleHRBcmVhKEVsZW1lbnQqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RWRpdG9yQ2xpZW50V3g6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQot
ewotICAgIGlmIChmcmFtZSkgewotICAgICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYktpdFdpbiA9
IGR5bmFtaWNfY2FzdDxXZWJLaXQ6OldlYlZpZXcqPihmcmFtZS0+dmlldygpLT5ob3N0V2luZG93
KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKLSAgICAgICAgaWYgKHdlYktpdFdpbikgewotICAg
ICAgICAgICAgV2ViS2l0OjpXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50IHdrRXZlbnQod2Vi
S2l0V2luKTsKLSAgICAgICAgICAgIHdlYktpdFdpbi0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nl
c3NFdmVudCh3a0V2ZW50KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYm9vbCBFZGl0b3JDbGll
bnRXeDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5n
VHlwZSkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRX
eDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmKSAKLXsgCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsgCi19Ci0KLXZvaWQgRWRpdG9yQ2xpZW50V3g6OmxlYXJuV29yZChjb25z
dCBTdHJpbmcmKSAKLXsgCi0gICAgbm90SW1wbGVtZW50ZWQoKTsgCi19Ci0KLXZvaWQgRWRpdG9y
Q2xpZW50V3g6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgs
IGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCkgCi17IAot
ICAgIG5vdEltcGxlbWVudGVkKCk7IAotfQotCi12b2lkIEVkaXRvckNsaWVudFd4OjpjaGVja0dy
YW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0
YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpIAot
eyAKLSAgICBub3RJbXBsZW1lbnRlZCgpOyAKLX0KLQotdm9pZCBFZGl0b3JDbGllbnRXeDo6dXBk
YXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1t
YXJEZXRhaWwmIGRldGFpbCkgCi17IAotICAgIG5vdEltcGxlbWVudGVkKCk7IAotfQotCi12b2lk
IEVkaXRvckNsaWVudFd4Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0
IFN0cmluZyYpIAoteyAKLSAgICBub3RJbXBsZW1lbnRlZCgpOyAKLX0KLQotdm9pZCBFZGl0b3JD
bGllbnRXeDo6c2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KSAKLXsgCi0gICAgbm90SW1wbGVtZW50
ZWQoKTsgCi19Ci0KLWJvb2wgRWRpdG9yQ2xpZW50V3g6OnNwZWxsaW5nVUlJc1Nob3dpbmcoKSAK
LXsgCi0gICAgbm90SW1wbGVtZW50ZWQoKTsgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IEVkaXRvckNsaWVudFd4OjpnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNv
bnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotU3RyaW5nIEVkaXRvckNsaWVudFd4OjpnZXRBdXRvQ29ycmVj
dFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgRWRpdG9y
Q2xpZW50V3g6OndpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEVkaXRvckNsaWVudFd4OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wg
ZW5hYmxlZCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaCBiL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2OGUxM2U4YjJkYTEyYjY3ZGQ1NTMzNjQzNTYzMjA3ZDI1NGJhYjI3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgS2V2aW4gT2xsaXZpZXIgPGtl
dmlub0B0aGVvbGxpdmllcnMuY29tPgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBFZGl0b3JDbGllbnRXeF9oCi0jZGVmaW5lIEVkaXRvckNsaWVudFd4X2gKLQot
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJU
ZXh0Q2hlY2tlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgIldl
YkZyYW1lLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRWRpdG9yQ2xpZW50V3gg
OiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgVGV4dENoZWNrZXJDbGllbnQgewotZnJpZW5k
IGNsYXNzIFdlYktpdDo6V2ViVmlldzsKLWZyaWVuZCBjbGFzcyBXZWJLaXQ6OldlYkZyYW1lOwot
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RWRpdG9yQ2xpZW50V3goKTsKLSAgICB2b2lkIHNldFBh
Z2UoUGFnZSopOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGZyYW1lV2lsbERldGFjaFBhZ2UoV2ViQ29yZTo6RnJhbWUqKSB7IH0KLQotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopOwotICAgIHZpcnR1YWwgYm9vbCBz
bWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKCk7Ci0gICAgdmlydHVhbCBib29sIGlzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNT
cGVsbENoZWNraW5nKCk7Ci0gICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKLSAgICB2aXJ0
dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwotCi0gICAgdmlydHVhbCBib29sIHNl
bGVjdFdvcmRCZWZvcmVNZW51RXZlbnQoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdp
bkVkaXRpbmcoUmFuZ2UqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5n
ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSosCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBSYW5nZSosCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnR5U2V0KiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSopOwotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJhbmdlKik7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZyb21SYW5nZSwgUmFuZ2UqIHRv
UmFuZ2UsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQWZmaW5pdHksIGJvb2wg
c3RpbGxTZWxlY3RpbmcpOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpOwot
ICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSopOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRFbmRFZGl0aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9h
cmREYXRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJv
YXJkKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVu
ZG9TdGVwPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxV
bmRvU3RlcD4pOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwot
Ci0gICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNhblBhc3RlKEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFs
dWUpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIGNhblJlZG8oKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCB1bmRvKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlZG8oKTsKLSAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGludGVy
cHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopOwotICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKTsKLSAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lk
IHRleHREaWRDaGFuZ2VJblRleHRGaWVsZChFbGVtZW50Kik7Ci0gICAgdmlydHVhbCBib29sIGRv
VGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiwgS2V5Ym9hcmRFdmVudCopOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopOwotCi0gICAg
dmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRD
aGVja2luZ1R5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERv
Y3VtZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVs
bGluZ0xlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0
IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFt
bWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFt
bWFyRGV0YWlsJiBkZXRhaWwpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0
aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBzaG93U3Bl
bGxpbmdVSShib29sIHNob3cpOwotICAgIHZpcnR1YWwgYm9vbCBzcGVsbGluZ1VJSXNTaG93aW5n
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29y
ZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAg
dmlydHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQo
Y29uc3QgV1RGOjpTdHJpbmcmKTsKLQotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0PikgeyB9Ci0gICAgdmlydHVhbCBU
ZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9Ci0KLXByaXZh
dGU6Ci0gICAgUGFnZSogbV9wYWdlOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRWRpdG9yQ2xpZW50
V3hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWZkNzViOTQy
MzY0ZDE5OGU0OTY3NzE0YWI5NmJiMmM3MjAzOGU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNyBLZXZpbiBPbGxpdmllciA8a2V2aW5vQHRoZW9sbGl2aWVy
cy5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFd4LmgiCi0KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2Fz
dC5oPgotCi0jaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKLSNpbmNsdWRlICJGb3JtU3RhdGUu
aCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJGcmFtZVRyZWUuaCIKLSNpbmNsdWRlICJQ
bHVnaW5WaWV3LmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNs
dWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGx1Z2luVmlldy5oIgotI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgotI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKLSNpZiBPUyhXSU5ET1dTKQotI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKLSNl
bmRpZgotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxzdGRpby5o
PgotI2lmIE9TKFVOSVgpCi0jaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSNlbmRpZgotCi0jaW5j
bHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dFd4LmgiCi0jaW5jbHVkZSAiV2ViRnJhbWUuaCIK
LSNpbmNsdWRlICJXZWJGcmFtZVByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgi
Ci0jaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgIldlYlZpZXdQcml2YXRlLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotaW5saW5lIGlu
dCB3eE5hdlR5cGVGcm9tV2ViTmF2VHlwZShOYXZpZ2F0aW9uVHlwZSB0eXBlKXsKLSAgICBpZiAo
dHlwZSA9PSBOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkKQotICAgICAgICByZXR1cm4gV0VCVklF
V19OQVZfTElOS19DTElDS0VEOwotICAgIAotICAgIGlmICh0eXBlID09IE5hdmlnYXRpb25UeXBl
Rm9ybVN1Ym1pdHRlZCkKLSAgICAgICAgcmV0dXJuIFdFQlZJRVdfTkFWX0ZPUk1fU1VCTUlUVEVE
OwotICAgICAgICAKLSAgICBpZiAodHlwZSA9PSBOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJkKQot
ICAgICAgICByZXR1cm4gV0VCVklFV19OQVZfQkFDS19ORVhUOwotICAgICAgICAKLSAgICBpZiAo
dHlwZSA9PSBOYXZpZ2F0aW9uVHlwZVJlbG9hZCkKLSAgICAgICAgcmV0dXJuIFdFQlZJRVdfTkFW
X1JFTE9BRDsKLSAgICAgICAgCi0gICAgaWYgKHR5cGUgPT0gTmF2aWdhdGlvblR5cGVGb3JtUmVz
dWJtaXR0ZWQpCi0gICAgICAgIHJldHVybiBXRUJWSUVXX05BVl9GT1JNX1JFU1VCTUlUVEVEOwot
ICAgICAgICAKLSAgICByZXR1cm4gV0VCVklFV19OQVZfT1RIRVI7Ci19Ci0KLUZyYW1lTG9hZGVy
Q2xpZW50V3g6OkZyYW1lTG9hZGVyQ2xpZW50V3goKQotICAgIDogbV9mcmFtZSgwKQotICAgICwg
bV9wbHVnaW5WaWV3KDApCi0gICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQot
ICAgICwgbV93ZWJGcmFtZSgwKQotewotfQotCi0KLUZyYW1lTG9hZGVyQ2xpZW50V3g6On5GcmFt
ZUxvYWRlckNsaWVudFd4KCkKLXsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRG
cmFtZShXZWJLaXQ6OldlYkZyYW1lICpmcmFtZSkKLXsKLSAgICBtX3dlYkZyYW1lID0gZnJhbWU7
Ci0gICAgbV9mcmFtZSA9IG1fd2ViRnJhbWUtPm1faW1wbC0+ZnJhbWU7Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6c2V0V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcgKndlYnZpZXcpCi17
Ci0gICAgbV93ZWJWaWV3ID0gd2VidmlldzsKLX0KLQotYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4
OjpoYXNXZWJWaWV3KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93ZWJWaWV3ICE9IE5VTEw7Ci19
Ci0KLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRXeDo6aGFzQmFja0ZvcndhcmRMaXN0KCkgY29uc3QK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi0KLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnRXeDo6cmVzZXRCYWNrRm9yd2FyZExpc3QoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLQotYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4Ojpwcm92aXNpb25h
bEl0ZW1Jc1RhcmdldCgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6bWFrZVJlcHJlc2VudGF0
aW9uKERvY3VtZW50TG9hZGVyKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi0KLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6Zm9yY2VMYXlvdXQoKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpmb3JjZUxheW91dEZvck5v
bkhUTUwoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFd4Ojp1cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6dXBkYXRlSGlzdG9yeUZvckJh
Y2tGb3J3YXJkTmF2aWdhdGlvbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnVwZGF0ZUhpc3RvcnlGb3JSZWxvYWQoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojp1cGRh
dGVIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6dXBkYXRlSGlzdG9yeUZvckludGVybmFsTG9h
ZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OnVwZGF0ZUhpc3RvcnlBZnRlckNsaWVudFJlZGlyZWN0KCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0Q29waWVzT25T
Y3JvbGwoKQotewotICAgIC8vIGFwcGFyZW50bHkgbWFjIHNwZWNpZmljCi0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotCi1Mb2FkRXJyb3JSZXNldFRva2VuKiBGcmFtZUxvYWRlckNsaWVudFd4
Ojp0b2tlbkZvckxvYWRFcnJvclJlc2V0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAwOwotfQotCi0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6cmVzZXRBZnRlckxv
YWRFcnJvcihMb2FkRXJyb3JSZXNldFRva2VuKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZG9Ob3RSZXNldEFmdGVyTG9hZEVycm9y
KExvYWRFcnJvclJlc2V0VG9rZW4qKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQot
dm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojp3aWxsQ2xvc2VEb2N1bWVudCgpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRldGFjaGVk
RnJvbVBhcmVudDIoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFd4OjpkZXRhY2hlZEZyb21QYXJlbnQzKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkSGFuZGxl
T25sb2FkRXZlbnRzKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIFdlYktpdDo6
V2ViVmlld0xvYWRFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0
U3RhdGUoV0VCVklFV19MT0FEX09OTE9BRF9IQU5ETEVEKTsKLSAgICAgICAgd2tFdmVudC5TZXRV
UkwobV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKS51cmwoKS5z
dHJpbmcoKSk7Ci0gICAgICAgIHdrRXZlbnQuU2V0RnJhbWUobV93ZWJGcmFtZSk7Ci0gICAgICAg
IG1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KTsKLSAg
ICB9Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3Qg
S1VSTCYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgaW50ZXJ2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZmlyZURhdGUpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3Bh
dGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0
aGluUGFnZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFd4OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hE
aWRQb3BTdGF0ZVdpdGhpblBhZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAg
IFdlYktpdDo6V2ViVmlld0xvYWRFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdr
RXZlbnQuU2V0U3RhdGUoV0VCVklFV19MT0FEX05FR09USUFUSU5HKTsKLSAgICAgICAgd2tFdmVu
dC5TZXRVUkwobV9mcmFtZS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+
cmVxdWVzdCgpLnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgd2tFdmVudC5TZXRGcmFtZShtX3dl
YkZyYW1lKTsKLSAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2
ZW50KHdrRXZlbnQpOwotICAgIH0KLX0KLQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQot
ewotICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24g
b2YgdGl0bGUuCi0gICAgICAgIGlmIChtX3dlYkZyYW1lID09IG1fd2ViVmlldy0+R2V0TWFpbkZy
YW1lKCkpCi0gICAgICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5zdHJpbmco
KSk7Ci0gICAgICAgIAotICAgICAgICBXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50IHdrRXZlbnQo
bV93ZWJWaWV3KTsKLSAgICAgICAgd2tFdmVudC5TZXRGcmFtZShtX3dlYkZyYW1lKTsKLSAgICAg
ICAgd2tFdmVudC5TZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7Ci0gICAgICAgIG1fd2ViVmlldy0+
R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KTsKLSAgICB9Ci19Ci0KLQot
dm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQotewotICAg
IGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgV2ViS2l0OjpXZWJWaWV3TG9hZEV2ZW50IHdrRXZl
bnQobV93ZWJWaWV3KTsKLSAgICAgICAgd2tFdmVudC5TZXRTdGF0ZShXRUJWSUVXX0xPQURfVFJB
TlNGRVJSSU5HKTsKLSAgICAgICAgd2tFdmVudC5TZXRVUkwobV9mcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIHdrRXZl
bnQuU2V0RnJhbWUobV93ZWJGcmFtZSk7Ci0gICAgICAgIG1fd2ViVmlldy0+R2V0RXZlbnRIYW5k
bGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KTsKLSAgICB9Ci19Ci0KLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKQotewotICAgIGlmICht
X3dlYlZpZXcpIHsKLSAgICAgICAgV2ViS2l0OjpXZWJWaWV3TG9hZEV2ZW50IHdrRXZlbnQobV93
ZWJWaWV3KTsKLSAgICAgICAgd2tFdmVudC5TZXRTdGF0ZShXRUJWSUVXX0xPQURfRE9DX0NPTVBM
RVRFRCk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VVJMKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
LnN0cmluZygpKTsKLSAgICAgICAgd2tFdmVudC5TZXRGcmFtZShtX3dlYkZyYW1lKTsKLSAgICAg
ICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwot
ICAgIH0KLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKFdlYkNvcmU6Okljb25UeXBlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNo
RGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaFNob3coKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpjYW5jZWxQb2xp
Y3lDaGVjaygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBm
dW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCi17Ci0gICAgLy8gRklYTUU6IFNlbmQgYW4gZXZlbnQg
dG8gYWxsb3cgZm9yIGFsZXJ0cyBhbmQgY2FuY2VsbGF0aW9uCi0gICAgaWYgKCFtX3dlYkZyYW1l
KQotICAgICAgICByZXR1cm47Ci0gICAgKG1fZnJhbWUtPmxvYWRlcigpLT5wb2xpY3lDaGVja2Vy
KCktPipmdW5jdGlvbikoUG9saWN5VXNlKTsKLX0KLQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V3g6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpwb3N0UHJvZ3Jl
c3NTdGFydGVkTm90aWZpY2F0aW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlm
aWNhdGlvbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFd4Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpCi17Ci0gICAgaWYg
KG1fd2ViVmlldykgewotICAgICAgICBXZWJLaXQ6OldlYlZpZXdMb2FkRXZlbnQgd2tFdmVudCht
X3dlYlZpZXcpOwotICAgICAgICB3a0V2ZW50LlNldFN0YXRlKFdFQlZJRVdfTE9BRF9ETF9DT01Q
TEVURUQpOwotICAgICAgICB3a0V2ZW50LlNldFVSTChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKSk7Ci0gICAgICAgIHdrRXZlbnQuU2V0RnJhbWUobV93ZWJGcmFtZSk7Ci0gICAg
ICAgIG1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KTsK
LSAgICB9Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6cHJvZ3Jlc3NTdGFydGVkKCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRX
eDo6cHJvZ3Jlc3NDb21wbGV0ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQot
dm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wg
YikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIC8vIHRoaXMgaXMgb25seSBpbnRlcmVz
dGluZyBvbmNlIHdlIHByb3ZpZGUgYW4gZXh0ZXJuYWwgQVBJIGZvciB0aGUgRE9NCi19Ci0KLQot
dm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojp3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIq
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFd4OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciAqbCkKLXsKLSAgICBzZXRUaXRsZShs
LT50aXRsZSgpLCBsLT51cmwoKSk7Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpm
aW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQotewotICAgIGlmIChtX3BsdWdpblZpZXcp
IHsKLSAgICAgICAgbV9wbHVnaW5WaWV3LT5kaWRGaW5pc2hMb2FkaW5nKCk7Ci0gICAgICAgIG1f
cGx1Z2luVmlldyA9IDA7Ci0gICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxz
ZTsKLSAgICB9Ci19Ci0KLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRXeDo6Y2FuU2hvd01JTUVUeXBl
QXNIVE1MKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotICAgIAotYm9vbCBGcmFtZUxvYWRlckNsaWVu
dFd4OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3QKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi0KLWJvb2wgRnJhbWVM
b2FkZXJDbGllbnRXeDo6cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3Ry
aW5nJiBVUkxTY2hlbWUpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLQotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmdlbmVyYXRlZE1J
TUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25zdAotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNhdmVWaWV3U3RhdGVUb0l0
ZW0oSGlzdG9yeUl0ZW0qKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6cmVzdG9yZVZpZXdTdGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLSAgICAgICAgCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnJlc3RvcmVTY3Jv
bGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQotYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4Ojpz
aG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29uc3QKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRGaW5p
c2hMb2FkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi0KLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi1zdGF0aWMgU3RyaW5nIGFnZW50T1MoKQotewotI2lmIE9T
KERBUldJTikKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgIHJldHVybiAiSW50ZWwg
TWFjIE9TIFgiOwotI2Vsc2UKLSAgICByZXR1cm4gIlBQQyBNYWMgT1MgWCI7Ci0jZW5kaWYKLSNl
bGlmIE9TKFVOSVgpCi0gICAgc3RydWN0IHV0c25hbWUgbmFtZTsKLSAgICBpZiAodW5hbWUoJm5h
bWUpICE9IC0xKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhuYW1lLnN5c25hbWUsICcgJywg
bmFtZS5tYWNoaW5lKTsKLSAgICAKLSAgICByZXR1cm4gIlVua25vd24iOwotI2VsaWYgT1MoV0lO
RE9XUykKLSAgICByZXR1cm4gd2luZG93c1ZlcnNpb25Gb3JVQVN0cmluZygpOwotI2Vsc2UKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiVW5rbm93biI7Ci0jZW5kaWYKLX0KLQot
c3RhdGljIFN0cmluZyBjb21wb3NlVXNlckFnZW50KCkKLXsKLSAgICBTdHJpbmcgd2ViS2l0VmVy
c2lvbiA9IFN0cmluZzo6Zm9ybWF0KCIlZC4lZCIsIFdFQktJVF9NQUpPUl9WRVJTSU9OLCBXRUJL
SVRfTUlOT1JfVkVSU0lPTik7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgi
LCBhZ2VudE9TKCksICIpIEFwcGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb24sICIgKEtIVE1MLCBs
aWtlIEdlY2tvKSB2ZXJzaW9uLzUuMS4xIFNhZmFyaS8iLCB3ZWJLaXRWZXJzaW9uKTsKLX0KLQot
ICAgIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnVzZXJBZ2VudChjb25zdCBLVVJMJikK
LXsKLSAgICAvLyBGSVhNRTogVXNlIHRoZSBuZXcgQVBJcyBpbnRyb2R1Y2VkIGJ5IHRoZSBHVEsg
cG9ydCB0byBmaWxsIGluIHRoZXNlIHZhbHVlcy4KLSAgICByZXR1cm4gY29tcG9zZVVzZXJBZ2Vu
dCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnRXeDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQotewotICAgIGlmIChtX3dlYkZyYW1lKQotICAg
ICAgICBkZWxldGUgbV93ZWJGcmFtZTsKLSAgICBtX3dlYkZyYW1lID0gMDsKLSAgICBtX2ZyYW1l
ID0gMDsKLSAgICBkZWxldGUgdGhpczsKLX0KLQotYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4Ojpj
YW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0Ci17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFd4OjpwYXJ0Q2xlYXJlZEluQmVnaW4oKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6dXBkYXRlR2xvYmFsSGlzdG9y
eSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFd4Ojp1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpzaG91bGRHb1RvSGlzdG9y
eUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2hv
dWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwg
Ym9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OnNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0
b3J5SXRlbSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBGcmFtZUxvYWRl
ckNsaWVudFd4OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi0vLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBz
aG91bGQgYmUgbW92ZWQgaW50byBXZWJDb3JlLgotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgaWYgKCFtX3dlYkZyYW1lKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpCi0gICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShk
YXRhLCBsZW5ndGgpOwotCi0gICAgLy8gV2UgcmUtY2hlY2sgaGVyZSBhcyB0aGUgcGx1Z2luIGNh
biBoYXZlIGJlZW4gY3JlYXRlZAotICAgIGlmIChtX3BsdWdpblZpZXcpIHsKLSAgICAgICAgaWYg
KCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKSB7Ci0gICAgICAgICAgICBtX3BsdWdpblZpZXct
PmRpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPnJlc3BvbnNlKCkpOwotICAgICAgICAgICAgLy8g
ZGlkUmVjZWl2ZVJlc3BvbnNlIHNldHMgdXAgYSBuZXcgc3RyZWFtIHRvIHRoZSBwbHVnLWluLiBv
biBhIGZ1bGwtcGFnZSBwbHVnLWluLCBhIGZhaWx1cmUgaW4KLSAgICAgICAgICAgIC8vIHNldHRp
bmcgdXAgdGhpcyBzdHJlYW0gY2FuIGNhdXNlIHRoZSBtYWluIGRvY3VtZW50IGxvYWQgdG8gYmUg
Y2FuY2VsbGVkLCBzZXR0aW5nIG1fcGx1Z2luVmlldwotICAgICAgICAgICAgLy8gdG8gbnVsbAot
ICAgICAgICAgICAgaWYgKCFtX3BsdWdpblZpZXcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgbV9wbHVnaW5WaWV3LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgpOwotICAg
IH0KLX0KLQotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudFd4OjpjYW5j
ZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwg
V2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBTdHJpbmco
KSk7Ci19Ci0KLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRXeDo6Ymxv
Y2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJv
ckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKLX0KLQot
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudFd4OjpjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKLX0KLQotV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBGcmFtZUxvYWRlckNsaWVudFd4OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJv
ckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCksIFN0cmluZygpKTsKLX0KLQotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNs
aWVudFd4OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSwgcmVz
cG9uc2UudXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKLX0KLQotV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBGcmFtZUxvYWRlckNsaWVudFd4OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RT
aG93VVJMLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgU3RyaW5nKCkpOwotfQotCi1ib29sIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OnNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1XVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQotewotICAgIHJldHVybiBEb2N1
bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKLX0KLQotdm9pZCBG
cmFtZUxvYWRlckNsaWVudFd4Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V3g6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7ICAgCi19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnRXeDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgRnJhbWVMb2FkZXJD
bGllbnRXeDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgbV9yZXNwb25zZSA9IHJlc3BvbnNl
OwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZCwgaW50IGxl
bmd0aCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNs
aWVudFd4OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKQotewotICAgIGlmIChtX3dlYlZpZXcp
IHsKLSAgICAgICAgV2ViS2l0OjpXZWJWaWV3TG9hZEV2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsK
LSAgICAgICAgd2tFdmVudC5TZXRTdGF0ZShXRUJWSUVXX0xPQURfRkFJTEVEKTsKLSAgICAgICAg
d2tFdmVudC5TZXRVUkwobV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlcXVl
c3QoKS51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIHdrRXZlbnQuU2V0RnJhbWUobV93ZWJGcmFt
ZSk7Ci0gICAgICAgIG1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3
a0V2ZW50KTsKLSAgICB9Ci19Ci0KLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hE
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50KQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotRnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNo
Q3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rp
b24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCi17Ci0gICAgaWYgKCFtX3dlYkZyYW1lKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAobV9mcmFtZS0+bG9hZGVyKCktPnBvbGlj
eUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOwotfQotCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50V3g6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9s
aWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5n
JiB0YXJnZXROYW1lKQotewotICAgIGlmICghbV93ZWJGcmFtZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICBXZWJLaXQ6OldlYlZpZXdOZXdXaW5kb3dF
dmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VVJMKHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkpOwotICAgICAgICB3a0V2ZW50LlNldFRhcmdldE5hbWUodGFyZ2V0TmFt
ZSk7Ci0gICAgICAgIHdrRXZlbnQuU2V0RnJhbWUobV93ZWJGcmFtZSk7Ci0gICAgICAgIGlmICht
X3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tFdmVudCkpIHsKLSAg
ICAgICAgICAgIC8vIGlmIHRoZSBhcHAgaGFuZGxlcyBhbmQgZG9lc24ndCBza2lwIHRoZSBldmVu
dCwgCi0gICAgICAgICAgICAvLyBmcm9tIFdlYktpdCdzIHBlcnNwZWN0aXZlIHRyZWF0IGl0IGFz
IGJsb2NrZWQgLyBpZ25vcmVkCi0gICAgICAgICAgICAobV9mcmFtZS0+bG9hZGVyKCktPnBvbGlj
eUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIChtX2ZyYW1lLT5sb2FkZXIoKS0+cG9saWN5
Q2hlY2tlcigpLT4qZnVuY3Rpb24pKFBvbGljeVVzZSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9s
aWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCi17Ci0g
ICAgaWYgKCFtX3dlYkZyYW1lKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGlmICht
X3dlYlZpZXcpIHsKLSAgICAgICAgV2ViS2l0OjpXZWJWaWV3QmVmb3JlTG9hZEV2ZW50IHdrRXZl
bnQobV93ZWJWaWV3KTsKLSAgICAgICAgd2tFdmVudC5TZXROYXZpZ2F0aW9uVHlwZSh3eE5hdlR5
cGVGcm9tV2ViTmF2VHlwZShhY3Rpb24udHlwZSgpKSk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VVJM
KHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwotICAgICAgICB3a0V2ZW50LlNldEZyYW1lKG1fd2Vi
RnJhbWUpOwotICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZl
bnQod2tFdmVudCk7Ci0gICAgICAgIGlmICh3a0V2ZW50LklzQ2FuY2VsbGVkKCkpCi0gICAgICAg
ICAgICAobV9mcmFtZS0+bG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xp
Y3lJZ25vcmUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAobV9mcmFtZS0+bG9hZGVyKCkt
PnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOwotICAgICAgICAKLSAgICB9
Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVu
dFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnN0YXJ0RG93bmxvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiAvKiBzdWdnZXN0ZWROYW1lICovKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKLXsKLSAgICBXZWJWaWV3RnJhbWVE
YXRhKiBkYXRhID0gbmV3IFdlYlZpZXdGcmFtZURhdGEoKTsKLSAgICBkYXRhLT5uYW1lID0gbmFt
ZTsKLSAgICBkYXRhLT5vd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQ7Ci0gICAgZGF0YS0+dXJs
ID0gdXJsOwotICAgIGRhdGEtPnJlZmVycmVyID0gcmVmZXJyZXI7Ci0gICAgZGF0YS0+YWxsb3dz
U2Nyb2xsaW5nID0gYWxsb3dzU2Nyb2xsaW5nOwotICAgIGRhdGEtPm1hcmdpbldpZHRoID0gbWFy
Z2luV2lkdGg7Ci0gICAgZGF0YS0+bWFyZ2luSGVpZ2h0ID0gbWFyZ2luSGVpZ2h0OwotCi0gICAg
V2ViS2l0OjpXZWJGcmFtZSogbmV3RnJhbWUgPSBuZXcgV2ViS2l0OjpXZWJGcmFtZShtX3dlYlZp
ZXcsIG1fd2ViRnJhbWUsIGRhdGEpOwotCi0gICAgUmVmUHRyPEZyYW1lPiBjaGlsZEZyYW1lID0g
YWRvcHRSZWYobmV3RnJhbWUtPm1faW1wbC0+ZnJhbWUpOwotCi0gICAgLy8gVGhlIGNyZWF0aW9u
IG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1v
dmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KLSAgICBpZiAoIWNoaWxkRnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+bG9hZFVSTElu
dG9DaGlsZEZyYW1lKHVybCwgcmVmZXJyZXIsIGNoaWxkRnJhbWUuZ2V0KCkpOwotICAgIAotICAg
IC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJvbSB0
aGUgZG9jdW1lbnQuCi0gICAgaWYgKCFjaGlsZEZyYW1lLT50cmVlKCktPnBhcmVudCgpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7Ci19
Ci0KLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50V3g6Om9iamVjdENvbnRlbnRU
eXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQ
cmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIE9iamVjdENvbnRlbnRUeXBlKCk7Ci19Ci0KLVBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlckNsaWVudFd4OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJ
bkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCi17Ci0jaWYgX19XWE1TV19fIHx8IF9f
V1hNQUNfXwotICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwdiA9IFBsdWdpblZpZXc6OmNyZWF0ZSht
X2ZyYW1lLCBzaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBtaW1l
VHlwZSwgbG9hZE1hbnVhbGx5KTsKLSAgICBpZiAocHYtPnN0YXR1cygpID09IFBsdWdpblN0YXR1
c0xvYWRlZFN1Y2Nlc3NmdWxseSkKLSAgICAgICAgcmV0dXJuIHB2OwotI2VuZGlmCi0gICAgcmV0
dXJuIDA7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6cmVkaXJlY3REYXRhVG9QbHVn
aW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCi17Ci0gICAgbV9wbHVnaW5WaWV3ID0gdG9QbHVnaW5W
aWV3KHBsdWdpbldpZGdldCk7Ci0gICAgaWYgKHBsdWdpbldpZGdldCkKLSAgICAgICAgbV9oYXNT
ZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwotfQotCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RMb2FkUGx1Z0luLCByZXNwb25z
ZS51cmwoKS5zdHJpbmcoKSwgU3RyaW5nKCkpOwotfQotCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJh
bWVMb2FkZXJDbGllbnRXeDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwg
SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotU3RyaW5nIEZyYW1lTG9hZGVy
Q2xpZW50V3g6Om92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4
OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdv
cmxkKQotewotICAgIGlmICh3b3JsZCAhPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICBXZWJLaXQ6OldlYlZp
ZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOwotICAgICAgICBG
cmFtZSogY29yZUZyYW1lID0gbV93ZWJWaWV3LT5HZXRNYWluRnJhbWUoKS0+R2V0RnJhbWUoKTsK
LSAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSB0b0dsb2JhbFJlZihjb3JlRnJh
bWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9i
YWxFeGVjKCkpOwotICAgICAgICBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QgPSB0b1JlZihjb3Jl
RnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpKTsK
LSAgICAgICAgd2tFdmVudC5TZXRKU0NvbnRleHQoY29udGV4dCk7Ci0gICAgICAgIHdrRXZlbnQu
U2V0V2luZG93T2JqZWN0KHdpbmRvd09iamVjdCk7Ci0gICAgICAgIG1fd2ViVmlldy0+R2V0RXZl
bnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KTsKLSAgICB9Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKLXsKLX0KLQotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6
OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxpc3RlbikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNhdmVQbGF0Zm9ybURh
dGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKLXsgCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9t
Q2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKQoteyAKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1Bh
Z2UoKQoteyAKLSAgICBBU1NFUlQobV93ZWJGcmFtZSk7Ci0gICAgQVNTRVJUKG1fZnJhbWUpOwot
ICAgIEFTU0VSVChtX3dlYlZpZXcpOwotICAgIAotICAgIEludFNpemUgc2l6ZSA9IEludFJlY3Qo
bV93ZWJWaWV3LT5HZXRSZWN0KCkpLnNpemUoKTsKLSAgICAvLyBGSVhNRTogVGhpcyB2YWx1ZSBz
aG91bGQgYmUgZ290dGVuIGZyb20gbV93ZWJWaWV3LT5Jc1RyYW5zcGFyZW50KCk7Ci0gICAgLy8g
YnV0IHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBjYW4gYmUgY2FsbGVkIHdoaWxl
IG1fd2ViVmlldyBpcwotICAgIC8vIHN0aWxsIGJlaW5nIGluaXRpYWxpemVkLgotICAgIGJvb2wg
dHJhbnNwYXJlbnQgPSBmYWxzZTsKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3Bh
cmVudCA/IFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCA6IFdlYkNvcmU6OkNvbG9yOjp3aGl0
ZTsKLSAgICAKLSAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgbV9mcmFtZS0+Y3JlYXRlVmlldyhz
aXplLCBiYWNrZ3JvdW5kQ29sb3IsIHRyYW5zcGFyZW50KTsKLX0KLQotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFd4OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQotewotfQotCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50V3g6OmRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkKLXsKLX0KLQotdm9pZCBGcmFtZUxv
YWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpCi17Ci19Ci0KLWJv
b2wgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3Ry
aW5nICZtaW1lVHlwZSkgY29uc3QKLXsKLSAgICAvLyBOT1RFOiBQbHVnaW4gRG9jdW1lbnRzIGFy
ZSB1c2VkIGZvciB2aWV3aW5nIFBERnMsIGV0Yy4gaW5saW5lLCBhbmQgc2hvdWxkCi0gICAgLy8g
bm90IGJlIHVzZWQgZm9yIHBhZ2VzIHdpdGggcGx1Z2lucyBpbiB0aGVtLgotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBGcmFtZUxvYWRl
ckNsaWVudFd4OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpCi17Ci0gICAgcmV0dXJuIEZyYW1l
TmV0d29ya2luZ0NvbnRleHRXeDo6Y3JlYXRlKG1fZnJhbWUpOwotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oIGIv
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlmZDdhZTNlMTk4ODhjNzdkYzFlNDU3ZTg5MTZj
NjUxYzc1MmUyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcg
S2V2aW4gT2xsaXZpZXIgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0gCi0jaWZuZGVmIEZyYW1lTG9hZGVyQ2xpZW50V3hfSAotI2RlZmlu
ZSBGcmFtZUxvYWRlckNsaWVudFd4X0gKLQotI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
Ci0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAi
UGx1Z2luVmlldy5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJI
VE1MUGx1Z0luRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJGcmFtZTsKLWNsYXNzIFdlYlZpZXc7Ci0KLX0KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0g
ICAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7Ci0gICAgY2xhc3MgRWxlbWVudDsKLSAgICBjbGFzcyBG
b3JtU3RhdGU7Ci0gICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKLSAgICBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKLQotICAgIHN0cnVjdCBMb2FkRXJyb3JSZXNldFRva2VuOwotCi0gICAgY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnRXeCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7Ci0gICAgcHVi
bGljOgotICAgICAgICBGcmFtZUxvYWRlckNsaWVudFd4KCk7Ci0gICAgICAgIH5GcmFtZUxvYWRl
ckNsaWVudFd4KCk7Ci0gICAgICAgIAotICAgICAgICBXZWJLaXQ6OldlYkZyYW1lKiB3ZWJGcmFt
ZSgpIHsgcmV0dXJuIG1fd2ViRnJhbWU7IH0KLSAgICAgICAgdm9pZCBzZXRGcmFtZShXZWJLaXQ6
OldlYkZyYW1lICpmcmFtZSk7Ci0gICAgICAgIFdlYktpdDo6V2ViVmlldyogd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQotICAgICAgICB2b2lkIHNldFdlYlZpZXcoV2ViS2l0OjpXZWJW
aWV3ICp3ZWJ2aWV3KTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0
OyAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQmFj
a0ZvcndhcmRMaXN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNldEJhY2tGb3J3
YXJkTGlzdCgpOwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwcm92aXNpb25hbEl0ZW1Jc1Rhcmdl
dCgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oRG9j
dW1lbnRMb2FkZXIqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCk7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKTsKLQotICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlSGlzdG9yeUZvckNvbW1pdCgpOwotCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVIaXN0b3J5Rm9yQmFja0ZvcndhcmROYXZpZ2F0aW9uKCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVIaXN0b3J5Rm9yUmVsb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVIaXN0b3J5Rm9ySW50ZXJuYWxMb2FkKCk7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUhpc3RvcnlBZnRlckNsaWVudFJlZGlyZWN0KCk7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNl
dENvcGllc09uU2Nyb2xsKCk7Ci0KLSAgICAgICAgdmlydHVhbCBMb2FkRXJyb3JSZXNldFRva2Vu
KiB0b2tlbkZvckxvYWRFcnJvclJlc2V0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNldEFm
dGVyTG9hZEVycm9yKExvYWRFcnJvclJlc2V0VG9rZW4qKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRvTm90UmVzZXRBZnRlckxvYWRFcnJvcihMb2FkRXJyb3JSZXNldFRva2VuKik7Ci0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIHdpbGxDbG9zZURvY3VtZW50KCk7Ci0KLSAgICAgICAgdmlydHVhbCB2
b2lkIGRldGFjaGVkRnJvbVBhcmVudDIoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaGVk
RnJvbVBhcmVudDMoKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95
ZWQoKTsKLSAgICAgICAgdmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3Q7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFu
ZGxlT25sb2FkRXZlbnRzKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUg
aW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxDbG9zZSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbigpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaERvY3VtZW50TG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5p
c2hMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChXZWJDb3Jl
OjpMYXlvdXRNaWxlc3RvbmVzKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFNob3coKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7Ci0K
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVm
UHRyPEZvcm1TdGF0ZT4pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwotCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2Fk
ZXIqKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNh
dGlvbigpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NGaW5pc2hl
ZE5vdGlmaWNhdGlvbigpOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc1N0YXJ0ZWQo
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHByb2dyZXNzQ29tcGxldGVkKCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKik7Ci0KLSAgICAgICAgdmlydHVh
bCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZUFzSFRNTChjb25zdCBTdHJpbmcmIE1J
TUVUeXBlKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3Rz
Rm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBV
UkxTY2hlbWUpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRDb21wbGV0
ZWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0
ZW0qKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVWaWV3U3RhdGUoKTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgS1VSTCYpIGNvbnN0Owot
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgpOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKLQot
ICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpOwotCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNo
ZWRGcmFtZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJv
bUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCk7Ci0KLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9y
ZUZyb21QYWdlQ2FjaGUoKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNv
bWVGcmFtZXNldChib29sKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlz
dG9yeSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0
TGlua3MoKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0
b3J5SXRlbSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdG
b3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKLSAgICAgICAgCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJM
Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3Vt
ZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhcios
IGludCk7Ci0gICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICAgICAgdmlydHVhbCBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICAg
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBj
YW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwotICAgICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxEb2N1bWVu
dExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgYXNz
aWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgICAgICAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgaW50
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCk7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKLSAgICAgICAgdmlydHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNv
cmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xp
Y3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJik7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSk7Ci0g
ICAgICAgIAotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbm90IGJlIGhl
cmUsIGJ1dCBpdCdzIG5lZWRlZCBmb3IgdGhlIHRlc3RzIGN1cnJlbnRseQotICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFydENsZWFyZWRJbkJlZ2luKCk7Ci0KLSAgICAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Ny
b2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwotICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRn
ZXQpOwotICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUm
LCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwot
Ci0gICAgICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0lu
c0ZvckltYWdlcyk7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkg
Y29uc3Q7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1l
bnRFbGVtZW50QXZhaWxhYmxlKCk7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxpc3RlbiA9IHRydWUpOwot
ICAgICAgICAKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVBsdWdpbkRvY3VtZW50KGNv
bnN0IFN0cmluZyAmbWltZVR5cGUpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0
KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBXZWJLaXQ6OldlYkZyYW1lICptX3dlYkZyYW1l
OwotICAgICAgICBGcmFtZSogbV9mcmFtZTsKLSAgICAgICAgV2ViS2l0OjpXZWJWaWV3ICptX3dl
YlZpZXc7Ci0gICAgICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKLSAgICAgICAgYm9vbCBt
X2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luOwotICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0V3guaCBiL1NvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0V3guaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2FhMjM3NDI1ZWI4MGI0NTY3ZmQwYjRkZTA3ZDU5MzNmNTAy
MzM3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dFd4LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEtl
dmluIE9sbGl2aWVyIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBG
cmFtZU5ldHdvcmtpbmdDb250ZXh0V3hfaAotI2RlZmluZSBGcmFtZU5ldHdvcmtpbmdDb250ZXh0
V3hfaAotCi0jaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lTmV0d29ya2luZ0NvbnRleHRXeCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0V3g+IGNyZWF0ZShXZWJDb3JlOjpGcmFtZSogZnJh
bWUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZyYW1lTmV0d29ya2luZ0Nv
bnRleHRXeChmcmFtZSkpOwotICAgIH0KLQotICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUo
KSBjb25zdCB7IHJldHVybiBmcmFtZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dFd4KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKLSAgICAgICAgOiBXZWJDb3JlOjpG
cmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKQotICAgIHsKLSAgICB9Ci19OwotCi19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFd4LmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRXeC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NmIxM2UwNjgwOGU4
ZmUzMDExYWNjY2MzN2NmMmEyNmU1MzJhYjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFd4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcgS2V2aW4gT2xsaXZpZXIgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRXeC5oIgot
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW5zcGVj
dG9yQ2xpZW50V3g6Okluc3BlY3RvckNsaWVudFd4KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi1JbnNwZWN0b3JDbGllbnRXeDo6fkluc3BlY3RvckNsaWVudFd4KCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudFd4OjppbnNwZWN0b3JE
ZXN0cm95ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLUluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogSW5zcGVjdG9yQ2xpZW50V3g6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAwOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudFd4OjpjbG9zZUluc3BlY3RvckZy
b250ZW5kKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckNs
aWVudFd4OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6aGlnaGxpZ2h0KCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudFd4OjpoaWRlSGlnaGxpZ2h0KCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudFd4Ojpw
b3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogc2V0dGluZykKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudFd4OjpzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIEluc3BlY3RvckNsaWVudFd4OjpzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDdjNWQ0MzQzYTY0MTFkYTEzMjBhYzM1MGRkNjFlNTY4YzE2MTUyZjAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSBLZXZpbiBPbGxpdmllciAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2lmbmRlZiBJbnNwZWN0b3JDbGllbnRXeF9oCi0jZGVmaW5lIEluc3BlY3Rv
ckNsaWVudFd4X2gKLQotI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUGFnZTsKLQotY2xhc3MgSW5zcGVjdG9yQ2xpZW50
V3ggOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsIHsKLXB1YmxpYzoKLSAgICBJbnNwZWN0b3JDbGllbnRXeCgpOwotICAgIH5JbnNwZWN0b3JD
bGllbnRXeCgpOwotCi0gICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwotCi0g
ICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVu
ZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJv
bnQoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
aGlkZUhpZ2hsaWdodCgpOwotCi0gICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25z
dCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQ2xpZW50
X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYlNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd3gvV2ViU2V0dGluZ3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkODlkYjMwMDAzOTc0YzRkYjVjNTJmNzUzNjE4NDAzMGU1YTBjMDI0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViU2V0
dGluZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgS2V2aW4gT2xsaXZpZXIuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgotCi0jaW5jbHVkZSAiU2V0
dGluZ3MuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXZvaWQgV2ViU2V0dGluZ3M6OlNldERlZmF1bHRGaXhlZEZvbnRTaXplKGludCBz
aXplKQotewotICAgIGlmIChtX3NldHRpbmdzKQotICAgICAgICBtX3NldHRpbmdzLT5zZXREZWZh
dWx0Rml4ZWRGb250U2l6ZShzaXplKTsKLX0KLSAgICAKLWludCBXZWJTZXR0aW5nczo6R2V0RGVm
YXVsdEZpeGVkRm9udFNpemUoKSBjb25zdAotewotICAgIGlmIChtX3NldHRpbmdzKQotICAgICAg
ICByZXR1cm4gbV9zZXR0aW5ncy0+ZGVmYXVsdEZpeGVkRm9udFNpemUoKTsKLSAgICAgICAgCi0g
ICAgcmV0dXJuIDA7Ci19Ci0gICAgCi12b2lkIFdlYlNldHRpbmdzOjpTZXREZWZhdWx0Rm9udFNp
emUoaW50IHNpemUpCi17Ci0gICAgaWYgKG1fc2V0dGluZ3MpCi0gICAgICAgIG1fc2V0dGluZ3Mt
PnNldERlZmF1bHRGb250U2l6ZShzaXplKTsKLX0KLQotaW50IFdlYlNldHRpbmdzOjpHZXREZWZh
dWx0Rm9udFNpemUoKSBjb25zdAotewotICAgIGlmIChtX3NldHRpbmdzKQotICAgICAgICByZXR1
cm4gbV9zZXR0aW5ncy0+ZGVmYXVsdEZvbnRTaXplKCk7Ci0gICAgICAgIAotICAgIHJldHVybiAw
OwotfQotICAgIAotdm9pZCBXZWJTZXR0aW5nczo6U2V0TWluaW11bUZvbnRTaXplKGludCBzaXpl
KQotewotICAgIGlmIChtX3NldHRpbmdzKQotICAgICAgICBtX3NldHRpbmdzLT5zZXRNaW5pbXVt
Rm9udFNpemUoc2l6ZSk7Ci19Ci0KLWludCBXZWJTZXR0aW5nczo6R2V0TWluaW11bUZvbnRTaXpl
KCkgY29uc3QKLXsKLSAgICBpZiAobV9zZXR0aW5ncykKLSAgICAgICAgcmV0dXJuIG1fc2V0dGlu
Z3MtPm1pbmltdW1Gb250U2l6ZSgpOwotICAgICAgICAKLSAgICByZXR1cm4gMDsKLX0KLSAgICAK
LXZvaWQgV2ViU2V0dGluZ3M6OlNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sIGxvYWRB
dXRvbWF0aWNhbGx5KQotewotICAgIGlmIChtX3NldHRpbmdzKQotICAgICAgICBtX3NldHRpbmdz
LT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkobG9hZEF1dG9tYXRpY2FsbHkpOwotfQotICAg
IAotYm9vbCBXZWJTZXR0aW5nczo6TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkgY29uc3QKLXsK
LSAgICBpZiAobV9zZXR0aW5ncykKLSAgICAgICAgcmV0dXJuIG1fc2V0dGluZ3MtPmxvYWRzSW1h
Z2VzQXV0b21hdGljYWxseSgpOwotICAgICAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0gICAg
Ci12b2lkIFdlYlNldHRpbmdzOjpTZXRKYXZhU2NyaXB0RW5hYmxlZChib29sIGVuYWJsZWQpCi17
Ci0gICAgaWYgKG1fc2V0dGluZ3MpCi0gICAgICAgIG1fc2V0dGluZ3MtPnNldFNjcmlwdEVuYWJs
ZWQoZW5hYmxlZCk7Ci19Ci0KLWJvb2wgV2ViU2V0dGluZ3M6OklzSmF2YVNjcmlwdEVuYWJsZWQo
KSBjb25zdAotewotICAgIGlmIChtX3NldHRpbmdzKQotICAgICAgICByZXR1cm4gbV9zZXR0aW5n
cy0+aXNTY3JpcHRFbmFibGVkKCk7Ci0gICAgICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLSAg
ICAKLXZvaWQgV2ViU2V0dGluZ3M6OlNldExvY2FsU3RvcmFnZVBhdGgoY29uc3Qgd3hTdHJpbmcm
IHBhdGgpCi17Ci0gICAgaWYgKG1fc2V0dGluZ3MpCi0gICAgICAgIG1fc2V0dGluZ3MtPnNldExv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aChwYXRoKTsKLX0KLQotd3hTdHJpbmcgV2ViU2V0dGluZ3M6
OkdldExvY2FsU3RvcmFnZVBhdGgoKSBjb25zdAotewotICAgIGlmIChtX3NldHRpbmdzKQotICAg
ICAgICByZXR1cm4gbV9zZXR0aW5ncy0+bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKCk7Ci0gICAg
ICAgIAotICAgIHJldHVybiB3eEVtcHR5U3RyaW5nOwotfQotCi12b2lkIFdlYlNldHRpbmdzOjpT
ZXRFZGl0YWJsZUxpbmtCZWhhdmlvcih3eEVkaXRhYmxlTGlua0JlaGF2aW9yIGJlaGF2aW9yKQot
ewotICAgIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHdlYkNvcmVCZWhhdmlvcjsKLSAg
ICBpZiAobV9zZXR0aW5ncykgewotICAgICAgICBzd2l0Y2ggKGJlaGF2aW9yKSB7Ci0gICAgICAg
IGNhc2Ugd3hFZGl0YWJsZUxpbmtBbHdheXNMaXZlOgotICAgICAgICAgICAgd2ViQ29yZUJlaGF2
aW9yID0gV2ViQ29yZTo6RWRpdGFibGVMaW5rQWx3YXlzTGl2ZTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIHd4RWRpdGFibGVMaW5rT25seUxpdmVXaXRoU2hpZnRLZXk6Ci0gICAg
ICAgICAgICB3ZWJDb3JlQmVoYXZpb3IgPSBXZWJDb3JlOjpFZGl0YWJsZUxpbmtPbmx5TGl2ZVdp
dGhTaGlmdEtleTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIHd4RWRpdGFibGVM
aW5rTGl2ZVdoZW5Ob3RGb2N1c2VkOgotICAgICAgICAgICAgd2ViQ29yZUJlaGF2aW9yID0gV2Vi
Q29yZTo6RWRpdGFibGVMaW5rTGl2ZVdoZW5Ob3RGb2N1c2VkOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2Ugd3hFZGl0YWJsZUxpbmtOZXZlckxpdmU6Ci0gICAgICAgICAgICB3ZWJD
b3JlQmVoYXZpb3IgPSBXZWJDb3JlOjpFZGl0YWJsZUxpbmtOZXZlckxpdmU7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHdlYkNvcmVCZWhhdmlvciA9
IFdlYkNvcmU6OkVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcjsKLSAgICAgICAgfQotICAgICAg
ICBtX3NldHRpbmdzLT5zZXRFZGl0YWJsZUxpbmtCZWhhdmlvcih3ZWJDb3JlQmVoYXZpb3IpOwot
ICAgIH0KLX0KLQotd3hFZGl0YWJsZUxpbmtCZWhhdmlvciBXZWJTZXR0aW5nczo6R2V0RWRpdGFi
bGVMaW5rQmVoYXZpb3IoKSBjb25zdAotewotICAgIHd4RWRpdGFibGVMaW5rQmVoYXZpb3IgYmVo
YXZpb3IgPSB3eEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcjsKLSAgICBpZiAobV9zZXR0aW5n
cykgewotICAgICAgICBXZWJDb3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlvciB3ZWJDb3JlQmVoYXZp
b3IgPSBtX3NldHRpbmdzLT5lZGl0YWJsZUxpbmtCZWhhdmlvcigpOwotICAgICAgICBzd2l0Y2gg
KHdlYkNvcmVCZWhhdmlvcikgewotICAgICAgICBjYXNlIFdlYkNvcmU6OkVkaXRhYmxlTGlua0Fs
d2F5c0xpdmU6Ci0gICAgICAgICAgICBiZWhhdmlvciA9IHd4RWRpdGFibGVMaW5rQWx3YXlzTGl2
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkVkaXRhYmxlTGlu
a09ubHlMaXZlV2l0aFNoaWZ0S2V5OgotICAgICAgICAgICAgYmVoYXZpb3IgPSB3eEVkaXRhYmxl
TGlua09ubHlMaXZlV2l0aFNoaWZ0S2V5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RWRpdGFibGVMaW5rTGl2ZVdoZW5Ob3RGb2N1c2VkOgotICAgICAgICAgICAg
YmVoYXZpb3IgPSB3eEVkaXRhYmxlTGlua0xpdmVXaGVuTm90Rm9jdXNlZDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkVkaXRhYmxlTGlua05ldmVyTGl2ZToKLSAg
ICAgICAgICAgIGJlaGF2aW9yID0gd3hFZGl0YWJsZUxpbmtOZXZlckxpdmU7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJlaGF2aW9yID0gd3hFZGl0
YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGJl
aGF2aW9yOwotfQotCi12b2lkIFdlYlNldHRpbmdzOjpTZXRQbHVnaW5zRW5hYmxlZChib29sIGVu
YWJsZWQpCi17Ci0gICAgaWYgKG1fc2V0dGluZ3MpCi0gICAgICAgIG1fc2V0dGluZ3MtPnNldFBs
dWdpbnNFbmFibGVkKGVuYWJsZWQpOwotfSAgCi0KLWJvb2wgV2ViU2V0dGluZ3M6OkFyZVBsdWdp
bnNFbmFibGVkKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZXR0aW5ncykKLSAgICAgICAgcmV0dXJu
IG1fc2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFibGVkKCk7Ci0gICAgICAgIAotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBXZWJTZXR0aW5nczo6U2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChi
b29sIGVuYWJsZWQpCi17Ci0gICAgaWYgKG1fc2V0dGluZ3MpCi0gICAgICAgIG1fc2V0dGluZ3Mt
PnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLWJvb2wgV2ViU2V0dGlu
Z3M6OlByaXZhdGVCcm93c2luZ0VuYWJsZWQoKQotewotICAgIGlmIChtX3NldHRpbmdzKQotICAg
ICAgICBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLXZvaWQgV2ViU2V0dGluZ3M6OlNldFVzZXNQYWdlQ2FjaGUoYm9vbCBlbmFi
bGVkKQotewotICAgIGlmIChtX3NldHRpbmdzKQotICAgICAgICBtX3NldHRpbmdzLT5zZXRVc2Vz
UGFnZUNhY2hlKGVuYWJsZWQpOwotfQotCi1ib29sIFdlYlNldHRpbmdzOjpVc2VzUGFnZUNhY2hl
KCkKLXsKLSAgICBpZiAobV9zZXR0aW5ncykKLSAgICAgICAgbV9zZXR0aW5ncy0+dXNlc1BhZ2VD
YWNoZSgpOwotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBXZWJTZXR0aW5nczo6
U2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAg
ICBpZiAobV9zZXR0aW5ncykKLSAgICAgICAgbV9zZXR0aW5ncy0+c2V0T2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVFbmFibGVkKGVuYWJsZWQpOwotfQotCi1ib29sIFdlYlNldHRpbmdzOjpPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKQotewotICAgIGlmIChtX3NldHRpbmdzKQot
ICAgICAgICBtX3NldHRpbmdzLT5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKTsK
LSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0gICAgCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYlNldHRpbmdzLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYzQ4NmExYWRjMDlmOTFiMGJkMzAzOGQ1
MWRiNzBkN2Q0ZWQ4MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJTZXR0aW5ncy5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2V2aW4gT2xsaXZpZXIuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0gCi0jaWZuZGVmIFdlYlNldHRpbmdzX2gKLSNkZWZpbmUgV2Vi
U2V0dGluZ3NfaAotCi0jaW5jbHVkZSAid3gvd3hwcmVjLmgiCi0jaWZuZGVmIFdYX1BSRUNPTVAK
LSAgICAjaW5jbHVkZSAid3gvd3guaCIKLSNlbmRpZgotCi0jaW5jbHVkZSAiV2ViS2l0RGVmaW5l
cy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTZXR0aW5nczsKLX0KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWVudW0gd3hFZGl0YWJsZUxpbmtCZWhhdmlvciB7Ci0gICAgd3hFZGl0
YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3IsCi0gICAgd3hFZGl0YWJsZUxpbmtBbHdheXNMaXZlLAot
ICAgIHd4RWRpdGFibGVMaW5rT25seUxpdmVXaXRoU2hpZnRLZXksCi0gICAgd3hFZGl0YWJsZUxp
bmtMaXZlV2hlbk5vdEZvY3VzZWQsCi0gICAgd3hFZGl0YWJsZUxpbmtOZXZlckxpdmUKLX07Ci0K
LS8qKgotICAgIEBjbGFzcyBXZWJTZXR0aW5ncwotICAgIAotICAgIFRoaXMgY2xhc3MgaXMgdXNl
ZCB0byBjb250cm9sIHRoZSBjb25maWd1cmFibGUgYXNwZWN0cyBvZiB0aGUgV2ViS2l0IGVuZ2lu
ZS4KLSAgICAKLSAgICBEbyBub3QgaW5zdGFudGlhdGUgdGhpcyBvYmplY3QgZGlyZWN0bHkuIElu
c3RlYWQsIGNyZWF0ZSBhIFdlYlZpZXcgYW5kCi0gICAgY2FsbCBpdHMgV2ViVmlldzo6R2V0V2Vi
U2V0dGluZ3MoKSBtZXRob2QgdG8gZ2V0IGFuZCBjaGFuZ2UgdGhhdCBXZWJWaWV3J3Mgc2V0dGlu
Z3MuCi0gICAgCi0qLwotCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViU2V0dGluZ3M6IHB1
YmxpYyB3eE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgV2ViU2V0dGluZ3MoV2ViQ29yZTo6U2V0dGlu
Z3MqIHNldHRpbmdzKSA6Ci0gICAgICAgIHd4T2JqZWN0KCksCi0gICAgICAgIG1fc2V0dGluZ3Mo
c2V0dGluZ3MpCi0gICAgeyB9Ci0gICAgCi0gICAgV2ViU2V0dGluZ3MoKSA6IHd4T2JqZWN0KCkg
eyB9Ci0gICAgCi0gICAgdmlydHVhbCB+V2ViU2V0dGluZ3MoKSB7IH0KLQotICAgIC8qKgotICAg
ICAgICBTZXRzIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBmb3IgZml4ZWQgZm9udHMuCi0gICAgKi8K
LSAgICB2b2lkIFNldERlZmF1bHRGaXhlZEZvbnRTaXplKGludCBzaXplKTsKLSAgICAKLSAgICAv
KioKLSAgICAgICAgUmV0dXJucyB0aGUgZGVmYXVsdCBmb250IHNpemUgZm9yIGZpeGVkIGZvbnRz
LgotICAgICovCi0gICAgaW50IEdldERlZmF1bHRGaXhlZEZvbnRTaXplKCkgY29uc3Q7Ci0gICAg
Ci0gICAgLyoqCi0gICAgICAgIFNldHMgdGhlIGRlZmF1bHQgZm9udCBzaXplIGZvciBmb250cy4K
LSAgICAqLwotICAgIHZvaWQgU2V0RGVmYXVsdEZvbnRTaXplKGludCBzaXplKTsKLQotICAgIC8q
KgotICAgICAgICBSZXR1cm5zIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBmb3IgZm9udHMuCi0gICAg
Ki8KLSAgICBpbnQgR2V0RGVmYXVsdEZvbnRTaXplKCkgY29uc3Q7Ci0gICAgCi0gICAgLyoqCi0g
ICAgICAgIFNldHMgdGhlIG1pbmltdW0gYWNjZXB0YWJsZSBmb250IHNpemUuCi0gICAgKi8KLSAg
ICB2b2lkIFNldE1pbmltdW1Gb250U2l6ZShpbnQgc2l6ZSk7Ci0KLSAgICAvKioKLSAgICAgICAg
UmV0dXJucyB0aGUgbWluaW11bSBhY2NlcHRhYmxlIGZvbnQgc2l6ZS4KLSAgICAqLwotICAgIGlu
dCBHZXRNaW5pbXVtRm9udFNpemUoKSBjb25zdDsKLSAgICAKLSAgICAvKioKLSAgICAgICAgU2V0
cyB3aGV0aGVyIG9yIG5vdCBpbWFnZXMgYXJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LiAoZS5nLiBp
biBlbWFpbCAKLSAgICAgICAgcHJvZ3JhbXMgeW91IG1heSB3aXNoIHRvIG5vdCBsb2FkIGltYWdl
cyB1bnRpbCB5b3UgY29uZmlybSBpdCBpcyBub3QgU1BBTSkKLSAgICAqLwotICAgIHZvaWQgU2V0
TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wpOwotICAgIAotICAgIC8qKgotICAgICAgICBS
ZXR1cm5zIHdoZXRoZXIgb3Igbm90IGltYWdlcyBhcmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuCi0g
ICAgKi8KLSAgICBib29sIExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpIGNvbnN0OwotICAgIAot
ICAgIC8qKgotICAgICAgICBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSBXZWJWaWV3IHJ1bnMgSmF2
YVNjcmlwdCBjb2RlLgotICAgICovCi0gICAgdm9pZCBTZXRKYXZhU2NyaXB0RW5hYmxlZChib29s
KTsKLQotICAgIC8qKgotICAgICAgICBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBXZWJWaWV3
IHJ1bnMgSmF2YVNjcmlwdCBjb2RlLgotICAgICovCi0gICAgYm9vbCBJc0phdmFTY3JpcHRFbmFi
bGVkKCkgY29uc3Q7Ci0gICAgCi0gICAgLyoqCi0gICAgICAgIFNldHMgdGhlIHBhdGggd2hlcmUg
bG9jYWwgZGF0YSB3aWxsIGJlIHN0b3JlZC4KLSAgICAqLwotICAgIHZvaWQgU2V0TG9jYWxTdG9y
YWdlUGF0aChjb25zdCB3eFN0cmluZyYgcGF0aCk7Ci0KLSAgICAvKioKLSAgICAgICAgUmV0dXJu
cyB0aGUgcGF0aCB3aGVyZSBsb2NhbCBkYXRhIHdpbGwgYmUgc3RvcmVkLgotICAgICovCi0gICAg
d3hTdHJpbmcgR2V0TG9jYWxTdG9yYWdlUGF0aCgpIGNvbnN0OwotICAgIAotICAgIC8qKgotICAg
ICAgICBTZXRzIGhvdyBsaW5rcyBhcmUgaGFuZGxlZCB3aGVuIHRoZSBXZWJWaWV3IGlzIGluIGVk
aXRpbmcgbW9kZS4gCi0gICAgKi8gICAgCi0gICAgdm9pZCBTZXRFZGl0YWJsZUxpbmtCZWhhdmlv
cih3eEVkaXRhYmxlTGlua0JlaGF2aW9yIGJlaGF2aW9yKTsKLSAgICAKLSAgICAvKioKLSAgICAg
ICAgUmV0dXJucyBob3cgbGlua3MgYXJlIGhhbmRsZWQgd2hlbiB0aGUgV2ViVmlldyBpcyBpbiBl
ZGl0aW5nIG1vZGUuIAotICAgICovICAgCi0gICAgd3hFZGl0YWJsZUxpbmtCZWhhdmlvciBHZXRF
ZGl0YWJsZUxpbmtCZWhhdmlvcigpIGNvbnN0OwotICAgIAotICAgIC8qKgotICAgICAgICBTZXRz
IHdoZXRoZXIgb3Igbm90IHdlYiBwYWdlcyBjYW4gbG9hZCBwbHVnaW5zLgotICAgICovCi0gICAg
dm9pZCBTZXRQbHVnaW5zRW5hYmxlZChib29sKTsKLSAgICAKLSAgICAvKioKLSAgICAgICAgUmV0
dXJucyB3aGV0aGVyIG9yIG5vdCB3ZWIgcGFnZXMgY2FuIGxvYWQgcGx1Z2lucy4KLSAgICAqLyAg
ICAKLSAgICBib29sIEFyZVBsdWdpbnNFbmFibGVkKCkgY29uc3Q7Ci0gICAgCi0gICAgLyoqCi0g
ICAgICAgIEVuYWJsZXMgb3IgZGlzYWJsZXMgcHJpdmF0ZSBicm93c2luZyBtb2RlLiBXaGVuIG9u
LCB3eFdlYktpdCB3aWxsIGF2b2lkIHN0b3JpbmcKLSAgICAgICAgYW55IHNvcnQgb2YgcGVyc2lz
dGVudCBkYXRhIG9yIHN0b3JhZ2Ugb24gZGlzay4KLSAgICAqLwotICAgIHZvaWQgU2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChib29sKTsKLSAgICAKLSAgICAvKioKLSAgICAgICAgUmV0dXJucyB0
aGUgY3VycmVudCBzdGF0ZSBvZiBwcml2YXRlIGJyb3dzaW5nIG1vZGUuCi0gICAgKi8KLSAgICBi
b29sIFByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLSAgICAKLSAgICAvKioKLSAgICAgICAgU2V0
cyB3aGV0aGVyIG9yIG5vdCB3eFdlYktpdCBjYWNoZXMgcGFnZXMuCi0gICAgKi8KLSAgICB2b2lk
IFNldFVzZXNQYWdlQ2FjaGUoYm9vbCk7Ci0gICAgCi0gICAgLyoqCi0gICAgICAgIFJldHVybnMg
d2hldGhlciBvciBub3Qgd3hXZWJLaXQgY2FjaGVzIHBhZ2VzLgotICAgICovCi0gICAgYm9vbCBV
c2VzUGFnZUNhY2hlKCk7Ci0gICAgCi0gICAgLyoqCi0gICAgICAgIFNldHMgd2hldGhlciBvciBu
b3Qgd3hXZWJLaXQgdXNlcyB0aGUgb2ZmZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlLgotICAg
ICovCi0gICAgdm9pZCBTZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCk7
Ci0gICAgCi0gICAgLyoqCi0gICAgICAgIFJldHVybnMgd2hldGhlciBvciBub3Qgd3hXZWJLaXQg
dXNlcyB0aGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUuCi0gICAgKi8KLSAgICBib29s
IE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpOwotICAgIAotcHJpdmF0ZToKLSAg
ICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKLQotfTsKLQotfQotCi0jZW5kaWYgLy8g
V2ViU2V0dGluZ3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY3MDE3NGFlYTM5Y2RkMmVjYTcxMTc2YmMxYmUxYjE2OTlmYjUwOWUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJW
aWV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBLZXZpbiBPbGxpdmllciAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLQotI2luY2x1ZGUgIkNv
bnRleHRNZW51LmgiCi0jaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCi0jaW5jbHVk
ZSAiQ29udGV4dE1lbnVJdGVtLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJF
ZGl0b3IuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRW1wdHlDbGllbnRzLmgi
Ci0jaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0jaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKLSNp
bmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJIVE1M
Rm9ybUVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbml0aWFsaXplTG9nZ2luZy5oIgotI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgotI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFnZXIuaCIKLSNp
bmNsdWRlICJTY3JvbGxiYXIuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlN1
YnN0aXR1dGVEYXRhLmgiCi0jaW5jbHVkZSAiVGhyZWFkaW5nLmgiCi0jaW5jbHVkZSAibWFya3Vw
LmgiCi0jaWYgX19XWE1TV19fCi0jaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCi0j
ZW5kaWYKLQotI2luY2x1ZGUgIkNocm9tZUNsaWVudFd4LmgiCi0jaW5jbHVkZSAiQ29udGV4dE1l
bnVDbGllbnRXeC5oIgotI2luY2x1ZGUgIkRyYWdDbGllbnRXeC5oIgotI2luY2x1ZGUgIkVkaXRv
ckNsaWVudFd4LmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRXeC5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudFd4LmgiCi0KLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1
ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgotI2VuZGlmCi0KLSNpbmNsdWRlICJ3eC93eHByZWMuaCIK
LSNpZm5kZWYgV1hfUFJFQ09NUAotICAgICNpbmNsdWRlICJ3eC93eC5oIgotI2VuZGlmCi0KLSNp
bmNsdWRlICJXZWJET01FbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViRE9NTm9kZS5oIgotCi0jaW5j
bHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJWaWV3UHJpdmF0ZS5oIgotCi0jaW5jbHVk
ZSA8d3gvZGVmcy5oPgotI2luY2x1ZGUgPHd4L2RjYnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3gvZGNn
cmFwaC5oPgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLWludCByaW50KGRvdWJsZSB2YWwpCi17
Ci0gICAgcmV0dXJuIChpbnQpKHZhbCA8IDAgPyB2YWwgLSAwLjUgOiB2YWwgKyAwLjUpOwotfQot
I2VuZGlmCi0KLSNpZiBPUyhEQVJXSU4pCi0vLyBwcm90b3R5cGUgLSBmdW5jdGlvbiBpcyBpbiBX
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KLXZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9p
ZCk7Ci0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gV2ViVmlldyBFdmVudHMK
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLUlNUExFTUVO
VF9EWU5BTUlDX0NMQVNTKFdlYlZpZXdMb2FkRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQotCi1ERUZJ
TkVfRVZFTlRfVFlQRSh3eEVWVF9XRUJWSUVXX0xPQUQpCi0KLVdlYlZpZXdMb2FkRXZlbnQ6Oldl
YlZpZXdMb2FkRXZlbnQod3hXaW5kb3cqIHdpbikKLXsKLSAgICBTZXRFdmVudFR5cGUoIHd4RVZU
X1dFQlZJRVdfTE9BRCk7Ci0gICAgU2V0RXZlbnRPYmplY3QoIHdpbiApOwotICAgIGlmICh3aW4p
Ci0gICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7Ci19Ci0KLUlNUExFTUVOVF9EWU5BTUlDX0NM
QVNTKFdlYlZpZXdCZWZvcmVMb2FkRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQotCi1ERUZJTkVfRVZF
TlRfVFlQRSh3eEVWVF9XRUJWSUVXX0JFRk9SRV9MT0FEKQotCi1XZWJWaWV3QmVmb3JlTG9hZEV2
ZW50OjpXZWJWaWV3QmVmb3JlTG9hZEV2ZW50KHd4V2luZG93KiB3aW4pCi17Ci0gICAgbV9jYW5j
ZWxsZWQgPSBmYWxzZTsKLSAgICBTZXRFdmVudFR5cGUod3hFVlRfV0VCVklFV19CRUZPUkVfTE9B
RCk7Ci0gICAgU2V0RXZlbnRPYmplY3Qod2luKTsKLSAgICBpZiAod2luKQotICAgICAgICBTZXRJ
ZCh3aW4tPkdldElkKCkpOwotfQotCi1JTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3TmV3
V2luZG93RXZlbnQsIHd4Q29tbWFuZEV2ZW50KQotCi1ERUZJTkVfRVZFTlRfVFlQRSh3eEVWVF9X
RUJWSUVXX05FV19XSU5ET1cpCi0KLVdlYlZpZXdOZXdXaW5kb3dFdmVudDo6V2ViVmlld05ld1dp
bmRvd0V2ZW50KHd4V2luZG93KiB3aW4pCi17Ci0gICAgU2V0RXZlbnRUeXBlKHd4RVZUX1dFQlZJ
RVdfTkVXX1dJTkRPVyk7Ci0gICAgU2V0RXZlbnRPYmplY3Qod2luKTsKLSAgICBpZiAod2luKQot
ICAgICAgICBTZXRJZCh3aW4tPkdldElkKCkpOwotfQotCi1JTVBMRU1FTlRfRFlOQU1JQ19DTEFT
UyhXZWJWaWV3UmlnaHRDbGlja0V2ZW50LCB3eENvbW1hbmRFdmVudCkKLQotREVGSU5FX0VWRU5U
X1RZUEUod3hFVlRfV0VCVklFV19SSUdIVF9DTElDSykKLQotV2ViVmlld1JpZ2h0Q2xpY2tFdmVu
dDo6V2ViVmlld1JpZ2h0Q2xpY2tFdmVudCh3eFdpbmRvdyogd2luKQotewotICAgIFNldEV2ZW50
VHlwZSh3eEVWVF9XRUJWSUVXX1JJR0hUX0NMSUNLKTsKLSAgICBTZXRFdmVudE9iamVjdCh3aW4p
OwotICAgIGlmICh3aW4pCi0gICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7Ci19Ci0KLUlNUExF
TUVOVF9EWU5BTUlDX0NMQVNTKFdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50LCB3eENvbW1hbmRF
dmVudCkKLQotREVGSU5FX0VWRU5UX1RZUEUod3hFVlRfV0VCVklFV19DT05TT0xFX01FU1NBR0Up
Ci0KLVdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50OjpXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVu
dCh3eFdpbmRvdyogd2luKQotewotICAgIFNldEV2ZW50VHlwZSh3eEVWVF9XRUJWSUVXX0NPTlNP
TEVfTUVTU0FHRSk7Ci0gICAgU2V0RXZlbnRPYmplY3Qod2luKTsKLSAgICBpZiAod2luKQotICAg
ICAgICBTZXRJZCh3aW4tPkdldElkKCkpOwotfQotCi1JTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhX
ZWJWaWV3QWxlcnRFdmVudCwgd3hDb21tYW5kRXZlbnQpCi0KLURFRklORV9FVkVOVF9UWVBFKHd4
RVZUX1dFQlZJRVdfSlNfQUxFUlQpCi0KLVdlYlZpZXdBbGVydEV2ZW50OjpXZWJWaWV3QWxlcnRF
dmVudCh3eFdpbmRvdyogd2luKQotewotICAgIFNldEV2ZW50VHlwZSh3eEVWVF9XRUJWSUVXX0pT
X0FMRVJUKTsKLSAgICBTZXRFdmVudE9iamVjdCh3aW4pOwotICAgIGlmICh3aW4pCi0gICAgICAg
IFNldElkKHdpbi0+R2V0SWQoKSk7Ci19Ci0KLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNTKFdlYlZp
ZXdDb25maXJtRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQotCi1ERUZJTkVfRVZFTlRfVFlQRSh3eEVW
VF9XRUJWSUVXX0pTX0NPTkZJUk0pCi0KLVdlYlZpZXdDb25maXJtRXZlbnQ6OldlYlZpZXdDb25m
aXJtRXZlbnQod3hXaW5kb3cqIHdpbikKLXsKLSAgICBTZXRFdmVudFR5cGUod3hFVlRfV0VCVklF
V19KU19DT05GSVJNKTsKLSAgICBTZXRFdmVudE9iamVjdCh3aW4pOwotICAgIGlmICh3aW4pCi0g
ICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7Ci19Ci0KLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNT
KFdlYlZpZXdQcm9tcHRFdmVudCwgd3hDb21tYW5kRXZlbnQpCi0KLURFRklORV9FVkVOVF9UWVBF
KHd4RVZUX1dFQlZJRVdfSlNfUFJPTVBUKQotCi1XZWJWaWV3UHJvbXB0RXZlbnQ6OldlYlZpZXdQ
cm9tcHRFdmVudCh3eFdpbmRvdyogd2luKQotewotICAgIFNldEV2ZW50VHlwZSh3eEVWVF9XRUJW
SUVXX0pTX1BST01QVCk7Ci0gICAgU2V0RXZlbnRPYmplY3Qod2luKTsKLSAgICBpZiAod2luKQot
ICAgICAgICBTZXRJZCh3aW4tPkdldElkKCkpOwotfQotCi1JTVBMRU1FTlRfRFlOQU1JQ19DTEFT
UyhXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50LCB3eENvbW1hbmRFdmVudCkKLQotREVGSU5FX0VW
RU5UX1RZUEUod3hFVlRfV0VCVklFV19SRUNFSVZFRF9USVRMRSkKLQotV2ViVmlld1JlY2VpdmVk
VGl0bGVFdmVudDo6V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCh3eFdpbmRvdyogd2luKQotewot
ICAgIFNldEV2ZW50VHlwZSh3eEVWVF9XRUJWSUVXX1JFQ0VJVkVEX1RJVExFKTsKLSAgICBTZXRF
dmVudE9iamVjdCh3aW4pOwotICAgIGlmICh3aW4pCi0gICAgICAgIFNldElkKHdpbi0+R2V0SWQo
KSk7Ci19Ci0KLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNTKFdlYlZpZXdXaW5kb3dPYmplY3RDbGVh
cmVkRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQotCi1ERUZJTkVfRVZFTlRfVFlQRSh3eEVWVF9XRUJW
SUVXX1dJTkRPV19PQkpFQ1RfQ0xFQVJFRCkKLQotV2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRF
dmVudDo6V2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRFdmVudCh3eFdpbmRvdyogd2luKQotewot
ICAgIFNldEV2ZW50VHlwZSh3eEVWVF9XRUJWSUVXX1dJTkRPV19PQkpFQ1RfQ0xFQVJFRCk7Ci0g
ICAgU2V0RXZlbnRPYmplY3Qod2luKTsKLSAgICBpZiAod2luKQotICAgICAgICBTZXRJZCh3aW4t
PkdldElkKCkpOwotfQotCi1JTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3Q29udGVudHND
aGFuZ2VkRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQotCi1ERUZJTkVfRVZFTlRfVFlQRSh3eEVWVF9X
RUJWSUVXX0NPTlRFTlRTX0NIQU5HRUQpCi0KLVdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudDo6
V2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50KHd4V2luZG93KiB3aW4pCi17Ci0gICAgU2V0RXZl
bnRUeXBlKHd4RVZUX1dFQlZJRVdfQ09OVEVOVFNfQ0hBTkdFRCk7Ci0gICAgU2V0RXZlbnRPYmpl
Y3Qod2luKTsKLSAgICBpZiAod2luKQotICAgICAgICBTZXRJZCh3aW4tPkdldElkKCkpOwotfQot
Ci1JTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50LCB3
eENvbW1hbmRFdmVudCkKLQotREVGSU5FX0VWRU5UX1RZUEUod3hFVlRfV0VCVklFV19TRUxFQ1RJ
T05fQ0hBTkdFRCkKLQotV2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVudDo6V2ViVmlld1NlbGVj
dGlvbkNoYW5nZWRFdmVudCh3eFdpbmRvdyogd2luKQotewotICAgIFNldEV2ZW50VHlwZSh3eEVW
VF9XRUJWSUVXX1NFTEVDVElPTl9DSEFOR0VEKTsKLSAgICBTZXRFdmVudE9iamVjdCh3aW4pOwot
ICAgIGlmICh3aW4pCi0gICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7Ci19Ci0KLUlNUExFTUVO
VF9EWU5BTUlDX0NMQVNTKFdlYlZpZXdQcmludEZyYW1lRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQot
Ci1ERUZJTkVfRVZFTlRfVFlQRSh3eEVWVF9XRUJWSUVXX1BSSU5UX0ZSQU1FKQotCi1XZWJWaWV3
UHJpbnRGcmFtZUV2ZW50OjpXZWJWaWV3UHJpbnRGcmFtZUV2ZW50KHd4V2luZG93KiB3aW4pCi17
Ci0gICAgU2V0RXZlbnRUeXBlKHd4RVZUX1dFQlZJRVdfUFJJTlRfRlJBTUUpOwotICAgIFNldEV2
ZW50T2JqZWN0KHdpbik7Ci0gICAgaWYgKHdpbikKLSAgICAgICAgU2V0SWQod2luLT5HZXRJZCgp
KTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTSBFbGVtZW50IGluZm8gZGF0YSB0eXBlCi0vLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XZWJWaWV3
RE9NRWxlbWVudEluZm86OldlYlZpZXdET01FbGVtZW50SW5mbygpIDoKLSAgICBtX2lzU2VsZWN0
ZWQoZmFsc2UpLAotICAgIG1fdGV4dCh3eEVtcHR5U3RyaW5nKSwKLSAgICBtX2ltYWdlU3JjKHd4
RW1wdHlTdHJpbmcpLAotICAgIG1fbGluayh3eEVtcHR5U3RyaW5nKSwKLSAgICBtX3VybEVsZW1l
bnQoMCksCi0gICAgbV9pbm5lck5vZGUoMCkKLXsKLX0KLQotc3RhdGljIFdlYlZpZXdDYWNoZVBv
bGljeSBnc19jYWNoZVBvbGljeTsKLQotLyogc3RhdGljICovCi12b2lkIFdlYlZpZXc6OlNldENh
Y2hlUG9saWN5KGNvbnN0IFdlYlZpZXdDYWNoZVBvbGljeSYgY2FjaGVQb2xpY3kpCi17Ci0gICAg
V2ViQ29yZTo6TWVtb3J5Q2FjaGUqIGdsb2JhbENhY2hlID0gV2ViQ29yZTo6bWVtb3J5Q2FjaGUo
KTsKLSAgICBnbG9iYWxDYWNoZS0+c2V0Q2FwYWNpdGllcyhjYWNoZVBvbGljeS5HZXRNaW5EZWFk
Q2FwYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVBvbGljeS5H
ZXRNYXhEZWFkQ2FwYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNo
ZVBvbGljeS5HZXRDYXBhY2l0eSgpKTsKLQotICAgIC8vIHN0b3JlIGEgY29weSBzaW5jZSB0aGVy
ZSBpcyBubyBnZXR0ZXIgZm9yIE1lbW9yeUNhY2hlIHZhbHVlcwotICAgIGdzX2NhY2hlUG9saWN5
ID0gY2FjaGVQb2xpY3k7Ci19Ci0KLS8qIHN0YXRpYyAqLwotV2ViVmlld0NhY2hlUG9saWN5IFdl
YlZpZXc6OkdldENhY2hlUG9saWN5KCkKLXsKLSAgICByZXR1cm4gZ3NfY2FjaGVQb2xpY3k7Ci19
Ci0KLVdlYlZpZXdET01FbGVtZW50SW5mbzo6V2ViVmlld0RPTUVsZW1lbnRJbmZvKGNvbnN0IFdl
YlZpZXdET01FbGVtZW50SW5mbyYgb3RoZXIpCi17Ci0gICAgbV9pc1NlbGVjdGVkID0gb3RoZXIu
bV9pc1NlbGVjdGVkOwotICAgIG1fdGV4dCA9IG90aGVyLm1fdGV4dDsKLSAgICBtX2ltYWdlU3Jj
ID0gb3RoZXIubV9pbWFnZVNyYzsKLSAgICBtX2xpbmsgPSBvdGhlci5tX2xpbms7Ci0gICAgbV9p
bm5lck5vZGUgPSBvdGhlci5tX2lubmVyTm9kZTsKLSAgICBtX3VybEVsZW1lbnQgPSBvdGhlci5t
X3VybEVsZW1lbnQ7Ci19Ci0KLVdlYlZpZXdET01FbGVtZW50SW5mbzo6fldlYlZpZXdET01FbGVt
ZW50SW5mbygpIAotewotICAgIGlmIChtX2lubmVyTm9kZSkKLSAgICAgICAgZGVsZXRlIG1faW5u
ZXJOb2RlOwotICAgICAgICAKLSAgICBpZiAobV91cmxFbGVtZW50KQotICAgICAgICBkZWxldGUg
bV91cmxFbGVtZW50OwotfQotCi1CRUdJTl9FVkVOVF9UQUJMRShXZWJWaWV3LCB3eFdpbmRvdykK
LSAgICBFVlRfUEFJTlQoV2ViVmlldzo6T25QYWludCkKLSAgICBFVlRfU0laRShXZWJWaWV3OjpP
blNpemUpCi0gICAgRVZUX01PVVNFX0VWRU5UUyhXZWJWaWV3OjpPbk1vdXNlRXZlbnRzKQotICAg
IEVWVF9DT05URVhUX01FTlUoV2ViVmlldzo6T25Db250ZXh0TWVudUV2ZW50cykKLSAgICBFVlRf
S0VZX0RPV04oV2ViVmlldzo6T25LZXlFdmVudHMpCi0gICAgRVZUX0tFWV9VUChXZWJWaWV3OjpP
bktleUV2ZW50cykKLSAgICBFVlRfQ0hBUihXZWJWaWV3OjpPbktleUV2ZW50cykKLSAgICBFVlRf
U0VUX0ZPQ1VTKFdlYlZpZXc6Ok9uU2V0Rm9jdXMpCi0gICAgRVZUX0tJTExfRk9DVVMoV2ViVmll
dzo6T25LaWxsRm9jdXMpCi0gICAgRVZUX01PVVNFX0NBUFRVUkVfTE9TVChXZWJWaWV3OjpPbk1v
dXNlQ2FwdHVyZUxvc3QpCi1FTkRfRVZFTlRfVEFCTEUoKQotCi1JTVBMRU1FTlRfRFlOQU1JQ19D
TEFTUyhXZWJWaWV3LCB3eFdpbmRvdykKLQotY29uc3Qgd3hDaGFyKiBXZWJWaWV3TmFtZVN0ciA9
IHd4VCgid2ViVmlldyIpOwotCi1XZWJWaWV3OjpXZWJWaWV3KCkgOgotICAgIG1fdGV4dE1hZ25p
ZmllcigxLjApLAotICAgIG1faXNJbml0aWFsaXplZChmYWxzZSksCi0gICAgbV9iZWluZ0Rlc3Ry
b3llZChmYWxzZSksCi0gICAgbV9tb3VzZVdoZWVsWm9vbXMoZmFsc2UpLAotICAgIG1fdGl0bGUo
d3hFbXB0eVN0cmluZykKLXsKLX0KLQotV2ViVmlldzo6V2ViVmlldyh3eFdpbmRvdyogcGFyZW50
LCBjb25zdCB3eFN0cmluZyYgdXJsLCBpbnQgaWQsIGNvbnN0IHd4UG9pbnQmIHBvc2l0aW9uLCAK
LSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSwgbG9uZyBzdHlsZSwgY29u
c3Qgd3hTdHJpbmcmIG5hbWUpIDoKLSAgICBtX3RleHRNYWduaWZpZXIoMS4wKSwKLSAgICBtX2lz
SW5pdGlhbGl6ZWQoZmFsc2UpLAotICAgIG1fYmVpbmdEZXN0cm95ZWQoZmFsc2UpLAotICAgIG1f
bW91c2VXaGVlbFpvb21zKGZhbHNlKSwKLSAgICBtX3RpdGxlKHd4RW1wdHlTdHJpbmcpCi17Ci0g
ICAgQ3JlYXRlKHBhcmVudCwgdXJsLCBpZCwgcG9zaXRpb24sIHNpemUsIHN0eWxlLCBuYW1lKTsK
LX0KLQotYm9vbCBXZWJWaWV3OjpDcmVhdGUod3hXaW5kb3cqIHBhcmVudCwgY29uc3Qgd3hTdHJp
bmcmIHVybCwgaW50IGlkLCBjb25zdCB3eFBvaW50JiBwb3NpdGlvbiwgCi0gICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSwgbG9uZyBzdHlsZSwgY29uc3Qgd3hTdHJpbmcm
IG5hbWUpCi17Ci0jaWYgT1MoREFSV0lOKQotICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KCk7Ci0jZW5kaWYKLQotICAgIGlmICggKHN0eWxlICYgd3hCT1JERVJfTUFTSykgPT0gMCkKLSAg
ICAgICAgc3R5bGUgfD0gd3hCT1JERVJfTk9ORTsKLSAgICAKLSAgICBpZiAoIXd4V2luZG93OjpD
cmVhdGUocGFyZW50LCBpZCwgcG9zaXRpb24sIHNpemUsIHN0eWxlLCBuYW1lKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZCgpOwotCi0vLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNl
IHdlIGFyZSB1c2luZyBTaGFyZWRUaW1lcldpbi5jcHAgb24gV2luZG93cywKLS8vIGR1ZSB0byBh
IHByb2JsZW0gd2l0aCBleGNlcHRpb25zIGdldHRpbmcgZWF0ZW4gd2hlbiB1c2luZyB0aGUgY2Fs
bGJhY2sKLS8vIGFwcHJvYWNoIHRvIHRpbWVycyAod2hpY2ggd3ggaXRzZWxmIHVzZXMpLgotI2lm
IF9fV1hNU1dfXwotICAgIFdlYkNvcmU6OnNldEluc3RhbmNlSGFuZGxlKHd4R2V0SW5zdGFuY2Uo
KSk7Ci0jZW5kaWYKLQotICAgIC8vIHRoaXMgaGVscHMgcmVkdWNlIGZsaWNrZXIgb24gcGxhdGZv
cm1zIGxpa2UgTVNXCi0gICAgU2V0QmFja2dyb3VuZFN0eWxlKHd4QkdfU1RZTEVfQ1VTVE9NKTsK
LQotICAgIG1faW1wbCA9IG5ldyBXZWJWaWV3UHJpdmF0ZSgpOwotCi0jaWYgIUxPR19ESVNBQkxF
RAotICAgIFdlYkNvcmU6OmluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwot
I2VuZGlmIC8vICFMT0dfRElTQUJMRUQKLSAgICBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIHBhcmVudEZyYW1lID0gMDsKLQotICAgIFdlYkNvcmU6OkVkaXRvckNsaWVudFd4KiBlZGl0
b3JDbGllbnQgPSBuZXcgV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3goKTsKLQotICAgIFdlYkNvcmU6
OlBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOwotICAgIHBhZ2VDbGllbnRzLmNocm9tZUNs
aWVudCA9IG5ldyBXZWJDb3JlOjpDaHJvbWVDbGllbnRXeCh0aGlzKTsKLSAgICBwYWdlQ2xpZW50
cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFd4KCk7
Ci0gICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gZWRpdG9yQ2xpZW50OwotICAgIHBhZ2VD
bGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViQ29yZTo6RHJhZ0NsaWVudFd4KCk7Ci0gICAgcGFn
ZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFd4
KCk7Ci0gICAgbV9pbXBsLT5wYWdlID0gbmV3IFdlYkNvcmU6OlBhZ2UocGFnZUNsaWVudHMpOwot
ICAgIGVkaXRvckNsaWVudC0+c2V0UGFnZShtX2ltcGwtPnBhZ2UpOwotICAgIAotICAgIG1fbWFp
bkZyYW1lID0gbmV3IFdlYkZyYW1lKHRoaXMpOwotCi0gICAgLy8gRGVmYXVsdCBzZXR0aW5ncyAt
IHdlIHNob3VsZCBoYXZlIFdlYlZpZXdTZXR0aW5ncyBjbGFzcyBmb3IgdGhpcwotICAgIC8vIGV2
ZW50dWFsbHkKLSAgICBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ltcGwtPnBhZ2Ut
PnNldHRpbmdzKCk7Ci0gICAgc2V0dGluZ3MtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSh0
cnVlKTsKLSAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoMTMpOwotICAgIHNl
dHRpbmdzLT5zZXREZWZhdWx0Rm9udFNpemUoMTYpOwotICAgIHNldHRpbmdzLT5zZXRTZXJpZkZv
bnRGYW1pbHkoIlRpbWVzIE5ldyBSb21hbiIpOwotICAgIHNldHRpbmdzLT5zZXRGaXhlZEZvbnRG
YW1pbHkoIkNvdXJpZXIgTmV3Iik7Ci0gICAgc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1p
bHkoIkFyaWFsIik7Ci0gICAgc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMg
TmV3IFJvbWFuIik7Ci0gICAgc2V0dGluZ3MtPnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7Ci0KLSNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFNldERhdGFiYXNlc0VuYWJsZWQodHJ1ZSk7Ci0j
ZW5kaWYKLQotICAgIC8vIHdlIG5lZWQgdG8gZG8gdGhpcyBzbyB0aGF0IG9iamVjdHMgbGlrZSB0
aGUgZm9jdXNDb250cm9sbGVyIGFyZSBwcm9wZXJseQotICAgIC8vIGluaXRpYWxpemVkIHNvIHRo
YXQgdGhlIGFjdGl2YXRlIGhhbmRsZXIgaXMgcnVuIHByb3Blcmx5LgotICAgIExvYWRVUkwodXJs
KTsKLSAgICAKLSAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLVdlYlZpZXc6On5XZWJWaWV3KCkKLXsKLSAgICBtX2JlaW5nRGVzdHJveWVkID0gdHJ1
ZTsKLSAgICAKLSAgICB3aGlsZSAoSGFzQ2FwdHVyZSgpKQotICAgICAgICBSZWxlYXNlTW91c2Uo
KTsKLSAgICAKLSAgICBpZiAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPkdldEZyYW1lKCkp
Ci0gICAgICAgIG1fbWFpbkZyYW1lLT5HZXRGcmFtZSgpLT5sb2FkZXIoKS0+ZGV0YWNoRnJvbVBh
cmVudCgpOwotICAgIAotICAgIGRlbGV0ZSBtX2ltcGwtPnBhZ2U7Ci0gICAgbV9pbXBsLT5wYWdl
ID0gMDsgICAKLX0KLQotLy8gTk9URTogYmluZGluZyB0byB0aGlzIGV2ZW50IGluIHRoZSBXZWJW
aWV3IGNvbnN0cnVjdG9yIGlzIHRvbyBlYXJseSBpbiAKLS8vIHNvbWUgY2FzZXMsIGJ1dCBsZWF2
ZSB0aGUgZXZlbnQgaGFuZGxlciBoZXJlIHNvIHRoYXQgdXNlcnMgY2FuIGJpbmQgdG8gaXQKLS8v
IGF0IGEgbGF0ZXIgdGltZSBpZiB0aGV5IGhhdmUgYWN0aXZhdGlvbiBzdGF0ZSBwcm9ibGVtcy4K
LXZvaWQgV2ViVmlldzo6T25UTFdBY3RpdmF0ZWQod3hBY3RpdmF0ZUV2ZW50JiBldmVudCkKLXsg
ICAgICAgIAotICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5wYWdlICYmIG1faW1wbC0+cGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkpCi0gICAgICAgIG1faW1wbC0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPnNldEFjdGl2ZShldmVudC5HZXRBY3RpdmUoKSk7Ci0gICAgCi0gICAgZXZlbnQuU2tpcCgp
OwotICAgIAotfQotCi12b2lkIFdlYlZpZXc6OlN0b3AoKQotewotICAgIGlmIChtX21haW5GcmFt
ZSkKLSAgICAgICAgbV9tYWluRnJhbWUtPlN0b3AoKTsKLX0KLQotdm9pZCBXZWJWaWV3OjpSZWxv
YWQoKQotewotICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAgICAgbV9tYWluRnJhbWUtPlJlbG9h
ZCgpOwotfQotCi13eFN0cmluZyBXZWJWaWV3OjpHZXRQYWdlU291cmNlKCkKLXsKLSAgICBpZiAo
bV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBtX21haW5GcmFtZS0+R2V0UGFnZVNvdXJjZSgp
OwotCi0gICAgcmV0dXJuIHd4RW1wdHlTdHJpbmc7Ci19Ci0KLXZvaWQgV2ViVmlldzo6U2V0UGFn
ZVNvdXJjZShjb25zdCB3eFN0cmluZyYgc291cmNlLCBjb25zdCB3eFN0cmluZyYgYmFzZVVybCwg
Y29uc3Qgd3hTdHJpbmcmIG1pbWV0eXBlKQotewotICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAg
ICAgbV9tYWluRnJhbWUtPlNldFBhZ2VTb3VyY2Uoc291cmNlLCBiYXNlVXJsLCBtaW1ldHlwZSk7
Ci19Ci0KLXd4U3RyaW5nIFdlYlZpZXc6OkdldElubmVyVGV4dCgpCi17Ci0gICAgaWYgKG1fbWFp
bkZyYW1lKQotICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkdldElubmVyVGV4dCgpOwotICAg
ICAgICAKLSAgICByZXR1cm4gd3hFbXB0eVN0cmluZzsKLX0KLQotd3hTdHJpbmcgV2ViVmlldzo6
R2V0QXNNYXJrdXAoKQotewotICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAgICAgcmV0dXJuIG1f
bWFpbkZyYW1lLT5HZXRBc01hcmt1cCgpOwotICAgICAgICAKLSAgICByZXR1cm4gd3hFbXB0eVN0
cmluZzsKLX0KLQotd3hTdHJpbmcgV2ViVmlldzo6R2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigp
Ci17Ci0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkdl
dEV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHd4RW1wdHlT
dHJpbmc7Ci19Ci0KLVdlYktpdFNlbGVjdGlvbiBXZWJWaWV3OjpHZXRTZWxlY3Rpb24oKQotewot
ICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5HZXRTZWxl
Y3Rpb24oKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXd4U3RyaW5nIFdlYlZpZXc6
OkdldFNlbGVjdGlvbkFzSFRNTCgpCi17Ci0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICBy
ZXR1cm4gbV9tYWluRnJhbWUtPkdldFNlbGVjdGlvbkFzSFRNTCgpOwotICAgICAgICAKLSAgICBy
ZXR1cm4gd3hFbXB0eVN0cmluZzsKLX0KLQotd3hTdHJpbmcgV2ViVmlldzo6R2V0U2VsZWN0aW9u
QXNUZXh0KCkKLXsKLSAgICBpZiAobV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBtX21haW5G
cmFtZS0+R2V0U2VsZWN0aW9uQXNUZXh0KCk7Ci0gICAgICAgIAotICAgIHJldHVybiB3eEVtcHR5
U3RyaW5nOwotfQotCi12b2lkIFdlYlZpZXc6OlNldFRyYW5zcGFyZW50KGJvb2wgdHJhbnNwYXJl
bnQpCi17Ci0gICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gMDsKLSAgICBpZiAobV9tYWluRnJh
bWUpCi0gICAgICAgIGZyYW1lID0gbV9tYWluRnJhbWUtPkdldEZyYW1lKCk7Ci0gICAgCi0gICAg
aWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZnJh
bWUtPnZpZXcoKS0+c2V0VHJhbnNwYXJlbnQodHJhbnNwYXJlbnQpOwotfQotCi1ib29sIFdlYlZp
ZXc6OklzVHJhbnNwYXJlbnQoKSBjb25zdAotewotICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9
IDA7Ci0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICBmcmFtZSA9IG1fbWFpbkZyYW1lLT5H
ZXRGcmFtZSgpOwotCi0gICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZnJhbWUtPnZpZXcoKS0+aXNUcmFuc3BhcmVudCgp
OwotfQotCi13eFN0cmluZyBXZWJWaWV3OjpSdW5TY3JpcHQoY29uc3Qgd3hTdHJpbmcmIGphdmFz
Y3JpcHQpCi17Ci0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gbV9tYWluRnJh
bWUtPlJ1blNjcmlwdChqYXZhc2NyaXB0KTsKLSAgICAKLSAgICByZXR1cm4gd3hFbXB0eVN0cmlu
ZzsKLX0KLQotYm9vbCBXZWJWaWV3OjpFeGVjdXRlRWRpdENvbW1hbmQoY29uc3Qgd3hTdHJpbmcm
IGNvbW1hbmQsIGNvbnN0IHd4U3RyaW5nJiBwYXJhbWV0ZXIpCi17Ci0gICAgaWYgKG1fbWFpbkZy
YW1lKQotICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkV4ZWN1dGVFZGl0Q29tbWFuZChjb21t
YW5kLCBwYXJhbWV0ZXIpOwotfQotCi1FZGl0U3RhdGUgV2ViVmlldzo6R2V0RWRpdENvbW1hbmRT
dGF0ZShjb25zdCB3eFN0cmluZyYgY29tbWFuZCkgY29uc3QKLXsKLSAgICBpZiAobV9tYWluRnJh
bWUpCi0gICAgICAgIHJldHVybiBtX21haW5GcmFtZS0+R2V0RWRpdENvbW1hbmRTdGF0ZShjb21t
YW5kKTsKLX0KLQotd3hTdHJpbmcgV2ViVmlldzo6R2V0RWRpdENvbW1hbmRWYWx1ZShjb25zdCB3
eFN0cmluZyYgY29tbWFuZCkgY29uc3QKLXsKLSAgICBpZiAobV9tYWluRnJhbWUpCi0gICAgICAg
IHJldHVybiBtX21haW5GcmFtZS0+R2V0RWRpdENvbW1hbmRWYWx1ZShjb21tYW5kKTsKLSAKLSAg
ICByZXR1cm4gd3hFbXB0eVN0cmluZzsKLX0KLQotdm9pZCBXZWJWaWV3OjpMb2FkVVJMKGNvbnN0
IHd4U3RyaW5nJiB1cmwpCi17Ci0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICBtX21haW5G
cmFtZS0+TG9hZFVSTCh1cmwpOwotfQotCi13eFN0cmluZyBXZWJWaWV3OjpHZXRNYWluRnJhbWVV
UkwoKSBjb25zdAotewotICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAgICAgcmV0dXJuIG1fbWFp
bkZyYW1lLT5HZXRVUkwoKTsKLSAgICAKLSAgICByZXR1cm4gd3hFbXB0eVN0cmluZzsKLX0KLQot
Ym9vbCBXZWJWaWV3OjpHb0JhY2soKQotewotICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAgICAg
cmV0dXJuIG1fbWFpbkZyYW1lLT5Hb0JhY2soKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
Ym9vbCBXZWJWaWV3OjpHb0ZvcndhcmQoKQotewotICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAg
ICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5Hb0ZvcndhcmQoKTsKLQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBXZWJWaWV3OjpDYW5Hb0JhY2soKQotewotICAgIGlmIChtX21haW5GcmFtZSkK
LSAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5DYW5Hb0JhY2soKTsKLQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBXZWJWaWV3OjpDYW5Hb0ZvcndhcmQoKQotewotICAgIGlmIChtX21h
aW5GcmFtZSkKLSAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5DYW5Hb0ZvcndhcmQoKTsKLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJWaWV3OjpDYW5JbmNyZWFzZVRleHRTaXpl
KCkgY29uc3QKLXsKLSAgICBpZiAobV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBtX21haW5G
cmFtZS0+Q2FuSW5jcmVhc2VUZXh0U2l6ZSgpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12
b2lkIFdlYlZpZXc6OkluY3JlYXNlVGV4dFNpemUoKQotewotICAgIGlmIChtX21haW5GcmFtZSkK
LSAgICAgICAgbV9tYWluRnJhbWUtPkluY3JlYXNlVGV4dFNpemUoKTsKLX0KLQotYm9vbCBXZWJW
aWV3OjpDYW5EZWNyZWFzZVRleHRTaXplKCkgY29uc3QKLXsKLSAgICBpZiAobV9tYWluRnJhbWUp
Ci0gICAgICAgIHJldHVybiBtX21haW5GcmFtZS0+Q2FuRGVjcmVhc2VUZXh0U2l6ZSgpOwotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFdlYlZpZXc6OkRlY3JlYXNlVGV4dFNpemUoKQot
eyAgICAgICAgCi0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICBtX21haW5GcmFtZS0+RGVj
cmVhc2VUZXh0U2l6ZSgpOwotfQotCi12b2lkIFdlYlZpZXc6OlJlc2V0VGV4dFNpemUoKQotewot
ICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAgICAgbV9tYWluRnJhbWUtPlJlc2V0VGV4dFNpemUo
KTsgICAgCi19Ci0KLXZvaWQgV2ViVmlldzo6TWFrZUVkaXRhYmxlKGJvb2wgZW5hYmxlKQotewot
ICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAgICAgbV9tYWluRnJhbWUtPk1ha2VFZGl0YWJsZShl
bmFibGUpOwotfQotCi1ib29sIFdlYlZpZXc6OklzRWRpdGFibGUoKSBjb25zdAotewotICAgIGlm
IChtX21haW5GcmFtZSkKLSAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5Jc0VkaXRhYmxlKCk7
Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0KLQotLyogCi0gKiBFdmVudCBmb3J3YXJk
aW5nIGZ1bmN0aW9ucyB0byBzZW5kIGV2ZW50cyBkb3duIHRvIFdlYkNvcmUuCi0gKi8KLQotdm9p
ZCBXZWJWaWV3OjpPblBhaW50KHd4UGFpbnRFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKG1fYmVp
bmdEZXN0cm95ZWQgfHwgIW1fbWFpbkZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJD
b3JlOjpGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS0+R2V0RnJhbWUoKTsKLSAgICBpZiAoIWZy
YW1lIHx8ICFmcmFtZS0+dmlldygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyB3ZSBjYW4n
dCB1c2Ugd3hBdXRvQnVmZmVyZWRQYWludERDIGhlcmUgYmVjYXVzZSBpdCB3aWxsIG5vdCBjcmVh
dGUgCi0gICAgLy8gYSAzMi1iaXQgYml0bWFwIGZvciBpdHMgYnVmZmVyLgotI2lmIF9fV1hNU1df
XwotICAgIHd4UGFpbnREQyBwYWludGRjKHRoaXMpOwotICAgIGludCB3aWR0aCwgaGVpZ2h0Owot
ICAgIHBhaW50ZGMuR2V0U2l6ZSgmd2lkdGgsICZoZWlnaHQpOwotICAgIHd4Qml0bWFwIGJpdG1h
cCh3aWR0aCwgaGVpZ2h0LCAzMik7Ci0gICAgd3hNZW1vcnlEQyBkYyhiaXRtYXApOwotI2Vsc2UK
LSAgICB3eFBhaW50REMgZGModGhpcyk7Ci0jZW5kaWYKLQotICAgIGlmIChJc1Nob3duKCkgJiYg
ZnJhbWUtPmRvY3VtZW50KCkpIHsKLSNpZiBVU0UoV1hHQykKLSNpZiB3eENIRUNLX1ZFUlNJT04o
MiwgOSwgMikgJiYgZGVmaW5lZCh3eFVTRV9DQUlSTykgJiYgd3hVU0VfQ0FJUk8KLSAgICAgICAg
d3hHcmFwaGljc1JlbmRlcmVyKiByZW5kZXJlciA9IHd4R3JhcGhpY3NSZW5kZXJlcjo6R2V0Q2Fp
cm9SZW5kZXJlcigpOwotICAgICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICAgICAgcmVuZGVy
ZXIgPSB3eEdyYXBoaWNzUmVuZGVyZXI6OkdldERlZmF1bHRSZW5kZXJlcigpOwotICAgICAgICB3
eEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHJlbmRlcmVyLT5DcmVhdGVDb250ZXh0KGRjKTsK
LSAgICAgICAgd3hHQ0RDIGdjZGMoY29udGV4dCk7Ci0jZWxzZQotICAgICAgICB3eEdDREMgZ2Nk
YyhkYyk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgICAgIGlmIChkYy5Jc09rKCkpIHsKLSAgICAg
ICAgICAgIHd4UmVjdCBwYWludFJlY3QgPSBHZXRVcGRhdGVSZWdpb24oKS5HZXRCb3goKTsKLQot
I2lmIFVTRShXWEdDKQotICAgICAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGdjKCZn
Y2RjKTsKLSNlbHNlCi0gICAgICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQgZ2MoJmRj
KTsKLSNlbmRpZgotICAgICAgICAgICAgaWYgKGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkgewot
ICAgICAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVk
ZWRSZWN1cnNpdmUoKTsKLSAgICAgICAgICAgICAgICBmcmFtZS0+dmlldygpLT5wYWludCgmZ2Ms
IHBhaW50UmVjdCk7Ci0jaWYgX19XWE1TV19fCi0gICAgICAgICAgICAgICAgZGMuU2VsZWN0T2Jq
ZWN0KHd4TnVsbEJpdG1hcCk7Ci0gICAgICAgICAgICAgICAgcGFpbnRkYy5EcmF3Qml0bWFwKGJp
dG1hcCwgMCwgMCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0K
LQotYm9vbCBXZWJWaWV3OjpGaW5kU3RyaW5nKGNvbnN0IHd4U3RyaW5nJiBzdHJpbmcsIGJvb2wg
Zm9yd2FyZCwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIHdyYXBTZWxlY3Rpb24sIGJvb2wgc3Rh
cnRJblNlbGVjdGlvbikKLXsKLSAgICBpZiAobV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBt
X21haW5GcmFtZS0+RmluZFN0cmluZyhzdHJpbmcsIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIHdy
YXBTZWxlY3Rpb24sIHN0YXJ0SW5TZWxlY3Rpb24pOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci12b2lkIFdlYlZpZXc6Ok9uU2l6ZSh3eFNpemVFdmVudCYgZXZlbnQpCi17IAotICAgIGlmICht
X2lzSW5pdGlhbGl6ZWQgJiYgbV9tYWluRnJhbWUpIHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWUq
IGZyYW1lID0gbV9tYWluRnJhbWUtPkdldEZyYW1lKCk7Ci0gICAgICAgIGZyYW1lLT52aWV3KCkt
PnJlc2l6ZShldmVudC5HZXRTaXplKCkpOwotICAgICAgICBmcmFtZS0+dmlldygpLT5hZGp1c3RW
aWV3U2l6ZSgpOwotICAgIH0KLSAgICAgIAotICAgIGV2ZW50LlNraXAoKTsKLX0KLQotc3RhdGlj
IGludCBnZXREb3VibGVDbGlja1RpbWUoKQotewotI2lmIF9fV1hNU1dfXwotICAgIHJldHVybiA6
OkdldERvdWJsZUNsaWNrVGltZSgpOwotI2Vsc2UKLSAgICByZXR1cm4gNTAwOwotI2VuZGlmCi19
Ci0KLXZvaWQgV2ViVmlldzo6T25Nb3VzZUV2ZW50cyh3eE1vdXNlRXZlbnQmIGV2ZW50KQotewot
ICAgIGV2ZW50LlNraXAoKTsKLSAgICAKLSAgICBpZiAoIW1faW1wbC0+cGFnZSkKLSAgICAgICAg
cmV0dXJuOyAKLSAgICAgICAgCi0gICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbV9tYWluRnJh
bWUtPkdldEZyYW1lKCk7ICAKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgd3hQb2ludCBnbG9iYWxQb2ludCA9IENsaWVudFRvU2Ny
ZWVuKGV2ZW50LkdldFBvc2l0aW9uKCkpOwotCi0gICAgd3hFdmVudFR5cGUgdHlwZSA9IGV2ZW50
LkdldEV2ZW50VHlwZSgpOwotICAgIAotICAgIGlmICh0eXBlID09IHd4RVZUX01PVVNFV0hFRUwp
IHsKLSAgICAgICAgaWYgKG1fbW91c2VXaGVlbFpvb21zICYmIGV2ZW50LkNvbnRyb2xEb3duKCkg
JiYgIWV2ZW50LkFsdERvd24oKSAmJiAhZXZlbnQuU2hpZnREb3duKCkpIHsKLSAgICAgICAgICAg
IGlmIChldmVudC5HZXRXaGVlbFJvdGF0aW9uKCkgPCAwKQotICAgICAgICAgICAgICAgIERlY3Jl
YXNlVGV4dFNpemUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50LkdldFdoZWVsUm90YXRp
b24oKSA+IDApCi0gICAgICAgICAgICAgICAgSW5jcmVhc2VUZXh0U2l6ZSgpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50IHdrRXZlbnQo
ZXZlbnQsIGdsb2JhbFBvaW50KTsKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlV2hlZWxFdmVudCh3a0V2ZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgLy8gSWYgYW4gZXZlbnQsIHN1Y2ggYXMgYSByaWdodC1jbGljayBl
dmVudCwgbGVhZHMgdG8gYSBmb2N1cyBjaGFuZ2UgKGUuZy4gaXQgCi0gICAgLy8gcmFpc2VzIGEg
ZGlhbG9nKSwgV2ViS2l0IG5ldmVyIGdldHMgdGhlIG1vdXNlIHVwIGV2ZW50IGFuZCBuZXZlciBy
ZWxpbnF1aXNoZXMgCi0gICAgLy8gbW91c2UgY2FwdHVyZS4gVGhpcyBsZWFkcyB0byBXZWJLaXQg
aGFuZGxpbmcgbW91c2UgZXZlbnRzLCBzdWNoIGFzIG1vZGlmeWluZwotICAgIC8vIHRoZSBzZWxl
Y3Rpb24sIHdoaWxlIG90aGVyIGNvbnRyb2xzIG9yIHRvcCBsZXZlbCB3aW5kb3dzIGhhdmUgdGhl
IGZvY3VzLgotICAgIC8vIEknbSBub3Qgc3VyZSBpZiB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSB0
byBoYW5kbGUgdGhpcywgYnV0IEkgY2FuJ3Qgc2VlbSB0bwotICAgIC8vIGZpbmQgYSBwcmVjZWRl
bnQgb24gaG93IHRvIGhhbmRsZSB0aGlzIGluIG90aGVyIHBvcnRzLgotICAgIGlmICh3eFdpbmRv
dzo6RmluZEZvY3VzKCkgIT0gdGhpcykgewotICAgICAgICB3aGlsZSAoSGFzQ2FwdHVyZSgpKQot
ICAgICAgICAgICAgUmVsZWFzZU1vdXNlKCk7Ci0KLSAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5zZXRNb3VzZVByZXNzZWQoZmFsc2UpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgICAgIAotICAgIGludCBjbGlja0NvdW50ID0gZXZlbnQuQnV0dG9uRENsaWNrKCkgPyAyIDog
MTsKLQotICAgIGlmIChjbGlja0NvdW50ID09IDEgJiYgbV9pbXBsLT50cmlwbGVDbGlja1RpbWVy
LklzUnVubmluZygpKSB7Ci0gICAgICAgIHd4UG9pbnQgZGlmZihldmVudC5HZXRQb3NpdGlvbigp
IC0gbV9pbXBsLT50cmlwbGVDbGlja1Bvcyk7Ci0gICAgICAgIGlmIChhYnMoZGlmZi54KSA8PSB3
eFN5c3RlbVNldHRpbmdzOjpHZXRNZXRyaWMod3hTWVNfRENMSUNLX1gpICYmCi0gICAgICAgICAg
ICBhYnMoZGlmZi55KSA8PSB3eFN5c3RlbVNldHRpbmdzOjpHZXRNZXRyaWMod3hTWVNfRENMSUNL
X1kpKSB7Ci0gICAgICAgICAgICBjbGlja0NvdW50ID0gMzsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSBpZiAoY2xpY2tDb3VudCA9PSAyKSB7Ci0gICAgICAgIG1faW1wbC0+dHJpcGxlQ2xpY2tUaW1l
ci5TdGFydChnZXREb3VibGVDbGlja1RpbWUoKSwgZmFsc2UpOwotICAgICAgICBtX2ltcGwtPnRy
aXBsZUNsaWNrUG9zID0gZXZlbnQuR2V0UG9zaXRpb24oKTsKLSAgICB9Ci0gICAgCi0gICAgV2Vi
Q29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IHdrRXZlbnQoZXZlbnQsIGdsb2JhbFBvaW50LCBjbGlj
a0NvdW50KTsKLQotICAgIGlmICh0eXBlID09IHd4RVZUX0xFRlRfRE9XTiB8fCB0eXBlID09IHd4
RVZUX01JRERMRV9ET1dOIHx8IHR5cGUgPT0gd3hFVlRfUklHSFRfRE9XTiB8fCAKLSAgICAgICAg
ICAgICAgICB0eXBlID09IHd4RVZUX0xFRlRfRENMSUNLIHx8IHR5cGUgPT0gd3hFVlRfTUlERExF
X0RDTElDSyB8fCB0eXBlID09IHd4RVZUX1JJR0hUX0RDTElDSykgewotICAgICAgICBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudCh3a0V2ZW50KTsKLSAgICAgICAg
aWYgKCFIYXNDYXB0dXJlKCkpCi0gICAgICAgICAgICBDYXB0dXJlTW91c2UoKTsKLSAgICB9IGVs
c2UgaWYgKHR5cGUgPT0gd3hFVlRfTEVGVF9VUCB8fCB0eXBlID09IHd4RVZUX01JRERMRV9VUCB8
fCB0eXBlID09IHd4RVZUX1JJR0hUX1VQKSB7Ci0gICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQod2tFdmVudCk7Ci0gICAgICAgIHdoaWxlIChIYXND
YXB0dXJlKCkpCi0gICAgICAgICAgICBSZWxlYXNlTW91c2UoKTsKLSAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gd3hFVlRfTU9USU9OIHx8IHR5cGUgPT0gd3hFVlRfRU5URVJfV0lORE9XIHx8IHR5cGUg
PT0gd3hFVlRfTEVBVkVfV0lORE9XKQotICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1v
dXNlTW92ZWQod2tFdmVudCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6T25Db250ZXh0TWVudUV2ZW50
cyh3eENvbnRleHRNZW51RXZlbnQmIGV2ZW50KQotewotICAgIENvbm5lY3Qod3hFVlRfQ09NTUFO
RF9NRU5VX1NFTEVDVEVELCB3eENvbW1hbmRFdmVudEhhbmRsZXIoV2ViVmlldzo6T25NZW51U2Vs
ZWN0RXZlbnRzKSwgMCwgdGhpcyk7Ci0gICAgbV9pbXBsLT5wYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwotICAgIHd4UG9pbnQgbG9jYWxFdmVudFBvaW50
ID0gU2NyZWVuVG9DbGllbnQoZXZlbnQuR2V0UG9zaXRpb24oKSk7Ci0KLSAgICBpZiAoIW1faW1w
bC0+cGFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBXZWJDb3JlOjpGcmFtZSog
Zm9jdXNlZEZyYW1lID0gbV9pbXBsLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmb2N1c2VkRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy9DcmVhdGUgV2ViQ29yZSBtb3VzZSBldmVudCBmcm9tIHRoZSB3eENvbnRl
eHRNZW51RXZlbnQKLSAgICB3eE1vdXNlRXZlbnQgbW91c2VFdmVudCh3eEVWVF9SSUdIVF9ET1dO
KTsKLSAgICBtb3VzZUV2ZW50Lm1feCA9IGxvY2FsRXZlbnRQb2ludC54OwotICAgIG1vdXNlRXZl
bnQubV95ID0gbG9jYWxFdmVudFBvaW50Lnk7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2
ZW50IHdrRXZlbnQobW91c2VFdmVudCwgZXZlbnQuR2V0UG9zaXRpb24oKSwgMSk7Ci0KLSAgICBi
b29sIGhhbmRsZWRFdmVudCA9IGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250
ZXh0TWVudUV2ZW50KHdrRXZlbnQpOwotICAgIGlmICghaGFuZGxlZEV2ZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBXZWJDb3JlOjpDb250ZXh0TWVudSogY29yZU1lbnUgPSBtX2ltcGwtPnBh
Z2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jb250ZXh0TWVudSgpOwotICAgIGlmICghY29y
ZU1lbnUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVudURlc2Ny
aXB0aW9uIG1lbnVXeCA9IGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7Ci0gICAgaWYg
KCFtZW51V3gpCi0gICAgICAgIHJldHVybjsKLQotICAgIFBvcHVwTWVudShtZW51V3gsIGxvY2Fs
RXZlbnRQb2ludCk7Ci0gICAgCi0gICAgRGlzY29ubmVjdCh3eEVWVF9DT01NQU5EX01FTlVfU0VM
RUNURUQsIHd4Q29tbWFuZEV2ZW50SGFuZGxlcihXZWJWaWV3OjpPbk1lbnVTZWxlY3RFdmVudHMp
LCAwLCB0aGlzKTsKLX0KLQotdm9pZCBXZWJWaWV3OjpPbk1lbnVTZWxlY3RFdmVudHMod3hDb21t
YW5kRXZlbnQmIGV2ZW50KQotewotICAgIC8vIHdlIHNob3VsZG4ndCBoaXQgdGhpcyB1bmxlc3Mg
dGhlcmUncyBhIGNvbnRleHQgbWVudSBzaG93aW5nCi0gICAgV2ViQ29yZTo6Q29udGV4dE1lbnUq
IGNvcmVNZW51ID0gbV9pbXBsLT5wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4
dE1lbnUoKTsKLSAgICBBU1NFUlQoY29yZU1lbnUpOwotICAgIGlmICghY29yZU1lbnUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSogaXRlbSA9IFdlYkNv
cmU6OkNvbnRleHRNZW51OjppdGVtV2l0aElkIChldmVudC5HZXRJZCgpKTsKLSAgICBpZiAoIWl0
ZW0pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faW1wbC0+cGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOwotICAgIGRlbGV0ZSBpdGVt
OwotfQotCi12b2lkIFdlYlZpZXc6Ok9uTW91c2VDYXB0dXJlTG9zdCh3eE1vdXNlQ2FwdHVyZUxv
c3RFdmVudCYgZXZlbnQpCi17Ci0gICAgLy8gZG8gbm90aGluZyAtIHVuZm9ydHVuYXRlbHksIHdl
IE1VU1QgaGFuZGxlIHRoaXMgZXZlbnQgZHVlIHRvIHd4V2lkZ2V0cyBydWxlcywKLSAgICAvLyBv
dGhlcndpc2Ugd2Ugd2lsbCBhc3NlcnQsIGV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vdGhpbmcgZm9y
IHVzIHRvIGRvIGhlcmUuCi19Ci0KLWJvb2wgV2ViVmlldzo6Q2FuQ29weSgpCi17Ci0gICAgaWYg
KG1fbWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkNhbkNvcHkoKTsKLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBXZWJWaWV3OjpDb3B5KCkKLXsKLSAgICBpZiAo
bV9tYWluRnJhbWUpCi0gICAgICAgIG1fbWFpbkZyYW1lLT5Db3B5KCk7Ci19Ci0KLWJvb2wgV2Vi
Vmlldzo6Q2FuQ3V0KCkKLXsKLSAgICBpZiAobV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBt
X21haW5GcmFtZS0+Q2FuQ3V0KCk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2Vi
Vmlldzo6Q3V0KCkKLXsKLSAgICBpZiAobV9tYWluRnJhbWUpCi0gICAgICAgIG1fbWFpbkZyYW1l
LT5DdXQoKTsKLX0KLQotYm9vbCBXZWJWaWV3OjpDYW5QYXN0ZSgpCi17Ci0gICAgaWYgKG1fbWFp
bkZyYW1lKQotICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkNhblBhc3RlKCk7Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViVmlldzo6UGFzdGUoKQotewotICAgIGlmIChtX21h
aW5GcmFtZSkKLSAgICAgICAgbV9tYWluRnJhbWUtPlBhc3RlKCk7Ci19Ci0KLXZvaWQgV2ViVmll
dzo6T25LZXlFdmVudHMod3hLZXlFdmVudCYgZXZlbnQpCi17Ci0gICAgV2ViQ29yZTo6RnJhbWUq
IGZyYW1lID0gMDsKLSAgICBpZiAobV9pbXBsLT5wYWdlKQotICAgICAgICBmcmFtZSA9IG1faW1w
bC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotCi0gICAg
aWYgKCEoZnJhbWUgJiYgZnJhbWUtPnZpZXcoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdl
YkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCB3a0V2ZW50KGV2ZW50KTsKLQotICAgIGlmIChm
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KHdrRXZlbnQpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvL1NvbWUgdGhpbmdzIFdlYktpdCB3b24ndCBkbyBmb3IgdXMuLi4gQ29weS9DdXQv
UGFzdGUgYW5kIEtCIHNjcm9sbGluZwotICAgIGlmIChldmVudC5HZXRFdmVudFR5cGUoKSA9PSB3
eEVWVF9LRVlfRE9XTikgewotICAgICAgICBzd2l0Y2ggKGV2ZW50LkdldEtleUNvZGUoKSkgewot
ICAgICAgICBjYXNlIDY3OiAvLyJDIgotICAgICAgICAgICAgaWYgKENhbkNvcHkoKSAmJiBldmVu
dC5HZXRNb2RpZmllcnMoKSA9PSB3eE1PRF9DTUQpIHsKLSAgICAgICAgICAgICAgICBDb3B5KCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgODY6IC8vIlYiCi0gICAgICAgICAgICBpZiAoQ2FuUGFzdGUoKSAm
JiBldmVudC5HZXRNb2RpZmllcnMoKSA9PSB3eE1PRF9DTUQpIHsKLSAgICAgICAgICAgICAgICBQ
YXN0ZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIDg4OiAvLyJYIgotICAgICAgICAgICAgaWYgKENhbkN1
dCgpICYmIGV2ZW50LkdldE1vZGlmaWVycygpID09IHd4TU9EX0NNRCkgewotICAgICAgICAgICAg
ICAgIEN1dCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdYS19JTlNFUlQ6Ci0gICAgICAgICAgICBpZiAo
Q2FuQ29weSgpICYmIGV2ZW50LkdldE1vZGlmaWVycygpID09IHd4TU9EX0NNRCkgewotICAgICAg
ICAgICAgICAgIENvcHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoQ2FuUGFzdGUoKSAmJiBldmVudC5HZXRNb2RpZmllcnMoKSA9PSB3
eE1PRF9TSElGVCkgewotICAgICAgICAgICAgICAgIFBhc3RlKCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOyAvL0luc2VydCBzaGFs
bCBub3QgYmVjb21lIGEgY2hhcgotICAgICAgICBjYXNlIFdYS19ERUxFVEU6Ci0gICAgICAgICAg
ICBpZiAoQ2FuQ3V0KCkgJiYgZXZlbnQuR2V0TW9kaWZpZXJzKCkgPT0gd3hNT0RfU0hJRlQpIHsK
LSAgICAgICAgICAgICAgICBDdXQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXWEtfTEVGVDoKLSAgICAg
ICAgY2FzZSBXWEtfTlVNUEFEX0xFRlQ6Ci0gICAgICAgICAgICBmcmFtZS0+dmlldygpLT5zY3Jv
bGxCeShXZWJDb3JlOjpJbnRTaXplKC1XZWJDb3JlOjpTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVT
dGVwKCksIDApKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBXWEtfVVA6Ci0g
ICAgICAgIGNhc2UgV1hLX05VTVBBRF9VUDoKLSAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnNj
cm9sbEJ5KFdlYkNvcmU6OkludFNpemUoMCwgLVdlYkNvcmU6OlNjcm9sbGJhcjo6cGl4ZWxzUGVy
TGluZVN0ZXAoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFdYS19SSUdI
VDoKLSAgICAgICAgY2FzZSBXWEtfTlVNUEFEX1JJR0hUOgotICAgICAgICAgICAgZnJhbWUtPnZp
ZXcoKS0+c2Nyb2xsQnkoV2ViQ29yZTo6SW50U2l6ZShXZWJDb3JlOjpTY3JvbGxiYXI6OnBpeGVs
c1BlckxpbmVTdGVwKCksIDApKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBX
WEtfRE9XTjoKLSAgICAgICAgY2FzZSBXWEtfTlVNUEFEX0RPV046Ci0gICAgICAgICAgICBmcmFt
ZS0+dmlldygpLT5zY3JvbGxCeShXZWJDb3JlOjpJbnRTaXplKDAsIFdlYkNvcmU6OlNjcm9sbGJh
cjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBj
YXNlIFdYS19FTkQ6Ci0gICAgICAgIGNhc2UgV1hLX05VTVBBRF9FTkQ6Ci0gICAgICAgICAgICBm
cmFtZS0+dmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpJbnRQb2ludChmcmFtZS0+
dmlldygpLT5zY3JvbGxYKCksIGZyYW1lLT52aWV3KCktPm1heGltdW1TY3JvbGxQb3NpdGlvbigp
LnkoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFdYS19IT01FOgotICAg
ICAgICBjYXNlIFdYS19OVU1QQURfSE9NRToKLSAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnNl
dFNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50KGZyYW1lLT52aWV3KCktPnNjcm9sbFgo
KSwgMCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFdYS19QQUdFVVA6Ci0g
ICAgICAgIGNhc2UgV1hLX05VTVBBRF9QQUdFVVA6Ci0gICAgICAgICAgICBmcmFtZS0+dmlldygp
LT5zY3JvbGxCeShXZWJDb3JlOjpJbnRTaXplKDAsIC1mcmFtZS0+dmlldygpLT52aXNpYmxlSGVp
Z2h0KCkgKiBXZWJDb3JlOjpTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygp
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgV1hLX1BBR0VET1dOOgotICAg
ICAgICBjYXNlIFdYS19OVU1QQURfUEFHRURPV046Ci0gICAgICAgICAgICBmcmFtZS0+dmlldygp
LT5zY3JvbGxCeShXZWJDb3JlOjpJbnRTaXplKDAsIGZyYW1lLT52aWV3KCktPnZpc2libGVIZWln
aHQoKSAqIFdlYkNvcmU6OlNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nKCkp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgLy9UaGVzZSB3ZSBkb24ndCB3YW50IHR1
cm5pbmcgaW50byBjaGFyIGV2ZW50cywgc3R1ZmYgJ2VtCi0gICAgICAgIGNhc2UgV1hLX0VTQ0FQ
RToKLSAgICAgICAgY2FzZSBXWEtfTEJVVFRPTjoKLSAgICAgICAgY2FzZSBXWEtfUkJVVFRPTjoK
LSAgICAgICAgY2FzZSBXWEtfQ0FOQ0VMOgotICAgICAgICBjYXNlIFdYS19NRU5VOgotICAgICAg
ICBjYXNlIFdYS19NQlVUVE9OOgotICAgICAgICBjYXNlIFdYS19DTEVBUjoKLSAgICAgICAgY2Fz
ZSBXWEtfUEFVU0U6Ci0gICAgICAgIGNhc2UgV1hLX1NFTEVDVDoKLSAgICAgICAgY2FzZSBXWEtf
UFJJTlQ6Ci0gICAgICAgIGNhc2UgV1hLX0VYRUNVVEU6Ci0gICAgICAgIGNhc2UgV1hLX1NOQVBT
SE9UOgotICAgICAgICBjYXNlIFdYS19IRUxQOgotICAgICAgICBjYXNlIFdYS19GMToKLSAgICAg
ICAgY2FzZSBXWEtfRjI6Ci0gICAgICAgIGNhc2UgV1hLX0YzOgotICAgICAgICBjYXNlIFdYS19G
NDoKLSAgICAgICAgY2FzZSBXWEtfRjU6Ci0gICAgICAgIGNhc2UgV1hLX0Y2OgotICAgICAgICBj
YXNlIFdYS19GNzoKLSAgICAgICAgY2FzZSBXWEtfRjg6Ci0gICAgICAgIGNhc2UgV1hLX0Y5Ogot
ICAgICAgICBjYXNlIFdYS19GMTA6Ci0gICAgICAgIGNhc2UgV1hLX0YxMToKLSAgICAgICAgY2Fz
ZSBXWEtfRjEyOgotICAgICAgICBjYXNlIFdYS19GMTM6Ci0gICAgICAgIGNhc2UgV1hLX0YxNDoK
LSAgICAgICAgY2FzZSBXWEtfRjE1OgotICAgICAgICBjYXNlIFdYS19GMTY6Ci0gICAgICAgIGNh
c2UgV1hLX0YxNzoKLSAgICAgICAgY2FzZSBXWEtfRjE4OgotICAgICAgICBjYXNlIFdYS19GMTk6
Ci0gICAgICAgIGNhc2UgV1hLX0YyMDoKLSAgICAgICAgY2FzZSBXWEtfRjIxOgotICAgICAgICBj
YXNlIFdYS19GMjI6Ci0gICAgICAgIGNhc2UgV1hLX0YyMzoKLSAgICAgICAgY2FzZSBXWEtfRjI0
OgotICAgICAgICBjYXNlIFdYS19OVU1QQURfRjE6Ci0gICAgICAgIGNhc2UgV1hLX05VTVBBRF9G
MjoKLSAgICAgICAgY2FzZSBXWEtfTlVNUEFEX0YzOgotICAgICAgICBjYXNlIFdYS19OVU1QQURf
RjQ6Ci0gICAgICAgIC8vV2hlbiBudW1sb2NrIGlzIG9mZiBOdW1wYWQgNSBiZWNvbWVzIEJFR0lO
LCBvciBIT01FIG9uIENoYXIKLSAgICAgICAgY2FzZSBXWEtfTlVNUEFEX0JFR0lOOgotICAgICAg
ICBjYXNlIFdYS19OVU1QQURfSU5TRVJUOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgZXZlbnQuU2tpcCgpOwotfQotCi12b2lkIFdlYlZpZXc6Ok9uU2V0Rm9j
dXMod3hGb2N1c0V2ZW50JiBldmVudCkKLXsKLSAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+cGFn
ZSAmJiBtX2ltcGwtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpKSB7Ci0gICAgICAgIG1faW1wbC0+
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWQodHJ1ZSk7Ci0gICAgICAgIG1faW1w
bC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEFjdGl2ZSh0cnVlKTsKLQotICAgICAgICBp
ZiAoIW1faW1wbC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpICYmIG1f
bWFpbkZyYW1lKQotICAgICAgICAgICAgbV9pbXBsLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
c2V0Rm9jdXNlZEZyYW1lKG1fbWFpbkZyYW1lLT5HZXRGcmFtZSgpKTsKLSAgICB9Ci0gICAgCi0g
ICAgZXZlbnQuU2tpcCgpOwotfQotCi12b2lkIFdlYlZpZXc6Ok9uS2lsbEZvY3VzKHd4Rm9jdXNF
dmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPnBhZ2UgJiYgbV9pbXBs
LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSkgewotICAgICAgICBtX2ltcGwtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5zZXRGb2N1c2VkKGZhbHNlKTsKLQotICAgICAgICAvLyBXZSBhbHNvIGhh
bmRsZSBhY3RpdmUgc3RhdGUgaW4gT25UTFdBY3RpdmF0ZWQsIGJ1dCBpZiBhIHVzZXIgZG9lcyBu
b3QKLSAgICAgICAgLy8gY2FsbCBldmVudC5Ta2lwKCkgaW4gdGhlaXIgb3duIEVWVF9BQ1RJVkFU
RSBoYW5kbGVyLCB3ZSB3b24ndCBnZXQgdGhvc2UKLSAgICAgICAgLy8gY2FsbGJhY2tzLiBTbyB3
ZSBoYW5kbGUgYWN0aXZlIHN0YXRlIGhlcmUgYXMgd2VsbCBhcyBhIGZhbGxiYWNrLgotICAgICAg
ICB3eFRvcExldmVsV2luZG93KiB0bHcgPSBkeW5hbWljX2Nhc3Q8d3hUb3BMZXZlbFdpbmRvdyo+
KHd4R2V0VG9wTGV2ZWxQYXJlbnQodGhpcykpOwotICAgICAgICBpZiAodGx3ICYmIHRsdy0+SXNB
Y3RpdmUoKSkKLSAgICAgICAgICAgIG1faW1wbC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNl
dEFjdGl2ZSh0cnVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9pbXBsLT5wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+c2V0QWN0aXZlKGZhbHNlKTsKLSAgICB9Ci0gICAgCi0gICAgd2hp
bGUgKEhhc0NhcHR1cmUoKSkKLSAgICAgICAgUmVsZWFzZU1vdXNlKCk7Ci0gICAgCi0gICAgZXZl
bnQuU2tpcCgpOwotfQotCi1XZWJWaWV3RE9NRWxlbWVudEluZm8gV2ViVmlldzo6SGl0VGVzdChj
b25zdCB3eFBvaW50JiBwb3MpIGNvbnN0Ci17Ci0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAg
ICByZXR1cm4gbV9tYWluRnJhbWUtPkhpdFRlc3QocG9zKTsKLQotICAgIHJldHVybiBXZWJWaWV3
RE9NRWxlbWVudEluZm8oKTsKLX0KLQotYm9vbCBXZWJWaWV3OjpTaG91bGRDbG9zZSgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPlNo
b3VsZENsb3NlKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLyogc3RhdGljICovCi12b2lk
IFdlYlZpZXc6OlNldERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IHd4U3RyaW5nJiBkYXRhYmFzZURp
cmVjdG9yeSkKLXsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChkYXRhYmFzZURp
cmVjdG9yeSk7Ci0jZW5kaWYKLX0KLQotLyogc3RhdGljICovCi13eFN0cmluZyBXZWJWaWV3OjpH
ZXREYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKCk7Ci0jZWxzZQotICAgIHJldHVybiB3eEVtcHR5U3RyaW5nOwotI2VuZGlmCi19Ci0K
LS8qIHN0YXRpYyAqLwotdm9pZCBXZWJWaWV3OjpTZXREYXRhYmFzZXNFbmFibGVkKGJvb2wgZW5h
YmxlZCkKLXsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlciYgZGJNYW5hZ2VyID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCk7
Ci0gICAgbWFuYWdlci5zZXRJc0F2YWlsYWJsZShlbmFibGVkKTsKLSNlbmRpZgotfQotCi0vKiBz
dGF0aWMgKi8KLWJvb2wgV2ViVmlldzo6QXJlRGF0YWJhc2VzRW5hYmxlZCgpCi17Ci0jaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdl
ciA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOwotICAgIHJldHVybiBkYk1h
bmFnZXIuaXNBdmFpbGFibGUoKTsKLSNlbmRpZgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3Rh
dGljIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6UHJveHlUeXBlIGN1cmxQcm94eVR5
cGUod3hQcm94eVR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBIVFRQOiByZXR1cm4gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpIVFRQOwotICAg
ICAgICBjYXNlIFNvY2tzNDogcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6
U29ja3M0OwotICAgICAgICBjYXNlIFNvY2tzNEE6IHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZU1hbmFnZXI6OlNvY2tzNEE7Ci0gICAgICAgIGNhc2UgU29ja3M1OiByZXR1cm4gV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpTb2NrczU7Ci0gICAgICAgIGNhc2UgU29ja3M1SG9z
dG5hbWU6IHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OlNvY2tzNUhvc3Ru
YW1lOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpIVFRQ
OwotICAgIH0KLX0KLQotLyogc3RhdGljICovCi12b2lkIFdlYlZpZXc6OlNldFByb3h5SW5mbyhj
b25zdCB3eFN0cmluZyYgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eFByb3h5VHlwZSB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgdXNlcm5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBwYXNzd29y
ZCkKLXsKLSAgICB1c2luZyBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI7Ci0gICAgaWYg
KFJlc291cmNlSGFuZGxlTWFuYWdlciogbWdyID0gUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFy
ZWRJbnN0YW5jZSgpKQotICAgICAgICBtZ3ItPnNldFByb3h5SW5mbyhob3N0LCBwb3J0LCBjdXJs
UHJveHlUeXBlKHR5cGUpLCB1c2VybmFtZSwgcGFzc3dvcmQpOwotfQotCi1XZWJTZXR0aW5ncyBX
ZWJWaWV3OjpHZXRXZWJTZXR0aW5ncygpCi17Ci0gICAgQVNTRVJUKG1faW1wbC0+cGFnZSk7Ci0g
ICAgaWYgKG1faW1wbC0+cGFnZSkKLSAgICAgICAgcmV0dXJuIFdlYlNldHRpbmdzKG1faW1wbC0+
cGFnZS0+c2V0dGluZ3MoKSk7Ci0gICAgCi0gICAgcmV0dXJuIFdlYlNldHRpbmdzKCk7Ci19Ci0K
LVdlYktpdENvbXBhdGliaWxpdHlNb2RlIFdlYlZpZXc6OkdldENvbXBhdGliaWxpdHlNb2RlKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBtX21haW5GcmFt
ZS0+R2V0Q29tcGF0aWJpbGl0eU1vZGUoKTsKLQotICAgIHJldHVybiBRdWlya3NNb2RlOwotfQot
Ci12b2lkIFdlYlZpZXc6OkdyYW50VW5pdmVyc2FsQWNjZXNzKCkKLXsKLSAgICBpZiAobV9tYWlu
RnJhbWUpCi0gICAgICAgIG1fbWFpbkZyYW1lLT5HcmFudFVuaXZlcnNhbEFjY2VzcygpOwotfQot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvd3gvV2ViVmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWIxODc5YjMw
Y2EwZThiZWQxZjViYjQ0ZWYwYjBjNjVhNjM2ZGVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgS2V2aW4g
T2xsaXZpZXIgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgotICoKLSAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLSAKLSNpZm5kZWYgV2ViVmlld19oCi0jZGVmaW5lIFdlYlZpZXdfaAotCi0j
aW5jbHVkZSAid3gvd3hwcmVjLmgiCi0jaWZuZGVmIFdYX1BSRUNPTVAKLSAgICAjaW5jbHVkZSAi
d3gvd3guaCIKLSNlbmRpZgotCi0jaW5jbHVkZSAiV2ViS2l0RGVmaW5lcy5oIgotI2luY2x1ZGUg
IldlYkRPTVNlbGVjdGlvbi5oIgotI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2Vi
U2V0dGluZ3MuaCIKLQotY2xhc3MgV2ViVmlld1ByaXZhdGU7Ci1jbGFzcyBXZWJWaWV3RnJhbWVE
YXRhOwotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTR2xvYmFsQ29udGV4dFJl
ZjsKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVmOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQ2hyb21lQ2xpZW50V3g7Ci0gICAgY2xhc3MgRnJhbWVM
b2FkZXJDbGllbnRXeDsKLX0KLQotc3RhdGljIGNvbnN0IGludCBkZWZhdWx0Q2FjaGVDYXBhY2l0
eSA9IDgxOTIgKiAxMDI0OyAvLyBtaXJyb3JzIE1lbW9yeUNhY2hlLmNwcAotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViRnJhbWU7Ci0KLSNpZm5kZWYgU1dJRwotZXh0ZXJuIFdYRExM
SU1QRVhQX1dFQktJVCBjb25zdCB3eENoYXIqIFdlYlZpZXdOYW1lU3RyOwotI2VuZGlmCi0KLWNs
YXNzIFdYRExMSU1QRVhQX1dFQktJVCBXZWJWaWV3Q2FjaGVQb2xpY3kKLXsKLXB1YmxpYzoKLSAg
ICBXZWJWaWV3Q2FjaGVQb2xpY3kodW5zaWduZWQgbWluRGVhZCA9IDAsIHVuc2lnbmVkIG1heERl
YWQgPSBkZWZhdWx0Q2FjaGVDYXBhY2l0eSwgdW5zaWduZWQgdG90YWxDYXBhY2l0eSA9IGRlZmF1
bHRDYWNoZUNhcGFjaXR5KQotICAgICAgICA6IG1fbWluRGVhZENhcGFjaXR5KG1pbkRlYWQpCi0g
ICAgICAgICwgbV9tYXhEZWFkQ2FwYWNpdHkobWF4RGVhZCkKLSAgICAgICAgLCBtX2NhcGFjaXR5
KHRvdGFsQ2FwYWNpdHkpCi0gICAge30KLQotICAgIH5XZWJWaWV3Q2FjaGVQb2xpY3koKSB7fQot
Ci0gICAgdW5zaWduZWQgR2V0Q2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9
Ci0gICAgdm9pZCBTZXRDYXBhY2l0eShpbnQgY2FwYWNpdHkpIHsgbV9jYXBhY2l0eSA9IGNhcGFj
aXR5OyB9Ci0KLSAgICB1bnNpZ25lZCBHZXRNaW5EZWFkQ2FwYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX21pbkRlYWRDYXBhY2l0eTsgfQotICAgIHZvaWQgU2V0TWluRGVhZENhcGFjaXR5KHVuc2ln
bmVkIG1pbkRlYWRDYXBhY2l0eSkgeyBtX21pbkRlYWRDYXBhY2l0eSA9IG1pbkRlYWRDYXBhY2l0
eTsgfQotCi0gICAgdW5zaWduZWQgR2V0TWF4RGVhZENhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4g
bV9tYXhEZWFkQ2FwYWNpdHk7IH0KLSAgICB2b2lkIFNldE1heERlYWRDYXBhY2l0eSh1bnNpZ25l
ZCBtYXhEZWFkQ2FwYWNpdHkpIHsgbV9tYXhEZWFkQ2FwYWNpdHkgPSBtYXhEZWFkQ2FwYWNpdHk7
IH0KLQotcHJvdGVjdGVkOgotICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7Ci0gICAgdW5zaWduZWQg
bV9taW5EZWFkQ2FwYWNpdHk7Ci0gICAgdW5zaWduZWQgbV9tYXhEZWFkQ2FwYWNpdHk7Ci19Owot
Ci0KLS8vIGNvcGllZCBmcm9tIFdlYktpdC9tYWMvTWlzYy9XZWJLaXRFcnJvcnNbUHJpdmF0ZV0u
aAotZW51bSB7Ci0gICAgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5cGUgPSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTAwLAotICAgIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCA9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMSwKLSAgICBXZWJLaXRFcnJvckZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgPSAgICAgICAgICAgICAxMDIsCi0gICAgV2Vi
S2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMywKLSAgICBXZWJLaXRFcnJvckNh
bm5vdEZpbmRQbHVnSW4gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAsCi0gICAg
V2ViS2l0RXJyb3JDYW5ub3RMb2FkUGx1Z0luID0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjAxLAotICAgIFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlID0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIwMiwKLX07Ci0KLWVudW0gd3hQcm94eVR5cGUgewotICAgIEhUVFAs
Ci0gICAgU29ja3M0LAotICAgIFNvY2tzNEEsCi0gICAgU29ja3M1LAotICAgIFNvY2tzNUhvc3Ru
YW1lCi19OwotCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlldyA6IHB1YmxpYyB3eFdp
bmRvdwotewotICAgIC8vIENocm9tZUNsaWVudFd4IG5lZWRzIHRvIGdldCB0aGUgUGFnZSogc3Rv
cmVkIGJ5IHRoZSBXZWJWaWV3Ci0gICAgLy8gZm9yIHRoZSBjcmVhdGVXaW5kb3cgZnVuY3Rpb24u
IAotICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDsKLSAgICBmcmllbmQg
Y2xhc3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDsKLQotcHVibGljOgotICAgIC8vIGN0
b3IocykKLSNpZiBTV0lHCi0gICAgJXB5dGhvbkFwcGVuZCBXZWJWaWV3ICAgICJzZWxmLl9zZXRP
T1JJbmZvKHNlbGYpIgotICAgICVweXRob25BcHBlbmQgV2ViVmlldygpICAiIgotI2VuZGlmCi0K
LSAgICBXZWJWaWV3KHd4V2luZG93KiBwYXJlbnQsCi0gICAgICAgICAgICAgIGNvbnN0IHd4U3Ry
aW5nJiB1cmwgPSAiYWJvdXQ6YmxhbmsiLCAKLSAgICAgICAgICAgICAgaW50IGlkID0gd3hJRF9B
TlksCi0gICAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvaW50ID0gd3hEZWZhdWx0UG9zaXRp
b24sCi0gICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsCi0g
ICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAwLAotICAgICAgICAgICAgICBjb25zdCB3eFN0cmlu
ZyYgbmFtZSA9IFdlYlZpZXdOYW1lU3RyKTsgLy8gRm9yIFdlYlZpZXcgaW50ZXJuYWwgZGF0YSBw
YXNzaW5nCi0jaWYgU1dJRwotICAgICVyZW5hbWUoUHJlV2ViVmlldykgV2ViVmlldygpOwotI2Vs
c2UKLSAgICBXZWJWaWV3KCk7Ci0jZW5kaWYKLSAgICAKLSAgICBib29sIENyZWF0ZSh3eFdpbmRv
dyogcGFyZW50LAotICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiB1cmwgPSAiYWJvdXQ6
YmxhbmsiLCAKLSAgICAgICAgICAgICAgICBpbnQgaWQgPSB3eElEX0FOWSwKLSAgICAgICAgICAg
ICAgICBjb25zdCB3eFBvaW50JiBwb2ludCA9IHd4RGVmYXVsdFBvc2l0aW9uLAotICAgICAgICAg
ICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsCi0gICAgICAgICAgICAg
ICAgbG9uZyBzdHlsZSA9IDAsCi0gICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUg
PSBXZWJWaWV3TmFtZVN0cik7IC8vIEZvciBXZWJWaWV3IGludGVybmFsIGRhdGEgcGFzc2luZwot
ICAgIAotI2lmbmRlZiBTV0lHCi0gICAgdmlydHVhbCB+V2ViVmlldygpOwotI2VuZGlmCi0gICAg
Ci0gICAgdm9pZCBMb2FkVVJMKGNvbnN0IHd4U3RyaW5nJiB1cmwpOwotICAgIGJvb2wgR29CYWNr
KCk7Ci0gICAgYm9vbCBHb0ZvcndhcmQoKTsKLSAgICB2b2lkIFN0b3AoKTsKLSAgICB2b2lkIFJl
bG9hZCgpOwotCi0gICAgYm9vbCBDYW5Hb0JhY2soKTsKLSAgICBib29sIENhbkdvRm9yd2FyZCgp
OwotICAgIAotICAgIGJvb2wgQ2FuQ3V0KCk7Ci0gICAgYm9vbCBDYW5Db3B5KCk7Ci0gICAgYm9v
bCBDYW5QYXN0ZSgpOwotICAgIAotICAgIHZvaWQgQ3V0KCk7Ci0gICAgdm9pZCBDb3B5KCk7Ci0g
ICAgdm9pZCBQYXN0ZSgpOwotICAgIAotICAgIC8vYm9vbCBDYW5HZXRQYWdlU291cmNlKCk7Ci0g
ICAgd3hTdHJpbmcgR2V0UGFnZVNvdXJjZSgpOwotICAgIHZvaWQgU2V0UGFnZVNvdXJjZShjb25z
dCB3eFN0cmluZyYgc291cmNlLCBjb25zdCB3eFN0cmluZyYgYmFzZVVybCA9IHd4RW1wdHlTdHJp
bmcsIGNvbnN0IHd4U3RyaW5nJiBtaW1ldHlwZSA9IHd4VCgidGV4dC9odG1sIikpOwotICAgIAot
ICAgIHd4U3RyaW5nIEdldElubmVyVGV4dCgpOwotICAgIHd4U3RyaW5nIEdldEFzTWFya3VwKCk7
Ci0gICAgd3hTdHJpbmcgR2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpOwotICAgIAotICAgIFdl
YktpdFNlbGVjdGlvbiBHZXRTZWxlY3Rpb24oKTsKLSAgICB3eFN0cmluZyBHZXRTZWxlY3Rpb25B
c0hUTUwoKTsKLSAgICB3eFN0cmluZyBHZXRTZWxlY3Rpb25Bc1RleHQoKTsKLSAgICAKLSAgICB2
b2lkIFNldFRyYW5zcGFyZW50KGJvb2wgdHJhbnNwYXJlbnQpOwotICAgIGJvb2wgSXNUcmFuc3Bh
cmVudCgpIGNvbnN0OwotICAgIAotICAgIHd4U3RyaW5nIFJ1blNjcmlwdChjb25zdCB3eFN0cmlu
ZyYgamF2YXNjcmlwdCk7Ci0gICAgYm9vbCBFeGVjdXRlRWRpdENvbW1hbmQoY29uc3Qgd3hTdHJp
bmcmIGNvbW1hbmQsIGNvbnN0IHd4U3RyaW5nJiBwYXJhbWV0ZXIgPSB3eEVtcHR5U3RyaW5nKTsK
LSAgICBFZGl0U3RhdGUgR2V0RWRpdENvbW1hbmRTdGF0ZShjb25zdCB3eFN0cmluZyYgY29tbWFu
ZCkgY29uc3Q7Ci0gICAgd3hTdHJpbmcgR2V0RWRpdENvbW1hbmRWYWx1ZShjb25zdCB3eFN0cmlu
ZyYgY29tbWFuZCkgY29uc3Q7Ci0KLSAgICBib29sIEZpbmRTdHJpbmcoY29uc3Qgd3hTdHJpbmcm
IHN0cmluZywgYm9vbCBmb3J3YXJkID0gdHJ1ZSwKLSAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gZmFsc2UsIGJvb2wgd3JhcFNlbGVjdGlvbiA9IHRydWUsCi0gICAgICAgIGJvb2wgc3RhcnRJ
blNlbGVjdGlvbiA9IHRydWUpOwotICAgIAotICAgIGJvb2wgQ2FuSW5jcmVhc2VUZXh0U2l6ZSgp
IGNvbnN0OwotICAgIHZvaWQgSW5jcmVhc2VUZXh0U2l6ZSgpOwotICAgIGJvb2wgQ2FuRGVjcmVh
c2VUZXh0U2l6ZSgpIGNvbnN0OwotICAgIHZvaWQgRGVjcmVhc2VUZXh0U2l6ZSgpOwotICAgIHZv
aWQgUmVzZXRUZXh0U2l6ZSgpOwotICAgIHZvaWQgTWFrZUVkaXRhYmxlKGJvb2wgZW5hYmxlKTsK
LSAgICBib29sIElzRWRpdGFibGUoKSBjb25zdDsKLQotICAgIHd4U3RyaW5nIEdldFBhZ2VUaXRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KLSAgICB2b2lkIFNldFBhZ2VUaXRsZShjb25z
dCB3eFN0cmluZyYgdGl0bGUpIHsgbV90aXRsZSA9IHRpdGxlOyB9Ci0gICAgCi0gICAgV2ViRnJh
bWUqIEdldE1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZyYW1lOyB9Ci0gICAgCi0gICAgd3hT
dHJpbmcgR2V0TWFpbkZyYW1lVVJMKCkgY29uc3Q7Ci0KLSAgICBXZWJWaWV3RE9NRWxlbWVudElu
Zm8gSGl0VGVzdChjb25zdCB3eFBvaW50JiBwb3MpIGNvbnN0OwotICAgIAotICAgIGJvb2wgU2hv
dWxkQ2xvc2UoKSBjb25zdDsKLSAgICAgIAotICAgIHN0YXRpYyB2b2lkIFNldENhY2hlUG9saWN5
KGNvbnN0IFdlYlZpZXdDYWNoZVBvbGljeSYgY2FjaGVQb2xpY3kpOwotICAgIHN0YXRpYyBXZWJW
aWV3Q2FjaGVQb2xpY3kgR2V0Q2FjaGVQb2xpY3koKTsKLQotICAgIHZvaWQgU2V0TW91c2VXaGVl
bFpvb21zKGJvb2wgbW91c2VXaGVlbFpvb21zKSB7IG1fbW91c2VXaGVlbFpvb21zID0gbW91c2VX
aGVlbFpvb21zOyB9Ci0gICAgYm9vbCBHZXRNb3VzZVdoZWVsWm9vbXMoKSBjb25zdCB7IHJldHVy
biBtX21vdXNlV2hlZWxab29tczsgfQotCi0gICAgc3RhdGljIHZvaWQgU2V0RGF0YWJhc2VEaXJl
Y3RvcnkoY29uc3Qgd3hTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgd3hT
dHJpbmcgR2V0RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICAKLSAgICAvKioKLSAgICAgICAgU2V0
cyB3aGV0aGVyIG9yIG5vdCB3ZWIgcGFnZXMgY2FuIGNyZWF0ZSBkYXRhYmFzZXMuCi0gICAgKi8K
LSAgICBzdGF0aWMgdm9pZCBTZXREYXRhYmFzZXNFbmFibGVkKGJvb2wgZW5hYmxlZCk7Ci0gICAg
Ci0gICAgLyoqCi0gICAgICAgIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIFdlYlZpZXcgcnVu
cyBKYXZhU2NyaXB0IGNvZGUuCi0gICAgKi8gICAgCi0gICAgc3RhdGljIGJvb2wgQXJlRGF0YWJh
c2VzRW5hYmxlZCgpOwotCi0gICAgc3RhdGljIHZvaWQgU2V0UHJveHlJbmZvKGNvbnN0IHd4U3Ry
aW5nJiBob3N0ID0gd3hFbXB0eVN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBwb3J0ID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hQ
cm94eVR5cGUgdHlwZSA9IEhUVFAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHd4U3RyaW5nJiB1c2VybmFtZSA9IHd4RW1wdHlTdHJpbmcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBwYXNzd29yZCA9IHd4RW1wdHlTdHJpbmcpOwotCi0g
ICAgV2ViU2V0dGluZ3MgR2V0V2ViU2V0dGluZ3MoKTsKLSAgICBXZWJLaXRDb21wYXRpYmlsaXR5
TW9kZSBHZXRDb21wYXRpYmlsaXR5TW9kZSgpIGNvbnN0OwotICAgIAotICAgIC8qCi0gICAgICAg
IFRoaXMgbWV0aG9kIGFsbG93cyBjcm9zcyBzaXRlLXNjcmlwdGluZyAoWFNTKSBpbiB0aGUgV2Vi
Vmlldy4gCi0gICAgICAgIFVzZSB3aXRoIGNhdXRpb24hCi0gICAgKi8KLSAgICB2b2lkIEdyYW50
VW5pdmVyc2FsQWNjZXNzKCk7Ci0KLXByb3RlY3RlZDoKLQotICAgIC8vIGV2ZW50IGhhbmRsZXJz
ICh0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIF9ub3RfIGJlIHZpcnR1YWwpCi0gICAgdm9pZCBPblBh
aW50KHd4UGFpbnRFdmVudCYgZXZlbnQpOwotICAgIHZvaWQgT25TaXplKHd4U2l6ZUV2ZW50JiBl
dmVudCk7Ci0gICAgdm9pZCBPbk1vdXNlRXZlbnRzKHd4TW91c2VFdmVudCYgZXZlbnQpOwotICAg
IHZvaWQgT25Db250ZXh0TWVudUV2ZW50cyh3eENvbnRleHRNZW51RXZlbnQmIGV2ZW50KTsKLSAg
ICB2b2lkIE9uTWVudVNlbGVjdEV2ZW50cyh3eENvbW1hbmRFdmVudCYgZXZlbnQpOwotICAgIHZv
aWQgT25LZXlFdmVudHMod3hLZXlFdmVudCYgZXZlbnQpOwotICAgIHZvaWQgT25TZXRGb2N1cyh3
eEZvY3VzRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uS2lsbEZvY3VzKHd4Rm9jdXNFdmVudCYg
ZXZlbnQpOwotICAgIHZvaWQgT25UTFdBY3RpdmF0ZWQod3hBY3RpdmF0ZUV2ZW50JiBldmVudCk7
Ci0gICAgdm9pZCBPbk1vdXNlQ2FwdHVyZUxvc3Qod3hNb3VzZUNhcHR1cmVMb3N0RXZlbnQmKTsK
LSAgICAKLXByaXZhdGU6Ci0gICAgLy8gYW55IGNsYXNzIHdpc2hpbmcgdG8gcHJvY2VzcyB3eFdp
bmRvd3MgZXZlbnRzIG11c3QgdXNlIHRoaXMgbWFjcm8KLSNpZm5kZWYgU1dJRwotICAgIERFQ0xB
UkVfRVZFTlRfVEFCTEUoKQotICAgIERFQ0xBUkVfRFlOQU1JQ19DTEFTUyhXZWJWaWV3KQotI2Vu
ZGlmCi0gICAgZmxvYXQgbV90ZXh0TWFnbmlmaWVyOwotICAgIGJvb2wgbV9pc0luaXRpYWxpemVk
OwotICAgIGJvb2wgbV9iZWluZ0Rlc3Ryb3llZDsKLSAgICBib29sIG1fbW91c2VXaGVlbFpvb21z
OwotICAgIFdlYlZpZXdQcml2YXRlKiBtX2ltcGw7Ci0gICAgV2ViRnJhbWUqIG1fbWFpbkZyYW1l
OwotICAgIHd4U3RyaW5nIG1fdGl0bGU7Ci0gICAgCi19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBXZWIgS2l0IEV2ZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1lbnVtIHsK
LSAgICBXRUJWSUVXX0xPQURfU1RBUlRFRCA9IDEsCi0gICAgV0VCVklFV19MT0FEX05FR09USUFU
SU5HID0gMiwKLSAgICBXRUJWSUVXX0xPQURfUkVESVJFQ1RJTkcgPSA0LAotICAgIFdFQlZJRVdf
TE9BRF9UUkFOU0ZFUlJJTkcgPSA4LAotICAgIFdFQlZJRVdfTE9BRF9TVE9QUEVEID0gMTYsCi0g
ICAgV0VCVklFV19MT0FEX0ZBSUxFRCA9IDMyLAotICAgIFdFQlZJRVdfTE9BRF9ETF9DT01QTEVU
RUQgPSA2NCwKLSAgICBXRUJWSUVXX0xPQURfRE9DX0NPTVBMRVRFRCA9IDEyOCwKLSAgICBXRUJW
SUVXX0xPQURfT05MT0FEX0hBTkRMRUQgPSAyNTYsCi0gICAgV0VCVklFV19MT0FEX1dJTkRPV19P
QkpFQ1RfQ0xFQVJFRCA9IDUxMgotfTsKLQotZW51bSB7Ci0gICAgV0VCVklFV19OQVZfTElOS19D
TElDS0VEID0gMSwKLSAgICBXRUJWSUVXX05BVl9CQUNLX05FWFQgPSAyLAotICAgIFdFQlZJRVdf
TkFWX0ZPUk1fU1VCTUlUVEVEID0gNCwKLSAgICBXRUJWSUVXX05BVl9SRUxPQUQgPSA4LAotICAg
IFdFQlZJRVdfTkFWX0ZPUk1fUkVTVUJNSVRURUQgPSAxNiwKLSAgICBXRUJWSUVXX05BVl9PVEhF
UiA9IDMyCi19OwotCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0JlZm9yZUxvYWRF
dmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudAotewotI2lmbmRlZiBTV0lHCi0gICAgREVDTEFS
RV9EWU5BTUlDX0NMQVNTKFdlYlZpZXdCZWZvcmVMb2FkRXZlbnQpCi0jZW5kaWYKLQotcHVibGlj
OgotICAgIGJvb2wgSXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxlZDsgfQot
ICAgIHZvaWQgQ2FuY2VsKGJvb2wgY2FuY2VsID0gdHJ1ZSkgeyBtX2NhbmNlbGxlZCA9IGNhbmNl
bDsgfQotICAgIHd4U3RyaW5nIEdldFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAg
dm9pZCBTZXRVUkwoY29uc3Qgd3hTdHJpbmcmIHVybCkgeyBtX3VybCA9IHVybDsgfQotICAgIHZv
aWQgU2V0TmF2aWdhdGlvblR5cGUoaW50IG5hdlR5cGUpIHsgbV9uYXZUeXBlID0gbmF2VHlwZTsg
fQotICAgIGludCBHZXROYXZpZ2F0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2VHlwZTsg
fQotICAgIFdlYkZyYW1lKiBHZXRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KLSAg
ICB2b2lkIFNldEZyYW1lKFdlYkZyYW1lKiBmcmFtZSkgeyBtX2ZyYW1lID0gZnJhbWU7IH0KLQot
ICAgIFdlYlZpZXdCZWZvcmVMb2FkRXZlbnQod3hXaW5kb3cqIHdpbiA9IDApOwotICAgIHd4RXZl
bnQgKkNsb25lKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG5ldyBXZWJWaWV3QmVmb3JlTG9hZEV2ZW50
KCp0aGlzKTsgfQotCi1wcml2YXRlOgotICAgIGJvb2wgbV9jYW5jZWxsZWQ7Ci0gICAgd3hTdHJp
bmcgbV91cmw7Ci0gICAgaW50IG1fbmF2VHlwZTsKLSAgICBXZWJGcmFtZSogbV9mcmFtZTsKLX07
Ci0KLWNsYXNzIFdYRExMSU1QRVhQX1dFQktJVCBXZWJWaWV3TG9hZEV2ZW50IDogcHVibGljIHd4
Q29tbWFuZEV2ZW50Ci17Ci0jaWZuZGVmIFNXSUcKLSAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1Mo
V2ViVmlld0xvYWRFdmVudCkKLSNlbmRpZgotCi1wdWJsaWM6Ci0gICAgaW50IEdldFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAgIHZvaWQgU2V0U3RhdGUoY29uc3QgaW50IHN0
YXRlKSB7IG1fc3RhdGUgPSBzdGF0ZTsgfQotICAgIHd4U3RyaW5nIEdldFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9Ci0gICAgdm9pZCBTZXRVUkwoY29uc3Qgd3hTdHJpbmcmIHVybCkgeyBt
X3VybCA9IHVybDsgfQotICAgIFdlYkZyYW1lKiBHZXRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWU7IH0KLSAgICB2b2lkIFNldEZyYW1lKFdlYkZyYW1lKiBmcmFtZSkgeyBtX2ZyYW1lID0g
ZnJhbWU7IH0KLQotICAgIFdlYlZpZXdMb2FkRXZlbnQod3hXaW5kb3cqIHdpbiA9IDApOwotICAg
IHd4RXZlbnQgKkNsb25lKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG5ldyBXZWJWaWV3TG9hZEV2ZW50
KCp0aGlzKTsgfQotCi1wcml2YXRlOgotICAgIGludCBtX3N0YXRlOwotICAgIHd4U3RyaW5nIG1f
dXJsOwotICAgIFdlYkZyYW1lKiBtX2ZyYW1lOwotfTsKLQotY2xhc3MgV1hETExJTVBFWFBfV0VC
S0lUIFdlYktpdFdpbmRvd0ZlYXR1cmVzCi17Ci1wdWJsaWM6Ci0gICAgV2ViS2l0V2luZG93RmVh
dHVyZXMoKQotICAgICAgICA6IG1lbnVCYXJWaXNpYmxlKHRydWUpCi0gICAgICAgICwgc3RhdHVz
QmFyVmlzaWJsZSh0cnVlKQotICAgICAgICAsIHRvb2xCYXJWaXNpYmxlKHRydWUpCi0gICAgICAg
ICwgbG9jYXRpb25CYXJWaXNpYmxlKHRydWUpCi0gICAgICAgICwgc2Nyb2xsYmFyc1Zpc2libGUo
dHJ1ZSkKLSAgICAgICAgLCByZXNpemFibGUodHJ1ZSkKLSAgICAgICAgLCBmdWxsc2NyZWVuKGZh
bHNlKQotICAgICAgICAsIGRpYWxvZyhmYWxzZSkKLSAgICB7IH0KLQotICAgIGJvb2wgbWVudUJh
clZpc2libGU7Ci0gICAgYm9vbCBzdGF0dXNCYXJWaXNpYmxlOwotICAgIGJvb2wgdG9vbEJhclZp
c2libGU7Ci0gICAgYm9vbCBsb2NhdGlvbkJhclZpc2libGU7Ci0gICAgYm9vbCBzY3JvbGxiYXJz
VmlzaWJsZTsKLSAgICBib29sIHJlc2l6YWJsZTsKLSAgICBib29sIGZ1bGxzY3JlZW47Ci0gICAg
Ym9vbCBkaWFsb2c7Ci19OwotCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld05ld1dp
bmRvd0V2ZW50IDogcHVibGljIHd4Q29tbWFuZEV2ZW50Ci17Ci0jaWZuZGVmIFNXSUcKLSAgICBE
RUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlld05ld1dpbmRvd0V2ZW50KQotI2VuZGlmCi0KLXB1
YmxpYzoKLSAgICB3eFN0cmluZyBHZXRVUkwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAg
IHZvaWQgU2V0VVJMKGNvbnN0IHd4U3RyaW5nJiB1cmwpIHsgbV91cmwgPSB1cmw7IH0KLSAgICB3
eFN0cmluZyBHZXRUYXJnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXROYW1lOyB9Ci0g
ICAgdm9pZCBTZXRUYXJnZXROYW1lKGNvbnN0IHd4U3RyaW5nJiBuYW1lKSB7IG1fdGFyZ2V0TmFt
ZSA9IG5hbWU7IH0KLSAgICBXZWJWaWV3KiBHZXRXZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3
OyB9Ci0gICAgdm9pZCBTZXRXZWJWaWV3KFdlYlZpZXcqIHdlYlZpZXcpIHsgbV93ZWJWaWV3ID0g
d2ViVmlldzsgfQotICAgIFdlYktpdFdpbmRvd0ZlYXR1cmVzIEdldFdpbmRvd0ZlYXR1cmVzKCkg
eyByZXR1cm4gbV9mZWF0dXJlczsgfQotICAgIHZvaWQgU2V0V2luZG93RmVhdHVyZXMoV2ViS2l0
V2luZG93RmVhdHVyZXMgZmVhdHVyZXMpIHsgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOyB9Ci0gICAg
V2ViRnJhbWUqIEdldEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQotICAgIHZvaWQg
U2V0RnJhbWUoV2ViRnJhbWUqIGZyYW1lKSB7IG1fZnJhbWUgPSBmcmFtZTsgfQotCi0gICAgV2Vi
Vmlld05ld1dpbmRvd0V2ZW50KHd4V2luZG93KiB3aW4gPSAwKTsKLSAgICB3eEV2ZW50ICpDbG9u
ZSgpIGNvbnN0IHsgcmV0dXJuIG5ldyBXZWJWaWV3TmV3V2luZG93RXZlbnQoKnRoaXMpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgV2ViVmlldyogbV93ZWJWaWV3OwotICAgIFdlYkZyYW1lKiBtX2ZyYW1l
OwotICAgIFdlYktpdFdpbmRvd0ZlYXR1cmVzIG1fZmVhdHVyZXM7Ci0gICAgd3hTdHJpbmcgbV91
cmw7Ci0gICAgd3hTdHJpbmcgbV90YXJnZXROYW1lOwotfTsKLQotY2xhc3MgV1hETExJTVBFWFBf
V0VCS0lUIFdlYlZpZXdSaWdodENsaWNrRXZlbnQgOiBwdWJsaWMgd3hDb21tYW5kRXZlbnQKLXsK
LSNpZm5kZWYgU1dJRwotICAgIERFQ0xBUkVfRFlOQU1JQ19DTEFTUyhXZWJWaWV3UmlnaHRDbGlj
a0V2ZW50KQotI2VuZGlmCi0KLXB1YmxpYzoKLSAgICBXZWJWaWV3UmlnaHRDbGlja0V2ZW50KHd4
V2luZG93KiB3aW4gPSAwKTsKLSAgICB3eEV2ZW50ICpDbG9uZSgpIGNvbnN0IHsgcmV0dXJuIG5l
dyBXZWJWaWV3UmlnaHRDbGlja0V2ZW50KCp0aGlzKTsgfQotICAgIAotICAgIFdlYlZpZXdET01F
bGVtZW50SW5mbyBHZXRJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9Ci0gICAgdm9pZCBT
ZXRJbmZvKFdlYlZpZXdET01FbGVtZW50SW5mbyBpbmZvKSB7IG1faW5mbyA9IGluZm87IH0KLSAg
ICAKLSAgICB3eFBvaW50IEdldFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsg
fQotICAgIHZvaWQgU2V0UG9zaXRpb24od3hQb2ludCBwb3MpIHsgbV9wb3NpdGlvbiA9IHBvczsg
fQotCi1wcml2YXRlOgotICAgIFdlYlZpZXdET01FbGVtZW50SW5mbyBtX2luZm87Ci0gICAgd3hQ
b2ludCBtX3Bvc2l0aW9uOwotfTsKLQotLy8gY29waWVkIGZyb20gcGFnZS9Db25zb2xlLmgKLWVu
dW0gV2ViVmlld0NvbnNvbGVNZXNzYWdlTGV2ZWwgewotICAgIERlYnVnTWVzc2FnZUxldmVsID0g
NCwKLSAgICBMb2dNZXNzYWdlTGV2ZWwgPSAxLAotICAgIFdhcm5pbmdNZXNzYWdlTGV2ZWwgPSAy
LAotICAgIEVycm9yTWVzc2FnZUxldmVsID0gMwotfTsKLQotY2xhc3MgV1hETExJTVBFWFBfV0VC
S0lUIFdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50IDogcHVibGljIHd4Q29tbWFuZEV2ZW50Ci17
Ci0jaWZuZGVmIFNXSUcKLSAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlld0NvbnNvbGVN
ZXNzYWdlRXZlbnQpCi0jZW5kaWYKLQotcHVibGljOgotICAgIHd4U3RyaW5nIEdldE1lc3NhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KLSAgICB2b2lkIFNldE1lc3NhZ2UoY29uc3Qg
d3hTdHJpbmcmIG1lc3NhZ2UpIHsgbV9tZXNzYWdlID0gbWVzc2FnZTsgfQotICAgIAotICAgIHVu
c2lnbmVkIGludCBHZXRMaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9
Ci0gICAgdm9pZCBTZXRMaW5lTnVtYmVyKHVuc2lnbmVkIGludCBsaW5lTnVtYmVyKSB7IG1fbGlu
ZU51bWJlciA9IGxpbmVOdW1iZXI7IH0KLSAgICAKLSAgICB3eFN0cmluZyBHZXRTb3VyY2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQ7IH0KLSAgICB2b2lkIFNldFNvdXJjZUlEKGNvbnN0
IHd4U3RyaW5nJiBzb3VyY2VJRCkgeyBtX3NvdXJjZUlEID0gc291cmNlSUQ7IH0KLQotICAgIFdl
YlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50KHd4V2luZG93KiB3aW4gPSAwKTsKLSAgICB3eEV2ZW50
ICpDbG9uZSgpIGNvbnN0IHsgcmV0dXJuIG5ldyBXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudCgq
dGhpcyk7IH0KLQotICAgIFdlYlZpZXdDb25zb2xlTWVzc2FnZUxldmVsIEdldExldmVsKCkgY29u
c3QgeyByZXR1cm4gbV9sZXZlbDsgfQotICAgIHZvaWQgU2V0TGV2ZWwoV2ViVmlld0NvbnNvbGVN
ZXNzYWdlTGV2ZWwgbGV2ZWwpIHsgbV9sZXZlbCA9IGxldmVsOyB9Ci0KLXByaXZhdGU6Ci0gICAg
dW5zaWduZWQgaW50IG1fbGluZU51bWJlcjsKLSAgICB3eFN0cmluZyBtX21lc3NhZ2U7Ci0gICAg
d3hTdHJpbmcgbV9zb3VyY2VJRDsKLSAgICBXZWJWaWV3Q29uc29sZU1lc3NhZ2VMZXZlbCBtX2xl
dmVsOwotfTsKLQotY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIFdlYlZpZXdBbGVydEV2ZW50IDog
cHVibGljIHd4Q29tbWFuZEV2ZW50Ci17Ci0jaWZuZGVmIFNXSUcKLSAgICBERUNMQVJFX0RZTkFN
SUNfQ0xBU1MoV2ViVmlld0FsZXJ0RXZlbnQpCi0jZW5kaWYKLQotcHVibGljOgotICAgIHd4U3Ry
aW5nIEdldE1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KLSAgICB2b2lkIFNl
dE1lc3NhZ2UoY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2UpIHsgbV9tZXNzYWdlID0gbWVzc2FnZTsg
fQotCi0gICAgV2ViVmlld0FsZXJ0RXZlbnQod3hXaW5kb3cqIHdpbiA9IDApOwotICAgIHd4RXZl
bnQgKkNsb25lKCkgY29uc3QgeyByZXR1cm4gbmV3IFdlYlZpZXdBbGVydEV2ZW50KCp0aGlzKTsg
fQotCi1wcml2YXRlOgotICAgIHd4U3RyaW5nIG1fbWVzc2FnZTsKLX07Ci0KLWNsYXNzIFdYRExM
SU1QRVhQX1dFQktJVCBXZWJWaWV3Q29uZmlybUV2ZW50IDogcHVibGljIFdlYlZpZXdBbGVydEV2
ZW50Ci17Ci0jaWZuZGVmIFNXSUcKLSAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlld0Nv
bmZpcm1FdmVudCkKLSNlbmRpZgotCi1wdWJsaWM6ICAgCi0gICAgaW50IEdldFJldHVybkNvZGUo
KSBjb25zdCB7IHJldHVybiBtX3JldHVybkNvZGU7IH0KLSAgICB2b2lkIFNldFJldHVybkNvZGUo
aW50IGNvZGUpIHsgbV9yZXR1cm5Db2RlID0gY29kZTsgfQotCi0gICAgV2ViVmlld0NvbmZpcm1F
dmVudCh3eFdpbmRvdyogd2luID0gMCk7Ci0gICAgd3hFdmVudCAqQ2xvbmUoKSBjb25zdCB7IHJl
dHVybiBuZXcgV2ViVmlld0NvbmZpcm1FdmVudCgqdGhpcyk7IH0KLQotcHJpdmF0ZToKLSAgICBp
bnQgbV9yZXR1cm5Db2RlOwotfTsKLQotY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIFdlYlZpZXdQ
cm9tcHRFdmVudCA6IHB1YmxpYyBXZWJWaWV3Q29uZmlybUV2ZW50Ci17Ci0jaWZuZGVmIFNXSUcK
LSAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlld1Byb21wdEV2ZW50KQotI2VuZGlmCi0K
LXB1YmxpYzogICAKLSAgICB3eFN0cmluZyBHZXRSZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2U7IH0KLSAgICB2b2lkIFNldFJlc3BvbnNlKGNvbnN0IHd4U3RyaW5nJiByZXNwb25z
ZSkgeyBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7IH0KLQotICAgIFdlYlZpZXdQcm9tcHRFdmVudCh3
eFdpbmRvdyogd2luID0gMCk7Ci0gICAgd3hFdmVudCAqQ2xvbmUoKSBjb25zdCB7IHJldHVybiBu
ZXcgV2ViVmlld1Byb21wdEV2ZW50KCp0aGlzKTsgfQotCi1wcml2YXRlOgotICAgIHd4U3RyaW5n
IG1fcmVzcG9uc2U7Ci19OwotCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld1JlY2Vp
dmVkVGl0bGVFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudAotewotI2lmbmRlZiBTV0lHCi0g
ICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQpCi0jZW5k
aWYKLQotcHVibGljOgotICAgIHd4U3RyaW5nIEdldFRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90
aXRsZTsgfQotICAgIHZvaWQgU2V0VGl0bGUoY29uc3Qgd3hTdHJpbmcmIHRpdGxlKSB7IG1fdGl0
bGUgPSB0aXRsZTsgfQotCi0gICAgV2ViRnJhbWUqIEdldEZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZTsgfQotICAgIHZvaWQgU2V0RnJhbWUoV2ViRnJhbWUqIGZyYW1lKSB7IG1fZnJhbWUg
PSBmcmFtZTsgfQotCi0gICAgV2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCh3eFdpbmRvdyogd2lu
ID0gMCk7Ci0gICAgd3hFdmVudCAqQ2xvbmUoKSBjb25zdCB7IHJldHVybiBuZXcgV2ViVmlld1Jl
Y2VpdmVkVGl0bGVFdmVudCgqdGhpcyk7IH0KLQotcHJpdmF0ZToKLSAgICB3eFN0cmluZyBtX3Rp
dGxlOwotICAgIFdlYkZyYW1lKiBtX2ZyYW1lOwotfTsKLQotY2xhc3MgV1hETExJTVBFWFBfV0VC
S0lUIFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnQgOiBwdWJsaWMgd3hDb21tYW5kRXZl
bnQKLXsKLSNpZm5kZWYgU1dJRwotICAgIERFQ0xBUkVfRFlOQU1JQ19DTEFTUyhXZWJWaWV3V2lu
ZG93T2JqZWN0Q2xlYXJlZEV2ZW50KQotI2VuZGlmCi0KLXB1YmxpYzoKLSAgICBKU0dsb2JhbENv
bnRleHRSZWYgR2V0SlNDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9qc0NvbnRleHQ7IH0KLSAg
ICB2b2lkIFNldEpTQ29udGV4dChKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCkgeyBtX2pzQ29u
dGV4dCA9IGNvbnRleHQ7IH0KLSAgICAKLSAgICBKU09iamVjdFJlZiBHZXRXaW5kb3dPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBtX3dpbmRvd09iamVjdDsgfQotICAgIHZvaWQgU2V0V2luZG93T2Jq
ZWN0KEpTT2JqZWN0UmVmIG9iamVjdCkgeyBtX3dpbmRvd09iamVjdCA9IG9iamVjdDsgfQotCi0g
ICAgV2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRFdmVudCh3eFdpbmRvdyogd2luID0gMCk7Ci0g
ICAgd3hFdmVudCAqQ2xvbmUoKSBjb25zdCB7IHJldHVybiBuZXcgV2ViVmlld1dpbmRvd09iamVj
dENsZWFyZWRFdmVudCgqdGhpcyk7IH0KLQotcHJpdmF0ZToKLSAgICBKU0dsb2JhbENvbnRleHRS
ZWYgbV9qc0NvbnRleHQ7Ci0gICAgSlNPYmplY3RSZWYgbV93aW5kb3dPYmplY3Q7Ci19OwotCi1j
bGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50IDogcHVi
bGljIHd4Q29tbWFuZEV2ZW50IHsKLSNpZm5kZWYgU1dJRwotICAgIERFQ0xBUkVfRFlOQU1JQ19D
TEFTUyhXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQpCi0jZW5kaWYKLQotcHVibGljOgotICAg
IFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudCh3eFdpbmRvdyogd2luID0gMCk7Ci0gICAgd3hF
dmVudCAqQ2xvbmUoKSBjb25zdCB7IHJldHVybiBuZXcgV2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2
ZW50KCp0aGlzKTsgfQotfTsKLQotY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIFdlYlZpZXdTZWxl
Y3Rpb25DaGFuZ2VkRXZlbnQgOiBwdWJsaWMgd3hDb21tYW5kRXZlbnQgewotI2lmbmRlZiBTV0lH
Ci0gICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQp
Ci0jZW5kaWYKLQotcHVibGljOgotICAgIFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQod3hX
aW5kb3cqIHdpbiA9IDApOwotICAgIHd4RXZlbnQgKkNsb25lKCkgY29uc3QgeyByZXR1cm4gbmV3
IFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKnRoaXMpOyB9Ci19OwotCi1jbGFzcyBXWERM
TElNUEVYUF9XRUJLSVQgV2ViVmlld1ByaW50RnJhbWVFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRF
dmVudCB7Ci0jaWZuZGVmIFNXSUcKLSAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlld1By
aW50RnJhbWVFdmVudCkKLSNlbmRpZgotICAgIAotcHVibGljOgotICAgIFdlYlZpZXdQcmludEZy
YW1lRXZlbnQod3hXaW5kb3cqIHdpbiA9IDApOwotICAgIHd4RXZlbnQgKkNsb25lKCkgY29uc3Qg
eyByZXR1cm4gbmV3IFdlYlZpZXdQcmludEZyYW1lRXZlbnQoKnRoaXMpOyB9Ci0gICAgCi0gICAg
V2ViRnJhbWUqIEdldFdlYkZyYW1lKCkgeyByZXR1cm4gbV93ZWJGcmFtZTsgfQotICAgIHZvaWQg
U2V0V2ViRnJhbWUoV2ViRnJhbWUqIGZyYW1lKSB7IG1fd2ViRnJhbWUgPSBmcmFtZTsgfQotcHJp
dmF0ZToKLSAgICBXZWJGcmFtZSogbV93ZWJGcmFtZTsKLX07Ci0KLXR5cGVkZWYgdm9pZCAod3hF
dnRIYW5kbGVyOjoqV2ViVmlld0xvYWRFdmVudEZ1bmN0aW9uKShXZWJWaWV3TG9hZEV2ZW50Jik7
Ci10eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6KldlYlZpZXdCZWZvcmVMb2FkRXZlbnRGdW5j
dGlvbikoV2ViVmlld0JlZm9yZUxvYWRFdmVudCYpOwotdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRs
ZXI6OipXZWJWaWV3TmV3V2luZG93RXZlbnRGdW5jdGlvbikoV2ViVmlld05ld1dpbmRvd0V2ZW50
Jik7Ci10eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6KldlYlZpZXdSaWdodENsaWNrRXZlbnRG
dW5jdGlvbikoV2ViVmlld1JpZ2h0Q2xpY2tFdmVudCYpOwotdHlwZWRlZiB2b2lkICh3eEV2dEhh
bmRsZXI6OipXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudEZ1bmN0aW9uKShXZWJWaWV3Q29uc29s
ZU1lc3NhZ2VFdmVudCYpOwotdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6OipXZWJWaWV3QWxl
cnRFdmVudEZ1bmN0aW9uKShXZWJWaWV3QWxlcnRFdmVudCYpOwotdHlwZWRlZiB2b2lkICh3eEV2
dEhhbmRsZXI6OipXZWJWaWV3Q29uZmlybUV2ZW50RnVuY3Rpb24pKFdlYlZpZXdDb25maXJtRXZl
bnQmKTsKLXR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqV2ViVmlld1Byb21wdEV2ZW50RnVu
Y3Rpb24pKFdlYlZpZXdQcm9tcHRFdmVudCYpOwotdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6
OipXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50RnVuY3Rpb24pKFdlYlZpZXdSZWNlaXZlZFRpdGxl
RXZlbnQmKTsKLXR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqV2ViVmlld1dpbmRvd09iamVj
dENsZWFyZWRGdW5jdGlvbikoV2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRFdmVudCYpOwotdHlw
ZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6OipXZWJWaWV3Q29udGVudHNDaGFuZ2VkRnVuY3Rpb24p
KFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudCYpOwotdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRs
ZXI6OipXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEZ1bmN0aW9uKShXZWJWaWV3U2VsZWN0aW9uQ2hh
bmdlZEV2ZW50Jik7Ci10eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6KldlYlZpZXdQcmludEZy
YW1lRnVuY3Rpb24pKFdlYlZpZXdQcmludEZyYW1lRXZlbnQmKTsKLQotI2RlZmluZSBXZWJWaWV3
TG9hZEV2ZW50SGFuZGxlcihmdW5jKSBcCi0gICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hF
dmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KFdlYlZpZXdMb2FkRXZlbnRGdW5jdGlvbiwg
JmZ1bmMpCi0jZGVmaW5lIFdlYlZpZXdCZWZvcmVMb2FkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAg
ICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZl
bnQoV2ViVmlld0JlZm9yZUxvYWRFdmVudEZ1bmN0aW9uLCAmZnVuYykKLSNkZWZpbmUgV2ViVmll
d05ld1dpbmRvd0V2ZW50SGFuZGxlcihmdW5jKSBcCi0gICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlv
bikod3hFdmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KFdlYlZpZXdOZXdXaW5kb3dFdmVu
dEZ1bmN0aW9uLCAmZnVuYykKLSNkZWZpbmUgV2ViVmlld1JpZ2h0Q2xpY2tFdmVudEhhbmRsZXIo
ZnVuYykgXAotICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlvbil3eFN0
YXRpY0Nhc3RFdmVudChXZWJWaWV3UmlnaHRDbGlja0V2ZW50RnVuY3Rpb24sICZmdW5jKQotI2Rl
ZmluZSBXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudEhhbmRsZXIoZnVuYykgXAotICAgICh3eE9i
amVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudChXZWJW
aWV3Q29uc29sZU1lc3NhZ2VFdmVudEZ1bmN0aW9uLCAmZnVuYykKLSNkZWZpbmUgV2ViVmlld0Fs
ZXJ0RXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2
ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQoV2ViVmlld0FsZXJ0RXZlbnRGdW5jdGlvbiwg
JmZ1bmMpCi0jZGVmaW5lIFdlYlZpZXdDb25maXJtRXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAgICAo
d3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQo
V2ViVmlld0NvbmZpcm1FdmVudEZ1bmN0aW9uLCAmZnVuYykKLSNkZWZpbmUgV2ViVmlld1Byb21w
dEV2ZW50SGFuZGxlcihmdW5jKSBcCi0gICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVu
dEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KFdlYlZpZXdQcm9tcHRFdmVudEZ1bmN0aW9uLCAm
ZnVuYykKLSNkZWZpbmUgV2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudEhhbmRsZXIoZnVuYykgXAot
ICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RF
dmVudChXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50RnVuY3Rpb24sICZmdW5jKQotI2RlZmluZSBX
ZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50SGFuZGxlcihmdW5jKSBcCi0gICAgKHd4T2Jq
ZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KFdlYlZp
ZXdXaW5kb3dPYmplY3RDbGVhcmVkRnVuY3Rpb24sICZmdW5jKQotI2RlZmluZSBXZWJWaWV3Q29u
dGVudHNDaGFuZ2VkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAgICAod3hPYmplY3RFdmVudEZ1bmN0
aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQoV2ViVmlld0NvbnRlbnRzQ2hh
bmdlZEV2ZW50RnVuY3Rpb24sICZmdW5jKQotI2RlZmluZSBXZWJWaWV3U2VsZWN0aW9uQ2hhbmdl
ZEV2ZW50SGFuZGxlcihmdW5jKSBcCi0gICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVu
dEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnRG
dW5jdGlvbiwgJmZ1bmMpCi0jZGVmaW5lIFdlYlZpZXdQcmludEZyYW1lRXZlbnRIYW5kbGVyKGZ1
bmMpIFwKLSAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0
aWNDYXN0RXZlbnQoV2ViVmlld1ByaW50RnJhbWVFdmVudEZ1bmN0aW9uLCAmZnVuYykKLQotI2lm
bmRlZiBTV0lHCi1CRUdJTl9ERUNMQVJFX0VWRU5UX1RZUEVTKCkKLSAgICBERUNMQVJFX0VYUE9S
VEVEX0VWRU5UX1RZUEUoV1hETExJTVBFWFBfV0VCS0lULCB3eEVWVF9XRUJWSUVXX0JFRk9SRV9M
T0FELCB3eElEX0FOWSkKLSAgICBERUNMQVJFX0VYUE9SVEVEX0VWRU5UX1RZUEUoV1hETExJTVBF
WFBfV0VCS0lULCB3eEVWVF9XRUJWSUVXX0xPQUQsIHd4SURfQU5ZKQotICAgIERFQ0xBUkVfRVhQ
T1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4RVZUX1dFQlZJRVdfTkVXX1dJ
TkRPVywgd3hJRF9BTlkpCi0gICAgREVDTEFSRV9FWFBPUlRFRF9FVkVOVF9UWVBFKFdYRExMSU1Q
RVhQX1dFQktJVCwgd3hFVlRfV0VCVklFV19SSUdIVF9DTElDSywgd3hJRF9BTlkpCi0gICAgREVD
TEFSRV9FWFBPUlRFRF9FVkVOVF9UWVBFKFdYRExMSU1QRVhQX1dFQktJVCwgd3hFVlRfV0VCVklF
V19DT05TT0xFX01FU1NBR0UsIHd4SURfQU5ZKQotICAgIERFQ0xBUkVfRVhQT1JURURfRVZFTlRf
VFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4RVZUX1dFQlZJRVdfSlNfQUxFUlQsIHd4SURfQU5Z
KQotICAgIERFQ0xBUkVfRVhQT1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4
RVZUX1dFQlZJRVdfSlNfQ09ORklSTSwgd3hJRF9BTlkpCi0gICAgREVDTEFSRV9FWFBPUlRFRF9F
VkVOVF9UWVBFKFdYRExMSU1QRVhQX1dFQktJVCwgd3hFVlRfV0VCVklFV19KU19QUk9NUFQsIHd4
SURfQU5ZKQotICAgIERFQ0xBUkVfRVhQT1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9XRUJL
SVQsIHd4RVZUX1dFQlZJRVdfUkVDRUlWRURfVElUTEUsIHd4SURfQU5ZKQotICAgIERFQ0xBUkVf
RVhQT1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4RVZUX1dFQlZJRVdfV0lO
RE9XX09CSkVDVF9DTEVBUkVELCB3eElEX0FOWSkKLSAgICBERUNMQVJFX0VYUE9SVEVEX0VWRU5U
X1RZUEUoV1hETExJTVBFWFBfV0VCS0lULCB3eEVWVF9XRUJWSUVXX0NPTlRFTlRTX0NIQU5HRUQs
IHd4SURfQU5ZKQotICAgIERFQ0xBUkVfRVhQT1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9X
RUJLSVQsIHd4RVZUX1dFQlZJRVdfU0VMRUNUSU9OX0NIQU5HRUQsIHd4SURfQU5ZKQotICAgIERF
Q0xBUkVfRVhQT1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4RVZUX1dFQlZJ
RVdfUFJJTlRfRlJBTUUsIHd4SURfQU5ZKQotRU5EX0RFQ0xBUkVfRVZFTlRfVFlQRVMoKQotI2Vu
ZGlmCi0KLSNkZWZpbmUgRVZUX1dFQlZJRVdfTE9BRCh3aW5pZCwgZnVuYykgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgIERFQ0xBUkVfRVZFTlRfVEFCTEVfRU5UUlkoIHd4RVZU
X1dFQlZJRVdfTE9BRCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmlkLCBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hJRF9BTlksIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSAgIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViVmlld0xvYWRFdmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+KDApKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKLSNkZWZpbmUgRVZUX1dFQlZJRVdfQkVGT1JFX0xPQUQod2lu
aWQsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBERUNMQVJFX0VW
RU5UX1RBQkxFX0VOVFJZKCB3eEVWVF9XRUJWSUVXX0JFRk9SRV9MT0FELCBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2luaWQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
eElEX0FOWSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVu
Y3Rpb24pICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJWaWV3QmVmb3JlTG9h
ZEV2ZW50RnVuY3Rpb24pICYgZnVuYywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHd4T2JqZWN0Kj4oMCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
I2RlZmluZSBFVlRfV0VCVklFV19ORVdfV0lORE9XKHdpbmlkLCBmdW5jKSAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgREVDTEFSRV9FVkVOVF9UQUJMRV9FTlRSWSggd3hFVlRf
V0VCVklFV19ORVdfV0lORE9XLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luaWQs
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwgXAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJWaWV3TmV3V2luZG93RXZlbnRGdW5jdGlvbikgJiBmdW5jLCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPigwKSks
Ci0KLSNkZWZpbmUgRVZUX1dFQlZJRVdfUklHSFRfQ0xJQ0sod2luaWQsIGZ1bmMpICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBERUNMQVJFX0VWRU5UX1RBQkxFX0VOVFJZKCB3
eEVWVF9XRUJWSUVXX1JJR0hUX0NMSUNLLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2luaWQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChXZWJWaWV3UmlnaHRDbGlja0V2ZW50RnVuY3Rpb24pICYg
ZnVuYywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHd4T2JqZWN0
Kj4oMCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2RlZmluZSBFVlRfV0VCVklF
V19DT05TT0xFX01FU1NBR0Uod2luaWQsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgICBERUNMQVJFX0VWRU5UX1RBQkxFX0VOVFJZKCB3eEVWVF9XRUJWSUVXX0NPTlNP
TEVfTUVTU0FHRSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmlkLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3hJRF9BTlksIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSAgIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoV2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPigwKSksCi0K
LSNkZWZpbmUgRVZUX1dFQlZJRVdfSlNfQUxFUlQod2luaWQsIGZ1bmMpICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICBERUNMQVJFX0VWRU5UX1RBQkxFX0VOVFJZKCB3eEVWVF9X
RUJWSUVXX0pTX0FMRVJULCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luaWQsIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJWaWV3QWxlcnRFdmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+KDApKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSNkZWZpbmUgRVZUX1dFQlZJRVdfSlNfQ09ORklSTSh3
aW5pZCwgZnVuYykgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIERFQ0xBUkVf
RVZFTlRfVEFCTEVfRU5UUlkoIHd4RVZUX1dFQlZJRVdfSlNfQ09ORklSTSwgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpbmlkLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3hJRF9BTlksIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3hPYmplY3RFdmVudEZ1
bmN0aW9uKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViVmlld0NvbmZpcm1F
dmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx3eE9iamVjdCo+KDApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSNk
ZWZpbmUgRVZUX1dFQlZJRVdfSlNfUFJPTVBUKHdpbmlkLCBmdW5jKSAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgREVDTEFSRV9FVkVOVF9UQUJMRV9FTlRSWSggd3hFVlRfV0VC
VklFV19KU19QUk9NUFQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5pZCwgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4SURfQU5ZLCBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikgICBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYlZpZXdQcm9tcHRFdmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+KDApKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSNkZWZpbmUgRVZUX1dFQlZJRVdfUkVDRUlWRURfVElU
TEUod2luaWQsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBERUNM
QVJFX0VWRU5UX1RBQkxFX0VOVFJZKCB3eEVWVF9XRUJWSUVXX1JFQ0VJVkVEX1RJVExFLCBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luaWQsIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3eElEX0FOWSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eE9iamVj
dEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJWaWV3
UmVjZWl2ZWRUaXRsZUV2ZW50RnVuY3Rpb24pICYgZnVuYywgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHd4T2JqZWN0Kj4oMCkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAotI2RlZmluZSBFVlRfV0VCVklFV19XSU5ET1dfT0JKRUNUX0NMRUFSRUQod2lu
aWQsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBERUNMQVJFX0VW
RU5UX1RBQkxFX0VOVFJZKCB3eEVWVF9XRUJWSUVXX1dJTkRPV19PQkpFQ1RfQ0xFQVJFRCwgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmlkLCBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3hJRF9BTlksIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3hPYmpl
Y3RFdmVudEZ1bmN0aW9uKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViVmll
d1dpbmRvd09iamVjdENsZWFyZWRGdW5jdGlvbikgJiBmdW5jLCBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPigwKSksCi0KLSNkZWZpbmUgRVZUX1dF
QlZJRVdfQ09OVEVOVFNfQ0hBTkdFRCh3aW5pZCwgZnVuYykgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgIERFQ0xBUkVfRVZFTlRfVEFCTEVfRU5UUlkod3hFVlRfV0VCVklFV19D
T05URU5UU19DSEFOR0VELCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luaWQsIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnRGdW5jdGlvbikgJiBmdW5j
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPigw
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0jZGVmaW5lIEVWVF9XRUJWSUVXX1NF
TEVDVElPTl9DSEFOR0VEKHdpbmlkLCBmdW5jKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICAgICAgREVDTEFSRV9FVkVOVF9UQUJMRV9FTlRSWSh3eEVWVF9XRUJWSUVXX1NFTEVDVElP
Tl9DSEFOR0VELCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luaWQsIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwgXAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50RnVuY3Rpb24pICYgZnVuYywgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHd4T2JqZWN0Kj4oMCkpLAot
Ci0jZGVmaW5lIEVWVF9XRUJWSUVXX1BSSU5UX0ZSQU1FKHdpbmlkLCBmdW5jKSAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICAgICAgREVDTEFSRV9FVkVOVF9UQUJMRV9FTlRSWSh3eEVW
VF9XRUJWSUVXX1BSSU5UX0ZSQU1FLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lu
aWQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChXZWJWaWV3UHJpbnRGcmFtZUV2ZW50RnVuY3Rpb24pICYgZnVu
YywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHd4T2JqZWN0Kj4o
MCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBpZm5kZWYgV2ViVmlld19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3d4L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXdQcml2YXRlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNzRkYjdkNzI0MTVhYTBlNmU5NjA3OTJi
NGI5MzI0NGViNTk2MWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJWaWV3UHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBLZXZpbiBPbGxpdmllci4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSNpZm5kZWYgV1hXRUJWSUVXUFJJVkFURV9ICi0jZGVm
aW5lIFdYV0VCVklFV1BSSVZBVEVfSAotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
VW5kb1N0ZXAuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAid3RmL0RlcXVlLmgiCi0j
aW5jbHVkZSAid3RmL1JlZlB0ci5oIgotCi0jaW5jbHVkZSA8d3gvdGltZXIuaD4KLQotY2xhc3Mg
V2ViVmlld1ByaXZhdGUgCi17Ci1wdWJsaWM6Ci0gICAgV2ViVmlld1ByaXZhdGUoKSA6Ci0gICAg
ICAgIHBhZ2UoMCkKLSAgICB7fQotICAgIAotICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2U7Ci0KLSAg
ICB3eFRpbWVyIHRyaXBsZUNsaWNrVGltZXI7Ci0gICAgd3hQb2ludCB0cmlwbGVDbGlja1BvczsK
LSAgICAKLSAgICBXVEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiA+IHVu
ZG9TdGFjazsKLSAgICBXVEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiA+
IHJlZG9TdGFjazsKLX07Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9i
aW5kaW5ncy9weXRob24vc2FtcGxlcy9zaW1wbGUucHkgYi9Tb3VyY2UvV2ViS2l0L3d4L2JpbmRp
bmdzL3B5dGhvbi9zYW1wbGVzL3NpbXBsZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzY1MzcyMmRjZjQ1YmE1Mzk3ZjkxMWNkMmQyYmEzMDM0MWNkOTBlNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L2JpbmRp
bmdzL3B5dGhvbi9zYW1wbGVzL3NpbXBsZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCww
IEBACi0jIS91c3IvYmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAoQykgMjAwNyBLZXZpbiBPbGxp
dmllciAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
IyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0j
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gCi0KLWltcG9ydCB3eAotaW1wb3J0IHd4LndlYnZpZXcKLSAgICAgICAgCi1jbGFz
cyBUZXN0UGFuZWwod3guUGFuZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGxv
ZywgZnJhbWU9Tm9uZSk6Ci0gICAgICAgIHd4LlBhbmVsLl9faW5pdF9fKAotICAgICAgICAgICAg
c2VsZiwgcGFyZW50LCAtMSwKLSAgICAgICAgICAgIHN0eWxlPXd4LlRBQl9UUkFWRVJTQUx8d3gu
Q0xJUF9DSElMRFJFTnx3eC5OT19GVUxMX1JFUEFJTlRfT05fUkVTSVpFCi0gICAgICAgICAgICAp
Ci0gICAgICAgICAgICAKLSAgICAgICAgc2VsZi5sb2cgPSBsb2cKLSAgICAgICAgc2VsZi5jdXJy
ZW50ID0gImh0dHA6Ly93eFB5dGhvbi5vcmcvIgotICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWUK
LQotICAgICAgICBpZiBmcmFtZToKLSAgICAgICAgICAgIHNlbGYudGl0bGVCYXNlID0gZnJhbWUu
R2V0VGl0bGUoKQotCi0gICAgICAgIHNpemVyID0gd3guQm94U2l6ZXIod3guVkVSVElDQUwpCi0g
ICAgICAgIGJ0blNpemVyID0gd3guQm94U2l6ZXIod3guSE9SSVpPTlRBTCkKLQotICAgICAgICBz
ZWxmLndlYnZpZXcgPSB3eC53ZWJ2aWV3LldlYlZpZXcoc2VsZiwgc2VsZi5jdXJyZW50LCAtMSkK
LQotCi0gICAgICAgIGJ0biA9IHd4LkJ1dHRvbihzZWxmLCAtMSwgIk9wZW4iLCBzdHlsZT13eC5C
VV9FWEFDVEZJVCkKLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuT25PcGVu
QnV0dG9uLCBidG4pCi0gICAgICAgIGJ0blNpemVyLkFkZChidG4sIDAsIHd4LkVYUEFORHx3eC5B
TEwsIDIpCi0KLSAgICAgICAgYnRuID0gd3guQnV0dG9uKHNlbGYsIC0xLCAiPC0tIiwgc3R5bGU9
d3guQlVfRVhBQ1RGSVQpCi0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLk9u
UHJldlBhZ2VCdXR0b24sIGJ0bikKLSAgICAgICAgYnRuU2l6ZXIuQWRkKGJ0biwgMCwgd3guRVhQ
QU5EfHd4LkFMTCwgMikKLQotICAgICAgICBidG4gPSB3eC5CdXR0b24oc2VsZiwgLTEsICItLT4i
LCBzdHlsZT13eC5CVV9FWEFDVEZJVCkKLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04s
IHNlbGYuT25OZXh0UGFnZUJ1dHRvbiwgYnRuKQotICAgICAgICBidG5TaXplci5BZGQoYnRuLCAw
LCB3eC5FWFBBTkR8d3guQUxMLCAyKQotCi0gICAgICAgIGJ0biA9IHd4LkJ1dHRvbihzZWxmLCAt
MSwgIlN0b3AiLCBzdHlsZT13eC5CVV9FWEFDVEZJVCkKLSAgICAgICAgc2VsZi5CaW5kKHd4LkVW
VF9CVVRUT04sIHNlbGYuT25TdG9wQnV0dG9uLCBidG4pCi0gICAgICAgIGJ0blNpemVyLkFkZChi
dG4sIDAsIHd4LkVYUEFORHx3eC5BTEwsIDIpCi0KLSAgICAgICAgYnRuID0gd3guQnV0dG9uKHNl
bGYsIC0xLCAiUmVmcmVzaCIsIHN0eWxlPXd4LkJVX0VYQUNURklUKQotICAgICAgICBzZWxmLkJp
bmQod3guRVZUX0JVVFRPTiwgc2VsZi5PblJlZnJlc2hQYWdlQnV0dG9uLCBidG4pCi0gICAgICAg
IGJ0blNpemVyLkFkZChidG4sIDAsIHd4LkVYUEFORHx3eC5BTEwsIDIpCi0KLSAgICAgICAgdHh0
ID0gd3guU3RhdGljVGV4dChzZWxmLCAtMSwgIkxvY2F0aW9uOiIpCi0gICAgICAgIGJ0blNpemVy
LkFkZCh0eHQsIDAsIHd4LkNFTlRFUnx3eC5BTEwsIDIpCi0KLSAgICAgICAgc2VsZi5sb2NhdGlv
biA9IHd4LkNvbWJvQm94KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIC0xLCAi
Iiwgc3R5bGU9d3guQ0JfRFJPUERPV058d3guUFJPQ0VTU19FTlRFUgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgCi0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQ09NQk9C
T1gsIHNlbGYuT25Mb2NhdGlvblNlbGVjdCwgc2VsZi5sb2NhdGlvbikKLSAgICAgICAgc2VsZi5s
b2NhdGlvbi5CaW5kKHd4LkVWVF9LRVlfVVAsIHNlbGYuT25Mb2NhdGlvbktleSkKLSAgICAgICAg
c2VsZi5sb2NhdGlvbi5CaW5kKHd4LkVWVF9DSEFSLCBzZWxmLklnbm9yZVJldHVybikKLSAgICAg
ICAgYnRuU2l6ZXIuQWRkKHNlbGYubG9jYXRpb24sIDEsIHd4LkVYUEFORHx3eC5BTEwsIDIpCi0K
LSAgICAgICAgc2l6ZXIuQWRkKGJ0blNpemVyLCAwLCB3eC5FWFBBTkQpCi0gICAgICAgIHNpemVy
LkFkZChzZWxmLndlYnZpZXcsIDEsIHd4LkVYUEFORCkKLQotICAgICAgICBzZWxmLmxvY2F0aW9u
LkFwcGVuZChzZWxmLmN1cnJlbnQpCi0gICAgICAgIAotICAgICAgICBzZWxmLndlYnZpZXcuQmlu
ZCh3eC53ZWJ2aWV3LkVWVF9XRUJWSUVXX0xPQUQsIHNlbGYuT25TdGF0ZUNoYW5nZWQpCi0KLSAg
ICAgICAgc2VsZi5TZXRTaXplcihzaXplcikKLQotICAgIGRlZiBPblN0YXRlQ2hhbmdlZChzZWxm
LCBldmVudCk6Ci0gICAgICAgIHN0YXR1c2JhciA9IHNlbGYuR2V0UGFyZW50KCkuR2V0U3RhdHVz
QmFyKCkgCi0gICAgICAgIGlmIHN0YXR1c2JhcjoKLSAgICAgICAgICAgIGlmIGV2ZW50LkdldFN0
YXRlKCkgPT0gd3gud2Vidmlldy5XRUJWSUVXX0xPQURfTkVHT1RJQVRJTkc6Ci0gICAgICAgICAg
ICAgICAgc3RhdHVzYmFyLlNldFN0YXR1c1RleHQoIkNvbnRhY3RpbmcgIiArIGV2ZW50LkdldFVS
TCgpKQotICAgICAgICAgICAgZWxpZiBldmVudC5HZXRTdGF0ZSgpID09IHd4LndlYnZpZXcuV0VC
VklFV19MT0FEX1RSQU5TRkVSUklORzoKLSAgICAgICAgICAgICAgICBzdGF0dXNiYXIuU2V0U3Rh
dHVzVGV4dCgiTG9hZGluZyAiICsgZXZlbnQuR2V0VVJMKCkpCi0gICAgICAgICAgICBlbGlmIGV2
ZW50LkdldFN0YXRlKCkgPT0gd3gud2Vidmlldy5XRUJWSUVXX0xPQURfRE9DX0NPTVBMRVRFRDoK
LSAgICAgICAgICAgICAgICBzdGF0dXNiYXIuU2V0U3RhdHVzVGV4dCgiIikKLSAgICAgICAgICAg
ICAgICBzZWxmLmxvY2F0aW9uLlNldFZhbHVlKGV2ZW50LkdldFVSTCgpKQotICAgICAgICAgICAg
ICAgIHNlbGYuR2V0UGFyZW50KCkuU2V0VGl0bGUoInd4V2ViVmlldyAtICIgKyBzZWxmLndlYnZp
ZXcuR2V0UGFnZVRpdGxlKCkpCi0KLSAgICBkZWYgT25Mb2NhdGlvbktleShzZWxmLCBldnQpOgot
ICAgICAgICBpZiBldnQuR2V0S2V5Q29kZSgpID09IHd4LldYS19SRVRVUk46Ci0gICAgICAgICAg
ICBVUkwgPSBzZWxmLmxvY2F0aW9uLkdldFZhbHVlKCkKLSAgICAgICAgICAgIHNlbGYubG9jYXRp
b24uQXBwZW5kKFVSTCkKLSAgICAgICAgICAgIHNlbGYud2Vidmlldy5Mb2FkVVJMKFVSTCkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGV2dC5Ta2lwKCkKLSAgICAgICAgICAgIAotICAgIGRl
ZiBJZ25vcmVSZXR1cm4oc2VsZiwgZXZ0KToKLSAgICAgICAgaWYgZXZ0LkdldEtleUNvZGUoKSAh
PSB3eC5XWEtfUkVUVVJOOgotICAgICAgICAgICAgZXZ0LlNraXAoKQotICAgICAgICAgICAgCi0g
ICAgZGVmIE9uTG9jYXRpb25TZWxlY3Qoc2VsZiwgZXZ0KToKLSAgICAgICAgdXJsID0gc2VsZi5s
b2NhdGlvbi5HZXRTdHJpbmdTZWxlY3Rpb24oKQotICAgICAgICBzZWxmLndlYnZpZXcuTG9hZFVS
TCh1cmwpCi0KLSAgICBkZWYgT25PcGVuQnV0dG9uKHNlbGYsIGV2ZW50KToKLSAgICAgICAgZGxn
ID0gd3guVGV4dEVudHJ5RGlhbG9nKHNlbGYsICJPcGVuIExvY2F0aW9uIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkVudGVyIGEgZnVsbCBVUkwgb3IgbG9jYWwgcGF0aCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudCwgd3guT0t8d3guQ0FO
Q0VMKQotICAgICAgICBkbGcuQ2VudHJlT25QYXJlbnQoKQotCi0gICAgICAgIGlmIGRsZy5TaG93
TW9kYWwoKSA9PSB3eC5JRF9PSzoKLSAgICAgICAgICAgIHNlbGYuY3VycmVudCA9IGRsZy5HZXRW
YWx1ZSgpCi0gICAgICAgICAgICBzZWxmLndlYnZpZXcuTG9hZFVSTChzZWxmLmN1cnJlbnQpCi0K
LSAgICAgICAgZGxnLkRlc3Ryb3koKQotCi0gICAgZGVmIE9uUHJldlBhZ2VCdXR0b24oc2VsZiwg
ZXZlbnQpOgotICAgICAgICBzZWxmLndlYnZpZXcuR29CYWNrKCkKLQotICAgIGRlZiBPbk5leHRQ
YWdlQnV0dG9uKHNlbGYsIGV2ZW50KToKLSAgICAgICAgc2VsZi53ZWJ2aWV3LkdvRm9yd2FyZCgp
Ci0KLSAgICBkZWYgT25TdG9wQnV0dG9uKHNlbGYsIGV2dCk6Ci0gICAgICAgIHNlbGYud2Vidmll
dy5TdG9wKCkKLQotICAgIGRlZiBPblJlZnJlc2hQYWdlQnV0dG9uKHNlbGYsIGV2dCk6Ci0gICAg
ICAgIHNlbGYud2Vidmlldy5SZWxvYWQoKQotICAgICAgICAKLQotY2xhc3Mgd2tGcmFtZSh3eC5G
cmFtZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICB3eC5GcmFtZS5fX2luaXRf
XyhzZWxmLCBOb25lLCAtMSwgIldlYktpdCBpbiB3eFB5dGhvbiEiKQotICAgICAgICAKLSAgICAg
ICAgc2VsZi5wYW5lbCA9IFRlc3RQYW5lbChzZWxmLCAtMSkKLSAgICAgICAgc2VsZi5wYW5lbC53
ZWJ2aWV3LkxvYWRVUkwoImh0dHA6Ly93d3cud3h3aWRnZXRzLm9yZy8iKQotICAgICAgICBzZWxm
LkNyZWF0ZVN0YXR1c0JhcigpCi0KLWNsYXNzIHdrQXBwKHd4LkFwcCk6Ci0gICAgZGVmIE9uSW5p
dChzZWxmKToKLSAgICAgICAgc2VsZi53ZWJGcmFtZSA9IHdrRnJhbWUoKQotICAgICAgICBzZWxm
LlNldFRvcFdpbmRvdyhzZWxmLndlYkZyYW1lKQotICAgICAgICBzZWxmLndlYkZyYW1lLlNob3co
KQotICAgIAotICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAKLWFwcCA9IHdrQXBwKHJlZGly
ZWN0PUZhbHNlKQotYXBwLk1haW5Mb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gv
YmluZGluZ3MvcHl0aG9uL3dlYnZpZXcuaSBiL1NvdXJjZS9XZWJLaXQvd3gvYmluZGluZ3MvcHl0
aG9uL3dlYnZpZXcuaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdlNTdhYmE0NTcw
ODRhZTZjMDk3N2UyNmM2NWYyM2YxNDBmZjZmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L2JpbmRpbmdzL3B5dGhvbi93ZWJ2
aWV3LmkKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNyBLZXZpbiBPbGxpdmllciAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSAKLSVt
b2R1bGUgd2VidmlldwotCi0lewotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAid3gv
d3hQeXRob24vd3hQeXRob24uaCIKLSNpbmNsdWRlICJ3eC93eFB5dGhvbi9weWNsYXNzZXMuaCIK
LSNpbmNsdWRlICJXZWJCcm93c2VyU2hlbGwuaCIKLSNpbmNsdWRlICJXZWJET01TZWxlY3Rpb24u
aCIKLSNpbmNsdWRlICJXZWJFZGl0LmgiCi0jaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRl
ICJXZWJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLQotI2luY2x1ZGUgIldlYkRP
TUF0dHIuaCIKLSNpbmNsdWRlICJXZWJET01DU1NTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVk
ZSAiV2ViRE9NRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJXZWJET01Eb2N1bWVudEZyYWdtZW50Lmgi
Ci0jaW5jbHVkZSAiV2ViRE9NRE9NU2VsZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViRE9NRWxlbWVu
dC5oIgotI2luY2x1ZGUgIldlYkRPTUV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJXZWJET01O
YW1lZE5vZGVNYXAuaCIKLSNpbmNsdWRlICJXZWJET01Ob2RlLmgiCi0jaW5jbHVkZSAiV2ViRE9N
Tm9kZUxpc3QuaCIKLSNpbmNsdWRlICJXZWJET01PYmplY3QuaCIKLSNpbmNsdWRlICJXZWJET01S
YW5nZS5oIgotI2luY2x1ZGUgIldlYkRPTVdlYktpdEFuaW1hdGlvbkxpc3QuaCIKLQotdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIGNvbnN0IHd4U3RyaW5nIHd4UHlXZWJWaWV3TmFt
ZVN0cihXZWJWaWV3TmFtZVN0cik7Ci0KLSNpZm5kZWYgX19XWE1TV19fCi1QeU9iamVjdCogY3Jl
YXRlRE9NTm9kZVN1YnR5cGUoV2ViRE9NTm9kZSogcHRyLCBib29sIHNldFRoaXNPd24sIGJvb2wg
aXNWYWx1ZU9iamVjdCkKLXsKLSAgICAvL3N0YXRpYyB3eFB5VHlwZUluZm9IYXNoTWFwKiB0eXBl
SW5mb0NhY2hlID0gTlVMTDsKLQotICAgIC8vaWYgKHR5cGVJbmZvQ2FjaGUgPT0gTlVMTCkKLSAg
ICAvLyAgICB0eXBlSW5mb0NhY2hlID0gbmV3IHd4UHlUeXBlSW5mb0hhc2hNYXA7Ci0KLSAgICBz
d2lnX3R5cGVfaW5mbyogc3dpZ1R5cGUgPSAwOyAvLygqdHlwZUluZm9DYWNoZSlbbmFtZV07Ci0g
ICAgY2hhciogbmFtZSA9IDA7Ci0gICAgaWYgKHB0cikgewotICAgICAgICAvLyBpdCB3YXNuJ3Qg
aW4gdGhlIGNhY2hlLCBzbyBsb29rIGl0IHVwIGZyb20gU1dJRwotICAgICAgICBzd2l0Y2ggKHB0
ci0+bm9kZVR5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBXZWJET01Ob2RlOjpXRUJET01fRUxF
TUVOVF9OT0RFOgotICAgICAgICAgICAgICAgIG5hbWUgPSAiV2ViRE9NRWxlbWVudCoiOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJET01Ob2RlOjpXRUJET01f
QVRUUklCVVRFX05PREU6Ci0gICAgICAgICAgICAgICAgbmFtZSA9ICJXZWJET01BdHRyKiI7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIG5hbWUgPSAiV2ViRE9NTm9kZSoiOwotICAgICAgICB9Ci0gICAgICAgIHN3aWdUeXBlID0g
U1dJR19UeXBlUXVlcnkobmFtZSk7Ci0gICAgICAgIGlmIChzd2lnVHlwZSkgewotICAgICAgICAg
ICAgaWYgKGlzVmFsdWVPYmplY3QpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU1dJR19QeXRo
b25fTmV3UG9pbnRlck9iaihuZXcgV2ViRE9NTm9kZSgqcHRyKSwgc3dpZ1R5cGUsIHNldFRoaXNP
d24pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gU1dJ
R19QeXRob25fTmV3UG9pbnRlck9iaihwdHIsIHN3aWdUeXBlLCBzZXRUaGlzT3duKTsKLSAgICAg
ICAgfQotICAgICAgICAvLyBpZiBpdCBzdGlsbCB3YXNuJ3QgZm91bmQsIHRyeSBsb29raW5nIGZv
ciBhIG1hcHBlZCBuYW1lCi0gICAgICAgIC8vaWYgKHN3aWdUeXBlKSB7Ci0gICAgICAgICAgICAv
LyBhbmQgYWRkIGl0IHRvIHRoZSBtYXAgaWYgZm91bmQKLSAgICAgICAgLy8gICAgKCp0eXBlSW5m
b0NhY2hlKVtjbGFzc05hbWVdID0gc3dpZ1R5cGU7Ci0gICAgICAgIC8vfQotICAgIH0KLSAgICAK
LSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgCi0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0K
LVdlYkRPTVN0cmluZyogY3JlYXRlV2ViRE9NU3RyaW5nKFB5T2JqZWN0KiBzb3VyY2UpCi17Ci0g
ICAgaWYgKCFQeVN0cmluZ19DaGVjayhzb3VyY2UpICYmICFQeVVuaWNvZGVfQ2hlY2soc291cmNl
KSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiU3RyaW5nIG9y
IFVuaWNvZGUgdHlwZSByZXF1aXJlZCIpOwotICAgICAgICByZXR1cm4gbmV3IFdlYkRPTVN0cmlu
ZygpOwotICAgIH0KLSAgICAKLSAgICBjaGFyKiB0bXBQdHI7Ci0gICAgUHlfc3NpemVfdCB0bXBT
aXplOwotICAgIAotICAgIGlmIChQeVN0cmluZ19DaGVjayhzb3VyY2UpKQotICAgICAgICBQeVN0
cmluZ19Bc1N0cmluZ0FuZFNpemUoc291cmNlLCAmdG1wUHRyLCAmdG1wU2l6ZSk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIFB5T2JqZWN0KiBzdHIgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHNvdXJj
ZSk7Ci0gICAgICAgIFB5U3RyaW5nX0FzU3RyaW5nQW5kU2l6ZShzdHIsICZ0bXBQdHIsICZ0bXBT
aXplKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgfQotICAgIAotICAgIFdlYkRPTVN0
cmluZyB0ZW1wID0gV2ViRE9NU3RyaW5nOjpmcm9tVVRGOCh0bXBQdHIpOwotICAgIAotICAgIHJl
dHVybiBuZXcgV2ViRE9NU3RyaW5nKHRlbXApOwotfQotCi0jZW5kaWYKLQotCi0KLSV9Ci0vLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0laW1wb3J0IGNvcmUuaQotJWltcG9ydCB3aW5kb3dzLmkKLQot
I2lmbmRlZiBfX1dYTVNXX18KLSV0eXBlbWFwKG91dCkgV2ViRE9NTm9kZSogICAgICAgICAgICAg
eyAkcmVzdWx0ID0gY3JlYXRlRE9NTm9kZVN1YnR5cGUoJDEsIChib29sKSRvd25lciwgMCk7IH0K
LSV0eXBlbWFwKG91dCkgV2ViRE9NRWxlbWVudCogICAgICAgICAgICAgeyAkcmVzdWx0ID0gY3Jl
YXRlRE9NTm9kZVN1YnR5cGUoJDEsIChib29sKSRvd25lciwgMCk7IH0KLSV0eXBlbWFwKG91dCkg
V2ViRE9NTm9kZSAgICAgICAgICAgICB7ICRyZXN1bHQgPSBjcmVhdGVET01Ob2RlU3VidHlwZSgm
JDEsIChib29sKSRvd25lciwgMSk7IH0KLSV0eXBlbWFwKG91dCkgV2ViRE9NRWxlbWVudCAgICAg
ICAgICAgICB7ICRyZXN1bHQgPSBjcmVhdGVET01Ob2RlU3VidHlwZSgmJDEsIChib29sKSRvd25l
ciwgMSk7IH0KLSV0eXBlbWFwKGluKSBXZWJET01TdHJpbmcmICAgICAgICAgICAgeyAkMSA9IGNy
ZWF0ZVdlYkRPTVN0cmluZygkaW5wdXQpOyB9Ci0ldHlwZW1hcChvdXQpIFdlYkRPTVN0cmluZyAg
ICAgICAgICAgeyAkcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZVVURjgoJDEudXRmOCgpLmRhdGEo
KSwgJDEudXRmOCgpLmxlbmd0aCgpLCBOVUxMKTsgfQotJXR5cGVtYXAob3V0KSBXZWJET01TdHJp
bmcmICAgICAgICAgICB7ICRyZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCgkMS51dGY4KCku
ZGF0YSgpLCAkMS51dGY4KCkubGVuZ3RoKCksIE5VTEwpOyB9Ci0jZW5kaWYKLQotTXVzdEhhdmVB
cHAoV2ViQnJvd3NlclNoZWxsKTsKLU11c3RIYXZlQXBwKFdlYkZyYW1lKTsKLU11c3RIYXZlQXBw
KFdlYlZpZXcpOwotCi0laW5jbHVkZSBXZWJLaXREZWZpbmVzLmgKLQotI2lmbmRlZiBfX1dYTVNX
X18KLSVpbmNsdWRlIFdlYkRPTU9iamVjdC5oCi0laW5jbHVkZSBXZWJET01Ob2RlLmgKLQotJWlu
Y2x1ZGUgV2ViRE9NQXR0ci5oCi0laW5jbHVkZSBXZWJET01ET01TZWxlY3Rpb24uaAotJWluY2x1
ZGUgV2ViRE9NRWxlbWVudC5oCi0laW5jbHVkZSBXZWJET01Ob2RlTGlzdC5oCi0laW5jbHVkZSBX
ZWJET01SYW5nZS5oCi0jZW5kaWYKLQotJWluY2x1ZGUgV2ViQnJvd3NlclNoZWxsLmgKLSVpbmNs
dWRlIFdlYkRPTVNlbGVjdGlvbi5oCi0laW5jbHVkZSBXZWJFZGl0LmgKLSVpbmNsdWRlIFdlYkZy
YW1lLmgKLSVpbmNsdWRlIFdlYlNldHRpbmdzLmgKLSVpbmNsdWRlIFdlYlZpZXcuaAotCi0lZXh0
ZW5kIFdlYktpdDo6V2ViRnJhbWUgewotICAgICVweXRob25jb2RlIHsKLSAgICAgICAgZGVmIF9f
ZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi50aGlzID09IG90aGVy
LnRoaXMKLSAgICB9Ci19Ci0KLSVjb25zdGFudCB3eEV2ZW50VHlwZSB3eEVWVF9XRUJWSUVXX0JF
Rk9SRV9MT0FEOwotJWNvbnN0YW50IHd4RXZlbnRUeXBlIHd4RVZUX1dFQlZJRVdfTE9BRDsKLSVj
b25zdGFudCB3eEV2ZW50VHlwZSB3eEVWVF9XRUJWSUVXX05FV19XSU5ET1c7Ci0lY29uc3RhbnQg
d3hFdmVudFR5cGUgd3hFVlRfV0VCVklFV19SSUdIVF9DTElDSzsKLSVjb25zdGFudCB3eEV2ZW50
VHlwZSB3eEVWVF9XRUJWSUVXX0NPTlNPTEVfTUVTU0FHRTsKLSVjb25zdGFudCB3eEV2ZW50VHlw
ZSB3eEVWVF9XRUJWSUVXX1JFQ0VJVkVEX1RJVExFOwotJWNvbnN0YW50IHd4RXZlbnRUeXBlIHd4
RVZUX1dFQlZJRVdfQ09OVEVOVFNfQ0hBTkdFRDsKLSVjb25zdGFudCB3eEV2ZW50VHlwZSB3eEVW
VF9XRUJWSUVXX1NFTEVDVElPTl9DSEFOR0VEOwotJWNvbnN0YW50IHd4RXZlbnRUeXBlIHd4RVZU
X1dFQlZJRVdfUFJJTlRfRlJBTUU7Ci0KLSVweXRob25jb2RlIHsKLUVWVF9XRUJWSUVXX0JFRk9S
RV9MT0FEID0gd3guUHlFdmVudEJpbmRlciggd3hFVlRfV0VCVklFV19CRUZPUkVfTE9BRCwgMSAp
Ci1FVlRfV0VCVklFV19MT0FEID0gd3guUHlFdmVudEJpbmRlciggd3hFVlRfV0VCVklFV19MT0FE
LCAxICkKLUVWVF9XRUJWSUVXX05FV19XSU5ET1cgPSB3eC5QeUV2ZW50QmluZGVyKCB3eEVWVF9X
RUJWSUVXX05FV19XSU5ET1csIDEgKQotRVZUX1dFQlZJRVdfUklHSFRfQ0xJQ0sgPSB3eC5QeUV2
ZW50QmluZGVyKCB3eEVWVF9XRUJWSUVXX1JJR0hUX0NMSUNLLCAxICkKLUVWVF9XRUJWSUVXX0NP
TlNPTEVfTUVTU0FHRSA9IHd4LlB5RXZlbnRCaW5kZXIoIHd4RVZUX1dFQlZJRVdfQ09OU09MRV9N
RVNTQUdFLCAxICkKLUVWVF9XRUJWSUVXX1JFQ0VJVkVEX1RJVExFID0gd3guUHlFdmVudEJpbmRl
ciggd3hFVlRfV0VCVklFV19SRUNFSVZFRF9USVRMRSwgMSApCi1FVlRfV0VCVklFV19DT05URU5U
U19DSEFOR0VEID0gd3guUHlFdmVudEJpbmRlciggd3hFVlRfV0VCVklFV19DT05URU5UU19DSEFO
R0VELCAxICkKLUVWVF9XRUJWSUVXX1NFTEVDVElPTl9DSEFOR0VEID0gd3guUHlFdmVudEJpbmRl
ciggd3hFVlRfV0VCVklFV19TRUxFQ1RJT05fQ0hBTkdFRCwgMSApCi1FVlRfV0VCVklFV19QUklO
VF9GUkFNRSA9IHd4LlB5RXZlbnRCaW5kZXIoIHd4RVZUX1dFQlZJRVdfUFJJTlRfRlJBTUUsIDEg
KQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9iaW5kaW5ncy9weXRob24vd3Njcmlw
dCBiL1NvdXJjZS9XZWJLaXQvd3gvYmluZGluZ3MvcHl0aG9uL3dzY3JpcHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGM3NmE2ZjNmMTA0M2IzMjlmMzRlZDYyYWM5OWQwOWNmZDVjZTk2
OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC93eC9iaW5kaW5ncy9weXRob24vd3NjcmlwdAorKysgL2Rldi9udWxsCkBAIC0xLDk0
ICswLDAgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMDkg
S2V2aW4gT2xsaXZpZXIgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotIyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotIwotIyB3eFdlYktpdCBQeXRob24gYmluZGluZ3MgYnVpbGQgc2Ny
aXB0IGZvciB0aGUgd2FmIGJ1aWxkIHN5c3RlbQotCi1mcm9tIHNldHRpbmdzIGltcG9ydCAqCi1p
bXBvcnQgTG9ncwotaW1wb3J0IE9wdGlvbnMKLQotaW5jbHVkZV9wYXRocyA9IFsKLSAgICAgICAg
ICAgIG9zLnBhdGguam9pbih3a19yb290LCAnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJyksCi0g
ICAgICAgICAgICBvcy5wYXRoLmpvaW4od2tfcm9vdCwgJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29y
ZScsICdydW50aW1lJyksCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4od2tfcm9vdCwgJ1NvdXJj
ZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2NwcCcpLAotICAgICAgICAgICAgb3MucGF0aC5q
b2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV2ViQ29yZScsICdEZXJpdmVkU291cmNlcycpLAotICAg
ICAgICAgICAgb3MucGF0aC5qb2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ3d4Jyks
Ci0gICAgICAgICAgICBvcy5wYXRoLmpvaW4od3hfcm9vdCwgJ3d4UHl0aG9uJywgJ2luY2x1ZGUn
KSwKLSAgICAgICAgICAgIG9zLnBhdGguam9pbih3eF9yb290LCAnLi4nLCAnd3hQeXRob24nLCAn
aW5jbHVkZScpLAotICAgICAgICAgICAgXQotCi1kZWYgd3hweV9zd2lnX2luY2x1ZGUoKToKLSAg
ICBkaXJzID0gWwotICAgICAgICAgICAgICAgICdpbmNsdWRlL3d4LTIuOS93eC93eFB5dGhvbi9p
X2ZpbGVzJywKLSAgICAgICAgICAgICAgICAnaW5jbHVkZS93eC0yLjgvd3gvd3hQeXRob24vaV9m
aWxlcycsCi0gICAgICAgICAgICAgICAgJ2luY2x1ZGUvd3gvd3hQeXRob24vaV9maWxlcycsCi0g
ICAgICAgICAgICAgICAgJ3d4UHl0aG9uL3NyYycsCi0gICAgICAgICAgICAgICAgJy4uL3d4UHl0
aG9uL3NyYycsCi0gICAgICAgICAgIF0KLQotICAgIGZvciBhZGlyIGluIGRpcnM6Ci0gICAgICAg
IGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHd4X3Jvb3QsIGFkaXIpCi0gICAgICAgIGlmIG9zLnBh
dGguZXhpc3RzKGZ1bGxwYXRoKToKLSAgICAgICAgICAgIHJldHVybiBmdWxscGF0aAotICAgICAg
ICAgICAgCi0gICAgcmV0dXJuICcnCi0gICAgCi1kZWYgYnVpbGQoYmxkKToKLSAgICBpZiBPcHRp
b25zLm9wdGlvbnMud3hweXRob246Ci0gICAgICAgIGRlZmluZXMgPSBbJ1NXSUdfVFlQRV9UQUJM
RT1fd3hQeXRob25fdGFibGUnLCAnV1hQX1VTRV9USFJFQUQ9MScsICdTV0lHX1BZVEhPTl9PVVRQ
VVRfVFVQTEUnXQotICAgICAgICB3eF9zd2lnX2FyZ3MgPSBbXQotICAgICAgICBmb3IgZGVmaW5l
IGluIGRlZmluZXM6Ci0gICAgICAgICAgICB3eF9zd2lnX2FyZ3MuYXBwZW5kKCctRCVzJyAlIGRl
ZmluZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgd3guYnVpbGQuY29uZmln
Ci0gICAgICAgICAgICB3eF9zd2lnX2FyZ3MgKz0gd3guYnVpbGQuY29uZmlnLnN3aWdfYXJncwot
ICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBMb2dzLndhcm4oIkNhbm5vdCBmaW5kIHd4UHl0
aG9uLCB3eFB5dGhvbiBleHRlbnNpb24gd2lsbCBub3QgYmUgYnVpbHQuIikKLSAgICAgICAgICAg
IHJldHVybgotICAgIAotICAgICAgICB3eHB5X2luY2x1ZGUgPSB3eHB5X3N3aWdfaW5jbHVkZSgp
Ci0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHd4cHlfaW5jbHVkZSk6Ci0gICAgICAgICAgICBp
bmNsdWRlX3BhdGhzLmFwcGVuZCh3eHB5X2luY2x1ZGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBMb2dzLndhcm4oIkNhbm5vdCBmaW5kIGxvY2F0aW9uIG9mIHd4UHl0aG9uIC5pIGZpbGVz
LCB3eFB5dGhvbiBleHRlbnNpb24gd2lsbCBub3QgYmUgYnVpbHQuIikKLSAgICAgICAgICAgIHJl
dHVybgotICAgIAotICAgICAgICBmb3IgaW5jX3BhdGggaW4gaW5jbHVkZV9wYXRoczoKLSAgICAg
ICAgICAgIHd4X3N3aWdfYXJncy5hcHBlbmQoJy1JJyArIGluY19wYXRoKQotCi0gICAgICAgIG9i
aiA9IGJsZC5uZXdfdGFza19nZW4oCi0gICAgICAgICAgICBmZWF0dXJlcyA9ICdjeHggY3NobGli
IHB5ZXh0JywKLSAgICAgICAgICAgIGluY2x1ZGVzID0gJyAnLmpvaW4oaW5jbHVkZV9wYXRocyks
Ci0gICAgICAgICAgICBzb3VyY2UgPSAnd2Vidmlldy5pJywKLSAgICAgICAgICAgIHN3aWdfZmxh
Z3MgPSAnICcuam9pbih3eF9zd2lnX2FyZ3MpLAotICAgICAgICAgICAgZGVmaW5lcyA9IGRlZmlu
ZXMsCi0gICAgICAgICAgICB0YXJnZXQgPSAnX3dlYnZpZXcnLAotICAgICAgICAgICAgdXNlbGli
ID0gJ1dYIENVUkwgSUNVIFhTTFQgWE1MIFNRTElURTMgJyArIGdldF9jb25maWcoKSwKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgbGlicGF0aCA9IFtvdXRwdXRfZGlyXSwKLSAgICAgICAgICAg
IHVzZWxpYl9sb2NhbCA9ICd3eHdlYmtpdCcsCi0gICAgICAgICAgICBpbnN0YWxsX3BhdGggPSBv
dXRwdXRfZGlyCi0gICAgICAgICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L3dz
Y3JpcHQgYi9Tb3VyY2UvV2ViS2l0L3d4L3dzY3JpcHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGNjMTg0NTI1N2VlYTBlYzc2YzYxY2IyODhmMjdlNDkwNWEwNGFmYWEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC93eC93
c2NyaXB0CisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLSMhIC91c3IvYmluL2VudiBw
eXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMDkgS2V2aW4gT2xsaXZpZXIgIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotIwotIyB3eFdl
YktpdCBidWlsZCBzY3JpcHQgZm9yIHRoZSB3YWYgYnVpbGQgc3lzdGVtCi0KLWZyb20gc2V0dGlu
Z3MgaW1wb3J0ICoKLQotd2Via2l0X2RpcnMgPSBbJy4nLCAnV2ViS2l0U3VwcG9ydCddCi1pbmNs
dWRlX3BhdGhzID0gd2Via2l0X2RpcnMgKyBjb21tb25faW5jbHVkZXMgKyBbJy4nLCAnLi4nLAot
ICAgICAgICAgICAgICAgIHdrX3Jvb3QsCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHdr
X3Jvb3QsICdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnKSwKLSAgICAgICAgICAgICAgICBvcy5w
YXRoLmpvaW4od2tfcm9vdCwgJ1NvdXJjZScsICdXZWJDb3JlJyksCi0gICAgICAgICAgICAgICAg
b3MucGF0aC5qb2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycsICd3
eCcpLAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3a19yb290LCAnU291cmNlJywgJ1dl
YkNvcmUnLCAnRGVyaXZlZFNvdXJjZXMnKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
b3V0cHV0X2RpciksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHdrX3Jvb3QsICdTb3Vy
Y2UnLCAnV2ViQ29yZScsICdwYWdlJywgJ3d4JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5q
b2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICduZXR3b3JrJywg
J2N1cmwnKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4od2tfcm9vdCwgJ1NvdXJjZScs
ICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ3d4JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5q
b2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdicmlkZ2UnLCAn
d3gnKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4od2tfcm9vdCwgJ1NvdXJjZScsICdX
ZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ3d4JyksCi1dCi0KLWlmIHN5cy5wbGF0
Zm9ybS5zdGFydHN3aXRoKCJ3aW4iKToKLSAgICBpbmNsdWRlX3BhdGhzLmFwcGVuZChvcy5wYXRo
LmpvaW4od2tfcm9vdCwgJ1NvdXJjZScsICdXZWJDb3JlJywncGxhdGZvcm0nLCd3aW4nKSkKLQot
d2luZG93c19kZXBzID0gWwotICAgICAgICAgICAgICAgICdsaWIvcHRocmVhZFZDMi5kbGwnLAot
ICAgICAgICAgICAgICAgICdiaW4vaWN1dWM0MC5kbGwnLCAnYmluL2ljdWR0NDAuZGxsJywgJ2Jp
bi9pY3VpbjQwLmRsbCcsCi0gICAgICAgICAgICAgICAgJ2Jpbi9saWJjdXJsLmRsbCcsICdiaW4v
bGliZWF5MzIuZGxsJywgJ2Jpbi9zc2xlYXkzMi5kbGwnLCAnYmluL3psaWIxLmRsbCcsCi0gICAg
ICAgICAgICAgICAgJ2xpYi9zcWxpdGUzLmRsbCcsICdiaW4vbGlieG1sMi5kbGwnLCAnYmluL2xp
YnhzbHQuZGxsJywgJ2Jpbi9pY29udi5kbGwnLAotICAgICAgICAgICAgICAgIF0KLQotd2ViY29y
ZV9pbmNsdWRlX2RpcnMgPSBbXQotZm9yIGRpciBpbiB3ZWJjb3JlX2RpcnMgKyBbJ0Rlcml2ZWRT
b3VyY2VzJ106Ci0gICAgaW5jbHVkZV9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHdrX3Jvb3Qs
ICdTb3VyY2UnLCAnV2ViQ29yZScsIGRpcikpIAotCi1qc19pbmNsdWRlX2RpcnMgPSBbb3MucGF0
aC5qb2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnLCAnYXNzZW1ibGVyJyld
Ci1mb3IgZGlyIGluIGpzY29yZV9kaXJzOgotICAgIGpzX2luY2x1ZGVfZGlycy5hcHBlbmQob3Mu
cGF0aC5qb2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnLCBkaXIpKQotCi1k
ZWYgc2V0X29wdGlvbnMob3B0KToKLSAgICBjb21tb25fc2V0X29wdGlvbnMob3B0KQotCi1kZWYg
Y29uZmlndXJlKGNvbmYpOgotICAgIGNvbW1vbl9jb25maWd1cmUoY29uZikKLSAgICAKLWRlZiBw
cmVfYnVpbGQoYmxkKToKLSAgICAiIiIKLSAgICBUaGUgd3hXZWJLaXQgbGlicmFyeSBzaG91bGQg
YmUgcmVidWlsdCBpZiB0aGUgd2ViY29yZSBzdGF0aWMgCi0gICAgbGlicmFyeSBjaGFuZ2VzLCBz
byB3ZSBtYXJrIGl0IGFzIGEgZGVwZW5kZW5jeS4KLSAgICAiIiIKLSAgICAKLSAgICBleHQgPSAn
LmEnCi0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICBleHQg
PSAnLmxpYicKLSAgICAKLSAgICBsaWJ3ZWJjb3JlID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIs
ICdsaWJ3ZWJjb3JlJXMnICUgZXh0KQotICAgIAotICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhs
aWJ3ZWJjb3JlKQotICAgIAotICAgIGJsZC5lbnYuQ1hYREVQU19XRUJDT1JFID0gVXRpbHMuaF9m
aWxlKGxpYndlYmNvcmUpCi0gICAgCi1kZWYgYnVpbGQoYmxkKToKLQotICAgIGltcG9ydCBUYXNr
R2VuCi0KLSAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZGFyd2luJyk6Ci0gICAgICAg
IFRhc2tHZW4udGFza19nZW4ubWFwcGluZ3NbJy5tbSddID0gVGFza0dlbi50YXNrX2dlbi5tYXBw
aW5nc1snLmN4eCddCi0gICAgICAgIFRhc2tHZW4udGFza19nZW4ubWFwcGluZ3NbJy5tJ10gPSBU
YXNrR2VuLnRhc2tfZ2VuLm1hcHBpbmdzWycuY3h4J10KLQotICAgIGJsZC5hZGRfcHJlX2Z1bihw
cmVfYnVpbGQpCi0KLSAgICBibGQuZW52LkxJQkRJUiA9IG91dHB1dF9kaXIKLQotICAgIG9iaiA9
IGJsZC5uZXdfdGFza19nZW4oCi0gICAgICAgIGZlYXR1cmVzID0gJ2N4eCBjc2hsaWIgaW1wbGli
JywKLSAgICAgICAgaW5jbHVkZXMgPSAnICcuam9pbihpbmNsdWRlX3BhdGhzICsganNfaW5jbHVk
ZV9kaXJzKSwKLSAgICAgICAgdGFyZ2V0ID0gJ3d4d2Via2l0JywKLSAgICAgICAgZGVmaW5lcyA9
IFsnV1hNQUtJTkdETExfV0VCS0lUJ10sCi0gICAgICAgIHVzZWxpYiA9ICdXWCBDVVJMIElDVSBY
U0xUIFhNTCBTUUxJVEUzIFdFQkNPUkUgSlNDT1JFICcgKyBnZXRfY29uZmlnKCksCi0gICAgICAg
IGxpYnBhdGggPSBbb3V0cHV0X2Rpcl0sCi0gICAgICAgIHVzZWxpYl9sb2NhbCA9ICcnLAotICAg
ICAgICBpbnN0YWxsX3BhdGggPSBvdXRwdXRfZGlyKQotICAgICAgICAKLSAgICBleHRzID0gWycu
YycsICcuY3BwJ10KLSAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZGFyd2luJyk6Ci0g
ICAgICAgIGV4dHMuYXBwZW5kKCcubW0nKQotICAgICAgICBvYmouaW5jbHVkZXMgKz0gJy4uL21h
Yy9XZWJDb3JlU3VwcG9ydCAuLi8uLi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMnCi0gICAg
ICAgIG9iai5zb3VyY2UgPSAiLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFj
ZS5tbSIKLSAgICBvYmouZmluZF9zb3VyY2VzX2luX2RpcnMod2Via2l0X2RpcnMpCi0KLSAgICBp
ZiBidWlsZGluZ19vbl93aW4zMjoKLSAgICAgICAgZm9yIHd4bGliIGluIGJsZC5lbnZbJ0xJQl9X
WCddOgotICAgICAgICAgICAgd3hsaWJuYW1lID0gb3MucGF0aC5qb2luKGJsZC5lbnZbJ0xJQlBB
VEhfV1gnXVswXSwgd3hsaWIgKyAnX3ZjLmRsbCcpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyh3eGxpYm5hbWUpOgotICAgICAgICAgICAgICAgIGJsZC5pbnN0YWxsX2ZpbGVzKG9iai5p
bnN0YWxsX3BhdGgsIFt3eGxpYm5hbWVdKQotICAgICAgICAKLSAgICAgICAgZm9yIGRlcCBpbiB3
aW5kb3dzX2RlcHM6Ci0gICAgICAgICAgICBibGQuaW5zdGFsbF9maWxlcyhvYmouaW5zdGFsbF9w
YXRoLCBbb3MucGF0aC5qb2luKG1zdmNsaWJzX2RpciwgZGVwKV0pCg==
</data>
<flag name="review"
          id="220905"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>