<?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>227830</bug_id>
          
          <creation_ts>2021-07-09 01:35:52 -0700</creation_ts>
          <short_desc>[JSC] Intl Locale Info</short_desc>
          <delta_ts>2021-08-21 07:33:31 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775943</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-09 01:35:52 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776142</commentid>
    <comment_count>1</comment_count>
      <attachid>433259</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-10 10:13:37 -0700</bug_when>
    <thetext>Created attachment 433259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776145</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-10 10:43:22 -0700</bug_when>
    <thetext>https://github.com/tc39/proposal-intl-locale-info</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776175</commentid>
    <comment_count>3</comment_count>
      <attachid>433274</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-10 14:17:54 -0700</bug_when>
    <thetext>Created attachment 433274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777464</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-16 01:36:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/80674634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782668</commentid>
    <comment_count>5</comment_count>
      <attachid>435117</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-06 23:07:44 -0700</bug_when>
    <thetext>Created attachment 435117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785724</commentid>
    <comment_count>6</comment_count>
      <attachid>435948</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-20 00:55:42 -0700</bug_when>
    <thetext>Created attachment 435948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786020</commentid>
    <comment_count>7</comment_count>
      <attachid>435948</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-08-20 15:18:12 -0700</bug_when>
    <thetext>Comment on attachment 435948
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:540
&gt; +static inline JSArray* createArrayFromStringVector(JSGlobalObject* globalObject, Vector&lt;String, 1&gt;&amp;&amp; elements)

Heh, I&apos;m slightly surprised we don&apos;t already have something like this.

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:581
&gt; +        // Ensure aliases used in language tag are allowed.

Maybe put in a shared location so that IntlDateTimeFormat doesn&apos;t have to store this knowledge separately?

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:627
&gt; +        // Map keyword values to BCP 47 equivalents.

Maybe put in a shared location so that IntlCollator doesn&apos;t have to store this knowledge separately?

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:679
&gt; +        unsigned count = 1;

Unused variable? (Seems like it&apos;s incremented but never checked.)

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:826
&gt; +        case UCAL_WEEKEND:
&gt; +            return UCAL_WEEKEND;
&gt; +        default:
&gt; +            return UCAL_WEEKEND;
&gt; +        }
&gt; +        return UCAL_WEEKEND;

Why not just a single `return UCAL_WEEKEND;` after the `default:`, instead of three?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786131</commentid>
    <comment_count>8</comment_count>
      <attachid>435948</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-21 06:18:38 -0700</bug_when>
    <thetext>Comment on attachment 435948
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:826
&gt;&gt; +        return UCAL_WEEKEND;
&gt; 
&gt; Why not just a single `return UCAL_WEEKEND;` after the `default:`, instead of three?

Removed the last one. But I think having

        case UCAL_WEEKEND_CEASE:
        case UCAL_WEEKEND:

is good for readability rather than using `default`, in particular when a new UCalendarWeekdayType is added to ICU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786135</commentid>
    <comment_count>9</comment_count>
      <attachid>435948</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-21 07:24:15 -0700</bug_when>
    <thetext>Comment on attachment 435948
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:581
&gt;&gt; +        // Ensure aliases used in language tag are allowed.
&gt; 
&gt; Maybe put in a shared location so that IntlDateTimeFormat doesn&apos;t have to store this knowledge separately?

Done.

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:627
&gt;&gt; +        // Map keyword values to BCP 47 equivalents.
&gt; 
&gt; Maybe put in a shared location so that IntlCollator doesn&apos;t have to store this knowledge separately?

Done

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:679
&gt;&gt; +        unsigned count = 1;
&gt; 
&gt; Unused variable? (Seems like it&apos;s incremented but never checked.)

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786136</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-21 07:33:31 -0700</bug_when>
    <thetext>Committed r281374 (240789@main): &lt;https://commits.webkit.org/240789@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433259</attachid>
            <date>2021-07-10 10:13:37 -0700</date>
            <delta_ts>2021-07-10 14:17:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227830-20210710101336.patch</filename>
            <type>text/plain</type>
            <size>25546</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U2MmU3ZWZlZTBiZjJiMTUwZjhhODM1NjAyZmY4OTIxMDUxY2FlLi4yOThiYjRhMTU0ZjgxNGUy
NjM1NGYwZGNmOTYwODczOWYwYWM5M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wNy0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwgTG9jYWxlIEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzgzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBJbnRsLkxv
Y2FsZSdzIGV4dGVuc2lvbiAoSW50bCBMb2NhbGUgSW5mbyBwcm9wb3NhbCksIHdoaWNoIGlzIGFs
cmVhZHkgc3RhZ2UgMy4KKyAgICAgICAgSW50bC5Mb2NhbGUje2NhbGVuZGFycyxjb2xsYXRpb25z
LGhvdXJDeWNsZXMsbnVtYmVyaW5nU3lzdGVtcyx0aW1lWm9uZXN9IGNhbiByZXR1cm4gYXJyYXkg
b2YgcHJlZmVycmVkCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnaXZlbiBsb2NhbGUu
IEFuZCBJbnRsLkxvY2FsZSN0ZXh0SW5mbyBjYW4gcmV0dXJuIHRleHQgbGF5b3V0IGRpcmVjdGlv
biBhbmQgSW50bC5Mb2NhbGUjd2Vla0luZm8KKyAgICAgICAgY2FuIHJldHVybiB3ZWVrZGF5IGlu
Zm9ybWF0aW9uIChlLmcuIHdoZW4gd2Vla2VuZCBzdGFydHMpLgorCisgICAgICAgICogcnVudGlt
ZS9JbnRsTG9jYWxlLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVj
dG9yKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y2FsZW5kYXJzKToKKyAgICAgICAgKEpT
Qzo6SW50bExvY2FsZTo6Y29sbGF0aW9ucyk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6Omhv
dXJDeWNsZXMpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0ZW1zKToK
KyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6dGltZVpvbmVzKToKKyAgICAgICAgKEpTQzo6SW50
bExvY2FsZTo6dGV4dEluZm8pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjp3ZWVrSW5mbyk6
CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmg6CisgICAgICAgICogcnVudGltZS9JbnRs
TG9jYWxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKwogMjAyMS0wNy0wOCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQgZm9yIEFSTTY0IGFu
ZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExvY2FsZS5jcHAKaW5kZXggZWFkNjYzMTBmMGM5OTA1MGUyNDkwNWE2ZmUw
NzQzZjg0MDcwYTZlOC4uNWFjZjAwZDJlNGMzZmI5ZGVmZjUwNGNjOTJiZTQyNDY1NDg5NmFjMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTI5
LDcgKzI5LDEyIEBACiAKICNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VjYWwuaD4KKyNpbmNsdWRlIDx1bmlj
b2RlL3Vjb2wuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNsdWRlIDx1bmljb2Rl
L3VkYXRwZy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHVuaWNvZGUv
dW51bXN5cy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNTMyLDQgKzUzNywzNDggQEAgVHJpU3RhdGUgSW50bExvY2FsZTo6
bnVtZXJpYygpCiAgICAgcmV0dXJuIG1fbnVtZXJpYzsKIH0KIAorc3RhdGljIGlubGluZSBKU0Fy
cmF5KiBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVmVjdG9yPFN0cmluZywgMT4mJiBlbGVtZW50cykKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhDb250aWd1b3VzKSwgZWxlbWVudHMuc2l6ZSgpKTsKKyAgICBpZiAoIXJlc3VsdCkgewor
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBlbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LCBqc1N0cmluZyh2bSwgV1RGTW92ZShlbGVt
ZW50c1tpbmRleF0pKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQXJyYXkqIEludGxMb2NhbGU6OmNh
bGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBWZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKKworICAgIFN0cmluZyBwcmVm
ZXJyZWQgPSBjYWxlbmRhcigpOworICAgIGlmICghcHJlZmVycmVkLmlzRW1wdHkoKSkgeworICAg
ICAgICBlbGVtZW50cy5hcHBlbmQoV1RGTW92ZShwcmVmZXJyZWQpKTsKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworICAgIH0KKworICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgIGNvbnN0ZXhwciBib29sIGNvbW1vbmx5VXNlZCA9IHRydWU7
CisgICAgYXV0byBjYWxlbmRhcnMgPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VE
ZWxldGVyPHVlbnVtX2Nsb3NlPj4odWNhbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjYWxl
bmRhciIsIG1fbG9jYWxlSUQuZGF0YSgpLCBjb21tb25seVVzZWQsICZzdGF0dXMpKTsKKyAgICBp
ZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIGludDMyX3QgbGVuZ3RoOworICAgIGNvbnN0IGNoYXIqIGNhbGVuZGFy
OworICAgIHdoaWxlICgoY2FsZW5kYXIgPSB1ZW51bV9uZXh0KGNhbGVuZGFycy5nZXQoKSwgJmxl
bmd0aCwgJnN0YXR1cykpICYmIFVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIC8vIEVuc3Vy
ZSBhbGlhc2VzIHVzZWQgaW4gbGFuZ3VhZ2UgdGFnIGFyZSBhbGxvd2VkLgorICAgICAgICBpZiAo
IXN0cmNtcChjYWxlbmRhciwgImdyZWdvcmlhbiIpKQorICAgICAgICAgICAgZWxlbWVudHMuYXBw
ZW5kKCJncmVnb3J5Il9zKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChjYWxlbmRhciwgImlz
bGFtaWMtY2l2aWwiKSkKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiaXNsYW1pY2MiX3Mp
OworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNhbGVuZGFyLCAiZXRoaW9waWMtYW1ldGUtYWxl
bSIpKQorICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJldGhpb2FhIl9zKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZWxlbWVudHMuY29uc3RydWN0QW5kQXBwZW5kKGNhbGVuZGFyLCBs
ZW5ndGgpOworICAgIH0KKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShl
bGVtZW50cykpKTsKK30KKworSlNBcnJheSogSW50bExvY2FsZTo6Y29sbGF0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBWZWN0
b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKKworICAgIFN0cmluZyBwcmVmZXJyZWQgPSBjb2xsYXRp
b24oKTsKKyAgICBpZiAoIXByZWZlcnJlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWxlbWVudHMu
YXBwZW5kKFdURk1vdmUocHJlZmVycmVkKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShl
bGVtZW50cykpKTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKKyAgICBjb25zdGV4cHIgYm9vbCBjb21tb25seVVzZWQgPSB0cnVlOworICAgIGF1dG8gZW51
bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVt
X2Nsb3NlPj4odWNvbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjb2xsYXRpb24iLCBtX2xv
Y2FsZUlELmRhdGEoKSwgY29tbW9ubHlVc2VkLCAmc3RhdHVzKSk7CisgICAgaWYgKCFVX1NVQ0NF
U1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBpbnQzMl90IGxlbmd0aDsKKyAgICBjb25zdCBjaGFyKiBjb2xsYXRpb247CisgICAgd2hp
bGUgKChjb2xsYXRpb24gPSB1ZW51bV9uZXh0KGVudW1lcmF0aW9uLmdldCgpLCAmbGVuZ3RoLCAm
c3RhdHVzKSkgJiYgVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgLy8gMS4xLjMgc3RlcCA0
LCBUaGUgdmFsdWVzICJzdGFuZGFyZCIgYW5kICJzZWFyY2giIG11c3QgYmUgZXhjbHVkZWQgZnJv
bSBsaXN0LgorICAgICAgICBpZiAoIXN0cmNtcChjb2xsYXRpb24sICJzdGFuZGFyZCIpIHx8ICFz
dHJjbXAoY29sbGF0aW9uLCAic2VhcmNoIikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAvLyBNYXAga2V5d29yZCB2YWx1ZXMgdG8gQkNQIDQ3IGVxdWl2YWxlbnRzLgorICAgICAg
ICBpZiAoIXN0cmNtcChjb2xsYXRpb24sICJkaWN0aW9uYXJ5IikpCisgICAgICAgICAgICBlbGVt
ZW50cy5hcHBlbmQoImRpY3QiX3MpOworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNvbGxhdGlv
biwgImdiMjMxMmhhbiIpKQorICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJnYjIzMTIiX3Mp
OworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNvbGxhdGlvbiwgInBob25lYm9vayIpKQorICAg
ICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJwaG9uZWJrIl9zKTsKKyAgICAgICAgZWxzZSBpZiAo
IXN0cmNtcChjb2xsYXRpb24sICJ0cmFkaXRpb25hbCIpKQorICAgICAgICAgICAgZWxlbWVudHMu
YXBwZW5kKCJ0cmFkIl9zKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxlbWVudHMuY29u
c3RydWN0QW5kQXBwZW5kKGNvbGxhdGlvbiwgbGVuZ3RoKTsKKyAgICB9CisgICAgaWYgKCFVX1NV
Q0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1Zl
Y3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7Cit9CisKK0pTQXJyYXkqIElu
dGxMb2NhbGU6OmhvdXJDeWNsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZywgMT4gZWxlbWVudHM7CisKKyAg
ICBTdHJpbmcgcHJlZmVycmVkID0gaG91ckN5Y2xlKCk7CisgICAgaWYgKCFwcmVmZXJyZWQuaXNF
bXB0eSgpKSB7CisgICAgICAgIGVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZWZlcnJlZCkpOwor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1Zl
Y3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAgfQorCisgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBnZW5lcmF0b3IgPSBzdGQ6
OnVuaXF1ZV9wdHI8VURhdGVUaW1lUGF0dGVybkdlbmVyYXRvciwgSUNVRGVsZXRlcjx1ZGF0cGdf
Y2xvc2U+Pih1ZGF0cGdfb3BlbihtX2xvY2FsZUlELmRhdGEoKSwgJnN0YXR1cykpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBV
c2UgImoiIHNrZWxldG9uIGFuZCBwYXJzZSBwYXR0ZXJuIHRvIHJldHJpZXZlIHRoZSBjb25maWd1
cmVkIGhvdXItY3ljbGUgaW5mb3JtYXRpb24uCisgICAgY29uc3RleHByIGNvbnN0IFVDaGFyIHNr
ZWxldG9uW10gPSB7ICdqJywgMCB9OworICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRlcm47Cisg
ICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRCZXN0UGF0
dGVybldpdGhPcHRpb25zLCBnZW5lcmF0b3IuZ2V0KCksIHNrZWxldG9uLCAxLCBVREFUUEdfTUFU
Q0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm4pOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1
cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFs
aWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdHRlcm4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVUNo
YXIgY3VycmVudENoYXJhY3RlciA9IHBhdHRlcm5baV07CisgICAgICAgIGlmICghaXNBU0NJSUFs
cGhhKGN1cnJlbnRDaGFyYWN0ZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
dW5zaWduZWQgY291bnQgPSAxOworICAgICAgICB3aGlsZSAoaSArIDEgPCBwYXR0ZXJuLnNpemUo
KSAmJiBwYXR0ZXJuW2kgKyAxXSA9PSBjdXJyZW50Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICAr
K2NvdW50OworICAgICAgICAgICAgKytpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChj
dXJyZW50Q2hhcmFjdGVyKSB7CisgICAgICAgIGNhc2UgJ2gnOiB7CisgICAgICAgICAgICBlbGVt
ZW50cy5hcHBlbmQoImgxMiJfcyk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxl
bWVudHMpKSk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAnSCc6IHsKKyAgICAgICAgICAgIGVs
ZW1lbnRzLmFwcGVuZCgiaDIzIl9zKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShl
bGVtZW50cykpKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlICdrJzogeworICAgICAgICAgICAg
ZWxlbWVudHMuYXBwZW5kKCJoMjQiX3MpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGVsZW1lbnRzKSkpOworICAgICAgICB9CisgICAgICAgIGNhc2UgJ0snOiB7CisgICAgICAgICAg
ICBlbGVtZW50cy5hcHBlbmQoImgxMSJfcyk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1v
dmUoZWxlbWVudHMpKSk7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1l
bnRzKSkpOworfQorCitKU0FycmF5KiBJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0ZW1zKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFZl
Y3RvcjxTdHJpbmcsIDE+IGVsZW1lbnRzOworICAgIFN0cmluZyBwcmVmZXJyZWQgPSBudW1iZXJp
bmdTeXN0ZW0oKTsKKyAgICBpZiAoIXByZWZlcnJlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWxl
bWVudHMuYXBwZW5kKFdURk1vdmUocHJlZmVycmVkKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RG
TW92ZShlbGVtZW50cykpKTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICBhdXRvIG51bWJlcmluZ1N5c3RlbSA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyaW5nU3lzdGVtLCBJQ1VEZWxldGVyPHVudW1zeXNfY2xvc2U+Pih1bnVtc3lzX29wZW4obV9s
b2NhbGVJRC5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBlbGVtZW50cy5h
cHBlbmQodW51bXN5c19nZXROYW1lKG51bWJlcmluZ1N5c3RlbS5nZXQoKSkpOworCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworfQorCitKU0FycmF5KiBJbnRsTG9jYWxlOjp0
aW1lWm9uZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgVmVjdG9yPFN0cmluZywgMT4gZWxlbWVudHM7CisKKyAgICAvLyAxMS42LTMg
TGV0IHJlZ2lvbiBiZSB0aGUgc3Vic3RyaW5nIG9mIGxvY2FsZSBjb3JyZXNwb25kaW5nIHRvIHRo
ZSB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlvbiBvZiB0aGUgdW5pY29kZV9sYW5ndWFn
ZV9pZC4KKyAgICBTdHJpbmcgcmVnaW9uID0gdGhpcy0+cmVnaW9uKCk7CisgICAgaWYgKHJlZ2lv
bi5pc0VtcHR5KCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uc3RydWN0
RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpKTsKKworICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9w
dHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVtX2Nsb3NlPj4odWNhbF9vcGVuVGltZVpv
bmVJREVudW1lcmF0aW9uKFVDQUxfWk9ORV9UWVBFX0NBTk9OSUNBTCwgcmVnaW9uLnV0ZjgoKS5k
YXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGludDMyX3Qg
bGVuZ3RoOworICAgIGNvbnN0IGNoYXIqIGNvbGxhdGlvbjsKKyAgICB3aGlsZSAoKGNvbGxhdGlv
biA9IHVlbnVtX25leHQoZW51bWVyYXRpb24uZ2V0KCksICZsZW5ndGgsICZzdGF0dXMpKSAmJiBV
X1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZWxlbWVudHMuY29uc3RydWN0QW5kQXBwZW5kKGNv
bGxhdGlvbiwgbGVuZ3RoKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92
ZShlbGVtZW50cykpKTsKK30KKworSlNPYmplY3QqIEludGxMb2NhbGU6OnRleHRJbmZvKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFVMYXlvdXRUeXBlIGxheW91dCA9
IHVsb2NfZ2V0Q2hhcmFjdGVyT3JpZW50YXRpb24obV9sb2NhbGVJRC5kYXRhKCksICZzdGF0dXMp
OworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgSlNTdHJpbmcqIGxheW91dFN0cmluZyA9IG51bGxwdHI7
CisgICAgc3dpdGNoIChsYXlvdXQpIHsKKyAgICBkZWZhdWx0OgorICAgIGNhc2UgVUxPQ19MQVlP
VVRfTFRSOgorICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImx0ciJfcyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVUxPQ19MQVlPVVRfUlRMOgorICAgICAgICBsYXlvdXRT
dHJpbmcgPSBqc1N0cmluZyh2bSwgInJ0bCJfcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VUxPQ19MQVlPVVRfVFRCOgorICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgInR0
YiJfcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVUxPQ19MQVlPVVRfQlRUOgorICAgICAg
ICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImJ0dCJfcyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9i
YWxPYmplY3QpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiZGlyZWN0aW9uIiksIGxheW91dFN0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworSlNPYmplY3QqIEludGxMb2NhbGU6OndlZWtJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gY2FsZW5kYXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNh
bGVuZGFyLCBJQ1VEZWxldGVyPHVjYWxfY2xvc2U+Pih1Y2FsX29wZW4obnVsbHB0ciwgMCwgbV9s
b2NhbGVJRC5kYXRhKCksIFVDQUxfREVGQVVMVCwgJnN0YXR1cykpOworICAgIGlmICghVV9TVUND
RVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgaW50MzJfdCBmaXJzdERheU9mV2VlayA9IHVjYWxfZ2V0QXR0cmlidXRlKGNhbGVuZGFy
LmdldCgpLCBVQ0FMX0ZJUlNUX0RBWV9PRl9XRUVLKTsKKyAgICBpbnQzMl90IG1pbmltYWxEYXlz
ID0gdWNhbF9nZXRBdHRyaWJ1dGUoY2FsZW5kYXIuZ2V0KCksIFVDQUxfTUlOSU1BTF9EQVlTX0lO
X0ZJUlNUX1dFRUspOworCisgICAgYXV0byBjYW5vbmljYWxpemVEYXlPZldlZWtUeXBlID0gW10o
VUNhbGVuZGFyV2Vla2RheVR5cGUgdHlwZSkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICAgICAgLy8gVUNBTF9XRUVLRU5EX09OU0VUIGlzIGEgZGF5IHRoYXQgc3RhcnRzIGFzIGEgd2Vl
a2RheSBhbmQgdHJhbnNpdGlvbnMgdG8gdGhlIHdlZWtlbmQuIEl0IG1lYW5zIHRoaXMgaXMgV2Vl
a0RheS4KKyAgICAgICAgY2FzZSBVQ0FMX1dFRUtFTkRfT05TRVQ6CisgICAgICAgIGNhc2UgVUNB
TF9XRUVLREFZOgorICAgICAgICAgICAgcmV0dXJuIFVDQUxfV0VFS0RBWTsKKyAgICAgICAgLy8g
VUNBTF9XRUVLRU5EX0NFQVNFIGlzIGEgZGF5IHRoYXQgc3RhcnRzIGFzIHRoZSB3ZWVrZW5kIGFu
ZCB0cmFuc2l0aW9ucyB0byBhIHdlZWtkYXkuIEl0IG1lYW5zIHRoaXMgaXMgV2Vla0VuZC4KKyAg
ICAgICAgY2FzZSBVQ0FMX1dFRUtFTkRfQ0VBU0U6CisgICAgICAgIGNhc2UgVUNBTF9XRUVLRU5E
OgorICAgICAgICAgICAgcmV0dXJuIFVDQUxfV0VFS0VORDsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBVQ0FMX1dFRUtFTkQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IFVDQUxfV0VFS0VORDsKKyAgICB9OworCisgICAgc3RhdGljX2Fzc2VydChVQ0FMX1NVTkRBWSA9
PSAxKTsKKyAgICBzdGF0aWNfYXNzZXJ0KFVDQUxfU0FUVVJEQVkgPT0gNyk7CisgICAgVUNhbGVu
ZGFyV2Vla2RheVR5cGUgcHJldmlvdXMgPSBjYW5vbmljYWxpemVEYXlPZldlZWtUeXBlKHVjYWxf
Z2V0RGF5T2ZXZWVrVHlwZShjYWxlbmRhci5nZXQoKSwgVUNBTF9TQVRVUkRBWSwgJnN0YXR1cykp
OworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgaW50MzJfdCB3ZWVrZW5kU3RhcnQgPSAwOworICAgIGlu
dDMyX3Qgd2Vla2VuZEVuZCA9IDA7CisgICAgZm9yIChpbnQzMl90IGRheSA9IFVDQUxfU1VOREFZ
OyBkYXkgPD0gVUNBTF9TQVRVUkRBWTsgKytkYXkpIHsKKyAgICAgICAgVUNhbGVuZGFyV2Vla2Rh
eVR5cGUgdHlwZSA9IGNhbm9uaWNhbGl6ZURheU9mV2Vla1R5cGUodWNhbF9nZXREYXlPZldlZWtU
eXBlKGNhbGVuZGFyLmdldCgpLCBzdGF0aWNfY2FzdDxVQ2FsZW5kYXJEYXlzT2ZXZWVrPihkYXkp
LCAmc3RhdHVzKSk7CisgICAgICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJf
cyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
cHJldmlvdXMgIT0gdHlwZSkgeworICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAg
ICAgICBjYXNlIFVDQUxfV0VFS0RBWTogLy8gV2Vla0VuZCA9PiBXZWVrRGF5CisgICAgICAgICAg
ICAgICAgaWYgKGRheSA9PSBVQ0FMX1NVTkRBWSkKKyAgICAgICAgICAgICAgICAgICAgd2Vla2Vu
ZEVuZCA9IFVDQUxfU0FUVVJEQVk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICB3ZWVrZW5kRW5kID0gZGF5IC0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgVUNBTF9XRUVLRU5EOiAvLyBXZWVrRGF5ID0+IFdlZWtFbmQKKyAgICAg
ICAgICAgICAgICB3ZWVrZW5kU3RhcnQgPSBkYXk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHByZXZpb3VzID0gdHlwZTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnZlcnRVQ2FsZW5kYXJE
YXlzT2ZXZWVrVG9Nb25kYXlCYXNlZERheSA9IFtdKGludDMyX3QgZGF5KSAtPiBpbnQzMl90IHsK
KyAgICAgICAgLy8gQ29udmVydCBmcm9tCisgICAgICAgIC8vICAgICBTdW5kYXkgPT4gMQorICAg
ICAgICAvLyAgICAgU2F0dXJkYXkgPT4gNworICAgICAgICAvLyB0bworICAgICAgICAvLyAgICAg
TW9uZGF5ID0+IDEKKyAgICAgICAgLy8gICAgIFN1bmRheSA9PiA3CisgICAgICAgIGlmIChkYXkg
PT0gVUNBTF9TVU5EQVkpCisgICAgICAgICAgICByZXR1cm4gNzsKKyAgICAgICAgcmV0dXJuIGRh
eSAtIDE7CisgICAgfTsKKworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZmlyc3REYXkiKSwganNOdW1iZXIoY29udmVydFVDYWxlbmRhckRh
eXNPZldlZWtUb01vbmRheUJhc2VkRGF5KGZpcnN0RGF5T2ZXZWVrKSkpOworICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAid2Vla2VuZFN0YXJ0Iiks
IGpzTnVtYmVyKGNvbnZlcnRVQ2FsZW5kYXJEYXlzT2ZXZWVrVG9Nb25kYXlCYXNlZERheSh3ZWVr
ZW5kU3RhcnQpKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ3ZWVrZW5kRW5kIiksIGpzTnVtYmVyKGNvbnZlcnRVQ2FsZW5kYXJEYXlzT2ZX
ZWVrVG9Nb25kYXlCYXNlZERheSh3ZWVrZW5kRW5kKSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW1hbERheXMiKSwganNOdW1iZXIo
bWluaW1hbERheXMpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaAppbmRleCAzMTRm
OTRkYTRhYjdkNTU2ODQ5NDkzMzNjMjBiZWY4MzE0ZDNkZTQ2Li5kZDcyMjVjZTgyNTk3Y2VlNDA5
MGM0YWU2MmE3YjEwMDk5ODZkNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTG9jYWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExvY2FsZS5oCkBAIC02OSw2ICs2OSwxNCBAQCBjbGFzcyBJbnRsTG9jYWxlIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGNvbnN0IFN0cmluZyYgbnVtYmVyaW5nU3lz
dGVtKCk7CiAgICAgVHJpU3RhdGUgbnVtZXJpYygpOwogCisgICAgSlNBcnJheSogY2FsZW5kYXJz
KEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNBcnJheSogY29sbGF0aW9ucyhKU0dsb2JhbE9iamVj
dCopOworICAgIEpTQXJyYXkqIGhvdXJDeWNsZXMoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU0Fy
cmF5KiBudW1iZXJpbmdTeXN0ZW1zKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNBcnJheSogdGlt
ZVpvbmVzKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNPYmplY3QqIHRleHRJbmZvKEpTR2xvYmFs
T2JqZWN0Kik7CisgICAgSlNPYmplY3QqIHdlZWtJbmZvKEpTR2xvYmFsT2JqZWN0Kik7CisKIHBy
aXZhdGU6CiAgICAgSW50bExvY2FsZShWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxMb2NhbGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExvY2FsZVByb3RvdHlwZS5jcHAKaW5kZXggMWUxZWViODYzMzVmYjYwOTY1YmE5YzEwM2Q3
ODY0OTcyNTdhMGIzMy4uNTMxMjljNzQzZDk1OGQwMDg1NzczMDJhNDk3OTYyYjFkY2Q1NDRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5jcHAKQEAgLTM2LDE0ICszNiwyMSBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXplKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJh
c2VOYW1lKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJDYWxlbmRhcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXJzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxh
dGlvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQ29sbGF0aW9ucyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGVzKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1l
cmljKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbXMpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdl
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJTY3JpcHQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlclJlZ2lvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGltZVpvbmVzKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJUZXh0SW5mbyk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyV2Vl
a0luZm8pOwogCiB9CiAKQEAgLTYwLDE0ICs2NywyMSBAQCBjb25zdCBDbGFzc0luZm8gSW50bExv
Y2FsZVByb3RvdHlwZTo6c19pbmZvID0geyAiSW50bC5Mb2NhbGUiLCAmQmFzZTo6c19pbmZvLCAm
bAogICB0b1N0cmluZyAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgYmFzZU5hbWUgICAgICAgICBJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyQmFzZU5hbWUgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgogICBjYWxl
bmRhciAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERv
bnRFbnVtfEFjY2Vzc29yCisgIGNhbGVuZGFycyAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNhbGVuZGFycyAgICAgICAgRG9udEVudW18QWNjZXNzb3IKICAgY2FzZUZpcnN0ICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0ICAgICAgICBEb250RW51bXxBY2Nl
c3NvcgogICBjb2xsYXRpb24gICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRp
b24gICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIGNvbGxhdGlvbnMgICAgICAgSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbnMgICAgICAgRG9udEVudW18QWNjZXNzb3IKICAgaG91
ckN5Y2xlICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlICAgICAgICBE
b250RW51bXxBY2Nlc3NvcgorICBob3VyQ3ljbGVzICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJIb3VyQ3ljbGVzICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCiAgIG51bWVyaWMgICAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMgICAgICAgICAgRG9udEVudW18QWNj
ZXNzb3IKICAgbnVtYmVyaW5nU3lzdGVtICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVy
aW5nU3lzdGVtICBEb250RW51bXxBY2Nlc3NvcgorICBudW1iZXJpbmdTeXN0ZW1zIEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW1zIERvbnRFbnVtfEFjY2Vzc29yCiAgIGxh
bmd1YWdlICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlICAgICAgICAg
RG9udEVudW18QWNjZXNzb3IKICAgc2NyaXB0ICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyU2NyaXB0ICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgogICByZWdpb24gICAgICAg
ICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24gICAgICAgICAgIERvbnRFbnVtfEFj
Y2Vzc29yCisgIHRpbWVab25lcyAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclRpbWVa
b25lcyAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgdGV4dEluZm8gICAgICAgICBJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyVGV4dEluZm8gICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICB3
ZWVrSW5mbyAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJXZWVrSW5mbyAgICAgICAg
IERvbnRFbnVtfEFjY2Vzc29yCiBAZW5kCiAqLwogCkBAIC0xNjksNiArMTgzLDE5IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIsIChK
U0dsb2JhbE9iamVjdCogZ2xvCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoY2FsZW5kYXIuaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0s
IGNhbGVuZGFyKSkpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2Nh
bGUtaW5mby8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhcnMKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXJzLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2Nh
bGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxv
Y2FsZS5wcm90b3R5cGUuY2FsZW5kYXJzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPmNhbGVuZGFycyhnbG9iYWxPYmplY3Qp
KSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJv
dG90eXBlLmNhc2VGaXJzdAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJDYXNlRmlyc3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0xOTcsNiArMjI0LDE5IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uLCAoSlNHbG9iYWxP
YmplY3QqIGdsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
Y29sbGF0aW9uLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBjb2xsYXRp
b24pKSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWxvY2FsZS1pbmZv
LyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbnMKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9ucywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLmNvbGxhdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+Y29sbGF0aW9ucyhnbG9iYWxPYmplY3QpKSk7
Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90
eXBlLmhvdXJDeWNsZQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJIb3VyQ3ljbGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0yMTEsNiArMjUxLDE5IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaG91
ckN5Y2xlLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBob3VyQ3ljbGUp
KSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWxvY2FsZS1pbmZvLyNz
ZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJjeWNsZXMKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlcywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLmhvdXJDeWNsZXMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGlu
aXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+aG91ckN5Y2xlcyhnbG9iYWxPYmplY3QpKSk7Cit9
CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBl
Lm51bWVyaWMKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyTnVtZXJpYywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKIHsKQEAgLTIzOCw2ICsyOTEsMTkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0sIChKU0dsb2JhbE9iamUK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJpbmdT
eXN0ZW0uaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIG51bWJlcmluZ1N5
c3RlbSkpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbG9jYWxlLWlu
Zm8vI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtcworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW1z
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0
PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2Nh
bGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtcyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT5udW1iZXJp
bmdTeXN0ZW1zKGdsb2JhbE9iamVjdCkpKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3VhZ2UKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0yODAsNCArMzQ2
LDQzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
UmVnaW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUocmVnaW9uLmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBq
c1N0cmluZyh2bSwgcmVnaW9uKSkpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
aW50bC1sb2NhbGUtaW5mby8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS50aW1lem9uZXMKK0pT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGltZVpvbmVz
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0
PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2Nh
bGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudGltZVpvbmVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPnRpbWVab25lcyhnbG9i
YWxPYmplY3QpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWxvY2Fs
ZS1pbmZvLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnRleHRJbmZvCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclRleHRJbmZvLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2Fs
ZS5wcm90b3R5cGUudGV4dEluZm8gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+dGV4dEluZm8oZ2xvYmFsT2JqZWN0KSkpOwor
fQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2NhbGUtaW5mby8jc2VjLUlu
dGwuTG9jYWxlLnByb3RvdHlwZS53ZWVrSW5mbworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJXZWVrSW5mbywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLndl
ZWtJbmZvIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShsb2NhbGUtPndlZWtJbmZvKGdsb2JhbE9iamVjdCkpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433274</attachid>
            <date>2021-07-10 14:17:54 -0700</date>
            <delta_ts>2021-08-06 23:07:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227830-20210710141753.patch</filename>
            <type>text/plain</type>
            <size>26475</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U2MmU3ZWZlZTBiZjJiMTUwZjhhODM1NjAyZmY4OTIxMDUxY2FlLi41ZTYwNDU4NjdhMzA4MmVh
MzNiNmU1NjJkYjg3YzQ1MGRhYTQ2NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMS0wNy0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwgTG9jYWxlIEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzgzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBJbnRsLkxv
Y2FsZSdzIGV4dGVuc2lvbiAoSW50bCBMb2NhbGUgSW5mbyBwcm9wb3NhbClbMV0sIHdoaWNoIGlz
IGFscmVhZHkgc3RhZ2UgMy4KKyAgICAgICAgSW50bC5Mb2NhbGUje2NhbGVuZGFycyxjb2xsYXRp
b25zLGhvdXJDeWNsZXMsbnVtYmVyaW5nU3lzdGVtcyx0aW1lWm9uZXN9IGNhbiByZXR1cm4gYXJy
YXkgb2YgcHJlZmVycmVkCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnaXZlbiBsb2Nh
bGUuIEFuZCBJbnRsLkxvY2FsZSN0ZXh0SW5mbyBjYW4gcmV0dXJuIHRleHQgbGF5b3V0IGRpcmVj
dGlvbiBhbmQgSW50bC5Mb2NhbGUjd2Vla0luZm8KKyAgICAgICAgY2FuIHJldHVybiB3ZWVrZGF5
IGluZm9ybWF0aW9uIChlLmcuIHdoZW4gd2Vla2VuZCBzdGFydHMpLgorCisgICAgICAgIFsxXTog
aHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaW50bC1sb2NhbGUtaW5mbworCisgICAg
ICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQXJyYXlG
cm9tU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y2FsZW5kYXJzKToK
KyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y29sbGF0aW9ucyk6CisgICAgICAgIChKU0M6Oklu
dGxMb2NhbGU6OmhvdXJDeWNsZXMpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpudW1iZXJp
bmdTeXN0ZW1zKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6dGltZVpvbmVzKToKKyAgICAg
ICAgKEpTQzo6SW50bExvY2FsZTo6dGV4dEluZm8pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
Ojp3ZWVrSW5mbyk6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKwogMjAyMS0wNy0wOCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEFpciBvcGNvZGUgYWRkL3N1Yi1hbmQtc2hpZnQg
Zm9yIEFSTTY0IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlvbiBpbiBBaXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKaW5kZXggZWFkNjYzMTBmMGM5OTA1
MGUyNDkwNWE2ZmUwNzQzZjg0MDcwYTZlOC4uMjgyNWE2OWY3Y2UxYWE3ZDFhMzg5OTQ5NDA2MzU2
ZWUyYzNiNTZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExvY2FsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2Fs
ZS5jcHAKQEAgLTI5LDcgKzI5LDEyIEBACiAKICNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VjYWwuaD4KKyNp
bmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNs
dWRlIDx1bmljb2RlL3VkYXRwZy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1
ZGUgPHVuaWNvZGUvdW51bXN5cy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxw
ZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTMyLDQgKzUzNywzNDggQEAgVHJpU3RhdGUg
SW50bExvY2FsZTo6bnVtZXJpYygpCiAgICAgcmV0dXJuIG1fbnVtZXJpYzsKIH0KIAorc3RhdGlj
IGlubGluZSBKU0FycmF5KiBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVmVjdG9yPFN0cmluZywgMT4mJiBlbGVtZW50cykKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgZWxlbWVudHMuc2l6ZSgpKTsKKyAgICBpZiAo
IXJlc3VsdCkgeworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBlbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LCBqc1N0cmluZyh2bSwg
V1RGTW92ZShlbGVtZW50c1tpbmRleF0pKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQXJyYXkqIElu
dGxMb2NhbGU6OmNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBWZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKKworICAg
IFN0cmluZyBwcmVmZXJyZWQgPSBjYWxlbmRhcigpOworICAgIGlmICghcHJlZmVycmVkLmlzRW1w
dHkoKSkgeworICAgICAgICBlbGVtZW50cy5hcHBlbmQoV1RGTW92ZShwcmVmZXJyZWQpKTsKKyAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0
b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworICAgIH0KKworICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGNvbnN0ZXhwciBib29sIGNvbW1vbmx5
VXNlZCA9IHRydWU7CisgICAgYXV0byBjYWxlbmRhcnMgPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1l
cmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVtX2Nsb3NlPj4odWNhbF9nZXRLZXl3b3JkVmFsdWVzRm9y
TG9jYWxlKCJjYWxlbmRhciIsIG1fbG9jYWxlSUQuZGF0YSgpLCBjb21tb25seVVzZWQsICZzdGF0
dXMpKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIGludDMyX3QgbGVuZ3RoOworICAgIGNvbnN0IGNo
YXIqIGNhbGVuZGFyOworICAgIHdoaWxlICgoY2FsZW5kYXIgPSB1ZW51bV9uZXh0KGNhbGVuZGFy
cy5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1cykpICYmIFVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAg
ICAgIC8vIEVuc3VyZSBhbGlhc2VzIHVzZWQgaW4gbGFuZ3VhZ2UgdGFnIGFyZSBhbGxvd2VkLgor
ICAgICAgICBpZiAoIXN0cmNtcChjYWxlbmRhciwgImdyZWdvcmlhbiIpKQorICAgICAgICAgICAg
ZWxlbWVudHMuYXBwZW5kKCJncmVnb3J5Il9zKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChj
YWxlbmRhciwgImlzbGFtaWMtY2l2aWwiKSkKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgi
aXNsYW1pY2MiX3MpOworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNhbGVuZGFyLCAiZXRoaW9w
aWMtYW1ldGUtYWxlbSIpKQorICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJldGhpb2FhIl9z
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxlbWVudHMuY29uc3RydWN0QW5kQXBwZW5k
KGNhbGVuZGFyLCBsZW5ndGgpOworICAgIH0KKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVj
dCwgV1RGTW92ZShlbGVtZW50cykpKTsKK30KKworSlNBcnJheSogSW50bExvY2FsZTo6Y29sbGF0
aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBWZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKKworICAgIFN0cmluZyBwcmVmZXJy
ZWQgPSBjb2xsYXRpb24oKTsKKyAgICBpZiAoIXByZWZlcnJlZC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUocHJlZmVycmVkKSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVj
dCwgV1RGTW92ZShlbGVtZW50cykpKTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKKyAgICBjb25zdGV4cHIgYm9vbCBjb21tb25seVVzZWQgPSB0cnVlOwor
ICAgIGF1dG8gZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VE
ZWxldGVyPHVlbnVtX2Nsb3NlPj4odWNvbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjb2xs
YXRpb24iLCBtX2xvY2FsZUlELmRhdGEoKSwgY29tbW9ubHlVc2VkLCAmc3RhdHVzKSk7CisgICAg
aWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBpbnQzMl90IGxlbmd0aDsKKyAgICBjb25zdCBjaGFyKiBjb2xsYXRp
b247CisgICAgd2hpbGUgKChjb2xsYXRpb24gPSB1ZW51bV9uZXh0KGVudW1lcmF0aW9uLmdldCgp
LCAmbGVuZ3RoLCAmc3RhdHVzKSkgJiYgVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgLy8g
MS4xLjMgc3RlcCA0LCBUaGUgdmFsdWVzICJzdGFuZGFyZCIgYW5kICJzZWFyY2giIG11c3QgYmUg
ZXhjbHVkZWQgZnJvbSBsaXN0LgorICAgICAgICBpZiAoIXN0cmNtcChjb2xsYXRpb24sICJzdGFu
ZGFyZCIpIHx8ICFzdHJjbXAoY29sbGF0aW9uLCAic2VhcmNoIikpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAvLyBNYXAga2V5d29yZCB2YWx1ZXMgdG8gQkNQIDQ3IGVxdWl2YWxl
bnRzLgorICAgICAgICBpZiAoIXN0cmNtcChjb2xsYXRpb24sICJkaWN0aW9uYXJ5IikpCisgICAg
ICAgICAgICBlbGVtZW50cy5hcHBlbmQoImRpY3QiX3MpOworICAgICAgICBlbHNlIGlmICghc3Ry
Y21wKGNvbGxhdGlvbiwgImdiMjMxMmhhbiIpKQorICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5k
KCJnYjIzMTIiX3MpOworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNvbGxhdGlvbiwgInBob25l
Ym9vayIpKQorICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJwaG9uZWJrIl9zKTsKKyAgICAg
ICAgZWxzZSBpZiAoIXN0cmNtcChjb2xsYXRpb24sICJ0cmFkaXRpb25hbCIpKQorICAgICAgICAg
ICAgZWxlbWVudHMuYXBwZW5kKCJ0cmFkIl9zKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZWxlbWVudHMuY29uc3RydWN0QW5kQXBwZW5kKGNvbGxhdGlvbiwgbGVuZ3RoKTsKKyAgICB9Cisg
ICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5
RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7Cit9CisK
K0pTQXJyYXkqIEludGxMb2NhbGU6OmhvdXJDeWNsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZywgMT4gZWxl
bWVudHM7CisKKyAgICBTdHJpbmcgcHJlZmVycmVkID0gaG91ckN5Y2xlKCk7CisgICAgaWYgKCFw
cmVmZXJyZWQuaXNFbXB0eSgpKSB7CisgICAgICAgIGVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKHBy
ZWZlcnJlZCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5
RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAg
fQorCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBnZW5l
cmF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVUaW1lUGF0dGVybkdlbmVyYXRvciwgSUNVRGVs
ZXRlcjx1ZGF0cGdfY2xvc2U+Pih1ZGF0cGdfb3BlbihtX2xvY2FsZUlELmRhdGEoKSwgJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAvLyBVc2UgImoiIHNrZWxldG9uIGFuZCBwYXJzZSBwYXR0ZXJuIHRvIHJldHJpZXZl
IHRoZSBjb25maWd1cmVkIGhvdXItY3ljbGUgaW5mb3JtYXRpb24uCisgICAgY29uc3RleHByIGNv
bnN0IFVDaGFyIHNrZWxldG9uW10gPSB7ICdqJywgMCB9OworICAgIFZlY3RvcjxVQ2hhciwgMzI+
IHBhdHRlcm47CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRw
Z19nZXRCZXN0UGF0dGVybldpdGhPcHRpb25zLCBnZW5lcmF0b3IuZ2V0KCksIHNrZWxldG9uLCAx
LCBVREFUUEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm4pOworICAgIGlmICghVV9T
VUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdHRlcm4uc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgVUNoYXIgY3VycmVudENoYXJhY3RlciA9IHBhdHRlcm5baV07CisgICAgICAgIGlm
ICghaXNBU0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0ZXIpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgdW5zaWduZWQgY291bnQgPSAxOworICAgICAgICB3aGlsZSAoaSArIDEgPCBw
YXR0ZXJuLnNpemUoKSAmJiBwYXR0ZXJuW2kgKyAxXSA9PSBjdXJyZW50Q2hhcmFjdGVyKSB7Cisg
ICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgKytpOworICAgICAgICB9CisKKyAgICAg
ICAgc3dpdGNoIChjdXJyZW50Q2hhcmFjdGVyKSB7CisgICAgICAgIGNhc2UgJ2gnOiB7CisgICAg
ICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMiJfcyk7CisgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3Qs
IFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAnSCc6IHsKKyAg
ICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiaDIzIl9zKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVj
dCwgV1RGTW92ZShlbGVtZW50cykpKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlICdrJzogewor
ICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMjQiX3MpOworICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworICAgICAgICB9CisgICAgICAgIGNhc2UgJ0snOiB7
CisgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMSJfcyk7CisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxP
YmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGVsZW1lbnRzKSkpOworfQorCitKU0FycmF5KiBJbnRsTG9jYWxlOjpudW1iZXJpbmdT
eXN0ZW1zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIFZlY3RvcjxTdHJpbmcsIDE+IGVsZW1lbnRzOworICAgIFN0cmluZyBwcmVmZXJy
ZWQgPSBudW1iZXJpbmdTeXN0ZW0oKTsKKyAgICBpZiAoIXByZWZlcnJlZC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUocHJlZmVycmVkKSk7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIG51bWJlcmluZ1N5c3RlbSA9IHN0ZDo6dW5p
cXVlX3B0cjxVTnVtYmVyaW5nU3lzdGVtLCBJQ1VEZWxldGVyPHVudW1zeXNfY2xvc2U+Pih1bnVt
c3lzX29wZW4obV9sb2NhbGVJRC5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBpZiAoIVVfU1VDQ0VT
UyhzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICBlbGVtZW50cy5hcHBlbmQodW51bXN5c19nZXROYW1lKG51bWJlcmluZ1N5c3RlbS5nZXQoKSkp
OworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdW
ZWN0b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworfQorCitKU1ZhbHVlIElu
dGxMb2NhbGU6OnRpbWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBWZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKKworICAg
IC8vIDExLjYtMyBMZXQgcmVnaW9uIGJlIHRoZSBzdWJzdHJpbmcgb2YgbG9jYWxlIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyBwcm9kdWN0aW9uIG9mIHRoZSB1bmlj
b2RlX2xhbmd1YWdlX2lkLgorICAgIFN0cmluZyByZWdpb24gPSB0aGlzLT5yZWdpb24oKTsKKyAg
ICBpZiAocmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisK
KyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGVudW1lcmF0
aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRlcjx1ZW51bV9jbG9z
ZT4+KHVjYWxfb3BlblRpbWVab25lSURFbnVtZXJhdGlvbihVQ0FMX1pPTkVfVFlQRV9DQU5PTklD
QUwsIHJlZ2lvbi51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgaWYgKCFV
X1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KworICAgIGludDMyX3QgbGVuZ3RoOworICAgIGNvbnN0IGNoYXIqIGNvbGxhdGlvbjsKKyAgICB3
aGlsZSAoKGNvbGxhdGlvbiA9IHVlbnVtX25leHQoZW51bWVyYXRpb24uZ2V0KCksICZsZW5ndGgs
ICZzdGF0dXMpKSAmJiBVX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZWxlbWVudHMuY29uc3Ry
dWN0QW5kQXBwZW5kKGNvbGxhdGlvbiwgbGVuZ3RoKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0
dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZh
bGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworfQorCitKU09iamVjdCogSW50bExvY2FsZTo6dGV4
dEluZm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVUxheW91dFR5
cGUgbGF5b3V0ID0gdWxvY19nZXRDaGFyYWN0ZXJPcmllbnRhdGlvbihtX2xvY2FsZUlELmRhdGEo
KSwgJnN0YXR1cyk7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBKU1N0cmluZyogbGF5b3V0U3RyaW5n
ID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGxheW91dCkgeworICAgIGRlZmF1bHQ6CisgICAgY2Fz
ZSBVTE9DX0xBWU9VVF9MVFI6CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAi
bHRyIl9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVTE9DX0xBWU9VVF9SVEw6CisgICAg
ICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAicnRsIl9zKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBVTE9DX0xBWU9VVF9UVEI6CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzU3Ry
aW5nKHZtLCAidHRiIl9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVTE9DX0xBWU9VVF9C
VFQ6CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAiYnR0Il9zKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJkaXJlY3Rpb24iKSwgbGF5b3V0U3RyaW5nKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitKU09iamVjdCogSW50bExvY2FsZTo6d2Vla0luZm8oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBjYWxlbmRhciA9IHN0ZDo6dW5p
cXVlX3B0cjxVQ2FsZW5kYXIsIElDVURlbGV0ZXI8dWNhbF9jbG9zZT4+KHVjYWxfb3BlbihudWxs
cHRyLCAwLCBtX2xvY2FsZUlELmRhdGEoKSwgVUNBTF9ERUZBVUxULCAmc3RhdHVzKSk7CisgICAg
aWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBpbnQzMl90IGZpcnN0RGF5T2ZXZWVrID0gdWNhbF9nZXRBdHRyaWJ1
dGUoY2FsZW5kYXIuZ2V0KCksIFVDQUxfRklSU1RfREFZX09GX1dFRUspOworICAgIGludDMyX3Qg
bWluaW1hbERheXMgPSB1Y2FsX2dldEF0dHJpYnV0ZShjYWxlbmRhci5nZXQoKSwgVUNBTF9NSU5J
TUFMX0RBWVNfSU5fRklSU1RfV0VFSyk7CisKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZURheU9mV2Vl
a1R5cGUgPSBbXShVQ2FsZW5kYXJXZWVrZGF5VHlwZSB0eXBlKSB7CisgICAgICAgIHN3aXRjaCAo
dHlwZSkgeworICAgICAgICAvLyBVQ0FMX1dFRUtFTkRfT05TRVQgaXMgYSBkYXkgdGhhdCBzdGFy
dHMgYXMgYSB3ZWVrZGF5IGFuZCB0cmFuc2l0aW9ucyB0byB0aGUgd2Vla2VuZC4gSXQgbWVhbnMg
dGhpcyBpcyBXZWVrRGF5LgorICAgICAgICBjYXNlIFVDQUxfV0VFS0VORF9PTlNFVDoKKyAgICAg
ICAgY2FzZSBVQ0FMX1dFRUtEQVk6CisgICAgICAgICAgICByZXR1cm4gVUNBTF9XRUVLREFZOwor
ICAgICAgICAvLyBVQ0FMX1dFRUtFTkRfQ0VBU0UgaXMgYSBkYXkgdGhhdCBzdGFydHMgYXMgdGhl
IHdlZWtlbmQgYW5kIHRyYW5zaXRpb25zIHRvIGEgd2Vla2RheS4gSXQgbWVhbnMgdGhpcyBpcyBX
ZWVrRW5kLgorICAgICAgICBjYXNlIFVDQUxfV0VFS0VORF9DRUFTRToKKyAgICAgICAgY2FzZSBV
Q0FMX1dFRUtFTkQ6CisgICAgICAgICAgICByZXR1cm4gVUNBTF9XRUVLRU5EOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFVDQUxfV0VFS0VORDsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gVUNBTF9XRUVLRU5EOworICAgIH07CisKKyAgICBzdGF0aWNfYXNzZXJ0KFVD
QUxfU1VOREFZID09IDEpOworICAgIHN0YXRpY19hc3NlcnQoVUNBTF9TQVRVUkRBWSA9PSA3KTsK
KyAgICBVQ2FsZW5kYXJXZWVrZGF5VHlwZSBwcmV2aW91cyA9IGNhbm9uaWNhbGl6ZURheU9mV2Vl
a1R5cGUodWNhbF9nZXREYXlPZldlZWtUeXBlKGNhbGVuZGFyLmdldCgpLCBVQ0FMX1NBVFVSREFZ
LCAmc3RhdHVzKSk7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpbnQzMl90IHdlZWtlbmRTdGFydCA9
IDA7CisgICAgaW50MzJfdCB3ZWVrZW5kRW5kID0gMDsKKyAgICBmb3IgKGludDMyX3QgZGF5ID0g
VUNBTF9TVU5EQVk7IGRheSA8PSBVQ0FMX1NBVFVSREFZOyArK2RheSkgeworICAgICAgICBVQ2Fs
ZW5kYXJXZWVrZGF5VHlwZSB0eXBlID0gY2Fub25pY2FsaXplRGF5T2ZXZWVrVHlwZSh1Y2FsX2dl
dERheU9mV2Vla1R5cGUoY2FsZW5kYXIuZ2V0KCksIHN0YXRpY19jYXN0PFVDYWxlbmRhckRheXNP
ZldlZWs+KGRheSksICZzdGF0dXMpKTsKKyAgICAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkg
eworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFs
aWQgbG9jYWxlIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9Cisg
ICAgICAgIGlmIChwcmV2aW91cyAhPSB0eXBlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICAgICAgICAgIGNhc2UgVUNBTF9XRUVLREFZOiAvLyBXZWVrRW5kID0+IFdlZWtEYXkK
KyAgICAgICAgICAgICAgICBpZiAoZGF5ID09IFVDQUxfU1VOREFZKQorICAgICAgICAgICAgICAg
ICAgICB3ZWVrZW5kRW5kID0gVUNBTF9TQVRVUkRBWTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHdlZWtlbmRFbmQgPSBkYXkgLSAxOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBVQ0FMX1dFRUtFTkQ6IC8vIFdlZWtEYXkgPT4gV2Vl
a0VuZAorICAgICAgICAgICAgICAgIHdlZWtlbmRTdGFydCA9IGRheTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcHJldmlvdXMgPSB0eXBlOworICAgIH0KKworICAgIGF1dG8gY29udmVy
dFVDYWxlbmRhckRheXNPZldlZWtUb01vbmRheUJhc2VkRGF5ID0gW10oaW50MzJfdCBkYXkpIC0+
IGludDMyX3QgeworICAgICAgICAvLyBDb252ZXJ0IGZyb20KKyAgICAgICAgLy8gICAgIFN1bmRh
eSA9PiAxCisgICAgICAgIC8vICAgICBTYXR1cmRheSA9PiA3CisgICAgICAgIC8vIHRvCisgICAg
ICAgIC8vICAgICBNb25kYXkgPT4gMQorICAgICAgICAvLyAgICAgU3VuZGF5ID0+IDcKKyAgICAg
ICAgaWYgKGRheSA9PSBVQ0FMX1NVTkRBWSkKKyAgICAgICAgICAgIHJldHVybiA3OworICAgICAg
ICByZXR1cm4gZGF5IC0gMTsKKyAgICB9OworCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaXJzdERheSIpLCBqc051bWJlcihjb252ZXJ0
VUNhbGVuZGFyRGF5c09mV2Vla1RvTW9uZGF5QmFzZWREYXkoZmlyc3REYXlPZldlZWspKSk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ3ZWVr
ZW5kU3RhcnQiKSwganNOdW1iZXIoY29udmVydFVDYWxlbmRhckRheXNPZldlZWtUb01vbmRheUJh
c2VkRGF5KHdlZWtlbmRTdGFydCkpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIndlZWtlbmRFbmQiKSwganNOdW1iZXIoY29udmVydFVDYWxl
bmRhckRheXNPZldlZWtUb01vbmRheUJhc2VkRGF5KHdlZWtlbmRFbmQpKSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbWFsRGF5cyIp
LCBqc051bWJlcihtaW5pbWFsRGF5cykpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExvY2FsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5o
CmluZGV4IDMxNGY5NGRhNGFiN2Q1NTY4NDk0OTMzM2MyMGJlZjgzMTRkM2RlNDYuLjk2YjZkOTli
YzE5ZmE5Zjc0Y2ZlYmNmMWQyOTM2ODc1ZGYyMGY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlLmgKQEAgLTY5LDYgKzY5LDE0IEBAIGNsYXNzIEludGxMb2Nh
bGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgY29uc3QgU3RyaW5nJiBu
dW1iZXJpbmdTeXN0ZW0oKTsKICAgICBUcmlTdGF0ZSBudW1lcmljKCk7CiAKKyAgICBKU0FycmF5
KiBjYWxlbmRhcnMoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU0FycmF5KiBjb2xsYXRpb25zKEpT
R2xvYmFsT2JqZWN0Kik7CisgICAgSlNBcnJheSogaG91ckN5Y2xlcyhKU0dsb2JhbE9iamVjdCop
OworICAgIEpTQXJyYXkqIG51bWJlcmluZ1N5c3RlbXMoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBK
U1ZhbHVlIHRpbWVab25lcyhKU0dsb2JhbE9iamVjdCopOworICAgIEpTT2JqZWN0KiB0ZXh0SW5m
byhKU0dsb2JhbE9iamVjdCopOworICAgIEpTT2JqZWN0KiB3ZWVrSW5mbyhKU0dsb2JhbE9iamVj
dCopOworCiBwcml2YXRlOgogICAgIEludGxMb2NhbGUoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCmluZGV4IDFlMWVlYjg2MzM1ZmI2MDk2
NWJhOWMxMDNkNzg2NDk3MjU3YTBiMzMuLjUzMTI5Yzc0M2Q5NThkMDA4NTc3MzAyYTQ5Nzk2MmIx
ZGNkNTQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGVQcm90b3R5cGUuY3BwCkBAIC0zNiwxNCArMzYsMjEgQEAgc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6ZSk7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3Ry
aW5nKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJCYXNlTmFtZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFycyk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJDb2xsYXRpb24pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbnMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xl
cyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyTnVtZXJpYyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW1zKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJMYW5ndWFnZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyU2NyaXB0KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24pOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlclRpbWVab25lcyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGV4dElu
Zm8pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlcldlZWtJbmZvKTsKIAogfQogCkBAIC02MCwxNCArNjcsMjEgQEAgY29uc3QgQ2xhc3NJ
bmZvIEludGxMb2NhbGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuTG9jYWxlIiwgJkJhc2U6
OnNfaW5mbywgJmwKICAgdG9TdHJpbmcgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1Rv
U3RyaW5nICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCiAgIGJhc2VOYW1lICAgICAgICAg
SW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lICAgICAgICAgRG9udEVudW18QWNjZXNz
b3IKICAgY2FsZW5kYXIgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIg
ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBjYWxlbmRhcnMgICAgICAgIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDYWxlbmRhcnMgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCiAgIGNhc2VG
aXJzdCAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IKICAgY29sbGF0aW9uICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ29sbGF0aW9uICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBjb2xsYXRpb25zICAgICAg
IEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb25zICAgICAgIERvbnRFbnVtfEFjY2Vz
c29yCiAgIGhvdXJDeWNsZSAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNs
ZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgaG91ckN5Y2xlcyAgICAgICBJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVySG91ckN5Y2xlcyAgICAgICBEb250RW51bXxBY2Nlc3NvcgogICBudW1l
cmljICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljICAgICAgICAgIERv
bnRFbnVtfEFjY2Vzc29yCiAgIG51bWJlcmluZ1N5c3RlbSAgSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlck51bWJlcmluZ1N5c3RlbSAgRG9udEVudW18QWNjZXNzb3IKKyAgbnVtYmVyaW5nU3lzdGVt
cyBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtcyBEb250RW51bXxBY2Nl
c3NvcgogICBsYW5ndWFnZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFn
ZSAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCiAgIHNjcmlwdCAgICAgICAgICAgSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlclNjcmlwdCAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKICAgcmVn
aW9uICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uICAgICAgICAgICBE
b250RW51bXxBY2Nlc3NvcgorICB0aW1lWm9uZXMgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJUaW1lWm9uZXMgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIHRleHRJbmZvICAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclRleHRJbmZvICAgICAgICAgRG9udEVudW18QWNj
ZXNzb3IKKyAgd2Vla0luZm8gICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyV2Vla0lu
Zm8gICAgICAgICBEb250RW51bXxBY2Nlc3NvcgogQGVuZAogKi8KIApAQCAtMTY5LDYgKzE4Mywx
OSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNh
bGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGVuZGFyLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpz
U3RyaW5nKHZtLCBjYWxlbmRhcikpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LWludGwtbG9jYWxlLWluZm8vI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXJzCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFy
cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2Fz
dDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9j
YWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFycyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT5jYWxlbmRhcnMoZ2xv
YmFsT2JqZWN0KSkpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwu
TG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewpAQCAtMTk3LDYgKzIyNCwxOSBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNvbGxhdGlvbi5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2
bSwgY29sbGF0aW9uKSkpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1s
b2NhbGUtaW5mby8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb25zCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbnMsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPmNvbGxhdGlvbnMoZ2xvYmFs
T2JqZWN0KSkpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9j
YWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewpAQCAtMjExLDYgKzI1MSwxOSBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGhvdXJDeWNsZS5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwg
aG91ckN5Y2xlKSkpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2Nh
bGUtaW5mby8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyY3ljbGVzCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZXMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExv
Y2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
TG9jYWxlLnByb3RvdHlwZS5ob3VyQ3ljbGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPmhvdXJDeWNsZXMoZ2xvYmFsT2Jq
ZWN0KSkpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxl
LnByb3RvdHlwZS5udW1lcmljCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0yMzgsNiArMjkxLDE5IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCAoSlNH
bG9iYWxPYmplCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
bnVtYmVyaW5nU3lzdGVtLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBu
dW1iZXJpbmdTeXN0ZW0pKSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRs
LWxvY2FsZS1pbmZvLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbXMK
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVy
aW5nU3lzdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbXMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9z
KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2Fs
ZS0+bnVtYmVyaW5nU3lzdGVtcyhnbG9iYWxPYmplY3QpKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewpAQCAt
MjgwLDQgKzM0Niw0MyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlclJlZ2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlZ2lvbi5pc0VtcHR5KCkgPyBqc1VuZGVm
aW5lZCgpIDoganNTdHJpbmcodm0sIHJlZ2lvbikpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLWludGwtbG9jYWxlLWluZm8vI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUudGlt
ZXpvbmVzCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUdldHRl
clRpbWVab25lcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRpbWVab25lcyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT50aW1l
Wm9uZXMoZ2xvYmFsT2JqZWN0KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
aW50bC1sb2NhbGUtaW5mby8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS50ZXh0SW5mbworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJUZXh0SW5mbywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJ
bnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxl
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5Mb2NhbGUucHJvdG90eXBlLnRleHRJbmZvIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPnRleHRJbmZvKGdsb2JhbE9i
amVjdCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbG9jYWxlLWlu
Zm8vI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUud2Vla0luZm8KK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyV2Vla0luZm8sIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnBy
b3RvdHlwZS53ZWVrSW5mbyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT53ZWVrSW5mbyhnbG9iYWxPYmplY3QpKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCAwMGE3ODkyMWYwZTMzMWYyOWNjNjlhOTZjN2FjM2JlYWQxYzg4
ZmZkLi5lYjgyOTllNmUwZTIzMjMyM2U2NTg0ZWU5NjY0MTVmNTQ4OWE0NWY4IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDIxLTA3LTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gSW50bCBMb2NhbGUgSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTA3LTEw
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBk
YXRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCBhMzFjZGZlOWRlNjc2MmE1ZDE1ZWU5NDUw
ZTcwMWM0YzdmZDBkMWIyLi4yNDU5ZTY1ZGM3NzMyZGQyNjc5MDdkNmE3N2RkMGQzMGQ4ZWU1NmYz
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yNCw3ICsyNCw2IEBAIHNraXA6CiAgICAgLSByZWdleHAt
bG9va2JlaGluZAogICAgIC0gbGVnYWN5LXJlZ2V4cAogICAgIC0gY2xlYW51cFNvbWUKLSAgICAt
IEludGwuTG9jYWxlLWluZm8KICAgICAtIHJlc2l6YWJsZS1hcnJheWJ1ZmZlcgogICAgIC0gT2Jq
ZWN0Lmhhc093bgogICAgIC0gVGVtcG9yYWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435117</attachid>
            <date>2021-08-06 23:07:44 -0700</date>
            <delta_ts>2021-08-20 00:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227830-20210806230743.patch</filename>
            <type>text/plain</type>
            <size>26986</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi42NmZkMjdiMWNlNWJiM2Iy
YWMzNTMyYjRhOThhNzlmMzQ3YjE1NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMS0wOC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwgTG9jYWxlIEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzgzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBJbnRsLkxv
Y2FsZSdzIGV4dGVuc2lvbiAoSW50bCBMb2NhbGUgSW5mbyBwcm9wb3NhbClbMV0sIHdoaWNoIGlz
IGFscmVhZHkgc3RhZ2UgMy4KKyAgICAgICAgSW50bC5Mb2NhbGUje2NhbGVuZGFycyxjb2xsYXRp
b25zLGhvdXJDeWNsZXMsbnVtYmVyaW5nU3lzdGVtcyx0aW1lWm9uZXN9IGNhbiByZXR1cm4gYXJy
YXkgb2YgcHJlZmVycmVkCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnaXZlbiBsb2Nh
bGUuIEFuZCBJbnRsLkxvY2FsZSN0ZXh0SW5mbyBjYW4gcmV0dXJuIHRleHQgbGF5b3V0IGRpcmVj
dGlvbiBhbmQgSW50bC5Mb2NhbGUjd2Vla0luZm8KKyAgICAgICAgY2FuIHJldHVybiB3ZWVrZGF5
IGluZm9ybWF0aW9uIChlLmcuIHdoZW4gd2Vla2VuZCBzdGFydHMpLgorCisgICAgICAgIFsxXTog
aHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaW50bC1sb2NhbGUtaW5mbworCisgICAg
ICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQXJyYXlG
cm9tU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y2FsZW5kYXJzKToK
KyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y29sbGF0aW9ucyk6CisgICAgICAgIChKU0M6Oklu
dGxMb2NhbGU6OmhvdXJDeWNsZXMpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpudW1iZXJp
bmdTeXN0ZW1zKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6dGltZVpvbmVzKToKKyAgICAg
ICAgKEpTQzo6SW50bExvY2FsZTo6dGV4dEluZm8pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
Ojp3ZWVrSW5mbyk6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKwogMjAyMS0wOC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBvbiBEZWJ1ZyBidWls
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCBl
YWQ2NjMxMGYwYzk5MDUwZTI0OTA1YTZmZTA3NDNmODQwNzBhNmU4Li4yODI1YTY5ZjdjZTFhYTdk
MWEzODk5NDk0MDYzNTZlZTJjM2I1NmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlLmNwcApAQCAtMjksNyArMjksMTIgQEAKIAogI2luY2x1ZGUgIkludGxP
YmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHVuaWNv
ZGUvdWNhbC5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2luY2x1ZGUgPHVuaWNvZGUv
dWRhdC5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWRhdHBnLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91
bG9jLmg+CisjaW5jbHVkZSA8dW5pY29kZS91bnVtc3lzLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MzIsNCArNTM3LDM0
OCBAQCBUcmlTdGF0ZSBJbnRsTG9jYWxlOjpudW1lcmljKCkKICAgICByZXR1cm4gbV9udW1lcmlj
OwogfQogCitzdGF0aWMgaW5saW5lIEpTQXJyYXkqIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3Rv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWZWN0b3I8U3RyaW5nLCAxPiYmIGVsZW1l
bnRzKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU0FycmF5KiByZXN1bHQgPSBKU0Fy
cmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCBlbGVtZW50cy5zaXpl
KCkpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGVsZW1lbnRzLnNpemUoKTsgKytpbmRl
eCkgeworICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgs
IGpzU3RyaW5nKHZtLCBXVEZNb3ZlKGVsZW1lbnRzW2luZGV4XSkpKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworSlNBcnJheSogSW50bExvY2FsZTo6Y2FsZW5kYXJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFZlY3RvcjxTdHJpbmcsIDE+IGVs
ZW1lbnRzOworCisgICAgU3RyaW5nIHByZWZlcnJlZCA9IGNhbGVuZGFyKCk7CisgICAgaWYgKCFw
cmVmZXJyZWQuaXNFbXB0eSgpKSB7CisgICAgICAgIGVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKHBy
ZWZlcnJlZCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5
RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAg
fQorCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgY29uc3RleHBy
IGJvb2wgY29tbW9ubHlVc2VkID0gdHJ1ZTsKKyAgICBhdXRvIGNhbGVuZGFycyA9IHN0ZDo6dW5p
cXVlX3B0cjxVRW51bWVyYXRpb24sIElDVURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1Y2FsX2dldEtl
eXdvcmRWYWx1ZXNGb3JMb2NhbGUoImNhbGVuZGFyIiwgbV9sb2NhbGVJRC5kYXRhKCksIGNvbW1v
bmx5VXNlZCwgJnN0YXR1cykpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9z
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaW50MzJfdCBsZW5ndGg7
CisgICAgY29uc3QgY2hhciogY2FsZW5kYXI7CisgICAgd2hpbGUgKChjYWxlbmRhciA9IHVlbnVt
X25leHQoY2FsZW5kYXJzLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKSkgJiYgVV9TVUNDRVNTKHN0
YXR1cykpIHsKKyAgICAgICAgLy8gRW5zdXJlIGFsaWFzZXMgdXNlZCBpbiBsYW5ndWFnZSB0YWcg
YXJlIGFsbG93ZWQuCisgICAgICAgIGlmICghc3RyY21wKGNhbGVuZGFyLCAiZ3JlZ29yaWFuIikp
CisgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoImdyZWdvcnkiX3MpOworICAgICAgICBlbHNl
IGlmICghc3RyY21wKGNhbGVuZGFyLCAiaXNsYW1pYy1jaXZpbCIpKQorICAgICAgICAgICAgZWxl
bWVudHMuYXBwZW5kKCJpc2xhbWljYyJfcyk7CisgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoY2Fs
ZW5kYXIsICJldGhpb3BpYy1hbWV0ZS1hbGVtIikpCisgICAgICAgICAgICBlbGVtZW50cy5hcHBl
bmQoImV0aGlvYWEiX3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbGVtZW50cy5jb25z
dHJ1Y3RBbmRBcHBlbmQoY2FsZW5kYXIsIGxlbmd0aCk7CisgICAgfQorICAgIGlmICghVV9TVUND
RVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0
b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworfQorCitKU0FycmF5KiBJbnRs
TG9jYWxlOjpjb2xsYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIFZlY3RvcjxTdHJpbmcsIDE+IGVsZW1lbnRzOworCisgICAg
U3RyaW5nIHByZWZlcnJlZCA9IGNvbGxhdGlvbigpOworICAgIGlmICghcHJlZmVycmVkLmlzRW1w
dHkoKSkgeworICAgICAgICBlbGVtZW50cy5hcHBlbmQoV1RGTW92ZShwcmVmZXJyZWQpKTsKKyAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0
b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworICAgIH0KKworICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGNvbnN0ZXhwciBib29sIGNvbW1vbmx5
VXNlZCA9IHRydWU7CisgICAgYXV0byBlbnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxVRW51
bWVyYXRpb24sIElDVURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1Y29sX2dldEtleXdvcmRWYWx1ZXNG
b3JMb2NhbGUoImNvbGxhdGlvbiIsIG1fbG9jYWxlSUQuZGF0YSgpLCBjb21tb25seVVzZWQsICZz
dGF0dXMpKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGludDMyX3QgbGVuZ3RoOworICAgIGNvbnN0
IGNoYXIqIGNvbGxhdGlvbjsKKyAgICB3aGlsZSAoKGNvbGxhdGlvbiA9IHVlbnVtX25leHQoZW51
bWVyYXRpb24uZ2V0KCksICZsZW5ndGgsICZzdGF0dXMpKSAmJiBVX1NVQ0NFU1Moc3RhdHVzKSkg
eworICAgICAgICAvLyAxLjEuMyBzdGVwIDQsIFRoZSB2YWx1ZXMgInN0YW5kYXJkIiBhbmQgInNl
YXJjaCIgbXVzdCBiZSBleGNsdWRlZCBmcm9tIGxpc3QuCisgICAgICAgIGlmICghc3RyY21wKGNv
bGxhdGlvbiwgInN0YW5kYXJkIikgfHwgIXN0cmNtcChjb2xsYXRpb24sICJzZWFyY2giKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIE1hcCBrZXl3b3JkIHZhbHVlcyB0byBC
Q1AgNDcgZXF1aXZhbGVudHMuCisgICAgICAgIGlmICghc3RyY21wKGNvbGxhdGlvbiwgImRpY3Rp
b25hcnkiKSkKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiZGljdCJfcyk7CisgICAgICAg
IGVsc2UgaWYgKCFzdHJjbXAoY29sbGF0aW9uLCAiZ2IyMzEyaGFuIikpCisgICAgICAgICAgICBl
bGVtZW50cy5hcHBlbmQoImdiMjMxMiJfcyk7CisgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoY29s
bGF0aW9uLCAicGhvbmVib29rIikpCisgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoInBob25l
YmsiX3MpOworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNvbGxhdGlvbiwgInRyYWRpdGlvbmFs
IikpCisgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoInRyYWQiX3MpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBlbGVtZW50cy5jb25zdHJ1Y3RBbmRBcHBlbmQoY29sbGF0aW9uLCBsZW5n
dGgpOworICAgIH0KKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVt
ZW50cykpKTsKK30KKworSlNBcnJheSogSW50bExvY2FsZTo6aG91ckN5Y2xlcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBWZWN0b3I8
U3RyaW5nLCAxPiBlbGVtZW50czsKKworICAgIFN0cmluZyBwcmVmZXJyZWQgPSBob3VyQ3ljbGUo
KTsKKyAgICBpZiAoIXByZWZlcnJlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWxlbWVudHMuYXBw
ZW5kKFdURk1vdmUocHJlZmVycmVkKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVt
ZW50cykpKTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBhdXRvIGdlbmVyYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZVRpbWVQYXR0ZXJuR2Vu
ZXJhdG9yLCBJQ1VEZWxldGVyPHVkYXRwZ19jbG9zZT4+KHVkYXRwZ19vcGVuKG1fbG9jYWxlSUQu
ZGF0YSgpLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFVzZSAiaiIgc2tlbGV0b24gYW5kIHBhcnNlIHBhdHRl
cm4gdG8gcmV0cmlldmUgdGhlIGNvbmZpZ3VyZWQgaG91ci1jeWNsZSBpbmZvcm1hdGlvbi4KKyAg
ICBjb25zdGV4cHIgY29uc3QgVUNoYXIgc2tlbGV0b25bXSA9IHsgJ2onLCAwIH07CisgICAgVmVj
dG9yPFVDaGFyLCAzMj4gcGF0dGVybjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odWRhdHBnX2dldEJlc3RQYXR0ZXJuV2l0aE9wdGlvbnMsIGdlbmVyYXRvci5nZXQo
KSwgc2tlbGV0b24sIDEsIFVEQVRQR19NQVRDSF9IT1VSX0ZJRUxEX0xFTkdUSCwgcGF0dGVybik7
CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0dGVybi5z
aXplKCk7ICsraSkgeworICAgICAgICBVQ2hhciBjdXJyZW50Q2hhcmFjdGVyID0gcGF0dGVybltp
XTsKKyAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3RlcikpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDE7CisgICAgICAgIHdo
aWxlIChpICsgMSA8IHBhdHRlcm4uc2l6ZSgpICYmIHBhdHRlcm5baSArIDFdID09IGN1cnJlbnRD
aGFyYWN0ZXIpIHsKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgICAgICArK2k7CisgICAg
ICAgIH0KKworICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyYWN0ZXIpIHsKKyAgICAgICAgY2Fz
ZSAnaCc6IHsKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiaDEyIl9zKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9y
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKKyAgICAgICAgfQorICAgICAgICBj
YXNlICdIJzogeworICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMjMiX3MpOworICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0
b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworICAgICAgICB9CisgICAgICAg
IGNhc2UgJ2snOiB7CisgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgyNCJfcyk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1Zl
Y3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSAnSyc6IHsKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiaDExIl9zKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5n
VmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKKyAgICAgICAgfQorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3Rvcihn
bG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7Cit9CisKK0pTQXJyYXkqIEludGxMb2Nh
bGU6Om51bWJlcmluZ1N5c3RlbXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZywgMT4gZWxlbWVudHM7CisgICAg
U3RyaW5nIHByZWZlcnJlZCA9IG51bWJlcmluZ1N5c3RlbSgpOworICAgIGlmICghcHJlZmVycmVk
LmlzRW1wdHkoKSkgeworICAgICAgICBlbGVtZW50cy5hcHBlbmQoV1RGTW92ZShwcmVmZXJyZWQp
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJp
bmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworICAgIH0KKworICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gbnVtYmVyaW5nU3lz
dGVtID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJpbmdTeXN0ZW0sIElDVURlbGV0ZXI8dW51bXN5
c19jbG9zZT4+KHVudW1zeXNfb3BlbihtX2xvY2FsZUlELmRhdGEoKSwgJnN0YXR1cykpOworICAg
IGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIGVsZW1lbnRzLmFwcGVuZCh1bnVtc3lzX2dldE5hbWUobnVtYmVyaW5n
U3lzdGVtLmdldCgpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFy
cmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7Cit9
CisKK0pTVmFsdWUgSW50bExvY2FsZTo6dGltZVpvbmVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFZlY3RvcjxTdHJpbmcsIDE+IGVs
ZW1lbnRzOworCisgICAgLy8gMTEuNi0zIExldCByZWdpb24gYmUgdGhlIHN1YnN0cmluZyBvZiBs
b2NhbGUgY29ycmVzcG9uZGluZyB0byB0aGUgdW5pY29kZV9yZWdpb25fc3VidGFnIHByb2R1Y3Rp
b24gb2YgdGhlIHVuaWNvZGVfbGFuZ3VhZ2VfaWQuCisgICAgU3RyaW5nIHJlZ2lvbiA9IHRoaXMt
PnJlZ2lvbigpOworICAgIGlmIChyZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IGF1dG8gZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxl
dGVyPHVlbnVtX2Nsb3NlPj4odWNhbF9vcGVuVGltZVpvbmVJREVudW1lcmF0aW9uKFVDQUxfWk9O
RV9UWVBFX0NBTk9OSUNBTCwgcmVnaW9uLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMp
KTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorCisgICAgaW50MzJfdCBsZW5ndGg7CisgICAgY29uc3QgY2hhciogY29s
bGF0aW9uOworICAgIHdoaWxlICgoY29sbGF0aW9uID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5n
ZXQoKSwgJmxlbmd0aCwgJnN0YXR1cykpICYmIFVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBl
bGVtZW50cy5jb25zdHJ1Y3RBbmRBcHBlbmQoY29sbGF0aW9uLCBsZW5ndGgpOworICAgIGlmICgh
VV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1Zl
Y3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7Cit9CisKK0pTT2JqZWN0KiBJ
bnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBVTGF5b3V0VHlwZSBsYXlvdXQgPSB1bG9jX2dldENoYXJhY3Rlck9yaWVudGF0aW9uKG1f
bG9jYWxlSUQuZGF0YSgpLCAmc3RhdHVzKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIEpTU3RyaW5n
KiBsYXlvdXRTdHJpbmcgPSBudWxscHRyOworICAgIHN3aXRjaCAobGF5b3V0KSB7CisgICAgZGVm
YXVsdDoKKyAgICBjYXNlIFVMT0NfTEFZT1VUX0xUUjoKKyAgICAgICAgbGF5b3V0U3RyaW5nID0g
anNTdHJpbmcodm0sICJsdHIiX3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVMT0NfTEFZ
T1VUX1JUTDoKKyAgICAgICAgbGF5b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJydGwiX3MpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFVMT0NfTEFZT1VUX1RUQjoKKyAgICAgICAgbGF5b3V0
U3RyaW5nID0ganNTdHJpbmcodm0sICJ0dGIiX3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFVMT0NfTEFZT1VUX0JUVDoKKyAgICAgICAgbGF5b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJi
dHQiX3MpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRpcmVjdGlvbiIpLCBsYXlvdXRTdHJp
bmcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTT2JqZWN0KiBJbnRsTG9jYWxlOjp3ZWVr
SW5mbyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGNhbGVu
ZGFyID0gc3RkOjp1bmlxdWVfcHRyPFVDYWxlbmRhciwgSUNVRGVsZXRlcjx1Y2FsX2Nsb3NlPj4o
dWNhbF9vcGVuKG51bGxwdHIsIDAsIG1fbG9jYWxlSUQuZGF0YSgpLCBVQ0FMX0RFRkFVTFQsICZz
dGF0dXMpKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGludDMyX3QgZmlyc3REYXlPZldlZWsgPSB1
Y2FsX2dldEF0dHJpYnV0ZShjYWxlbmRhci5nZXQoKSwgVUNBTF9GSVJTVF9EQVlfT0ZfV0VFSyk7
CisgICAgaW50MzJfdCBtaW5pbWFsRGF5cyA9IHVjYWxfZ2V0QXR0cmlidXRlKGNhbGVuZGFyLmdl
dCgpLCBVQ0FMX01JTklNQUxfREFZU19JTl9GSVJTVF9XRUVLKTsKKworICAgIGF1dG8gY2Fub25p
Y2FsaXplRGF5T2ZXZWVrVHlwZSA9IFtdKFVDYWxlbmRhcldlZWtkYXlUeXBlIHR5cGUpIHsKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIC8vIFVDQUxfV0VFS0VORF9PTlNFVCBpcyBh
IGRheSB0aGF0IHN0YXJ0cyBhcyBhIHdlZWtkYXkgYW5kIHRyYW5zaXRpb25zIHRvIHRoZSB3ZWVr
ZW5kLiBJdCBtZWFucyB0aGlzIGlzIFdlZWtEYXkuCisgICAgICAgIGNhc2UgVUNBTF9XRUVLRU5E
X09OU0VUOgorICAgICAgICBjYXNlIFVDQUxfV0VFS0RBWToKKyAgICAgICAgICAgIHJldHVybiBV
Q0FMX1dFRUtEQVk7CisgICAgICAgIC8vIFVDQUxfV0VFS0VORF9DRUFTRSBpcyBhIGRheSB0aGF0
IHN0YXJ0cyBhcyB0aGUgd2Vla2VuZCBhbmQgdHJhbnNpdGlvbnMgdG8gYSB3ZWVrZGF5LiBJdCBt
ZWFucyB0aGlzIGlzIFdlZWtFbmQuCisgICAgICAgIGNhc2UgVUNBTF9XRUVLRU5EX0NFQVNFOgor
ICAgICAgICBjYXNlIFVDQUxfV0VFS0VORDoKKyAgICAgICAgICAgIHJldHVybiBVQ0FMX1dFRUtF
TkQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gVUNBTF9XRUVLRU5EOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBVQ0FMX1dFRUtFTkQ7CisgICAgfTsKKworICAgIHN0
YXRpY19hc3NlcnQoVUNBTF9TVU5EQVkgPT0gMSk7CisgICAgc3RhdGljX2Fzc2VydChVQ0FMX1NB
VFVSREFZID09IDcpOworICAgIFVDYWxlbmRhcldlZWtkYXlUeXBlIHByZXZpb3VzID0gY2Fub25p
Y2FsaXplRGF5T2ZXZWVrVHlwZSh1Y2FsX2dldERheU9mV2Vla1R5cGUoY2FsZW5kYXIuZ2V0KCks
IFVDQUxfU0FUVVJEQVksICZzdGF0dXMpKTsKKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGludDMyX3Qg
d2Vla2VuZFN0YXJ0ID0gMDsKKyAgICBpbnQzMl90IHdlZWtlbmRFbmQgPSAwOworICAgIGZvciAo
aW50MzJfdCBkYXkgPSBVQ0FMX1NVTkRBWTsgZGF5IDw9IFVDQUxfU0FUVVJEQVk7ICsrZGF5KSB7
CisgICAgICAgIFVDYWxlbmRhcldlZWtkYXlUeXBlIHR5cGUgPSBjYW5vbmljYWxpemVEYXlPZldl
ZWtUeXBlKHVjYWxfZ2V0RGF5T2ZXZWVrVHlwZShjYWxlbmRhci5nZXQoKSwgc3RhdGljX2Nhc3Q8
VUNhbGVuZGFyRGF5c09mV2Vlaz4oZGF5KSwgJnN0YXR1cykpOworICAgICAgICBpZiAoIVVfU1VD
Q0VTUyhzdGF0dXMpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByZXZpb3VzICE9IHR5cGUpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBVQ0FMX1dFRUtEQVk6IC8vIFdlZWtF
bmQgPT4gV2Vla0RheQorICAgICAgICAgICAgICAgIGlmIChkYXkgPT0gVUNBTF9TVU5EQVkpCisg
ICAgICAgICAgICAgICAgICAgIHdlZWtlbmRFbmQgPSBVQ0FMX1NBVFVSREFZOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgd2Vla2VuZEVuZCA9IGRheSAtIDE7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFVDQUxfV0VFS0VORDogLy8g
V2Vla0RheSA9PiBXZWVrRW5kCisgICAgICAgICAgICAgICAgd2Vla2VuZFN0YXJ0ID0gZGF5Owor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcmV2aW91cyA9IHR5cGU7CisgICAgfQorCisg
ICAgYXV0byBjb252ZXJ0VUNhbGVuZGFyRGF5c09mV2Vla1RvTW9uZGF5QmFzZWREYXkgPSBbXShp
bnQzMl90IGRheSkgLT4gaW50MzJfdCB7CisgICAgICAgIC8vIENvbnZlcnQgZnJvbQorICAgICAg
ICAvLyAgICAgU3VuZGF5ID0+IDEKKyAgICAgICAgLy8gICAgIFNhdHVyZGF5ID0+IDcKKyAgICAg
ICAgLy8gdG8KKyAgICAgICAgLy8gICAgIE1vbmRheSA9PiAxCisgICAgICAgIC8vICAgICBTdW5k
YXkgPT4gNworICAgICAgICBpZiAoZGF5ID09IFVDQUxfU1VOREFZKQorICAgICAgICAgICAgcmV0
dXJuIDc7CisgICAgICAgIHJldHVybiBkYXkgLSAxOworICAgIH07CisKKyAgICBKU09iamVjdCog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpcnN0RGF5IiksIGpz
TnVtYmVyKGNvbnZlcnRVQ2FsZW5kYXJEYXlzT2ZXZWVrVG9Nb25kYXlCYXNlZERheShmaXJzdERh
eU9mV2VlaykpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIndlZWtlbmRTdGFydCIpLCBqc051bWJlcihjb252ZXJ0VUNhbGVuZGFyRGF5c09m
V2Vla1RvTW9uZGF5QmFzZWREYXkod2Vla2VuZFN0YXJ0KSkpOworICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAid2Vla2VuZEVuZCIpLCBqc051bWJl
cihjb252ZXJ0VUNhbGVuZGFyRGF5c09mV2Vla1RvTW9uZGF5QmFzZWREYXkod2Vla2VuZEVuZCkp
KTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1pbmltYWxEYXlzIiksIGpzTnVtYmVyKG1pbmltYWxEYXlzKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlLmgKaW5kZXggMzE0Zjk0ZGE0YWI3ZDU1Njg0OTQ5MzMzYzIwYmVmODMxNGQz
ZGU0Ni4uOTZiNmQ5OWJjMTlmYTlmNzRjZmViY2YxZDI5MzY4NzVkZjIwZjliYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaApAQCAtNjksNiArNjksMTQgQEAg
Y2xhc3MgSW50bExvY2FsZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBj
b25zdCBTdHJpbmcmIG51bWJlcmluZ1N5c3RlbSgpOwogICAgIFRyaVN0YXRlIG51bWVyaWMoKTsK
IAorICAgIEpTQXJyYXkqIGNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCopOworICAgIEpTQXJyYXkq
IGNvbGxhdGlvbnMoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU0FycmF5KiBob3VyQ3ljbGVzKEpT
R2xvYmFsT2JqZWN0Kik7CisgICAgSlNBcnJheSogbnVtYmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9i
amVjdCopOworICAgIEpTVmFsdWUgdGltZVpvbmVzKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNP
YmplY3QqIHRleHRJbmZvKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNPYmplY3QqIHdlZWtJbmZv
KEpTR2xvYmFsT2JqZWN0Kik7CisKIHByaXZhdGU6CiAgICAgSW50bExvY2FsZShWTSYsIFN0cnVj
dHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKaW5kZXggMWE0
YzUyNjJmYWNiYjg0MDcyNzEwNTdlN2ZlYjc0MjllMjg4MTU3Zi4uOGJlMzJlNzNhYzZkMzVhZmNi
YjMzMzA0ZWY4MWExNDYxYmE1MzUxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKQEAgLTM2LDE0ICszNiwyMSBAQCBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01p
bmltaXplKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90
b3R5cGVGdW5jVG9TdHJpbmcpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7CitzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXJz
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJDYXNlRmlyc3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlckNvbGxhdGlvbik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9ucyk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xl
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJIb3VyQ3ljbGVzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0pOworc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJl
cmluZ1N5c3RlbXMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlckxhbmd1YWdlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbik7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGltZVpv
bmVzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJUZXh0SW5mbyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyV2Vla0luZm8pOwogCiB9CiAKQEAgLTYwLDE0ICs2NywyMSBA
QCBjb25zdCBDbGFzc0luZm8gSW50bExvY2FsZVByb3RvdHlwZTo6c19pbmZvID0geyAiSW50bC5M
b2NhbGUiLCAmQmFzZTo6c19pbmZvLCAmbAogICB0b1N0cmluZyAgICAgICAgIEludGxMb2NhbGVQ
cm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgYmFz
ZU5hbWUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUgICAgICAgICBE
b250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBjYWxlbmRhciAgICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCisgIGNhbGVuZGFycyAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNhbGVuZGFycyAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAgY2Fz
ZUZpcnN0ICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0ICAgICAgICBE
b250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBjb2xsYXRpb24gICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24gICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCisgIGNvbGxhdGlvbnMgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNvbGxhdGlvbnMgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAgaG91
ckN5Y2xlICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlICAgICAgICBE
b250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBob3VyQ3ljbGVzICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGVzICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCiAgIG51bWVyaWMgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ck51bWVyaWMgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAgbnVt
YmVyaW5nU3lzdGVtICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtICBE
b250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBudW1iZXJpbmdTeXN0ZW1zIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW1zIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCiAgIGxhbmd1YWdlICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckxhbmd1YWdlICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKICAgc2Ny
aXB0ICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0ICAgICAgICAgICBE
b250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICByZWdpb24gICAgICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24gICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCisgIHRpbWVab25lcyAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
clRpbWVab25lcyAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgdGV4
dEluZm8gICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGV4dEluZm8gICAgICAgICBE
b250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICB3ZWVrSW5mbyAgICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJXZWVrSW5mbyAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCiBAZW5kCiAqLwogCkBAIC0xNjksNiArMTgzLDE5IEBAIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIsIChKU0dsb2Jh
bE9iamVjdCogZ2xvCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY2FsZW5kYXIuaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhbGVu
ZGFyKSkpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2NhbGUtaW5m
by8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhcnMKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXJzLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
ICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFycyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT5jYWxlbmRh
cnMoZ2xvYmFsT2JqZWN0KSkpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewpA
QCAtMTk3LDYgKzIyNCwxOSBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdGlvbi5pc051bGwoKSA/IGpz
VW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgY29sbGF0aW9uKSkpOwogfQogCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2NhbGUtaW5mby8jc2VjLUludGwuTG9jYWxlLnByb3Rv
dHlwZS5jb2xsYXRpb25zCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlckNvbGxhdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5w
cm90b3R5cGUuY29sbGF0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT5jb2xsYXRpb25zKGdsb2JhbE9iamVjdCkpKTsK
K30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5
cGUuaG91ckN5Y2xlCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKQEAgLTIxMSw2ICsyNTEsMTkgQEAg
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3lj
bGUsIChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShob3VyQ3ljbGUuaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJp
bmcodm0sIGhvdXJDeWNsZSkpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWlu
dGwtbG9jYWxlLWluZm8vI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91cmN5Y2xlcworSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGVz
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2Nh
bGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZXMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9j
YWxlIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGxvY2FsZS0+aG91ckN5Y2xlcyhnbG9iYWxPYmplY3QpKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMKIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYywgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKIHsKQEAgLTIzOCw2ICsyOTEsMTkgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0sIChKU0dsb2JhbE9iamUK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJpbmdT
eXN0ZW0uaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIG51bWJlcmluZ1N5
c3RlbSkpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbG9jYWxlLWlu
Zm8vI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtcworSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW1z
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2Nh
bGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5
c3RlbXMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgTG9jYWxlIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGxvY2FsZS0+bnVtYmVyaW5nU3lzdGVtcyhnbG9iYWxPYmplY3QpKSk7Cit9CisKIC8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1
YWdlCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxh
bmd1YWdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewpAQCAtMjgwLDQgKzM0Niw0MyBAQCBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHJlZ2lvbi5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIHJlZ2lv
bikpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbG9jYWxlLWluZm8v
I3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUudGltZXpvbmVzCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclRpbWVab25lcywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2Fz
dDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAo
IWxvY2FsZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS50aW1lWm9uZXMgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+dGltZVpvbmVz
KGdsb2JhbE9iamVjdCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwt
bG9jYWxlLWluZm8vI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUudGV4dEluZm8KK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGV4dEluZm8sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpz
RHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudGV4dEluZm8gY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsK
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+
dGV4dEluZm8oZ2xvYmFsT2JqZWN0KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1sb2NhbGUtaW5mby8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS53ZWVrSW5mbwor
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJXZWVrSW5m
bywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS53ZWVrSW5mbyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
bG9jYWxlLT53ZWVrSW5mbyhnbG9iYWxPYmplY3QpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCBiOTk4MjMxOGQ4ZTdlYzEyNTFkYTM4ZDEwOTQxNTFkNTRhNDM5OWU5Li5kZWZlYzEwZTQ5ZDEw
MzA2YjY3OTRlZTc0ZDBlZmI1ZTQwYmY5NTIyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA4LTA2ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW50bCBM
b2NhbGUgSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI3ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTA4LTA1ICBNaWtoYWlsIFIuIEdhZGVs
aGEgIDxtaWtoYWlsQGlnYWxpYS5jb20+CiAKICAgICAgICAgQXNzZXJ0aW9uIGZhaWx1cmUgd2hl
biBjaGVja2luZyBhcnJheSBpbiBERkcgKDMyIGJpdHMpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggY2Ji
ZWVmZjU2MjM3ZWUzMzg5NDBmNGZjMzY0OGYyMjZkMjhkOGI1Yi4uYWE1ZmIyZjZkMjkxNjg5MmZl
OWE1NmQ0YWNmZWQyNmYyYjE4OGNjNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjQsNyArMjQsNiBA
QCBza2lwOgogICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NDkzMQogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKICAgICAtIGNsZWFudXBTb21lCi0gICAgLSBJ
bnRsLkxvY2FsZS1pbmZvCiAgICAgLSByZXNpemFibGUtYXJyYXlidWZmZXIKICAgICAtIE9iamVj
dC5oYXNPd24KICAgICAtIFRlbXBvcmFsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435948</attachid>
            <date>2021-08-20 00:55:42 -0700</date>
            <delta_ts>2021-08-20 15:18:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227830-20210820005542.patch</filename>
            <type>text/plain</type>
            <size>33324</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MmVhZDM3YmE2NzJlYzNkMzE1M2QyNzZkYmUwOTUyYzRjNjUwNWI2Li4zYWMxNjU5ZmRhZTZlOGRm
NzVkNGMzOGUzNjRjNjI0NzY0NDAwYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMS0wOC0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludGwgTG9jYWxlIEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzgzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBJbnRsLkxv
Y2FsZSdzIGV4dGVuc2lvbiAoSW50bCBMb2NhbGUgSW5mbyBwcm9wb3NhbClbMV0sIHdoaWNoIGlz
IGFscmVhZHkgc3RhZ2UgMy4KKyAgICAgICAgSW50bC5Mb2NhbGUje2NhbGVuZGFycyxjb2xsYXRp
b25zLGhvdXJDeWNsZXMsbnVtYmVyaW5nU3lzdGVtcyx0aW1lWm9uZXN9IGNhbiByZXR1cm4gYXJy
YXkgb2YgcHJlZmVycmVkCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnaXZlbiBsb2Nh
bGUuIEFuZCBJbnRsLkxvY2FsZSN0ZXh0SW5mbyBjYW4gcmV0dXJuIHRleHQgbGF5b3V0IGRpcmVj
dGlvbiBhbmQgSW50bC5Mb2NhbGUjd2Vla0luZm8KKyAgICAgICAgY2FuIHJldHVybiB3ZWVrZGF5
IGluZm9ybWF0aW9uIChlLmcuIHdoZW4gd2Vla2VuZCBzdGFydHMpLgorCisgICAgICAgIFsxXTog
aHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaW50bC1sb2NhbGUtaW5mbworCisgICAg
ICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQXJyYXlG
cm9tU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y2FsZW5kYXJzKToK
KyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y29sbGF0aW9ucyk6CisgICAgICAgIChKU0M6Oklu
dGxMb2NhbGU6OmhvdXJDeWNsZXMpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpudW1iZXJp
bmdTeXN0ZW1zKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6dGltZVpvbmVzKToKKyAgICAg
ICAgKEpTQzo6SW50bExvY2FsZTo6dGV4dEluZm8pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
Ojp3ZWVrSW5mbyk6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKwogMjAyMS0wOC0xOSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEltcGxlbWVudCA6OmJhY2tkcm9wIHBzZXVkbyBlbGVtZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCmluZGV4IGVhZDY2MzEw
ZjBjOTkwNTBlMjQ5MDVhNmZlMDc0M2Y4NDA3MGE2ZTguLjI4MjVhNjlmN2NlMWFhN2QxYTM4OTk0
OTQwNjM1NmVlMmMzYjU2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxMb2NhbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGUuY3BwCkBAIC0yOSw3ICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiSW50bE9iamVjdElu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8dW5pY29kZS91Y2Fs
Lmg+CisjaW5jbHVkZSA8dW5pY29kZS91Y29sLmg+CisjaW5jbHVkZSA8dW5pY29kZS91ZGF0Lmg+
CisjaW5jbHVkZSA8dW5pY29kZS91ZGF0cGcuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4K
KyNpbmNsdWRlIDx1bmljb2RlL3VudW1zeXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3Uv
SUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUzMiw0ICs1MzcsMzQ4IEBAIFRy
aVN0YXRlIEludGxMb2NhbGU6Om51bWVyaWMoKQogICAgIHJldHVybiBtX251bWVyaWM7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgSlNBcnJheSogY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZlY3RvcjxTdHJpbmcsIDE+JiYgZWxlbWVudHMpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRy
eUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIGVsZW1lbnRzLnNpemUoKSk7Cisg
ICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgZWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwganNTdHJp
bmcodm0sIFdURk1vdmUoZWxlbWVudHNbaW5kZXhdKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0Fy
cmF5KiBJbnRsTG9jYWxlOjpjYWxlbmRhcnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZywgMT4gZWxlbWVudHM7
CisKKyAgICBTdHJpbmcgcHJlZmVycmVkID0gY2FsZW5kYXIoKTsKKyAgICBpZiAoIXByZWZlcnJl
ZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUocHJlZmVycmVk
KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3Ry
aW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKKyAgICB9CisKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBjb25zdGV4cHIgYm9vbCBj
b21tb25seVVzZWQgPSB0cnVlOworICAgIGF1dG8gY2FsZW5kYXJzID0gc3RkOjp1bmlxdWVfcHRy
PFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5d29yZFZh
bHVlc0ZvckxvY2FsZSgiY2FsZW5kYXIiLCBtX2xvY2FsZUlELmRhdGEoKSwgY29tbW9ubHlVc2Vk
LCAmc3RhdHVzKSk7CisgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpbnQzMl90IGxlbmd0aDsKKyAgICBj
b25zdCBjaGFyKiBjYWxlbmRhcjsKKyAgICB3aGlsZSAoKGNhbGVuZGFyID0gdWVudW1fbmV4dChj
YWxlbmRhcnMuZ2V0KCksICZsZW5ndGgsICZzdGF0dXMpKSAmJiBVX1NVQ0NFU1Moc3RhdHVzKSkg
eworICAgICAgICAvLyBFbnN1cmUgYWxpYXNlcyB1c2VkIGluIGxhbmd1YWdlIHRhZyBhcmUgYWxs
b3dlZC4KKyAgICAgICAgaWYgKCFzdHJjbXAoY2FsZW5kYXIsICJncmVnb3JpYW4iKSkKKyAgICAg
ICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiZ3JlZ29yeSJfcyk7CisgICAgICAgIGVsc2UgaWYgKCFz
dHJjbXAoY2FsZW5kYXIsICJpc2xhbWljLWNpdmlsIikpCisgICAgICAgICAgICBlbGVtZW50cy5h
cHBlbmQoImlzbGFtaWNjIl9zKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChjYWxlbmRhciwg
ImV0aGlvcGljLWFtZXRlLWFsZW0iKSkKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiZXRo
aW9hYSJfcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsZW1lbnRzLmNvbnN0cnVjdEFu
ZEFwcGVuZChjYWxlbmRhciwgbGVuZ3RoKTsKKyAgICB9CisgICAgaWYgKCFVX1NVQ0NFU1Moc3Rh
dHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52
YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9i
YWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7Cit9CisKK0pTQXJyYXkqIEludGxMb2NhbGU6
OmNvbGxhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZywgMT4gZWxlbWVudHM7CisKKyAgICBTdHJpbmcg
cHJlZmVycmVkID0gY29sbGF0aW9uKCk7CisgICAgaWYgKCFwcmVmZXJyZWQuaXNFbXB0eSgpKSB7
CisgICAgICAgIGVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZWZlcnJlZCkpOworICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9i
YWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAgfQorCisgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgY29uc3RleHByIGJvb2wgY29tbW9ubHlVc2VkID0g
dHJ1ZTsKKyAgICBhdXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlv
biwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjb2xfZ2V0S2V5d29yZFZhbHVlc0ZvckxvY2Fs
ZSgiY29sbGF0aW9uIiwgbV9sb2NhbGVJRC5kYXRhKCksIGNvbW1vbmx5VXNlZCwgJnN0YXR1cykp
OworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgaW50MzJfdCBsZW5ndGg7CisgICAgY29uc3QgY2hhciog
Y29sbGF0aW9uOworICAgIHdoaWxlICgoY29sbGF0aW9uID0gdWVudW1fbmV4dChlbnVtZXJhdGlv
bi5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1cykpICYmIFVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAg
ICAgIC8vIDEuMS4zIHN0ZXAgNCwgVGhlIHZhbHVlcyAic3RhbmRhcmQiIGFuZCAic2VhcmNoIiBt
dXN0IGJlIGV4Y2x1ZGVkIGZyb20gbGlzdC4KKyAgICAgICAgaWYgKCFzdHJjbXAoY29sbGF0aW9u
LCAic3RhbmRhcmQiKSB8fCAhc3RyY21wKGNvbGxhdGlvbiwgInNlYXJjaCIpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgLy8gTWFwIGtleXdvcmQgdmFsdWVzIHRvIEJDUCA0NyBl
cXVpdmFsZW50cy4KKyAgICAgICAgaWYgKCFzdHJjbXAoY29sbGF0aW9uLCAiZGljdGlvbmFyeSIp
KQorICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJkaWN0Il9zKTsKKyAgICAgICAgZWxzZSBp
ZiAoIXN0cmNtcChjb2xsYXRpb24sICJnYjIzMTJoYW4iKSkKKyAgICAgICAgICAgIGVsZW1lbnRz
LmFwcGVuZCgiZ2IyMzEyIl9zKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChjb2xsYXRpb24s
ICJwaG9uZWJvb2siKSkKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgicGhvbmViayJfcyk7
CisgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoY29sbGF0aW9uLCAidHJhZGl0aW9uYWwiKSkKKyAg
ICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgidHJhZCJfcyk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGVsZW1lbnRzLmNvbnN0cnVjdEFuZEFwcGVuZChjb2xsYXRpb24sIGxlbmd0aCk7Cisg
ICAgfQorICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVh
dGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkp
OworfQorCitKU0FycmF5KiBJbnRsTG9jYWxlOjpob3VyQ3ljbGVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFZlY3RvcjxTdHJpbmcs
IDE+IGVsZW1lbnRzOworCisgICAgU3RyaW5nIHByZWZlcnJlZCA9IGhvdXJDeWNsZSgpOworICAg
IGlmICghcHJlZmVycmVkLmlzRW1wdHkoKSkgeworICAgICAgICBlbGVtZW50cy5hcHBlbmQoV1RG
TW92ZShwcmVmZXJyZWQpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVh
dGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkp
OworICAgIH0KKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1
dG8gZ2VuZXJhdG9yID0gc3RkOjp1bmlxdWVfcHRyPFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3Is
IElDVURlbGV0ZXI8dWRhdHBnX2Nsb3NlPj4odWRhdHBnX29wZW4obV9sb2NhbGVJRC5kYXRhKCks
ICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgLy8gVXNlICJqIiBza2VsZXRvbiBhbmQgcGFyc2UgcGF0dGVybiB0byBy
ZXRyaWV2ZSB0aGUgY29uZmlndXJlZCBob3VyLWN5Y2xlIGluZm9ybWF0aW9uLgorICAgIGNvbnN0
ZXhwciBjb25zdCBVQ2hhciBza2VsZXRvbltdID0geyAnaicsIDAgfTsKKyAgICBWZWN0b3I8VUNo
YXIsIDMyPiBwYXR0ZXJuOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bih1ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucywgZ2VuZXJhdG9yLmdldCgpLCBza2Vs
ZXRvbiwgMSwgVURBVFBHX01BVENIX0hPVVJfRklFTERfTEVOR1RILCBwYXR0ZXJuKTsKKyAgICBp
ZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXR0ZXJuLnNpemUoKTsg
KytpKSB7CisgICAgICAgIFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXIgPSBwYXR0ZXJuW2ldOworICAg
ICAgICBpZiAoIWlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gMTsKKyAgICAgICAgd2hpbGUgKGkg
KyAxIDwgcGF0dGVybi5zaXplKCkgJiYgcGF0dGVybltpICsgMV0gPT0gY3VycmVudENoYXJhY3Rl
cikgeworICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQor
CisgICAgICAgIHN3aXRjaCAoY3VycmVudENoYXJhY3RlcikgeworICAgICAgICBjYXNlICdoJzog
eworICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMTIiX3MpOworICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworICAgICAgICB9CisgICAgICAgIGNhc2UgJ0gn
OiB7CisgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgyMyJfcyk7CisgICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9i
YWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAn
ayc6IHsKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiaDI0Il9zKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGds
b2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKKyAgICAgICAgfQorICAgICAgICBjYXNl
ICdLJzogeworICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMTEiX3MpOworICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3Io
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOworICAgICAgICB9CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGdsb2JhbE9i
amVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKK30KKworSlNBcnJheSogSW50bExvY2FsZTo6bnVt
YmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBWZWN0b3I8U3RyaW5nLCAxPiBlbGVtZW50czsKKyAgICBTdHJpbmcg
cHJlZmVycmVkID0gbnVtYmVyaW5nU3lzdGVtKCk7CisgICAgaWYgKCFwcmVmZXJyZWQuaXNFbXB0
eSgpKSB7CisgICAgICAgIGVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKHByZWZlcnJlZCkpOworICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJvbVN0cmluZ1ZlY3Rv
cihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CisgICAgfQorCisgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBudW1iZXJpbmdTeXN0ZW0gPSBz
dGQ6OnVuaXF1ZV9wdHI8VU51bWJlcmluZ1N5c3RlbSwgSUNVRGVsZXRlcjx1bnVtc3lzX2Nsb3Nl
Pj4odW51bXN5c19vcGVuKG1fbG9jYWxlSUQuZGF0YSgpLCAmc3RhdHVzKSk7CisgICAgaWYgKCFV
X1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgZWxlbWVudHMuYXBwZW5kKHVudW1zeXNfZ2V0TmFtZShudW1iZXJpbmdTeXN0ZW0u
Z2V0KCkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9t
U3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKK30KKworSlNW
YWx1ZSBJbnRsTG9jYWxlOjp0aW1lWm9uZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZywgMT4gZWxlbWVudHM7
CisKKyAgICAvLyAxMS42LTMgTGV0IHJlZ2lvbiBiZSB0aGUgc3Vic3RyaW5nIG9mIGxvY2FsZSBj
b3JyZXNwb25kaW5nIHRvIHRoZSB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlvbiBvZiB0
aGUgdW5pY29kZV9sYW5ndWFnZV9pZC4KKyAgICBTdHJpbmcgcmVnaW9uID0gdGhpcy0+cmVnaW9u
KCk7CisgICAgaWYgKHJlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBl
bnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxVRW51bWVyYXRpb24sIElDVURlbGV0ZXI8dWVu
dW1fY2xvc2U+Pih1Y2FsX29wZW5UaW1lWm9uZUlERW51bWVyYXRpb24oVUNBTF9aT05FX1RZUEVf
Q0FOT05JQ0FMLCByZWdpb24udXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAg
IGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisKKyAgICBpbnQzMl90IGxlbmd0aDsKKyAgICBjb25zdCBjaGFyKiBjb2xsYXRpb247
CisgICAgd2hpbGUgKChjb2xsYXRpb24gPSB1ZW51bV9uZXh0KGVudW1lcmF0aW9uLmdldCgpLCAm
bGVuZ3RoLCAmc3RhdHVzKSkgJiYgVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGVsZW1lbnRz
LmNvbnN0cnVjdEFuZEFwcGVuZChjb2xsYXRpb24sIGxlbmd0aCk7CisgICAgaWYgKCFVX1NVQ0NF
U1Moc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9tU3RyaW5nVmVjdG9yKGds
b2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKK30KKworSlNPYmplY3QqIEludGxMb2Nh
bGU6OnRleHRJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFVM
YXlvdXRUeXBlIGxheW91dCA9IHVsb2NfZ2V0Q2hhcmFjdGVyT3JpZW50YXRpb24obV9sb2NhbGVJ
RC5kYXRhKCksICZzdGF0dXMpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9z
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgSlNTdHJpbmcqIGxheW91
dFN0cmluZyA9IG51bGxwdHI7CisgICAgc3dpdGNoIChsYXlvdXQpIHsKKyAgICBkZWZhdWx0Ogor
ICAgIGNhc2UgVUxPQ19MQVlPVVRfTFRSOgorICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmlu
Zyh2bSwgImx0ciJfcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVUxPQ19MQVlPVVRfUlRM
OgorICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgInJ0bCJfcyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVUxPQ19MQVlPVVRfVFRCOgorICAgICAgICBsYXlvdXRTdHJpbmcg
PSBqc1N0cmluZyh2bSwgInR0YiJfcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVUxPQ19M
QVlPVVRfQlRUOgorICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImJ0dCJfcyk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGlyZWN0aW9uIiksIGxheW91dFN0cmluZyk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNPYmplY3QqIEludGxMb2NhbGU6OndlZWtJbmZvKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gY2FsZW5kYXIgPSBz
dGQ6OnVuaXF1ZV9wdHI8VUNhbGVuZGFyLCBJQ1VEZWxldGVyPHVjYWxfY2xvc2U+Pih1Y2FsX29w
ZW4obnVsbHB0ciwgMCwgbV9sb2NhbGVJRC5kYXRhKCksIFVDQUxfREVGQVVMVCwgJnN0YXR1cykp
OworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgaW50MzJfdCBmaXJzdERheU9mV2VlayA9IHVjYWxfZ2V0
QXR0cmlidXRlKGNhbGVuZGFyLmdldCgpLCBVQ0FMX0ZJUlNUX0RBWV9PRl9XRUVLKTsKKyAgICBp
bnQzMl90IG1pbmltYWxEYXlzID0gdWNhbF9nZXRBdHRyaWJ1dGUoY2FsZW5kYXIuZ2V0KCksIFVD
QUxfTUlOSU1BTF9EQVlTX0lOX0ZJUlNUX1dFRUspOworCisgICAgYXV0byBjYW5vbmljYWxpemVE
YXlPZldlZWtUeXBlID0gW10oVUNhbGVuZGFyV2Vla2RheVR5cGUgdHlwZSkgeworICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgLy8gVUNBTF9XRUVLRU5EX09OU0VUIGlzIGEgZGF5IHRo
YXQgc3RhcnRzIGFzIGEgd2Vla2RheSBhbmQgdHJhbnNpdGlvbnMgdG8gdGhlIHdlZWtlbmQuIEl0
IG1lYW5zIHRoaXMgaXMgV2Vla0RheS4KKyAgICAgICAgY2FzZSBVQ0FMX1dFRUtFTkRfT05TRVQ6
CisgICAgICAgIGNhc2UgVUNBTF9XRUVLREFZOgorICAgICAgICAgICAgcmV0dXJuIFVDQUxfV0VF
S0RBWTsKKyAgICAgICAgLy8gVUNBTF9XRUVLRU5EX0NFQVNFIGlzIGEgZGF5IHRoYXQgc3RhcnRz
IGFzIHRoZSB3ZWVrZW5kIGFuZCB0cmFuc2l0aW9ucyB0byBhIHdlZWtkYXkuIEl0IG1lYW5zIHRo
aXMgaXMgV2Vla0VuZC4KKyAgICAgICAgY2FzZSBVQ0FMX1dFRUtFTkRfQ0VBU0U6CisgICAgICAg
IGNhc2UgVUNBTF9XRUVLRU5EOgorICAgICAgICAgICAgcmV0dXJuIFVDQUxfV0VFS0VORDsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBVQ0FMX1dFRUtFTkQ7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIFVDQUxfV0VFS0VORDsKKyAgICB9OworCisgICAgc3RhdGljX2Fz
c2VydChVQ0FMX1NVTkRBWSA9PSAxKTsKKyAgICBzdGF0aWNfYXNzZXJ0KFVDQUxfU0FUVVJEQVkg
PT0gNyk7CisgICAgVUNhbGVuZGFyV2Vla2RheVR5cGUgcHJldmlvdXMgPSBjYW5vbmljYWxpemVE
YXlPZldlZWtUeXBlKHVjYWxfZ2V0RGF5T2ZXZWVrVHlwZShjYWxlbmRhci5nZXQoKSwgVUNBTF9T
QVRVUkRBWSwgJnN0YXR1cykpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9z
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaW50MzJfdCB3ZWVrZW5k
U3RhcnQgPSAwOworICAgIGludDMyX3Qgd2Vla2VuZEVuZCA9IDA7CisgICAgZm9yIChpbnQzMl90
IGRheSA9IFVDQUxfU1VOREFZOyBkYXkgPD0gVUNBTF9TQVRVUkRBWTsgKytkYXkpIHsKKyAgICAg
ICAgVUNhbGVuZGFyV2Vla2RheVR5cGUgdHlwZSA9IGNhbm9uaWNhbGl6ZURheU9mV2Vla1R5cGUo
dWNhbF9nZXREYXlPZldlZWtUeXBlKGNhbGVuZGFyLmdldCgpLCBzdGF0aWNfY2FzdDxVQ2FsZW5k
YXJEYXlzT2ZXZWVrPihkYXkpLCAmc3RhdHVzKSk7CisgICAgICAgIGlmICghVV9TVUNDRVNTKHN0
YXR1cykpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAocHJldmlvdXMgIT0gdHlwZSkgeworICAgICAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIFVDQUxfV0VFS0RBWTogLy8gV2Vla0VuZCA9PiBX
ZWVrRGF5CisgICAgICAgICAgICAgICAgaWYgKGRheSA9PSBVQ0FMX1NVTkRBWSkKKyAgICAgICAg
ICAgICAgICAgICAgd2Vla2VuZEVuZCA9IFVDQUxfU0FUVVJEQVk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICB3ZWVrZW5kRW5kID0gZGF5IC0gMTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVUNBTF9XRUVLRU5EOiAvLyBXZWVrRGF5
ID0+IFdlZWtFbmQKKyAgICAgICAgICAgICAgICB3ZWVrZW5kU3RhcnQgPSBkYXk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHByZXZpb3VzID0gdHlwZTsKKyAgICB9CisKKyAgICBhdXRv
IGNvbnZlcnRVQ2FsZW5kYXJEYXlzT2ZXZWVrVG9Nb25kYXlCYXNlZERheSA9IFtdKGludDMyX3Qg
ZGF5KSAtPiBpbnQzMl90IHsKKyAgICAgICAgLy8gQ29udmVydCBmcm9tCisgICAgICAgIC8vICAg
ICBTdW5kYXkgPT4gMQorICAgICAgICAvLyAgICAgU2F0dXJkYXkgPT4gNworICAgICAgICAvLyB0
bworICAgICAgICAvLyAgICAgTW9uZGF5ID0+IDEKKyAgICAgICAgLy8gICAgIFN1bmRheSA9PiA3
CisgICAgICAgIGlmIChkYXkgPT0gVUNBTF9TVU5EQVkpCisgICAgICAgICAgICByZXR1cm4gNzsK
KyAgICAgICAgcmV0dXJuIGRheSAtIDE7CisgICAgfTsKKworICAgIEpTT2JqZWN0KiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlyc3REYXkiKSwganNOdW1iZXIo
Y29udmVydFVDYWxlbmRhckRheXNPZldlZWtUb01vbmRheUJhc2VkRGF5KGZpcnN0RGF5T2ZXZWVr
KSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAid2Vla2VuZFN0YXJ0IiksIGpzTnVtYmVyKGNvbnZlcnRVQ2FsZW5kYXJEYXlzT2ZXZWVrVG9N
b25kYXlCYXNlZERheSh3ZWVrZW5kU3RhcnQpKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ3ZWVrZW5kRW5kIiksIGpzTnVtYmVyKGNvbnZl
cnRVQ2FsZW5kYXJEYXlzT2ZXZWVrVG9Nb25kYXlCYXNlZERheSh3ZWVrZW5kRW5kKSkpOworICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW1h
bERheXMiKSwganNOdW1iZXIobWluaW1hbERheXMpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMb2NhbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGUuaAppbmRleCAzMTRmOTRkYTRhYjdkNTU2ODQ5NDkzMzNjMjBiZWY4MzE0ZDNkZTQ2Li45
NmI2ZDk5YmMxOWZhOWY3NGNmZWJjZjFkMjkzNjg3NWRmMjBmOWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oCkBAIC02OSw2ICs2OSwxNCBAQCBjbGFzcyBJ
bnRsTG9jYWxlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGNvbnN0IFN0
cmluZyYgbnVtYmVyaW5nU3lzdGVtKCk7CiAgICAgVHJpU3RhdGUgbnVtZXJpYygpOwogCisgICAg
SlNBcnJheSogY2FsZW5kYXJzKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNBcnJheSogY29sbGF0
aW9ucyhKU0dsb2JhbE9iamVjdCopOworICAgIEpTQXJyYXkqIGhvdXJDeWNsZXMoSlNHbG9iYWxP
YmplY3QqKTsKKyAgICBKU0FycmF5KiBudW1iZXJpbmdTeXN0ZW1zKEpTR2xvYmFsT2JqZWN0Kik7
CisgICAgSlNWYWx1ZSB0aW1lWm9uZXMoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU09iamVjdCog
dGV4dEluZm8oSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU09iamVjdCogd2Vla0luZm8oSlNHbG9i
YWxPYmplY3QqKTsKKwogcHJpdmF0ZToKICAgICBJbnRsTG9jYWxlKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAppbmRleCAxYTRjNTI2MmZh
Y2JiODQwNzI3MTA1N2U3ZmViNzQyOWUyODgxNTdmLi44YmUzMmU3M2FjNmQzNWFmY2JiMzMzMDRl
ZjgxYTE0NjFiYTUzNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcApAQCAtMzYsMTQgKzM2LDIxIEBAIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKEludGxMb2NhbGVQcm90b3R5cGVGdW5jTWluaW1pemUp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oSW50bExvY2FsZVByb3RvdHlwZUZ1
bmNUb1N0cmluZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyQmFzZU5hbWUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcnMpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNh
c2VGaXJzdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyQ29sbGF0aW9uKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhv
dXJDeWNsZXMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlck51bWVyaWMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
SW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lz
dGVtcyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyTGFuZ3VhZ2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50
bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJUaW1lWm9uZXMpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRl
clRleHRJbmZvKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJXZWVrSW5mbyk7CiAKIH0KIApAQCAtNjAsMTQgKzY3LDIxIEBAIGNvbnN0
IENsYXNzSW5mbyBJbnRsTG9jYWxlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJJbnRsLkxvY2FsZSIs
ICZCYXNlOjpzX2luZm8sICZsCiAgIHRvU3RyaW5nICAgICAgICAgSW50bExvY2FsZVByb3RvdHlw
ZUZ1bmNUb1N0cmluZyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogICBiYXNlTmFtZSAg
ICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSAgICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAgIGNhbGVuZGFyICAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNj
ZXNzb3IKKyAgY2FsZW5kYXJzICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5k
YXJzICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBjYXNlRmlyc3Qg
ICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QgICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAgIGNvbGxhdGlvbiAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNvbGxhdGlvbiAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNj
ZXNzb3IKKyAgY29sbGF0aW9ucyAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0
aW9ucyAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBob3VyQ3ljbGUg
ICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUgICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGhvdXJDeWNsZXMgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckhvdXJDeWNsZXMgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNj
ZXNzb3IKICAgbnVtZXJpYyAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJp
YyAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBudW1iZXJpbmdT
eXN0ZW0gIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0gIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG51bWJlcmluZ1N5c3RlbXMgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbXMgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNj
ZXNzb3IKICAgbGFuZ3VhZ2UgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3Vh
Z2UgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgogICBzY3JpcHQgICAg
ICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQgICAgICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCiAgIHJlZ2lvbiAgICAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlclJlZ2lvbiAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNj
ZXNzb3IKKyAgdGltZVpvbmVzICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGltZVpv
bmVzICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICB0ZXh0SW5mbyAg
ICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJUZXh0SW5mbyAgICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIHdlZWtJbmZvICAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlcldlZWtJbmZvICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNj
ZXNzb3IKIEBlbmQKICovCiAKQEAgLTE2OSw2ICsxODMsMTkgQEAgSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG8KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxl
bmRhci5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgY2FsZW5kYXIpKSk7
CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWxvY2FsZS1pbmZvLyNzZWMt
SW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFycworSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcnMsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFsb2Nh
bGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXJzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPmNhbGVuZGFycyhnbG9i
YWxPYmplY3QpKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5M
b2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCiB7CkBAIC0xOTcs
NiArMjI0LDE5IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyQ29sbGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0aW9uLmlzTnVsbCgpID8ganNVbmRlZmlu
ZWQoKSA6IGpzU3RyaW5nKHZtLCBjb2xsYXRpb24pKSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC1pbnRsLWxvY2FsZS1pbmZvLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNv
bGxhdGlvbnMKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ29sbGF0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlw
ZS5jb2xsYXRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShsb2NhbGUtPmNvbGxhdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOworfQorCiAv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5ob3Vy
Q3ljbGUKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
SG91ckN5Y2xlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQogewpAQCAtMjExLDYgKzI1MSwxOSBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGhvdXJDeWNsZS5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwg
aG91ckN5Y2xlKSkpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2Nh
bGUtaW5mby8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyY3ljbGVzCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZXMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpz
RHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlcyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3Mp
OworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxl
LT5ob3VyQ3ljbGVzKGdsb2JhbE9iamVjdCkpKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtZXJpYwogSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQogewpAQCAtMjM4LDYgKzI5MSwxOSBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbSwgKEpTR2xvYmFsT2JqZQogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlcmluZ1N5c3RlbS5p
c051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgbnVtYmVyaW5nU3lzdGVtKSkp
OwogfQogCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2NhbGUtaW5mby8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1iZXJpbmdTeXN0ZW1zCitKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbXMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpz
RHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtcyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
bG9jYWxlLT5udW1iZXJpbmdTeXN0ZW1zKGdsb2JhbE9iamVjdCkpKTsKK30KKwogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3VhZ2UKIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2Us
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCiB7CkBAIC0yODAsNCArMzQ2LDQzIEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVn
aW9uLmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgcmVnaW9uKSkpOwog
fQogCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2NhbGUtaW5mby8jc2VjLUlu
dGwuTG9jYWxlLnByb3RvdHlwZS50aW1lem9uZXMKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGltZVpvbmVzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxM
b2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghbG9jYWxl
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5Mb2NhbGUucHJvdG90eXBlLnRpbWVab25lcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT50aW1lWm9uZXMoZ2xvYmFs
T2JqZWN0KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1sb2NhbGUt
aW5mby8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS50ZXh0SW5mbworSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJUZXh0SW5mbywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWlj
Q2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBp
ZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS50ZXh0SW5mbyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT50ZXh0SW5m
byhnbG9iYWxPYmplY3QpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRs
LWxvY2FsZS1pbmZvLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLndlZWtJbmZvCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoSW50bExvY2FsZVByb3RvdHlwZUdldHRlcldlZWtJbmZvLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLndlZWtJbmZvIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUt
PndlZWtJbmZvKGdsb2JhbE9iamVjdCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiMWE1
YTlkZTIzNzZlNzU3MjA2OGExN2M4MDdjMmNmOTc4ZGExZTAuLjkxMGRlMTU4MzljNGZiMjlhM2Yz
NWFkNTE1Y2ZiMTFjNzg3OWIzMzggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDgtMjAgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbnRsIExvY2FsZSBJ
bmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0
cmVzcy9pbnRsLWxvY2FsZS1pbmZvLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRocm93Lm5ldy5FcnJvcik6CisgICAgICAgIChsZXQuZW5HQi5uZXcuSW50bC5Mb2Nh
bGUuc2hvdWxkQmUpOgorICAgICAgICAobGV0LmwubmV3LkludGwuTG9jYWxlLnNob3VsZEJlKToK
KyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTA4LTE3ICBNaWtoYWlsIFIu
IEdhZGVsaGEgIDxtaWtoYWlsQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gU2tp
cCBmYWlsaW5nIE1JUFMgdGVzdHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbG9j
YWxlLWluZm8uanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2FsZS1pbmZvLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU2OTM0ODEwYzQxYTI5NTY3NzVmMDQ1MzE2YmRkMWIxMjM3NDQyMmYKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2FsZS1pbmZvLmpzCkBAIC0wLDAgKzEsMTA2
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBl
Y3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworeworICAgIGxldCBoZSA9IG5ldyBJbnRs
LkxvY2FsZSgiaGUiKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGhlLndlZWtJbmZvKSwg
YHsiZmlyc3REYXkiOjcsIndlZWtlbmRTdGFydCI6NSwid2Vla2VuZEVuZCI6NiwibWluaW1hbERh
eXMiOjF9YCk7CisgICAgbGV0IGFmID0gbmV3IEludGwuTG9jYWxlKCJhZiIpCisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoYWYud2Vla0luZm8pLCBgeyJmaXJzdERheSI6Nywid2Vla2VuZFN0
YXJ0Ijo2LCJ3ZWVrZW5kRW5kIjo3LCJtaW5pbWFsRGF5cyI6MX1gKTsKKyAgICBsZXQgZW5HQiA9
IG5ldyBJbnRsLkxvY2FsZSgiZW4tR0IiKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGVu
R0Iud2Vla0luZm8pLCBgeyJmaXJzdERheSI6MSwid2Vla2VuZFN0YXJ0Ijo2LCJ3ZWVrZW5kRW5k
Ijo3LCJtaW5pbWFsRGF5cyI6NH1gKTsKK30KK3sKKyAgICBsZXQgbCA9IG5ldyBJbnRsLkxvY2Fs
ZSgiYXIiKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGwudGV4dEluZm8pLCBgeyJkaXJl
Y3Rpb24iOiJydGwifWApOworfQoreworICAgIGxldCBsb2NhbGUgPSBuZXcgSW50bC5Mb2NhbGUo
ImFyIikKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUuY2FsZW5kYXJzKSwgYFsi
Z3JlZ29yeSIsImNvcHRpYyIsImlzbGFtaWMiLCJpc2xhbWljYyIsImlzbGFtaWMtdGJsYSJdYCk7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxlLmNvbGxhdGlvbnMpLCBgWyJjb21w
YXQiLCJlbW9qaSIsImVvciJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxl
LmhvdXJDeWNsZXMpLCBgWyJoMTIiXWApOworICAgIGxldCBucyA9IEpTT04uc3RyaW5naWZ5KGxv
Y2FsZS5udW1iZXJpbmdTeXN0ZW1zKTsKKyAgICBzaG91bGRCZShucyA9PT0gYFsiYXJhYiJdYCB8
fCBucyA9PT0gYFsibGF0biJdYCwgdHJ1ZSk7CisgICAgc2hvdWxkQmUobG9jYWxlLnRpbWVab25l
cywgdW5kZWZpbmVkKTsKK30KK3sKKyAgICBsZXQgbG9jYWxlID0gbmV3IEludGwuTG9jYWxlKCJh
ci1FRyIpCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxlLmNhbGVuZGFycyksIGBb
ImdyZWdvcnkiLCJjb3B0aWMiLCJpc2xhbWljIiwiaXNsYW1pY2MiLCJpc2xhbWljLXRibGEiXWAp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGxvY2FsZS5jb2xsYXRpb25zKSwgYFsiY29t
cGF0IiwiZW1vamkiLCJlb3IiXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGxvY2Fs
ZS5ob3VyQ3ljbGVzKSwgYFsiaDEyIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShs
b2NhbGUubnVtYmVyaW5nU3lzdGVtcyksIGBbImFyYWIiXWApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGxvY2FsZS50aW1lWm9uZXMpLCBgWyJBZnJpY2EvQ2Fpcm8iXWApOworfQorewor
ICAgIGxldCBsb2NhbGUgPSBuZXcgSW50bC5Mb2NhbGUoImFyLVNBIikKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShsb2NhbGUuY2FsZW5kYXJzKSwgYFsiaXNsYW1pYy11bWFscXVyYSIsImlz
bGFtaWMtcmdzYSIsImlzbGFtaWMiLCJncmVnb3J5Il1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShsb2NhbGUuY29sbGF0aW9ucyksIGBbImNvbXBhdCIsImVtb2ppIiwiZW9yIl1gKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUuaG91ckN5Y2xlcyksIGBbImgxMiJd
YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxlLm51bWJlcmluZ1N5c3RlbXMp
LCBgWyJhcmFiIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUudGltZVpv
bmVzKSwgYFsiQXNpYS9SaXlhZGgiXWApOworfQoreworICAgIGxldCBsb2NhbGUgPSBuZXcgSW50
bC5Mb2NhbGUoImphIikKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUuY2FsZW5k
YXJzKSwgYFsiZ3JlZ29yeSIsImphcGFuZXNlIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShsb2NhbGUuY29sbGF0aW9ucyksIGBbInVuaWhhbiIsImVtb2ppIiwiZW9yIl1gKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUuaG91ckN5Y2xlcyksIGBbImgyMyJdYCk7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxlLm51bWJlcmluZ1N5c3RlbXMpLCBg
WyJsYXRuIl1gKTsKKyAgICBzaG91bGRCZShsb2NhbGUudGltZVpvbmVzLCB1bmRlZmluZWQpOwor
fQoreworICAgIGxldCBsb2NhbGUgPSBuZXcgSW50bC5Mb2NhbGUoImphLUpQIikKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUuY2FsZW5kYXJzKSwgYFsiZ3JlZ29yeSIsImphcGFu
ZXNlIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUuY29sbGF0aW9ucyks
IGBbInVuaWhhbiIsImVtb2ppIiwiZW9yIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShsb2NhbGUuaG91ckN5Y2xlcyksIGBbImgyMyJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkobG9jYWxlLm51bWJlcmluZ1N5c3RlbXMpLCBgWyJsYXRuIl1gKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShsb2NhbGUudGltZVpvbmVzKSwgYFsiQXNpYS9Ub2t5byJdYCk7Cit9
Cit7CisgICAgbGV0IGxvY2FsZSA9IG5ldyBJbnRsLkxvY2FsZSgiZW4tVVMiKQorICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGxvY2FsZS5jYWxlbmRhcnMpLCBgWyJncmVnb3J5Il1gKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUuY29sbGF0aW9ucyksIGBbImVtb2ppIiwi
ZW9yIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUuaG91ckN5Y2xlcyks
IGBbImgxMiJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxlLm51bWJlcmlu
Z1N5c3RlbXMpLCBgWyJsYXRuIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2Nh
bGUudGltZVpvbmVzKSwgYFsiQW1lcmljYS9BZGFrIiwiQW1lcmljYS9BbmNob3JhZ2UiLCJBbWVy
aWNhL0JvaXNlIiwiQW1lcmljYS9DaGljYWdvIiwiQW1lcmljYS9EZW52ZXIiLCJBbWVyaWNhL0Rl
dHJvaXQiLCJBbWVyaWNhL0luZGlhbmEvS25veCIsIkFtZXJpY2EvSW5kaWFuYS9NYXJlbmdvIiwi
QW1lcmljYS9JbmRpYW5hL1BldGVyc2J1cmciLCJBbWVyaWNhL0luZGlhbmEvVGVsbF9DaXR5Iiwi
QW1lcmljYS9JbmRpYW5hL1ZldmF5IiwiQW1lcmljYS9JbmRpYW5hL1ZpbmNlbm5lcyIsIkFtZXJp
Y2EvSW5kaWFuYS9XaW5hbWFjIiwiQW1lcmljYS9JbmRpYW5hcG9saXMiLCJBbWVyaWNhL0p1bmVh
dSIsIkFtZXJpY2EvS2VudHVja3kvTW9udGljZWxsbyIsIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCJB
bWVyaWNhL0xvdWlzdmlsbGUiLCJBbWVyaWNhL01lbm9taW5lZSIsIkFtZXJpY2EvTWV0bGFrYXRs
YSIsIkFtZXJpY2EvTmV3X1lvcmsiLCJBbWVyaWNhL05vbWUiLCJBbWVyaWNhL05vcnRoX0Rha290
YS9CZXVsYWgiLCJBbWVyaWNhL05vcnRoX0Rha290YS9DZW50ZXIiLCJBbWVyaWNhL05vcnRoX0Rh
a290YS9OZXdfU2FsZW0iLCJBbWVyaWNhL1Bob2VuaXgiLCJBbWVyaWNhL1NpdGthIiwiQW1lcmlj
YS9ZYWt1dGF0IiwiUGFjaWZpYy9Ib25vbHVsdSJdYCk7Cit9Cit7CisgICAgbGV0IGxvY2FsZSA9
IG5ldyBJbnRsLkxvY2FsZSgiZW4tTloiKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGxv
Y2FsZS5jYWxlbmRhcnMpLCBgWyJncmVnb3J5Il1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShsb2NhbGUuY29sbGF0aW9ucyksIGBbImVtb2ppIiwiZW9yIl1gKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShsb2NhbGUuaG91ckN5Y2xlcyksIGBbImgxMiJdYCk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxlLm51bWJlcmluZ1N5c3RlbXMpLCBgWyJsYXRuIl1g
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUudGltZVpvbmVzKSwgYFsiUGFj
aWZpYy9BdWNrbGFuZCIsIlBhY2lmaWMvQ2hhdGhhbSJdYCk7Cit9Cit7CisgICAgbGV0IGxvY2Fs
ZSA9IG5ldyBJbnRsLkxvY2FsZSgiemgiKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGxv
Y2FsZS5jYWxlbmRhcnMpLCBgWyJncmVnb3J5IiwiY2hpbmVzZSJdYCk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkobG9jYWxlLmNvbGxhdGlvbnMpLCBgWyJwaW55aW4iLCJiaWc1aGFuIiwi
Z2IyMzEyIiwic3Ryb2tlIiwidW5paGFuIiwiemh1eWluIiwiZW1vamkiLCJlb3IiXWApOworICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGxvY2FsZS5ob3VyQ3ljbGVzKSwgYFsiaDEyIl1gKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUubnVtYmVyaW5nU3lzdGVtcyksIGBb
ImxhdG4iXWApOworICAgIHNob3VsZEJlKGxvY2FsZS50aW1lWm9uZXMsIHVuZGVmaW5lZCk7Cit9
Cit7CisgICAgbGV0IGxvY2FsZSA9IG5ldyBJbnRsLkxvY2FsZSgiemgtVFciKQorICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGxvY2FsZS5jYWxlbmRhcnMpLCBgWyJncmVnb3J5Iiwicm9jIiwi
Y2hpbmVzZSJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxlLmNvbGxhdGlv
bnMpLCBgWyJzdHJva2UiLCJiaWc1aGFuIiwiZ2IyMzEyIiwicGlueWluIiwidW5paGFuIiwiemh1
eWluIiwiZW1vamkiLCJlb3IiXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGxvY2Fs
ZS5ob3VyQ3ljbGVzKSwgYFsiaDEyIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShs
b2NhbGUubnVtYmVyaW5nU3lzdGVtcyksIGBbImxhdG4iXWApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGxvY2FsZS50aW1lWm9uZXMpLCBgWyJBc2lhL1RhaXBlaSJdYCk7Cit9Cit7Cisg
ICAgbGV0IGxvY2FsZSA9IG5ldyBJbnRsLkxvY2FsZSgiemgtSEsiKQorICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGxvY2FsZS5jYWxlbmRhcnMpLCBgWyJncmVnb3J5IiwiY2hpbmVzZSJdYCk7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9jYWxlLmNvbGxhdGlvbnMpLCBgWyJzdHJv
a2UiLCJiaWc1aGFuIiwiZ2IyMzEyIiwicGlueWluIiwidW5paGFuIiwiemh1eWluIiwiZW1vamki
LCJlb3IiXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGxvY2FsZS5ob3VyQ3ljbGVz
KSwgYFsiaDEyIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShsb2NhbGUubnVtYmVy
aW5nU3lzdGVtcyksIGBbImxhdG4iXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGxv
Y2FsZS50aW1lWm9uZXMpLCBgWyJBc2lhL0hvbmdfS29uZyJdYCk7Cit9Cit7CisgICAgbGV0IGxv
Y2FsZSA9IG5ldyBJbnRsLkxvY2FsZSgiZmEiKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGxvY2FsZS5jYWxlbmRhcnMpLCBgWyJwZXJzaWFuIiwiZ3JlZ29yeSIsImlzbGFtaWMiLCJpc2xh
bWljYyIsImlzbGFtaWMtdGJsYSJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkobG9j
YWxlLmNvbGxhdGlvbnMpLCBgWyJlbW9qaSIsImVvciJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkobG9jYWxlLmhvdXJDeWNsZXMpLCBgWyJoMjMiXWApOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGxvY2FsZS5udW1iZXJpbmdTeXN0ZW1zKSwgYFsiYXJhYmV4dCJdYCk7Cisg
ICAgc2hvdWxkQmUobG9jYWxlLnRpbWVab25lcywgdW5kZWZpbmVkKTsKK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFt
bAppbmRleCAzMzJjZDAyYTdkYWZiNjEzOTFlNmExN2YyMjIzNmIxMjBlN2U4M2Y1Li4wZTYwNjc5
ZGFjOGExY2Q0ZDRlY2ZmMTc2ODAyZTQwYjllNzkxNzA0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0y
NCw3ICsyNCw2IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogICAgIC0gY2xlYW51cFNv
bWUKLSAgICAtIEludGwuTG9jYWxlLWluZm8KICAgICAtIHJlc2l6YWJsZS1hcnJheWJ1ZmZlcgog
ICAgIC0gT2JqZWN0Lmhhc093bgogICAgIC0gVGVtcG9yYWwK
</data>
<flag name="review"
          id="458888"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
      

    </bug>

</bugzilla>