<?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>142788</bug_id>
          
          <creation_ts>2015-03-17 13:14:53 -0700</creation_ts>
          <short_desc>Built-in functions should know that they use strict mode</short_desc>
          <delta_ts>2015-03-17 14:15:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1077945</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 13:14:53 -0700</bug_when>
    <thetext>Built-in functions should know that they use strict mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077949</commentid>
    <comment_count>1</comment_count>
      <attachid>248863</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 13:22:32 -0700</bug_when>
    <thetext>Created attachment 248863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077956</commentid>
    <comment_count>2</comment_count>
      <attachid>248866</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 13:38:45 -0700</bug_when>
    <thetext>Created attachment 248866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077957</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-17 13:41:45 -0700</bug_when>
    <thetext>Attachment 248866 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:210:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077958</commentid>
    <comment_count>4</comment_count>
      <attachid>248866</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-17 13:43:47 -0700</bug_when>
    <thetext>Comment on attachment 248866
Patch

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

&gt; Source/JavaScriptCore/parser/ParserModes.h:34
&gt; +enum JSParserStrictMode { JSParseNotStrictMode, JSParseStrictMode };

Can we use enum class instead?  It makes future find/replace much easier and prevents accidental casts to integral types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077959</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 13:45:33 -0700</bug_when>
    <thetext>&gt; Can we use enum class instead?

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077963</commentid>
    <comment_count>6</comment_count>
      <attachid>248869</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 14:02:22 -0700</bug_when>
    <thetext>Created attachment 248869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077964</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-17 14:04:10 -0700</bug_when>
    <thetext>Attachment 248869 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:210:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077966</commentid>
    <comment_count>8</comment_count>
      <attachid>248866</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-17 14:06:12 -0700</bug_when>
    <thetext>Comment on attachment 248866
Patch

r=me with Ryosuke&apos;s suggested fixes (and style issue resolved if valid, though it doesn&apos;t look like a valid complaint to me from the diff).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077967</commentid>
    <comment_count>9</comment_count>
      <attachid>248869</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-17 14:07:27 -0700</bug_when>
    <thetext>Comment on attachment 248869
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077971</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 14:15:35 -0700</bug_when>
    <thetext>Committed r181664: &lt;http://trac.webkit.org/changeset/181664&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248863</attachid>
            <date>2015-03-17 13:22:32 -0700</date>
            <delta_ts>2015-03-17 13:38:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142788-20150317132202.patch</filename>
            <type>text/plain</type>
            <size>28543</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNjU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQnVpbHQtaW4gZnVuY3Rpb25zIHNob3VsZCBrbm93IHRoYXQgdGhleSB1c2Ugc3RyaWN0IG1v
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZW4g
dGhvdWdoIGFsbCBvZiBvdXIgYnVpbHRpbiBmdW5jdGlvbnMgdXNlIHN0cmljdCBtb2RlLCB0aGUg
cGFyc2VyCisgICAgICAgIHRoaW5rcyB0aGF0IHRoZXkgZG9uJ3QuIFRoaXMgaXMgYmVjYXVzZSBF
eGVjdXRhYmxlOjp0b1N0cmljdG5lc3MgdHJlYXRzCisgICAgICAgIGJ1aWx0aW4tbmVzcyBhbmQg
c3RyaWN0LW5lc3MgYXMgbXV0dWFsbHkgZXhjbHVzaXZlLgorCisgICAgICAgIFRoZSBmaXggaXMg
dG8gZGlzYW1iaWd1YXRlIGJ1aWx0aW4tbmVzcyBmcm9tIHN0cmljdC1uZXNzLgorCisgICAgICAg
IFRoaXMgYnVnIGlzIGN1cnJlbnRseSB1bm9ic2VydmFibGUgYmVjYXVzZSBvZiBzb21lIG90aGVy
IHBhcnNlciBidWdzLiBCdXQKKyAgICAgICAgaXQgY2F1c2VzIGxvdHMgb2YgdGVzdCBmYWlsdXJl
cyBvbmNlIHRob3NlIG90aGVyIGJ1Z3MgYXJlIGZpeGVkLgorCisgICAgICAgICogQVBJL0pTU2Ny
aXB0UmVmLmNwcDoKKyAgICAgICAgKHBhcnNlU2NyaXB0KToKKyAgICAgICAgKiBidWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKTogQWRvcHQgdGhlIG5ldyBBUEkKKyAgICAgICAgZm9y
IGEgc2VwYXJhdGUgdmFsdWUgdG8gaW5kaWNhdGUgYnVpbHRpbi1uZXNzIHZzIHN0cmljdC1uZXNz
LgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0Zvcik6IERpdHRvLgorCisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6IERlbGV0ZWQuIFRoaXMgZnVuY3Rpb24KKyAgICAg
ICAgd2FzIG1pc2xlYWRpbmcgc2luY2UgaXQgcHJldGVuZGVkIHRoYXQgbm8gYnVpbHRpbiBmdW5j
dGlvbiB3YXMgZXZlcgorICAgICAgICBzdHJpY3QsIHdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBvZiB0
cnVlLgorCisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VD46OkxleGVyKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpwYXJzZSk6IEFkb3B0IHRo
ZSBuZXcgQVBJLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6IEFkZGVkIEpTUGFy
c2VyQnVpbHRpbk1vZGUsIGFuZCB0cmllZCB0byBnaXZlCisgICAgICAgIGV4aXN0aW5nIG1vZGVz
IGNsZWFyZXIgbmFtZXMuCisKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUNhY2hlOjpnZXRQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hl
OjpnZXRFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6CisgICAgICAg
ICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4
ZWN1dGFibGU6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
Y3JlYXRlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVFdmFsQ29kZUJsb2NrKTogQWRvcHQgdGhlIG5ldyBBUEkuCisKIDIwMTUtMDMtMTYgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgSVIgc2hvdWxkbid0
IGhhdmUgYSBzZXBhcmF0ZSBub2RlIGZvciBldmVyeSBraW5kIG9mIHB1dCBoaW50IHRoYXQgY291
bGQgYmUgZGVzY3JpYmVkIHVzaW5nIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMTgxNTY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgcGFyc2VTY3Jp
cHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikK
IHsKLSAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+KHZtLCBzb3VyY2Us
IDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJv
cik7CisgICAgcmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2RlPih2bSwgc291cmNl
LCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VOb3RCdWlsdGluTW9kZSwgSlNQYXJzZU5vdFN0cmlj
dE1vZGUsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IpOwogfQogCiBleHRlcm4gIkMiIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCShyZXZpc2lvbiAxODE1NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1CiB7CiAgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJz
ZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlQnVp
bHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFBy
b2dyYW1Ob2RlPigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VCdWlsdGlu
TW9kZSwgSlNQYXJzZU5vdFN0cmljdE1vZGUsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKIAogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAg
ICBkYXRhTG9nKCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFt
ZS5zdHJpbmcoKSwgIic6ICIsIGVycm9yLm1lc3NhZ2UoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDE4MTU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDE2IEBAIGNvbnN0IENsYXNz
SW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2
YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9Owog
Y29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spIH07CiAKLXN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlv
bktpbmQsIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzLCBQYXJzZXJFcnJvciYgZXJyb3IpCi17Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlv
bk5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUt
Pm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUs
IGVycm9yLCAwLCBib2R5SW5jbHVkZXNCcmFjZXMpOworc3RhdGljIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soCisgICAgVk0mIHZtLCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LAorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBmdW5jdGlvbktpbmQsIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzLCBQYXJzZXJFcnJvciYgZXJy
b3IpCit7CisgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUt
PmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlQnVpbHRpbk1vZGUgOiBKU1BhcnNlTm90QnVp
bHRpbk1vZGU7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxl
LT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdE1vZGUgOiBKU1BhcnNlTm90U3Ry
aWN0TW9kZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBh
cnNlPEZ1bmN0aW9uTm9kZT4oCisgICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJh
bWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsCisgICAgICAgIHN0cmlj
dE1vZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yLCAwLCBib2R5SW5jbHVkZXNCcmFjZXMp
OwogCiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgp
KTsKQEAgLTE3NCw3ICsxODEsMTAgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlu
a2VkRnVuYwogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxp
emF0aW9uS2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2Zp
bGVyTW9kZSwgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMsIFBhcnNlckVycm9yJiBlcnJvcikKK1Vu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2Rl
QmxvY2tGb3IoCisgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCAKKyAgICBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBib29sIGJvZHlJbmNsdWRlc0Jy
YWNlcywgCisgICAgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6
YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE4Nyw3ICsxOTcsMTAgQEAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdAogICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0
ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGJvZHlJbmNsdWRlc0Jy
YWNlcywgZXJyb3IpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soCisgICAgICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNp
YWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIAorICAgICAgICBpc0J1
aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1h
bEZ1bmN0aW9uLCAKKyAgICAgICAgYm9keUluY2x1ZGVzQnJhY2VzLCBlcnJvcik7CiAgICAgCiAg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAkocmV2aXNpb24gMTgxNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxNCArMTIwLDYgQEAgcHVi
bGljOgogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0
cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAg
RnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Nb2Rl
OyB9Ci0gICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKLSAgICAgICAgICAgIHJldHVybiBKU1Bh
cnNlQnVpbHRpbjsKLSAgICAgICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCi0gICAgICAgICAg
ICByZXR1cm4gSlNQYXJzZVN0cmljdDsKLSAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7Ci0g
ICAgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogCiAg
ICAgdW5zaWduZWQgdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMTQwLDcgKzEzMiw5IEBAIHB1YmxpYzoK
IAogICAgIFN0cmluZyBwYXJhbVN0cmluZygpIGNvbnN0OwogCi0gICAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogY29kZUJsb2NrRm9yKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBib29sIGJvZHlJbmNs
dWRlc0JyYWNlcywgUGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGb3IoCisgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKKyAgICAgICAgYm9v
bCBib2R5SW5jbHVkZXNCcmFjZXMsIFBhcnNlckVycm9yJik7CiAKICAgICBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImLCBF
eGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24pOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkocmV2aXNpb24gMTgxNTY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4OCwxMCArNDg4LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0
ZXJFc2NhcGUKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotTGV4ZXI8VD46OkxleGVyKFZN
KiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MpCitMZXhlcjxUPjo6TGV4ZXIoVk0q
IHZtLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlKQogICAgIDogbV9pc1JlcGFyc2lu
ZyhmYWxzZSkKICAgICAsIG1fdm0odm0pCi0gICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24o
c3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5j
dGlvbihidWlsdGluTW9kZSA9PSBKU1BhcnNlQnVpbHRpbk1vZGUpCiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHJldmlzaW9uIDE4MTU2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyAr
NzEsNyBAQCBjbGFzcyBMZXhlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1
YmxpYzoKLSAgICBMZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVzcyk7CisgICAgTGV4ZXIoVk0q
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlKTsKICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3Rl
ciBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMTgxNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9p
ZCBQYXJzZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3IoYm9vbCBzaAogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgotUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcywgSlNQYXJz
ZXJNb2RlIHBhcnNlck1vZGUpCitQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpT
UGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlIGNvZGVUeXBlKQog
ICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNlKCZzb3VyY2UpCiAgICAgLCBtX2hhc1N0YWNr
T3ZlcmZsb3coZmFsc2UpCkBAIC0yMDMsOSArMjAzLDkgQEAgUGFyc2VyPExleGVyVHlwZT46OlBh
cnNlcihWTSogdm0sIGNvbnN0IAogICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQogICAgICwgbV9s
YXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCi0gICAg
LCBtX3BhcnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCisgICAgLCBt
X3BhcnNpbmdCdWlsdGluKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VCdWlsdGluTW9kZSkKIHsKLSAg
ICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBzdHJpY3RuZXNzKTsK
KyAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9k
ZSk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsKICAgICBt
X3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKICAgICBtX3Rva2Vu
Lm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKQEAgLTIxMyw5
ICsyMTMsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgCiAgICAg
bV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgp
OwogICAgIG1fZnVuY3Rpb25DYWNoZSA9IHZtLT5hZGRTb3VyY2VQcm92aWRlckNhY2hlKHNvdXJj
ZS5wcm92aWRlcigpKTsKICAgICBTY29wZVJlZiBzY29wZSA9IHB1c2hTY29wZSgpOwotICAgIGlm
IChwYXJzZXJNb2RlID09IEpTUGFyc2VGdW5jdGlvbkNvZGUpCisgICAgaWYgKGNvZGVUeXBlID09
IEpTUGFyc2VGdW5jdGlvbkNvZGUpCiAgICAgICAgIHNjb3BlLT5zZXRJc0Z1bmN0aW9uKCk7Ci0g
ICAgaWYgKHN0cmljdG5lc3MgPT0gSlNQYXJzZVN0cmljdCkKKyAgICBpZiAoc3RyaWN0TW9kZSA9
PSBKU1BhcnNlU3RyaWN0TW9kZSkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1vZGUoKTsKICAg
ICBpZiAocGFyYW1ldGVycykgewogICAgICAgICBib29sIGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9u
IDE4MTU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyNiw3ICs0MjYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUGFyc2VyKFZNKiwgY29uc3QgU291cmNl
Q29kZSYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IElkZW50aWZpZXImLCBKU1BhcnNlclN0
cmljdG5lc3MsIEpTUGFyc2VyTW9kZSk7CisgICAgUGFyc2VyKFZNKiwgY29uc3QgU291cmNlQ29k
ZSYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IElkZW50aWZpZXImLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUpOwogICAgIH5QYXJz
ZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgpAQCAtOTc5LDE3ICs5Nzks
MjIgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlcgogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJz
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBw
YXJhbWV0ZXJzLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlclN0cmljdG5lc3Mgc3Ry
aWN0bmVzcywgSlNQYXJzZXJNb2RlIHBhcnNlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgSlNU
ZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSAwLCBib29sIG5lZWRSZXBh
cnNpbmdBZGp1c3RtZW50ID0gZmFsc2UpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFy
c2UoCisgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycywKKyAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAorICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2Rl
LCBKU1BhcnNlckNvZGVUeXBlIGNvZGVUeXBlLAorICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNU
ZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSAwLCAKKyAgICBib29sIG5l
ZWRSZXBhcnNpbmdBZGp1c3RtZW50ID0gZmFsc2UpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oIlBhcnNpbmciKTsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCkt
PnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgp
LmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291
cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKKyAgICAgICAg
UGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUs
IGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSk7CiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3Is
IG5lZWRSZXBhcnNpbmdBZGp1c3RtZW50KTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNl
ci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7Ci0gICAgICAgIGlmIChzdHJpY3RuZXNzID09
IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlQnVp
bHRpbk1vZGUpIHsKICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIFdU
Rjo6ZGF0YUxvZygiRXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwg
IlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwpAQCAtOTk3LDcgKzEw
MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtCiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgUGFyc2VyPExleGVyPFVDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNl
ck1vZGUpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJh
bWV0ZXJzLCBuYW1lLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9k
ZT4oZXJyb3IsIG5lZWRSZXBhcnNpbmdBZGp1c3RtZW50KTsKICAgICBpZiAocG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJz
ZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAkocmV2aXNpb24gMTgxNTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4
ICszMSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7
IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlU3RyaWN0IH07Ci1lbnVtIEpT
UGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29kZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9Owor
ZW51bSBKU1BhcnNlclN0cmljdE1vZGUgeyBKU1BhcnNlTm90U3RyaWN0TW9kZSwgSlNQYXJzZVN0
cmljdE1vZGUgfTsKK2VudW0gSlNQYXJzZXJCdWlsdGluTW9kZSB7IEpTUGFyc2VOb3RCdWlsdGlu
TW9kZSwgSlNQYXJzZUJ1aWx0aW5Nb2RlIH07CitlbnVtIEpTUGFyc2VyQ29kZVR5cGUgeyBKU1Bh
cnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBjbGFzcyBDb25z
dHJ1Y3RvcktpbmQgeyBOb25lLCBCYXNlLCBEZXJpdmVkIH07CiBlbnVtIGNsYXNzIFN1cGVyQmlu
ZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHJldmlzaW9uIDE4MTU2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkg
Kzc1LDkgQEAgdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRFdgogfTsKIAog
dGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5
cGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2Nr
KFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dl
ck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK1Vu
bGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZt
LCBFeGVjdXRhYmxlVHlwZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0
TW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewotICAgIFNvdXJjZUNvZGVLZXkga2V5ID0gU291cmNl
Q29kZUtleShzb3VyY2UsIFN0cmluZygpLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlw
ZT46OmNvZGVUeXBlLCBzdHJpY3RuZXNzKTsKKyAgICBTb3VyY2VDb2RlS2V5IGtleSA9IFNvdXJj
ZUNvZGVLZXkoc291cmNlLCBTdHJpbmcoKSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+Ojpjb2RlVHlwZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUpOwogICAgIFNvdXJjZUNvZGVW
YWx1ZSogY2FjaGUgPSBtX3NvdXJjZUNvZGUuZmluZENhY2hlQW5kVXBkYXRlQWdlKGtleSk7CiAg
ICAgYm9vbCBjYW5DYWNoZSA9IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9mZiAmJiBwcm9maWxl
ck1vZGUgPT0gUHJvZmlsZXJPZmYgJiYgIXZtLnR5cGVQcm9maWxlcigpICYmICF2bS5jb250cm9s
Rmxvd1Byb2ZpbGVyKCk7CiAgICAgaWYgKGNhY2hlICYmIGNhbkNhY2hlKSB7CkBAIC05Miw3ICs5
Miw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG8KICAgICB9CiAK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6
Um9vdE5vZGUgUm9vdE5vZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9k
ZSA9IHBhcnNlPFJvb3ROb2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBzdHJpY3Ru
ZXNzLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9v
dE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlm
aWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9y
KTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTE4
LDI1ICsxMTgsMjUgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsbwog
ICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKIH0KIAotVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKiBDb2RlQ2FjaGU6OmdldFByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBQcm9ncmFtRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmlj
dG5lc3Mgc3RyaWN0bmVzcywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
IHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKiBDb2RlQ2FjaGU6OmdldFByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBQcm9ncmFtRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgRGVidWdn
ZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJy
b3ImIGVycm9yKQogewotICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RuZXNzLCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxv
Y2s8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBidWls
dGluTW9kZSwgc3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsK
IH0KIAotVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2so
Vk0mIHZtLCBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcywgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBF
dmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9k
ZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQogewotICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5s
aW5rZWRFdmFsQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RuZXNzLCBk
ZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIHJldHVybiBnZXRHbG9iYWxD
b2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9y
KTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rp
b25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICBT
b3VyY2VDb2RlS2V5IGtleSA9IFNvdXJjZUNvZGVLZXkoc291cmNlLCBuYW1lLnN0cmluZygpLCBT
b3VyY2VDb2RlS2V5OjpGdW5jdGlvblR5cGUsIEpTUGFyc2VOb3JtYWwpOworICAgIFNvdXJjZUNv
ZGVLZXkga2V5ID0gU291cmNlQ29kZUtleShzb3VyY2UsIG5hbWUuc3RyaW5nKCksIFNvdXJjZUNv
ZGVLZXk6OkZ1bmN0aW9uVHlwZSwgSlNQYXJzZU5vdEJ1aWx0aW5Nb2RlLCBKU1BhcnNlTm90U3Ry
aWN0TW9kZSk7CiAgICAgU291cmNlQ29kZVZhbHVlKiBjYWNoZSA9IG1fc291cmNlQ29kZS5maW5k
Q2FjaGVBbmRVcGRhdGVBZ2Uoa2V5KTsKICAgICBpZiAoY2FjaGUpCiAgICAgICAgIHJldHVybiBq
c0Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjYWNoZS0+Y2VsbC5nZXQoKSk7CiAK
ICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0s
IHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNv
ZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNl
LCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VOb3RCdWlsdGluTW9kZSwgSlNQYXJzZU5vdFN0cmlj
dE1vZGUsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3Iu
aXNWYWxpZCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAkocmV2aXNpb24gMTgxNTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDEwICs2MSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFNvdXJjZUNvZGVLZXko
Y29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlw
ZSBjb2RlVHlwZSwgSlNQYXJzZXJTdHJpY3RuZXNzIGpzUGFyc2VyU3RyaWN0bmVzcykKKyAgICBT
b3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUs
IEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlKQogICAgICAgICA6IG1fc291cmNlQ29kZShz
b3VyY2VDb2RlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fZmxhZ3MoKGNv
ZGVUeXBlIDw8IDIpIHwganNQYXJzZXJTdHJpY3RuZXNzKQorICAgICAgICAsIG1fZmxhZ3MoKGNv
ZGVUeXBlIDw8IDIpIHwgKGJ1aWx0aW5Nb2RlIDw8IDEpIHwgKHN0cmljdE1vZGUpKQogICAgICAg
ICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhhc2goKSkKICAgICB7CiAgICAgfQpAQCAtMjQ5
LDggKzI0OSw4IEBAIHB1YmxpYzoKICAgICBDb2RlQ2FjaGUoKTsKICAgICB+Q29kZUNhY2hlKCk7
CiAKLSAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dyYW1Db2RlQmxvY2soVk0m
LCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdG5l
c3MsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwotICAgIFVubGlu
a2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhWTSYsIEV2YWxFeGVjdXRhYmxlKiwg
Y29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0bmVzcywgRGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUsIFBhcnNlckVycm9yJik7CisgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBn
ZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiwgUHJvZ3JhbUV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBEZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZEV2YWxDb2RlQmxv
Y2sqIGdldEV2YWxDb2RlQmxvY2soVk0mLCBFdmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYsIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIAogICAgIHZvaWQg
Y2xlYXIoKQpAQCAtMjYwLDcgKzI2MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4g
Ci0gICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZXRHbG9iYWxDb2RlQmxvY2soVk0mLCBFeGVj
dXRhYmxlVHlwZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdG5lc3MsIERlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAgIFVubGlua2VkQ29kZUJs
b2NrVHlwZSogZ2V0R2xvYmFsQ29kZUJsb2NrKFZNJiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBEZWJ1
Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKIAogICAgIENvZGVDYWNoZU1h
cCBtX3NvdXJjZUNvZGU7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDE4MTU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3
IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2QKIHsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgcmV0dXJu
ICEhcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IpOworICAgIHJldHVybiAhIXBhcnNl
PFByb2dyYW1Ob2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm90QnVp
bHRpbk1vZGUsIEpTUGFyc2VOb3RTdHJpY3RNb2RlLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9y
KTsKIH0KIAogSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9u
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJ
KHJldmlzaW9uIDE4MTU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsNyArMzk0LDEwIEBAIHZvaWQgUHJvZ3Jh
bUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiAKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1
dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUp
IH07CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5r
ZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBib29sIGJvZHlJbmNsdWRlc0Jy
YWNlcykKK0Z1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCAKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
dW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIAorICAgIHVuc2lnbmVkIGxh
c3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKKyAgICBi
b29sIGJvZHlJbmNsdWRlc0JyYWNlcykKICAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rp
b25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgLCBtX3VubGlua2VkRXhlY3V0YWJsZSh2bSwg
dGhpcywgdW5saW5rZWRFeGVjdXRhYmxlKQogICAgICwgbV9ib2R5SW5jbHVkZXNCcmFjZXMoYm9k
eUluY2x1ZGVzQnJhY2VzKQpAQCAtNDY1LDcgKzQ2OCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhl
Y3V0YWJsZTo6Y2hlY2tTeW50YXgKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3Jh
bU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KHZtLCBtX3NvdXJjZSwgMCwg
SWRlbnRpZmllcigpLCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJv
Z3JhbU5vZGU+KHZtLCBtX3NvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm90QnVpbHRp
bk1vZGUsIEpTUGFyc2VOb3RTdHJpY3RNb2RlLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yKTsK
ICAgICBpZiAocHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlcnJv
ci5pc1ZhbGlkKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkocmV2aXNpb24gMTgxNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsNyArNTQxLDEwIEBAIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHQKIHB1YmxpYzoKICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIAotICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNp
Z25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwg
Ym9vbCBib2R5SW5jbHVkZXNCcmFjZXMgPSB0cnVlKQorICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1
dGFibGUqIGNyZWF0ZSgKKyAgICAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIAorICAgICAg
ICB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKKyAgICAgICAgYm9vbCBib2R5SW5jbHVkZXNCcmFj
ZXMgPSB0cnVlKQogICAgIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFw
KSkgRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgZmly
c3RMaW5lLCBsYXN0TGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgYm9keUluY2x1ZGVzQnJh
Y2VzKTsKICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtNjQzLDcg
KzY0NiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMoKSBjb25zdCB7
IHJldHVybiBtX2JvZHlJbmNsdWRlc0JyYWNlczsgfQogCiBwcml2YXRlOgotICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSosIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUoCisgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgZmlyc3RMaW5lLCAKKyAgICAg
ICAgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIAorICAgICAgICBib29sIGJvZHlJbmNsdWRlc0JyYWNlcyk7CiAKICAgICBib29sIGlz
Q29tcGlsaW5nKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxODE1NjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc4MywxMCArNzgzLDEwIEBAIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0dsb2JhbE9iamVjdCog
Z2wKIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVByb2dy
YW1Db2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU09iamVjdCoqIGV4Y2VwdGlvbikKIHsKICAgICBQYXJzZXJFcnJvciBlcnJvcjsK
LSAgICBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcyA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0
TW9kZSgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWw7CisgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VT
dHJpY3RNb2RlIDogSlNQYXJzZU5vdFN0cmljdE1vZGU7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSA9IGhhc0RlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDog
UHJvZmlsZXJPZmY7Ci0gICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldFByb2dyYW1Db2RlQmxvY2sodm0oKSwgZXhlY3V0
YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJv
ZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldFByb2dyYW1Db2RlQmxvY2sodm0oKSwg
ZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VOb3RCdWlsdGluTW9kZSwg
c3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKIAogICAgIGlm
IChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZy
YW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9y
Lm1lc3NhZ2UoKSk7CkBAIC04MDIsMTAgKzgwMiwxMCBAQCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2sqIEpTR2xvYmFsT2JqZWN0CiBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0
OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFdmFsRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSkKIHsKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0
cmljdG5lc3Mgc3RyaWN0bmVzcyA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJz
ZVN0cmljdCA6IEpTUGFyc2VOb3JtYWw7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3RNb2RlIDogSlNQ
YXJzZU5vdFN0cmljdE1vZGU7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhhc0Rl
YnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSA9IGhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7Ci0g
ICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNh
Y2hlKCktPmdldEV2YWxDb2RlQmxvY2sodm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291
cmNlKCksIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7Cisg
ICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNh
Y2hlKCktPmdldEV2YWxDb2RlQmxvY2sodm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291
cmNlKCksIEpTUGFyc2VOb3RCdWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBw
cm9maWxlck1vZGUsIGVycm9yKTsKIAogICAgIGlmIChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBk
ZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5w
cm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248866</attachid>
            <date>2015-03-17 13:38:45 -0700</date>
            <delta_ts>2015-03-17 14:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142788-20150317133815.patch</filename>
            <type>text/plain</type>
            <size>29668</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQnVpbHQtaW4gZnVuY3Rpb25zIHNob3VsZCBrbm93IHRoYXQgdGhleSB1c2Ugc3RyaWN0IG1v
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZW4g
dGhvdWdoIGFsbCBvZiBvdXIgYnVpbHRpbiBmdW5jdGlvbnMgdXNlIHN0cmljdCBtb2RlLCB0aGUg
cGFyc2VyCisgICAgICAgIHRoaW5rcyB0aGF0IHRoZXkgZG9uJ3QuIFRoaXMgaXMgYmVjYXVzZSBF
eGVjdXRhYmxlOjp0b1N0cmljdG5lc3MgdHJlYXRzCisgICAgICAgIGJ1aWx0aW4tbmVzcyBhbmQg
c3RyaWN0LW5lc3MgYXMgbXV0dWFsbHkgZXhjbHVzaXZlLgorCisgICAgICAgIFRoZSBmaXggaXMg
dG8gZGlzYW1iaWd1YXRlIGJ1aWx0aW4tbmVzcyBmcm9tIHN0cmljdC1uZXNzLgorCisgICAgICAg
IFRoaXMgYnVnIGlzIGN1cnJlbnRseSB1bm9ic2VydmFibGUgYmVjYXVzZSBvZiBzb21lIG90aGVy
IHBhcnNlciBidWdzLiBCdXQKKyAgICAgICAgaXQgY2F1c2VzIGxvdHMgb2YgdGVzdCBmYWlsdXJl
cyBvbmNlIHRob3NlIG90aGVyIGJ1Z3MgYXJlIGZpeGVkLgorCisgICAgICAgICogQVBJL0pTU2Ny
aXB0UmVmLmNwcDoKKyAgICAgICAgKHBhcnNlU2NyaXB0KToKKyAgICAgICAgKiBidWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKTogQWRvcHQgdGhlIG5ldyBBUEkKKyAgICAgICAgZm9y
IGEgc2VwYXJhdGUgdmFsdWUgdG8gaW5kaWNhdGUgYnVpbHRpbi1uZXNzIHZzIHN0cmljdC1uZXNz
LgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0Zvcik6IERpdHRvLgorCisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6IERlbGV0ZWQuIFRoaXMgZnVuY3Rpb24KKyAgICAg
ICAgd2FzIG1pc2xlYWRpbmcgc2luY2UgaXQgcHJldGVuZGVkIHRoYXQgbm8gYnVpbHRpbiBmdW5j
dGlvbiB3YXMgZXZlcgorICAgICAgICBzdHJpY3QsIHdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBvZiB0
cnVlLgorCisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VD46OkxleGVyKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpwYXJzZSk6IEFkb3B0IHRo
ZSBuZXcgQVBJLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6IEFkZGVkIEpTUGFy
c2VyQnVpbHRpbk1vZGUsIGFuZCB0cmllZCB0byBnaXZlCisgICAgICAgIGV4aXN0aW5nIG1vZGVz
IGNsZWFyZXIgbmFtZXMuCisKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUNhY2hlOjpnZXRQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hl
OjpnZXRFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6IEFkb3B0IHRoZSBuZXcgQVBJLgorCisgICAgICAg
ICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291
cmNlQ29kZUtleSk6IEJlIHN1cmUgdG8gdHJlYXQgc3RyaWN0LW5lc3MgYW5kCisgICAgICAgIGJ1
bGl0aW4tbmVzcyBhcyBzZXBhcmF0ZSBwaWVjZXMgb2YgdGhlIGNvZGUgY2FjaGUga2V5LiBXZSB3
b3VsZCBub3Qgd2FudAorICAgICAgICBhIHVzZXIgZnVuY3Rpb24gdG8gbWF0Y2ggYSBidWlsdC1p
biBmdW5jdGlvbiBpbiB0aGUgY2FjaGUsIGV2ZW4gaWYgdGhleQorICAgICAgICBhZ3JlZWQgYWJv
dXQgc3RyaWN0bmVzcywgc2luY2UgYnVpbHRpbiBmdW5jdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbGV4
aW5nCisgICAgICAgIHJ1bGVzLgorCisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRh
YmxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlUHJvZ3JhbUNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKTogQWRvcHQg
dGhlIG5ldyBBUEkuCisKIDIwMTUtMDMtMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkcgSVIgc2hvdWxkbid0IGhhdmUgYSBzZXBhcmF0ZSBub2RlIGZvciBl
dmVyeSBraW5kIG9mIHB1dCBoaW50IHRoYXQgY291bGQgYmUgZGVzY3JpYmVkIHVzaW5nIFByb21v
dGVkTG9jYXRpb25EZXNjcmlwdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U2NyaXB0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJp
dmF0ZToKIAogc3RhdGljIGJvb2wgcGFyc2VTY3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICByZXR1cm4gISFKU0M6OnBhcnNl
PEpTQzo6UHJvZ3JhbU5vZGU+KHZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5v
cm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvcik7CisgICAgcmV0dXJuICEhSlNDOjpwYXJz
ZTxKU0M6OlByb2dyYW1Ob2RlPih2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VO
b3RCdWlsdGluTW9kZSwgSlNQYXJzZU5vdFN0cmljdE1vZGUsIEpTUGFyc2VQcm9ncmFtQ29kZSwg
ZXJyb3IpOwogfQogCiBleHRlcm4gIkMiIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCShyZXZpc2lvbiAxODE2
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTAgKzY1LDEwIEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lOwogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIGJvb2wgaXNQYXJzaW5n
RGVmYXVsdENvbnN0cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6
Tm9uZTsKLSAgICBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcyA9IGlzUGFyc2luZ0RlZmF1
bHRDb25zdHJ1Y3RvciA/IEpTUGFyc2VOb3JtYWwgOiBKU1BhcnNlQnVpbHRpbjsKKyAgICBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9y
ID8gSlNQYXJzZU5vdEJ1aWx0aW5Nb2RlIDogSlNQYXJzZUJ1aWx0aW5Nb2RlOwogICAgIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGtpbmQgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBVbmxp
bmtlZE5vcm1hbEZ1bmN0aW9uIDogVW5saW5rZWRCdWlsdGluRnVuY3Rpb247CiAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9IGlzUGFyc2luZ0RlZmF1bHRDb25zdHJ1
Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwg
MCwgSWRlbnRpZmllcigpLCBzdHJpY3RuZXNzLCBKU1BhcnNlUHJvZ3JhbUNvZGUsCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZt
X3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VOb3RTdHJp
Y3RNb2RlLCBKU1BhcnNlUHJvZ3JhbUNvZGUsCiAgICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dy
YW0pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDksOSArNDksMTYgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jawog
Y29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5r
ZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShV
bmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNl
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rp
b25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQs
IERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFVu
bGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMs
IFBhcnNlckVycm9yJiBlcnJvcikKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2Rl
PiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUt
PnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT50b1N0cmljdG5l
c3MoKSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IsIDAsIGJvZHlJbmNsdWRlc0JyYWNlcyk7
CitzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVC
bG9jaygKKyAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2Rl
LAorICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgYm9vbCBib2R5SW5jbHVk
ZXNCcmFjZXMsIFBhcnNlckVycm9yJiBlcnJvcikKK3sKKyAgICBKU1BhcnNlckJ1aWx0aW5Nb2Rl
IGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VC
dWlsdGluTW9kZSA6IEpTUGFyc2VOb3RCdWlsdGluTW9kZTsKKyAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNl
U3RyaWN0TW9kZSA6IEpTUGFyc2VOb3RTdHJpY3RNb2RlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxG
dW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKKyAgICAgICAgJnZt
LCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBi
dWlsdGluTW9kZSwKKyAgICAgICAgc3RyaWN0TW9kZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJy
b3IsIDAsIGJvZHlJbmNsdWRlc0JyYWNlcyk7CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAg
ICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtMTc3LDcgKzE4NCwxMCBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7
CiB9CiAKLVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdn
ZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBib29sIGJvZHlJbmNsdWRlc0JyYWNl
cywgUGFyc2VyRXJyb3ImIGVycm9yKQorVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcigKKyAgICBWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktp
bmQsIAorICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzLCAKKyAgICBQYXJzZXJFcnJvciYgZXJyb3Ip
CiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JD
YWxsOgpAQCAtMTkwLDcgKzIwMCwxMCBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxp
bmtlZEZ1bmN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNv
dXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgaXNC
dWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3Jt
YWxGdW5jdGlvbiwgYm9keUluY2x1ZGVzQnJhY2VzLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKKyAgICAg
ICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHBy
b2ZpbGVyTW9kZSwgCisgICAgICAgIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0
aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIAorICAgICAgICBib2R5SW5jbHVk
ZXNCcmFjZXMsIGVycm9yKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxODE2NjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMTIxLDE0ICsxMjEsNiBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJblN0cmljdENvbnRleHQ7IH0KICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9mdW5jdGlvbk1vZGU7IH0KLSAgICBKU1BhcnNlclN0cmljdG5lc3MgdG9T
dHJpY3RuZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9u
KQotICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VCdWlsdGluOwotICAgICAgICBpZiAobV9pc0lu
U3RyaWN0Q29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBKU1BhcnNlU3RyaWN0OwotICAgICAg
ICByZXR1cm4gSlNQYXJzZU5vcm1hbDsKLSAgICB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4o
bV9jb25zdHJ1Y3RvcktpbmQpOyB9CiAKICAgICB1bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9uTmFt
ZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9CkBA
IC0xNDEsNyArMTMzLDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29u
c3Q7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQ
cm9maWxlck1vZGUsIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzLCBQYXJzZXJFcnJvciYpOworICAg
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvcigKKyAgICAgICAgVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQ
cm9maWxlck1vZGUsIAorICAgICAgICBib29sIGJvZHlJbmNsdWRlc0JyYWNlcywgUGFyc2VyRXJy
b3ImKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2Jh
bENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBK
U09iamVjdComIGV4Y2VwdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCShyZXZpc2lvbiAxODE2NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDEwICs0ODgsMTAgQEAgc3RhdGlj
IGNvbnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZQogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1MZXhlcjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0
bmVzcykKK0xleGVyPFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRp
bk1vZGUpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKLSAgICAs
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQor
ICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VCdWls
dGluTW9kZSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAko
cmV2aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExleGVyKFZNKiwgSlNQYXJzZXJT
dHJpY3RuZXNzKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyQnVpbHRpbk1vZGUpOwogICAgIH5M
ZXhlcigpOwogCiAgICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAxODE2NjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MCw3ICsxOTAsMTEgQEAgdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3Io
Ym9vbCBzaAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotUGFyc2VyPExleGVy
VHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlclN0
cmljdG5lc3Mgc3RyaWN0bmVzcywgSlNQYXJzZXJNb2RlIHBhcnNlck1vZGUsIENvbnN0cnVjdG9y
S2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kKQorUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigK
KyAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJz
KiBwYXJhbWV0ZXJzLCAKKyAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
SlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwgCisgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmQpCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9zb3VyY2UoJnNvdXJjZSkK
ICAgICAsIG1faGFzU3RhY2tPdmVyZmxvdyhmYWxzZSkKQEAgLTIwMywxMCArMjA3LDEwIEBAIFBh
cnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCAKICAgICAsIG1fbGFzdElkZW50
aWZpZXIoMCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3Vy
Y2VFbGVtZW50cygwKQotICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFy
c2VCdWlsdGluKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNl
QnVpbHRpbk1vZGUpCiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQoZGVmYXVsdENvbnN0
cnVjdG9yS2luZCkKIHsKLSAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+
KHZtLCBzdHJpY3RuZXNzKTsKKyAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5
cGU+KHZtLCBidWlsdGluTW9kZSk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3Bh
cnNlckFyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExp
bmUoKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRP
ZmZzZXQoKTsKQEAgLTIxNCw5ICsyMTgsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZN
KiB2bSwgY29uc3QgCiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IHNv
dXJjZS5zdGFydE9mZnNldCgpOwogICAgIG1fZnVuY3Rpb25DYWNoZSA9IHZtLT5hZGRTb3VyY2VQ
cm92aWRlckNhY2hlKHNvdXJjZS5wcm92aWRlcigpKTsKICAgICBTY29wZVJlZiBzY29wZSA9IHB1
c2hTY29wZSgpOwotICAgIGlmIChwYXJzZXJNb2RlID09IEpTUGFyc2VGdW5jdGlvbkNvZGUpCisg
ICAgaWYgKGNvZGVUeXBlID09IEpTUGFyc2VGdW5jdGlvbkNvZGUpCiAgICAgICAgIHNjb3BlLT5z
ZXRJc0Z1bmN0aW9uKCk7Ci0gICAgaWYgKHN0cmljdG5lc3MgPT0gSlNQYXJzZVN0cmljdCkKKyAg
ICBpZiAoc3RyaWN0TW9kZSA9PSBKU1BhcnNlU3RyaWN0TW9kZSkKICAgICAgICAgc2NvcGUtPnNl
dFN0cmljdE1vZGUoKTsKICAgICBpZiAocGFyYW1ldGVycykgewogICAgICAgICBib29sIGhhZEJp
bmRpbmdQYXJhbWV0ZXJzID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgJKHJldmlzaW9uIDE4MTY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNiw3ICs0MjYsOSBAQCBjbGFzcyBQYXJz
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUGFyc2Vy
KFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IElkZW50
aWZpZXImLCBKU1BhcnNlclN0cmljdG5lc3MsIEpTUGFyc2VyTW9kZSwKKyAgICBQYXJzZXIoCisg
ICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0
IElkZW50aWZpZXImLCAKKyAgICAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJp
Y3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlLAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVs
dENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7CiAgICAgflBhcnNlcigp
OwogCkBAIC05ODEsMTkgKzk4MywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFy
c2VyPExleGVyCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCi0g
ICAgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIEpTUGFyc2VyTW9kZSBwYXJzZXJNb2Rl
LCBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lID0gMCwKLSAgICBib29sIG5lZWRSZXBhcnNpbmdBZGp1c3RtZW50ID0gZmFsc2UsIENv
bnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAorICAgIFZNKiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsCisg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9k
ZSwKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBj
b2RlVHlwZSwKKyAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gMCwgCisgICAgYm9vbCBuZWVkUmVwYXJzaW5nQWRqdXN0bWVu
dCA9IGZhbHNlLCAKKyAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKIHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbigiUGFyc2luZyIpOwogCiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNl
KCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0
KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBh
cmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUsIGRlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQpOworICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwg
cGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmVlZFJlcGFyc2luZ0Fk
anVzdG1lbnQpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAg
ICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKTsKLSAgICAgICAgaWYgKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4p
IHsKKyAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VCdWlsdGluTW9kZSkgewogICAg
ICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgV1RGOjpkYXRhTG9nKCJFcnJv
ciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpLCAiXG4iKTsKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CkBAIC0xMDAxLDcgKzEwMDcsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtCiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBz
b3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOworICAgIFBh
cnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5lZWRS
ZXBhcnNpbmdBZGp1c3RtZW50KTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkK
ICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaAkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWws
IEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlU3RyaWN0IH07Ci1lbnVtIEpTUGFyc2VyTW9kZSB7IEpT
UGFyc2VQcm9ncmFtQ29kZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OworZW51bSBKU1BhcnNlclN0
cmljdE1vZGUgeyBKU1BhcnNlTm90U3RyaWN0TW9kZSwgSlNQYXJzZVN0cmljdE1vZGUgfTsKK2Vu
dW0gSlNQYXJzZXJCdWlsdGluTW9kZSB7IEpTUGFyc2VOb3RCdWlsdGluTW9kZSwgSlNQYXJzZUJ1
aWx0aW5Nb2RlIH07CitlbnVtIEpTUGFyc2VyQ29kZVR5cGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUs
IEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBjbGFzcyBDb25zdHJ1Y3RvcktpbmQgeyBO
b25lLCBCYXNlLCBEZXJpdmVkIH07CiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwg
Tm90TmVlZGVkIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAJKHJldmlzaW9uIDE4MTY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDkgQEAgdGVtcGxh
dGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRFdgogfTsKIAogdGVtcGxhdGUgPGNsYXNz
IFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5cGU+Ci1VbmxpbmtlZENv
ZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0
YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJT
dHJpY3RuZXNzIHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK1VubGlua2VkQ29kZUJsb2Nr
VHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlw
ZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5N
b2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgRGVidWdnZXJN
b2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3Im
IGVycm9yKQogewotICAgIFNvdXJjZUNvZGVLZXkga2V5ID0gU291cmNlQ29kZUtleShzb3VyY2Us
IFN0cmluZygpLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OmNvZGVUeXBlLCBz
dHJpY3RuZXNzKTsKKyAgICBTb3VyY2VDb2RlS2V5IGtleSA9IFNvdXJjZUNvZGVLZXkoc291cmNl
LCBTdHJpbmcoKSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpjb2RlVHlwZSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUpOwogICAgIFNvdXJjZUNvZGVWYWx1ZSogY2FjaGUgPSBt
X3NvdXJjZUNvZGUuZmluZENhY2hlQW5kVXBkYXRlQWdlKGtleSk7CiAgICAgYm9vbCBjYW5DYWNo
ZSA9IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9mZiAmJiBwcm9maWxlck1vZGUgPT0gUHJvZmls
ZXJPZmYgJiYgIXZtLnR5cGVQcm9maWxlcigpICYmICF2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCk7
CiAgICAgaWYgKGNhY2hlICYmIGNhbkNhY2hlKSB7CkBAIC05Miw3ICs5Miw3IEBAIFVubGlua2Vk
Q29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG8KICAgICB9CiAKICAgICB0eXBlZGVmIHR5
cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5v
ZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3RO
b2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBzdHJpY3RuZXNzLCBKU1BhcnNlUHJv
Z3JhbUNvZGUsIGVycm9yKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2Rl
ID0gcGFyc2U8Um9vdE5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yKTsKICAgICBpZiAoIXJv
b3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTE4LDI1ICsxMTgsMjUgQEAg
VW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsbwogICAgIHJldHVybiB1bmxp
bmtlZENvZGVCbG9jazsKIH0KIAotVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2FjaGU6
OmdldFByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVz
cywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQorVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2FjaGU6
OmdldFByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5N
b2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewot
ICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPih2
bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RuZXNzLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVy
TW9kZSwgZXJyb3IpOworICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKIH0KIAotVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBFdmFsRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0
cmljdG5lc3Mgc3RyaWN0bmVzcywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBFdmFsRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
IGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgRGVidWdnZXJNb2Rl
IGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVy
cm9yKQogewotICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJs
b2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RuZXNzLCBkZWJ1Z2dlck1vZGUsIHBy
b2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5r
ZWRFdmFsQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKIH0KIAogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJv
bUdsb2JhbENvZGUoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICBTb3VyY2VDb2RlS2V5IGtl
eSA9IFNvdXJjZUNvZGVLZXkoc291cmNlLCBuYW1lLnN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpG
dW5jdGlvblR5cGUsIEpTUGFyc2VOb3JtYWwpOworICAgIFNvdXJjZUNvZGVLZXkga2V5ID0gU291
cmNlQ29kZUtleShzb3VyY2UsIG5hbWUuc3RyaW5nKCksIFNvdXJjZUNvZGVLZXk6OkZ1bmN0aW9u
VHlwZSwgSlNQYXJzZU5vdEJ1aWx0aW5Nb2RlLCBKU1BhcnNlTm90U3RyaWN0TW9kZSk7CiAgICAg
U291cmNlQ29kZVZhbHVlKiBjYWNoZSA9IG1fc291cmNlQ29kZS5maW5kQ2FjaGVBbmRVcGRhdGVB
Z2Uoa2V5KTsKICAgICBpZiAoY2FjaGUpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqPihjYWNoZS0+Y2VsbC5nZXQoKSk7CiAKICAgICBKU1RleHRQb3Np
dGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9n
cmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNvdXJjZSwgMCwgSWRl
bnRpZmllcigpLCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2Rl
PiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVy
KCksIEpTUGFyc2VOb3RCdWlsdGluTW9kZSwgSlNQYXJzZU5vdFN0cmljdE1vZGUsIEpTUGFyc2VQ
cm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAo
IXByb2dyYW0pIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaAkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEwICs2MSwxMCBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29k
ZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQ
YXJzZXJTdHJpY3RuZXNzIGpzUGFyc2VyU3RyaWN0bmVzcykKKyAgICBTb3VyY2VDb2RlS2V5KGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUg
Y29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0
TW9kZSBzdHJpY3RNb2RlKQogICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQogICAg
ICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fZmxhZ3MoKGNvZGVUeXBlIDw8IDIpIHwg
anNQYXJzZXJTdHJpY3RuZXNzKQorICAgICAgICAsIG1fZmxhZ3MoKGNvZGVUeXBlIDw8IDIpIHwg
KGJ1aWx0aW5Nb2RlIDw8IDEpIHwgKHN0cmljdE1vZGUpKQogICAgICAgICAsIG1faGFzaChzdHJp
bmcoKS5pbXBsKCktPmhhc2goKSkKICAgICB7CiAgICAgfQpAQCAtMjQ5LDggKzI0OSw4IEBAIHB1
YmxpYzoKICAgICBDb2RlQ2FjaGUoKTsKICAgICB+Q29kZUNhY2hlKCk7CiAKLSAgICBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dyYW1Db2RlQmxvY2soVk0mLCBQcm9ncmFtRXhlY3V0
YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdG5lc3MsIERlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwotICAgIFVubGlua2VkRXZhbENvZGVCbG9j
ayogZ2V0RXZhbENvZGVCbG9jayhWTSYsIEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29k
ZSYsIEpTUGFyc2VyU3RyaWN0bmVzcywgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNl
ckVycm9yJik7CisgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBnZXRQcm9ncmFtQ29kZUJs
b2NrKFZNJiwgUHJvZ3JhbUV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJC
dWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdldEV2YWxDb2Rl
QmxvY2soVk0mLCBFdmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
LCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRGdW5j
dGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIAogICAgIHZvaWQgY2xlYXIoKQpAQCAtMjYw
LDcgKzI2MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4gCi0gICAgVW5saW5rZWRD
b2RlQmxvY2tUeXBlKiBnZXRHbG9iYWxDb2RlQmxvY2soVk0mLCBFeGVjdXRhYmxlVHlwZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSwgUHJvZmls
ZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2V0R2xv
YmFsQ29kZUJsb2NrKFZNJiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQ
YXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKIAogICAgIENvZGVDYWNoZU1hcCBtX3NvdXJjZUNvZGU7
CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAJKHJldmlzaW9uIDE4MTY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGJvb2wgY2hlY2tT
eW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2QKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJl
YWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgcmV0dXJuICEhcGFyc2U8UHJvZ3Jh
bU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VOb3JtYWwsIEpTUGFy
c2VQcm9ncmFtQ29kZSwgZXJyb3IpOworICAgIHJldHVybiAhIXBhcnNlPFByb2dyYW1Ob2RlPigm
dm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm90QnVpbHRpbk1vZGUsIEpTUGFy
c2VOb3RTdHJpY3RNb2RlLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yKTsKIH0KIAogSlNWYWx1
ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNW
YWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE4MTY2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTQsNyArMzk0LDEwIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRl
c3Ryb3koSlNDZWxsKiAKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19p
bmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKLUZ1bmN0aW9u
RXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1
bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBib29sIGJvZHlJbmNsdWRlc0JyYWNlcykKK0Z1bmN0aW9u
RXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCAKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRh
YmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIAorICAgIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKKyAgICBib29sIGJvZHlJbmNsdWRl
c0JyYWNlcykKICAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxlU3Ry
dWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzSW5TdHJpY3RD
b250ZXh0KCkpCiAgICAgLCBtX3VubGlua2VkRXhlY3V0YWJsZSh2bSwgdGhpcywgdW5saW5rZWRF
eGVjdXRhYmxlKQogICAgICwgbV9ib2R5SW5jbHVkZXNCcmFjZXMoYm9keUluY2x1ZGVzQnJhY2Vz
KQpAQCAtNDY1LDcgKzQ2OCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tT
eW50YXgKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
ICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1O
b2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KHZtLCBtX3NvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBK
U1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KHZtLCBt
X3NvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm90QnVpbHRpbk1vZGUsIEpTUGFyc2VO
b3RTdHJpY3RNb2RlLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yKTsKICAgICBpZiAocHJvZ3Jh
bU5vZGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNp
b24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NDEsNyArNTQxLDEwIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZSA6IHB1YmxpYyBTY3JpcHQKIHB1YmxpYzoKICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFi
bGUgQmFzZTsKIAotICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVu
bGlua2VkRXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgYm9vbCBib2R5SW5jbHVk
ZXNCcmFjZXMgPSB0cnVlKQorICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZSgK
KyAgICAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIAorICAgICAgICB1bnNpZ25lZCBmaXJz
dExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCAKKyAgICAgICAgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMgPSB0cnVlKQogICAg
IHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFwKSkgRnVuY3Rpb25FeGVj
dXRhYmxlKHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RMaW5lLCBsYXN0TGlu
ZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgYm9keUluY2x1ZGVzQnJhY2VzKTsKICAgICAgICAg
ZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtNjQzLDcgKzY0NiwxMCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMoKSBjb25zdCB7IHJldHVybiBtX2JvZHlJ
bmNsdWRlc0JyYWNlczsgfQogCiBwcml2YXRlOgotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVk
IGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzKTsKKyAgICBGdW5jdGlvbkV4
ZWN1dGFibGUoCisgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiwgdW5zaWduZWQgZmlyc3RMaW5lLCAKKyAgICAgICAgdW5zaWduZWQgbGFz
dExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAorICAgICAg
ICBib29sIGJvZHlJbmNsdWRlc0JyYWNlcyk7CiAKICAgICBib29sIGlzQ29tcGlsaW5nKCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCShyZXZpc2lvbiAxODE2NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MywxMCArNzgzLDEw
IEBAIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0dsb2JhbE9iamVjdCogZ2wKIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU09iamVj
dCoqIGV4Y2VwdGlvbikKIHsKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0
cmljdG5lc3Mgc3RyaWN0bmVzcyA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJz
ZVN0cmljdCA6IEpTUGFyc2VOb3JtYWw7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3RNb2RlIDogSlNQ
YXJzZU5vdFN0cmljdE1vZGU7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhhc0Rl
YnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSA9IGhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7Ci0g
ICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29k
ZUNhY2hlKCktPmdldFByb2dyYW1Db2RlQmxvY2sodm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJs
ZS0+c291cmNlKCksIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
cik7CisgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZt
KCkuY29kZUNhY2hlKCktPmdldFByb2dyYW1Db2RlQmxvY2sodm0oKSwgZXhlY3V0YWJsZSwgZXhl
Y3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VOb3RCdWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZGVi
dWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKIAogICAgIGlmIChoYXNEZWJ1Z2dlcigp
KQogICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxl
LT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CkBA
IC04MDIsMTAgKzgwMiwxMCBAQCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2Jq
ZWN0CiBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29k
ZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkK
IHsKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0
bmVzcyA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFy
c2VOb3JtYWw7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxl
LT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3RNb2RlIDogSlNQYXJzZU5vdFN0cmljdE1v
ZGU7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhhc0RlYnVnZ2VyKCkgPyBEZWJ1
Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGhh
c1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7Ci0gICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldEV2YWxD
b2RlQmxvY2sodm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0cmljdG5l
c3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldEV2YWxD
b2RlQmxvY2sodm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VO
b3RCdWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVy
cm9yKTsKIAogICAgIGlmIChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dlcigpLT5zb3Vy
Y2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJv
ci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7Cg==
</data>
<flag name="review"
          id="273723"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248869</attachid>
            <date>2015-03-17 14:02:22 -0700</date>
            <delta_ts>2015-03-17 14:07:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142788-20150317140151.patch</filename>
            <type>text/plain</type>
            <size>30263</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQnVpbHQtaW4gZnVuY3Rpb25zIHNob3VsZCBrbm93IHRoYXQgdGhleSB1c2Ugc3RyaWN0IG1v
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZW4g
dGhvdWdoIGFsbCBvZiBvdXIgYnVpbHRpbiBmdW5jdGlvbnMgdXNlIHN0cmljdCBtb2RlLCB0aGUg
cGFyc2VyCisgICAgICAgIHRoaW5rcyB0aGF0IHRoZXkgZG9uJ3QuIFRoaXMgaXMgYmVjYXVzZSBF
eGVjdXRhYmxlOjp0b1N0cmljdG5lc3MgdHJlYXRzCisgICAgICAgIGJ1aWx0aW4tbmVzcyBhbmQg
c3RyaWN0LW5lc3MgYXMgbXV0dWFsbHkgZXhjbHVzaXZlLgorCisgICAgICAgIFRoZSBmaXggaXMg
dG8gZGlzYW1iaWd1YXRlIGJ1aWx0aW4tbmVzcyBmcm9tIHN0cmljdC1uZXNzLgorCisgICAgICAg
IFRoaXMgYnVnIGlzIGN1cnJlbnRseSB1bm9ic2VydmFibGUgYmVjYXVzZSBvZiBzb21lIG90aGVy
IHBhcnNlciBidWdzLiBCdXQKKyAgICAgICAgaXQgY2F1c2VzIGxvdHMgb2YgdGVzdCBmYWlsdXJl
cyBvbmNlIHRob3NlIG90aGVyIGJ1Z3MgYXJlIGZpeGVkLgorCisgICAgICAgICogQVBJL0pTU2Ny
aXB0UmVmLmNwcDoKKyAgICAgICAgKHBhcnNlU2NyaXB0KToKKyAgICAgICAgKiBidWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKTogQWRvcHQgdGhlIG5ldyBBUEkKKyAgICAgICAgZm9y
IGEgc2VwYXJhdGUgdmFsdWUgdG8gaW5kaWNhdGUgYnVpbHRpbi1uZXNzIHZzIHN0cmljdC1uZXNz
LgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0Zvcik6IERpdHRvLgorCisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6IERlbGV0ZWQuIFRoaXMgZnVuY3Rpb24KKyAgICAg
ICAgd2FzIG1pc2xlYWRpbmcgc2luY2UgaXQgcHJldGVuZGVkIHRoYXQgbm8gYnVpbHRpbiBmdW5j
dGlvbiB3YXMgZXZlcgorICAgICAgICBzdHJpY3QsIHdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBvZiB0
cnVlLgorCisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VD46OkxleGVyKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpwYXJzZSk6IEFkb3B0IHRo
ZSBuZXcgQVBJLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6IEFkZGVkIEpTUGFy
c2VyQnVpbHRpbk1vZGUsIGFuZCB0cmllZCB0byBnaXZlCisgICAgICAgIGV4aXN0aW5nIG1vZGVz
IGNsZWFyZXIgbmFtZXMuCisKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUNhY2hlOjpnZXRQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hl
OjpnZXRFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6IEFkb3B0IHRoZSBuZXcgQVBJLgorCisgICAgICAg
ICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291
cmNlQ29kZUtleSk6IEJlIHN1cmUgdG8gdHJlYXQgc3RyaWN0LW5lc3MgYW5kCisgICAgICAgIGJ1
bGl0aW4tbmVzcyBhcyBzZXBhcmF0ZSBwaWVjZXMgb2YgdGhlIGNvZGUgY2FjaGUga2V5LiBXZSB3
b3VsZCBub3Qgd2FudAorICAgICAgICBhIHVzZXIgZnVuY3Rpb24gdG8gbWF0Y2ggYSBidWlsdC1p
biBmdW5jdGlvbiBpbiB0aGUgY2FjaGUsIGV2ZW4gaWYgdGhleQorICAgICAgICBhZ3JlZWQgYWJv
dXQgc3RyaWN0bmVzcywgc2luY2UgYnVpbHRpbiBmdW5jdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbGV4
aW5nCisgICAgICAgIHJ1bGVzLgorCisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRh
YmxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlUHJvZ3JhbUNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKTogQWRvcHQg
dGhlIG5ldyBBUEkuCisKIDIwMTUtMDMtMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkcgSVIgc2hvdWxkbid0IGhhdmUgYSBzZXBhcmF0ZSBub2RlIGZvciBl
dmVyeSBraW5kIG9mIHB1dCBoaW50IHRoYXQgY291bGQgYmUgZGVzY3JpYmVkIHVzaW5nIFByb21v
dGVkTG9jYXRpb25EZXNjcmlwdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U2NyaXB0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDEwIEBAIHBy
aXZhdGU6CiAKIHN0YXRpYyBib29sIHBhcnNlU2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0gICAgcmV0dXJuICEhSlNDOjpwYXJz
ZTxKU0M6OlByb2dyYW1Ob2RlPih2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VO
b3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IpOworICAgIHJldHVybiAhIUpTQzo6cGFy
c2U8SlNDOjpQcm9ncmFtTm9kZT4oCisgICAgICAgIHZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCisgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCAKKyAgICAgICAg
ZXJyb3IpOwogfQogCiBleHRlcm4gIkMiIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCShyZXZpc2lvbiAxODE2
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTAgKzY1LDEzIEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lOwogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIGJvb2wgaXNQYXJzaW5n
RGVmYXVsdENvbnN0cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6
Tm9uZTsKLSAgICBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcyA9IGlzUGFyc2luZ0RlZmF1
bHRDb25zdHJ1Y3RvciA/IEpTUGFyc2VOb3JtYWwgOiBKU1BhcnNlQnVpbHRpbjsKKyAgICBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9y
ID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6
OkJ1aWx0aW47CiAgICAgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCA9IGlzUGFyc2luZ0RlZmF1
bHRDb25zdHJ1Y3RvciA/IFVubGlua2VkTm9ybWFsRnVuY3Rpb24gOiBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbjsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZU92ZXJyaWRlID0gaXNQ
YXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gc291cmNlLnByb3ZpZGVyKCkgOiBudWxscHRyOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1O
b2RlPigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIHN0cmljdG5lc3MsIEpTUGFyc2VQ
cm9ncmFtQ29kZSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBw
YXJzZTxQcm9ncmFtTm9kZT4oCisgICAgICAgICZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgYnVpbHRpbk1vZGUsIAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwg
CisgICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sCiAgICAgICAgIGVycm9yLCAmcG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBp
ZiAoIXByb2dyYW0pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksOSArNDksMTYgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNv
ZGVCbG9jawogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0g
eyAiVW5saW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgYm9vbCBib2R5SW5jbHVk
ZXNCcmFjZXMsIFBhcnNlckVycm9yJiBlcnJvcikKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oJnZtLCBzb3VyY2UsIGV4
ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT50
b1N0cmljdG5lc3MoKSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IsIDAsIGJvZHlJbmNsdWRl
c0JyYWNlcyk7CitzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5j
dGlvbkNvZGVCbG9jaygKKyAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCisgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJv
ZmlsZXJNb2RlLAorICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgYm9vbCBi
b2R5SW5jbHVkZXNCcmFjZXMsIFBhcnNlckVycm9yJiBlcnJvcikKK3sKKyAgICBKU1BhcnNlckJ1
aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/
IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RC
dWlsdGluOworICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+
aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uTm9k
ZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAorICAgICAgICAmdm0sIHNvdXJjZSwg
ZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2Rl
LAorICAgICAgICBzdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlOjpGdW5jdGlvbiwgZXJyb3Is
IDAsIGJvZHlJbmNsdWRlc0JyYWNlcyk7CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAg
IEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtMTc3LDcgKzE4NCwxMCBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9
CiAKLVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBib29sIGJvZHlJbmNsdWRlc0JyYWNlcywg
UGFyc2VyRXJyb3ImIGVycm9yKQorVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcigKKyAgICBWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQs
IAorICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1v
ZGUsIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzLCAKKyAgICBQYXJzZXJFcnJvciYgZXJyb3IpCiB7
CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxs
OgpAQCAtMTkwLDcgKzIwMCwxMCBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtl
ZEZ1bmN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJj
ZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgaXNCdWls
dGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwgYm9keUluY2x1ZGVzQnJhY2VzLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKKyAgICAgICAg
dm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2Zp
bGVyTW9kZSwgCisgICAgICAgIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIAorICAgICAgICBib2R5SW5jbHVkZXNC
cmFjZXMsIGVycm9yKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxODE2NjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMTIxLDE0ICsxMjEsNiBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJ
blN0cmljdENvbnRleHQ7IH0KICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk1vZGU7IH0KLSAgICBKU1BhcnNlclN0cmljdG5lc3MgdG9TdHJp
Y3RuZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQot
ICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VCdWlsdGluOwotICAgICAgICBpZiAobV9pc0luU3Ry
aWN0Q29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBKU1BhcnNlU3RyaWN0OwotICAgICAgICBy
ZXR1cm4gSlNQYXJzZU5vcm1hbDsKLSAgICB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9j
b25zdHJ1Y3RvcktpbmQpOyB9CiAKICAgICB1bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9uTmFtZVN0
YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9CkBAIC0x
NDEsNyArMTMzLDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3Q7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUsIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzLCBQYXJzZXJFcnJvciYpOworICAgIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvcigKKyAgICAgICAgVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUsIAorICAgICAgICBib29sIGJvZHlJbmNsdWRlc0JyYWNlcywgUGFyc2VyRXJyb3Im
KTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENv
ZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09i
amVjdComIGV4Y2VwdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCShyZXZpc2lvbiAxODE2NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDEwICs0ODgsMTAgQEAgc3RhdGljIGNv
bnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZQogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1MZXhlcjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVz
cykKK0xleGVyPFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1v
ZGUpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKLSAgICAsIG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQorICAg
ICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRp
bk1vZGU6OkJ1aWx0aW4pCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmgJKHJldmlzaW9uIDE4MTY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBMZXhlciB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBMZXhlcihWTSosIEpT
UGFyc2VyU3RyaWN0bmVzcyk7CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlckJ1aWx0aW5Nb2RlKTsK
ICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25z
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24g
MTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDExIEBAIHZvaWQgUGFyc2VyPExleGVyVHlwZT46Omxv
Z0Vycm9yKGJvb2wgc2gKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLVBhcnNl
cjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQ
YXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIEpTUGFyc2VyTW9kZSBwYXJzZXJNb2RlLCBDb25z
dHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCkKK1BhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIoCisgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFy
YW1ldGVycyogcGFyYW1ldGVycywgCisgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUgY29kZVR5cGUsIAorICAgIENvbnN0cnVjdG9yS2luZCBk
ZWZhdWx0Q29uc3RydWN0b3JLaW5kKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNlKCZz
b3VyY2UpCiAgICAgLCBtX2hhc1N0YWNrT3ZlcmZsb3coZmFsc2UpCkBAIC0yMDMsMTAgKzIwNywx
MCBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgCiAgICAgLCBtX2xh
c3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAs
IG1fc291cmNlRWxlbWVudHMoMCkKLSAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0bmVzcyA9
PSBKU1BhcnNlQnVpbHRpbikKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oYnVpbHRpbk1vZGUgPT0g
SlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKICAgICAsIG1fZGVmYXVsdENvbnN0cnVjdG9y
S2luZChkZWZhdWx0Q29uc3RydWN0b3JLaW5kKQogewotICAgIG1fbGV4ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExleGVyVHlwZT4odm0sIHN0cmljdG5lc3MpOworICAgIG1fbGV4ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlKTsKICAgICBtX2xleGVyLT5zZXRD
b2RlKHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5l
ID0gc291cmNlLmZpcnN0TGluZSgpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNl
dCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOwpAQCAtMjE0LDkgKzIxOCw5IEBAIFBhcnNlcjxMZXhl
clR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCAKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CiAgICAgbV9mdW5jdGlvbkNhY2hl
ID0gdm0tPmFkZFNvdXJjZVByb3ZpZGVyQ2FjaGUoc291cmNlLnByb3ZpZGVyKCkpOwogICAgIFNj
b3BlUmVmIHNjb3BlID0gcHVzaFNjb3BlKCk7Ci0gICAgaWYgKHBhcnNlck1vZGUgPT0gSlNQYXJz
ZUZ1bmN0aW9uQ29kZSkKKyAgICBpZiAoY29kZVR5cGUgPT0gSlNQYXJzZXJDb2RlVHlwZTo6RnVu
Y3Rpb24pCiAgICAgICAgIHNjb3BlLT5zZXRJc0Z1bmN0aW9uKCk7Ci0gICAgaWYgKHN0cmljdG5l
c3MgPT0gSlNQYXJzZVN0cmljdCkKKyAgICBpZiAoc3RyaWN0TW9kZSA9PSBKU1BhcnNlclN0cmlj
dE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1vZGUoKTsKICAgICBpZiAo
cGFyYW1ldGVycykgewogICAgICAgICBib29sIGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0gZmFsc2U7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9uIDE4MTY2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNiw3ICs0MjYsOSBAQCBjbGFzcyBQYXJzZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUGFyc2VyKFZNKiwgY29uc3QgU291cmNlQ29kZSYs
IEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IElkZW50aWZpZXImLCBKU1BhcnNlclN0cmljdG5l
c3MsIEpTUGFyc2VyTW9kZSwKKyAgICBQYXJzZXIoCisgICAgICAgIFZNKiwgY29uc3QgU291cmNl
Q29kZSYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IElkZW50aWZpZXImLCAKKyAgICAgICAg
SlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBl
LAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSk7CiAgICAgflBhcnNlcigpOwogCkBAIC05ODEsMTkgKzk4MywyMyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyCiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFt
ZXRlcnMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCi0gICAgSlNQYXJzZXJTdHJpY3RuZXNzIHN0
cmljdG5lc3MsIEpTUGFyc2VyTW9kZSBwYXJzZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEpT
VGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gMCwKLSAgICBib29sIG5l
ZWRSZXBhcnNpbmdBZGp1c3RtZW50ID0gZmFsc2UsIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29u
c3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQorc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHBhcnNlKAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsCisgICAgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKKyAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwKKyAgICBQYXJzZXJFcnJv
ciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gMCwg
CisgICAgYm9vbCBuZWVkUmVwYXJzaW5nQWRqdXN0bWVudCA9IGZhbHNlLCAKKyAgICBDb25zdHJ1
Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkK
IHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiUGFyc2luZyIpOwogCiAgICAg
QVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExl
eGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5l
c3MsIHBhcnNlck1vZGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpOworICAgICAgICBQYXJzZXI8
TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRp
bk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kKTsKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQ
YXJzZWROb2RlPihlcnJvciwgbmVlZFJlcGFyc2luZ0FkanVzdG1lbnQpOwogICAgICAgICBpZiAo
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKLSAgICAgICAg
aWYgKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgaWYgKGJ1aWx0aW5N
b2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKICAgICAgICAgICAgIGlmICgh
cmVzdWx0KQogICAgICAgICAgICAgICAgIFdURjo6ZGF0YUxvZygiRXJyb3IgY29tcGlsaW5nIGJ1
aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChyZXN1bHQpOwpAQCAtMTAwMSw3ICsxMDA3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IHBhcnNlKFZNKiB2bQogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQotICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0
ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNo
YXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUsIHN0
cmljdE1vZGUsIGNvZGVUeXBlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVz
dWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuZWVkUmVwYXJzaW5nQWRqdXN0
bWVudCk7CiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJKHJl
dmlzaW9uIDE4MTY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9k
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlQnVpbHRp
biwgSlNQYXJzZVN0cmljdCB9OwotZW51bSBKU1BhcnNlck1vZGUgeyBKU1BhcnNlUHJvZ3JhbUNv
ZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKK2VudW0gY2xhc3MgSlNQYXJzZXJTdHJpY3RNb2Rl
IHsgTm90U3RyaWN0LCBTdHJpY3QgfTsKK2VudW0gY2xhc3MgSlNQYXJzZXJCdWlsdGluTW9kZSB7
IE5vdEJ1aWx0aW4sIEJ1aWx0aW4gfTsKK2VudW0gY2xhc3MgSlNQYXJzZXJDb2RlVHlwZSB7IFBy
b2dyYW0sIEZ1bmN0aW9uIH07CiAKIGVudW0gY2xhc3MgQ29uc3RydWN0b3JLaW5kIHsgTm9uZSwg
QmFzZSwgRGVyaXZlZCB9OwogZW51bSBjbGFzcyBTdXBlckJpbmRpbmcgeyBOZWVkZWQsIE5vdE5l
ZWRlZCB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCShyZXZpc2lvbiAxODE2NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw5ICs3NSw5IEBAIHRlbXBsYXRlIDw+
IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkRXYKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBVbmxp
bmtlZENvZGVCbG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBlPgotVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVU
eXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0
bmVzcyBzdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUg
cHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCitVbmxpbmtlZENvZGVCbG9ja1R5cGUq
IENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4
ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBi
dWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSBk
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJv
cikKIHsKLSAgICBTb3VyY2VDb2RlS2V5IGtleSA9IFNvdXJjZUNvZGVLZXkoc291cmNlLCBTdHJp
bmcoKSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpjb2RlVHlwZSwgc3RyaWN0
bmVzcyk7CisgICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5KHNvdXJjZSwgU3Ry
aW5nKCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUsIGJ1aWx0
aW5Nb2RlLCBzdHJpY3RNb2RlKTsKICAgICBTb3VyY2VDb2RlVmFsdWUqIGNhY2hlID0gbV9zb3Vy
Y2VDb2RlLmZpbmRDYWNoZUFuZFVwZGF0ZUFnZShrZXkpOwogICAgIGJvb2wgY2FuQ2FjaGUgPSBk
ZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPZmYgJiYgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT2Zm
ICYmICF2bS50eXBlUHJvZmlsZXIoKSAmJiAhdm0uY29udHJvbEZsb3dQcm9maWxlcigpOwogICAg
IGlmIChjYWNoZSAmJiBjYW5DYWNoZSkgewpAQCAtOTIsNyArOTIsOSBAQCBVbmxpbmtlZENvZGVC
bG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvCiAgICAgfQogCiAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4o
JnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgc3RyaWN0bmVzcywgSlNQYXJzZVByb2dyYW1D
b2RlLCBlcnJvcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBh
cnNlPFJvb3ROb2RlPigKKyAgICAgICAgJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgYnVp
bHRpbk1vZGUsIHN0cmljdE1vZGUsIAorICAgICAgICBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFt
LCBlcnJvcik7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTExOCwyNSArMTIwLDMxIEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpn
ZXRHbG8KICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKLVVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgUHJvZ3Jh
bUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJz
ZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK1VubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgUHJvZ3Jh
bUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUs
IERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBh
cnNlckVycm9yJiBlcnJvcikKIHsKLSAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0bmVzcywg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICByZXR1cm4gZ2V0R2xvYmFs
Q29kZUJsb2NrPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJj
ZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBl
cnJvcik7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmFsQ29k
ZUJsb2NrKFZNJiB2bSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBk
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJv
cikKK1VubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmFsQ29kZUJsb2NrKFZN
JiB2bSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJs
b2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0
bmVzcywgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICByZXR1cm4gZ2V0
R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNv
dXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBlcnJvcik7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6Omdl
dEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2bSwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7
Ci0gICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5KHNvdXJjZSwgbmFtZS5zdHJp
bmcoKSwgU291cmNlQ29kZUtleTo6RnVuY3Rpb25UeXBlLCBKU1BhcnNlTm9ybWFsKTsKKyAgICBT
b3VyY2VDb2RlS2V5IGtleSA9IFNvdXJjZUNvZGVLZXkoCisgICAgICAgIHNvdXJjZSwgbmFtZS5z
dHJpbmcoKSwgU291cmNlQ29kZUtleTo6RnVuY3Rpb25UeXBlLCAKKyAgICAgICAgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90
U3RyaWN0KTsKICAgICBTb3VyY2VDb2RlVmFsdWUqIGNhY2hlID0gbV9zb3VyY2VDb2RlLmZpbmRD
YWNoZUFuZFVwZGF0ZUFnZShrZXkpOwogICAgIGlmIChjYWNoZSkKICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhY2hlLT5jZWxsLmdldCgpKTsKIAog
ICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwg
c291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29k
ZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCisgICAgICAgICZ2
bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sIAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2Rl
VHlwZTo6UHJvZ3JhbSwgCisgICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlz
VmFsaWQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgJKHJldmlzaW9uIDE4MTY2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwx
MCArNjEsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBTb3VyY2VDb2RlS2V5KGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUg
Y29kZVR5cGUsIEpTUGFyc2VyU3RyaWN0bmVzcyBqc1BhcnNlclN0cmljdG5lc3MpCisgICAgU291
cmNlQ29kZUtleShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSkKICAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291
cmNlQ29kZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX2ZsYWdzKChjb2Rl
VHlwZSA8PCAyKSB8IGpzUGFyc2VyU3RyaWN0bmVzcykKKyAgICAgICAgLCBtX2ZsYWdzKAorICAg
ICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMikgCisgICAgICAg
ICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDEpIAorICAgICAg
ICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkpCiAgICAgICAgICwgbV9o
YXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQogICAgIHsKICAgICB9CkBAIC0yNDksOCArMjUy
LDggQEAgcHVibGljOgogICAgIENvZGVDYWNoZSgpOwogICAgIH5Db2RlQ2FjaGUoKTsKIAotICAg
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhWTSYsIFByb2dy
YW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0bmVzcywgRGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7Ci0gICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiBnZXRFdmFsQ29kZUJsb2NrKFZNJiwgRXZhbEV4ZWN1dGFibGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dy
YW1Db2RlQmxvY2soVk0mLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0
RXZhbENvZGVCbG9jayhWTSYsIEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpT
UGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgRGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogCiAgICAgdm9pZCBjbGVhcigp
CkBAIC0yNjAsNyArMjYzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxj
bGFzcyBVbmxpbmtlZENvZGVCbG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBlPiAKLSAgICBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqIGdldEdsb2JhbENvZGVCbG9jayhWTSYsIEV4ZWN1dGFibGVU
eXBlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0bmVzcywgRGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CisgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBl
KiBnZXRHbG9iYWxDb2RlQmxvY2soVk0mLCBFeGVjdXRhYmxlVHlwZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogCiAgICAgQ29kZUNhY2hlTWFwIG1fc291
cmNlQ29kZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDkgQEAgYm9v
bCBjaGVja1N5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZAogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09
IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICByZXR1cm4gISFwYXJz
ZTxQcm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1h
bCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvcik7CisgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3Jh
bU5vZGU+KAorICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RT
dHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yKTsKIH0KIAogSlNWYWx1ZSBl
dmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE4MTY2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTQsNyArMzk0LDEwIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ry
b3koSlNDZWxsKiAKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZv
ID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKLUZ1bmN0aW9uRXhl
Y3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNp
Z25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBib29sIGJvZHlJbmNsdWRlc0JyYWNlcykKK0Z1bmN0aW9uRXhl
Y3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCAKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxl
LCB1bnNpZ25lZCBmaXJzdExpbmUsIAorICAgIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKKyAgICBib29sIGJvZHlJbmNsdWRlc0Jy
YWNlcykKICAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0
dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250
ZXh0KCkpCiAgICAgLCBtX3VubGlua2VkRXhlY3V0YWJsZSh2bSwgdGhpcywgdW5saW5rZWRFeGVj
dXRhYmxlKQogICAgICwgbV9ib2R5SW5jbHVkZXNCcmFjZXMoYm9keUluY2x1ZGVzQnJhY2VzKQpA
QCAtNDY1LDcgKzQ2OCw5IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50
YXgKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2Rl
ID0gcGFyc2U8UHJvZ3JhbU5vZGU+KHZtLCBtX3NvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAorICAgICAg
ICB2bSwgbV9zb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwgCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNl
ckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAg
ICByZXR1cm4gMDsKICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE4MTY2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQxLDcgKzU0MSwxMCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMg
U2NyaXB0CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKLSAg
ICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFi
bGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzID0gdHJ1
ZSkKKyAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoCisgICAgICAgIFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
dW5saW5rZWRFeGVjdXRhYmxlLCAKKyAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25l
ZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCisg
ICAgICAgIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpIEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgc291
cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIGZpcnN0TGluZSwgbGFzdExpbmUsIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGJvZHlJbmNsdWRlc0JyYWNlcyk7CiAgICAgICAgIGV4ZWN1dGFibGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKQEAgLTY0Myw3ICs2NDYsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
Ym9keUluY2x1ZGVzQnJhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9ib2R5SW5jbHVkZXNCcmFjZXM7
IH0KIAogcHJpdmF0ZToKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVu
c2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCBib29sIGJvZHlJbmNsdWRlc0JyYWNlcyk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKAorICAg
ICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSos
IHVuc2lnbmVkIGZpcnN0TGluZSwgCisgICAgICAgIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKKyAgICAgICAgYm9vbCBib2R5SW5j
bHVkZXNCcmFjZXMpOwogCiAgICAgYm9vbCBpc0NvbXBpbGluZygpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2
aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODMsMTAgKzc4MywxMiBAQCB2b2lkIHNsb3dW
YWxpZGF0ZUNlbGwoSlNHbG9iYWxPYmplY3QqIGdsCiBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sq
IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNPYmplY3QqKiBleGNlcHRpb24p
CiB7CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmlj
dG5lc3MgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1Bh
cnNlTm9ybWFsOworICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJs
ZS0+aXNTdHJpY3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBo
YXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUgPSBoYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2Zm
OwotICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgp
LmNvZGVDYWNoZSgpLT5nZXRQcm9ncmFtQ29kZUJsb2NrKHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1
dGFibGUtPnNvdXJjZSgpLCBzdHJpY3RuZXNzLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwg
ZXJyb3IpOworICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sg
PSB2bSgpLmNvZGVDYWNoZSgpLT5nZXRQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICB2bSgpLCBl
eGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwgc3RyaWN0TW9kZSwgCisgICAgICAgIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBlcnJvcik7CiAKICAgICBpZiAoaGFzRGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+
c291cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwg
ZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOwpAQCAtODAyLDEwICs4MDQsMTIgQEAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdAogVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCiB7CiAgICAgUGFyc2VyRXJyb3IgZXJy
b3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MgPSBleGVjdXRhYmxlLT5pc1N0
cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsOworICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCkgPyBKU1Bh
cnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0Owog
ICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJP
biA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBoYXNQcm9m
aWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwotICAgIFVubGlua2VkRXZhbENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29kZUJs
b2NrKHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBzdHJpY3RuZXNzLCBk
ZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRXZhbENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29kZUJs
b2NrKAorICAgICAgICB2bSgpLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgCisgICAgICAgIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CiAKICAgICBpZiAoaGFzRGVidWdnZXIoKSkK
ICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+
c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOwo=
</data>
<flag name="review"
          id="273722"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>